xref: /aosp_15_r20/external/autotest/client/bin/autologin.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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