blob: 91e71c3cea9326c5c77dff7ac5594c8af1208a92 [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Launches Firefox and browses to an URL."""
import os
import signal
import sys
from optparse import OptionParser
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
THIRD_PARTY_DIR = os.path.abspath(os.path.join(BASE_DIR, 'third_party'))
sys.path.append(os.path.join(THIRD_PARTY_DIR, 'manifestdestiny'))
sys.path.append(os.path.join(THIRD_PARTY_DIR, 'mozinfo'))
sys.path.append(os.path.join(THIRD_PARTY_DIR, 'mozprocess'))
sys.path.append(os.path.join(THIRD_PARTY_DIR, 'mozprofile'))
sys.path.append(os.path.join(THIRD_PARTY_DIR, 'mozrunner'))
from mozprofile import profile
from mozrunner import runner
WEBRTC_PREFERENCES = {
# Automatically gives permission to access the camera/microphone and
# bypasses the permission/selection dialog.
'media.navigator.permission.disabled': True,
}
def main():
usage = 'usage: %prog --binary <firefox_executable> --webpage <url>'
parser = OptionParser(usage)
parser.add_option('-b', '--binary',
help=('Firefox executable to run.'))
parser.add_option('-w', '--webpage',
help=('Web page to browse to.'))
options, _args = parser.parse_args()
if not options.binary:
parser.error('You must specify the Firefox browser executable.')
if not options.webpage:
parser.error('You must specify the web page to browse to.')
firefox_profile = profile.FirefoxProfile(preferences=WEBRTC_PREFERENCES)
firefox_runner = runner.FirefoxRunner(profile=firefox_profile,
binary=options.binary,
cmdargs=[options.webpage])
def KillFirefox(signum, frame):
firefox_runner.stop()
signal.signal(signal.SIGTERM, KillFirefox)
firefox_runner.start()
# Run until Chrome kills us.
firefox_runner.process_handler.wait(timeout=600)
return 0
if __name__ == '__main__':
sys.exit(main())