1#!/usr/bin/python 2# 3# Copyright 2016 The Chromium OS Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7'''Make Chrome automatically log in.''' 8 9# This sets up import paths for autotest. 10import common 11import argparse 12import getpass 13import sys 14 15from autotest_lib.client.common_lib.cros import chrome 16 17 18def main(args): 19 '''The main function. 20 21 @param args: list of string args passed to program 22 ''' 23 24 parser = argparse.ArgumentParser(description=__doc__) 25 parser.add_argument('-a', '--arc', action='store_true', 26 help='Enable ARC and wait for it to start.') 27 parser.add_argument('--arc_timeout', type=int, default=None, 28 help='Enable ARC and wait for it to start.') 29 parser.add_argument('-d', '--dont_override_profile', action='store_true', 30 help='Keep files from previous sessions.') 31 parser.add_argument('-u', '--username', 32 help='Log in as provided username.') 33 parser.add_argument('--enable_default_apps', action='store_true', 34 help='Enable default applications.') 35 parser.add_argument('-p', '--password', 36 help='Log in with provided password.') 37 parser.add_argument('-w', '--no-startup-window', action='store_true', 38 help='Prevent startup window from opening (no doodle).') 39 parser.add_argument('--no-arc-syncs', action='store_true', 40 help='Prevent ARC sync behavior as much as possible.') 41 parser.add_argument('--toggle_ndk', 42 action='append_const', 43 dest='feature', 44 const='ArcNativeBridgeExperiment', 45 help='Toggle the translation from houdini to ndk') 46 parser.add_argument('-f', 47 '--feature', 48 action='append', 49 help='Enables the specified Chrome feature flag') 50 parser.add_argument('--url', help='Navigate to URL.') 51 args = parser.parse_args(args) 52 53 if args.password: 54 password = args.password 55 elif args.username: 56 password = getpass.getpass() 57 58 browser_args = [] 59 if args.no_startup_window: 60 browser_args.append('--no-startup-window') 61 if args.feature: 62 browser_args.append('--enable-features=%s' % ','.join(args.feature)) 63 64 # Avoid calling close() on the Chrome object; this keeps the session active. 65 cr = chrome.Chrome( 66 extra_browser_args=browser_args, 67 arc_mode=('enabled' if args.arc else None), 68 arc_timeout=args.arc_timeout, 69 disable_app_sync=args.no_arc_syncs, 70 disable_play_auto_install=args.no_arc_syncs, 71 username=args.username, 72 password=(password if args.username else None), 73 gaia_login=(args.username is not None), 74 disable_default_apps=(not args.enable_default_apps), 75 dont_override_profile=args.dont_override_profile) 76 if args.url: 77 tab = cr.browser.tabs[0] 78 tab.Navigate(args.url) 79 80 81if __name__ == '__main__': 82 sys.exit(main(sys.argv[1:])) 83