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