Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: build/android/pylib/device_settings.py

Issue 481433004: [Android] Fix the location prompt flake in provision_devices. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase + remove persist property changes. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/android/provision_devices.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging 5 import logging
6 6
7 from pylib import content_settings 7 from pylib import content_settings
8 8
9 _LOCK_SCREEN_SETTINGS_PATH = '/data/system/locksettings.db' 9 _LOCK_SCREEN_SETTINGS_PATH = '/data/system/locksettings.db'
10 PASSWORD_QUALITY_UNSPECIFIED = '0' 10 PASSWORD_QUALITY_UNSPECIFIED = '0'
11 11
12 12
13 def ConfigureContentSettingsDict(device, desired_settings): 13 def ConfigureContentSettings(device, desired_settings):
14 """Configures device content setings from a dictionary. 14 """Configures device content setings from a list.
15 15
16 Many settings are documented at: 16 Many settings are documented at:
17 http://developer.android.com/reference/android/provider/Settings.Global.html 17 http://developer.android.com/reference/android/provider/Settings.Global.html
18 http://developer.android.com/reference/android/provider/Settings.Secure.html 18 http://developer.android.com/reference/android/provider/Settings.Secure.html
19 http://developer.android.com/reference/android/provider/Settings.System.html 19 http://developer.android.com/reference/android/provider/Settings.System.html
20 20
21 Many others are undocumented. 21 Many others are undocumented.
22 22
23 Args: 23 Args:
24 device: A DeviceUtils instance for the device to configure. 24 device: A DeviceUtils instance for the device to configure.
25 desired_settings: A dict of {table: {key: value}} for all 25 desired_settings: A list of (table, [(key: value), ...]) for all
26 settings to configure. 26 settings to configure.
27 """ 27 """
28 try: 28 try:
29 sdk_version = int(device.GetProp('ro.build.version.sdk')) 29 sdk_version = int(device.GetProp('ro.build.version.sdk'))
30 except ValueError: 30 except ValueError:
31 logging.error('Skipping content settings configuration, unknown sdk %s', 31 logging.error('Skipping content settings configuration, unknown sdk %s',
32 device.GetProp('ro.build.version.sdk')) 32 device.GetProp('ro.build.version.sdk'))
33 return 33 return
34 34
35 if sdk_version < 16: 35 if sdk_version < 16:
36 logging.error('Skipping content settings configuration due to outdated sdk') 36 logging.error('Skipping content settings configuration due to outdated sdk')
37 return 37 return
38 38
39 device.SetProp('persist.sys.usb.config', 'adb') 39 device.SetProp('persist.sys.usb.config', 'adb')
40 device.old_interface.WaitForDevicePm() 40 device.old_interface.WaitForDevicePm()
jbudorick 2014/08/18 19:00:33 I removed the change I had here to how DeviceUtils
41 41
42 if device.GetProp('ro.build.type') == 'userdebug': 42 if device.GetProp('ro.build.type') == 'userdebug':
43 for table, key_value in sorted(desired_settings.iteritems()): 43 for table, key_value in desired_settings:
44 settings = content_settings.ContentSettings(table, device) 44 settings = content_settings.ContentSettings(table, device)
45 for key, value in key_value.iteritems(): 45 for key, value in key_value:
46 settings[key] = value 46 settings[key] = value
47 logging.info('\n%s %s', table, (80 - len(table)) * '-') 47 logging.info('\n%s %s', table, (80 - len(table)) * '-')
48 for key, value in sorted(settings.iteritems()): 48 for key, value in sorted(settings.iteritems()):
49 logging.info('\t%s: %s', key, value) 49 logging.info('\t%s: %s', key, value)
50 50
51 51
52 def SetLockScreenSettings(device): 52 def SetLockScreenSettings(device):
53 """Sets lock screen settings on the device. 53 """Sets lock screen settings on the device.
54 54
55 On certain device/Android configurations we need to disable the lock screen in 55 On certain device/Android configurations we need to disable the lock screen in
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 'primary_key': columns[0], 91 'primary_key': columns[0],
92 'primary_value': values[0], 92 'primary_value': values[0],
93 'columns': ', '.join(columns), 93 'columns': ', '.join(columns),
94 'values': ', '.join(["'%s'" % value for value in values]) 94 'values': ', '.join(["'%s'" % value for value in values])
95 } 95 }
96 output_msg = device.RunShellCommand('sqlite3 %s "%s"' % (db, cmd)) 96 output_msg = device.RunShellCommand('sqlite3 %s "%s"' % (db, cmd))
97 if output_msg: 97 if output_msg:
98 print ' '.join(output_msg) 98 print ' '.join(output_msg)
99 99
100 100
101 ENABLE_LOCATION_SETTING = { 101 ENABLE_LOCATION_SETTINGS = [
102 'settings/secure': { 102 # Note that setting these in this order is required in order for all of
103 # them to take and stick through a reboot.
104 ('com.google.settings/partner', [
105 ('use_location_for_services', 1),
106 ]),
107 ('settings/secure', [
103 # Ensure Geolocation is enabled and allowed for tests. 108 # Ensure Geolocation is enabled and allowed for tests.
104 'location_providers_allowed': 'gps,network', 109 ('location_providers_allowed', 'gps,network'),
105 } 110 ]),
106 } 111 ('com.google.settings/partner', [
112 ('network_location_opt_in', 1),
113 ])
114 ]
107 115
108 DISABLE_LOCATION_SETTING = { 116 DISABLE_LOCATION_SETTINGS = [
109 'settings/secure': { 117 ('com.google.settings/partner', [
118 ('use_location_for_services', 0),
119 ]),
120 ('settings/secure', [
110 # Ensure Geolocation is disabled. 121 # Ensure Geolocation is disabled.
111 'location_providers_allowed': '', 122 ('location_providers_allowed', ''),
112 } 123 ]),
113 } 124 ]
114 125
115 DETERMINISTIC_DEVICE_SETTINGS = { 126 DETERMINISTIC_DEVICE_SETTINGS = [
116 'com.google.settings/partner': { 127 ('settings/global', [
117 'network_location_opt_in': 0, 128 ('assisted_gps_enabled', 0),
118 'use_location_for_services': 1,
119 },
120 'settings/global': {
121 'assisted_gps_enabled': 0,
122 129
123 # Disable "auto time" and "auto time zone" to avoid network-provided time 130 # Disable "auto time" and "auto time zone" to avoid network-provided time
124 # to overwrite the device's datetime and timezone synchronized from host 131 # to overwrite the device's datetime and timezone synchronized from host
125 # when running tests later. See b/6569849. 132 # when running tests later. See b/6569849.
126 'auto_time': 0, 133 ('auto_time', 0),
127 'auto_time_zone': 0, 134 ('auto_time_zone', 0),
128 135
129 'development_settings_enabled': 1, 136 ('development_settings_enabled', 1),
130 137
131 # Flag for allowing ActivityManagerService to send ACTION_APP_ERROR intents 138 # Flag for allowing ActivityManagerService to send ACTION_APP_ERROR intents
132 # on application crashes and ANRs. If this is disabled, the crash/ANR dialog 139 # on application crashes and ANRs. If this is disabled, the crash/ANR dialog
133 # will never display the "Report" button. 140 # will never display the "Report" button.
134 # Type: int ( 0 = disallow, 1 = allow ) 141 # Type: int ( 0 = disallow, 1 = allow )
135 'send_action_app_error': 0, 142 ('send_action_app_error', 0),
136 143
137 'stay_on_while_plugged_in': 3, 144 ('stay_on_while_plugged_in', 3),
138 145
139 'verifier_verify_adb_installs' : 0, 146 ('verifier_verify_adb_installs', 0),
140 }, 147 ]),
141 'settings/secure': { 148 ('settings/secure', [
142 'allowed_geolocation_origins': 149 ('allowed_geolocation_origins',
143 'http://www.google.co.uk http://www.google.com', 150 'http://www.google.co.uk http://www.google.com'),
144 151
145 # Ensure that we never get random dialogs like "Unfortunately the process 152 # Ensure that we never get random dialogs like "Unfortunately the process
146 # android.process.acore has stopped", which steal the focus, and make our 153 # android.process.acore has stopped", which steal the focus, and make our
147 # automation fail (because the dialog steals the focus then mistakenly 154 # automation fail (because the dialog steals the focus then mistakenly
148 # receives the injected user input events). 155 # receives the injected user input events).
149 'anr_show_background': 0, 156 ('anr_show_background', 0),
150 157
151 'lockscreen.disabled': 1, 158 ('lockscreen.disabled', 1),
152 159
153 'screensaver_enabled': 0, 160 ('screensaver_enabled', 0),
154 }, 161 ]),
155 'settings/system': { 162 ('settings/system', [
156 # Don't want devices to accidentally rotate the screen as that could 163 # Don't want devices to accidentally rotate the screen as that could
157 # affect performance measurements. 164 # affect performance measurements.
158 'accelerometer_rotation': 0, 165 ('accelerometer_rotation', 0),
159 166
160 'lockscreen.disabled': 1, 167 ('lockscreen.disabled', 1),
161 168
162 # Turn down brightness and disable auto-adjust so that devices run cooler. 169 # Turn down brightness and disable auto-adjust so that devices run cooler.
163 'screen_brightness': 5, 170 ('screen_brightness', 5),
164 'screen_brightness_mode': 0, 171 ('screen_brightness_mode', 0),
165 172
166 'user_rotation': 0, 173 ('user_rotation', 0),
167 }, 174 ]),
168 } 175 ]
169 176
170 177 NETWORK_DISABLED_SETTINGS = [
171 NETWORK_DISABLED_SETTINGS = { 178 ('settings/global', [
172 'settings/global': { 179 ('airplane_mode_on', 1),
173 'airplane_mode_on': 1, 180 ('wifi_on', 0),
174 'wifi_on': 0, 181 ]),
175 }, 182 ]
176 }
OLDNEW
« no previous file with comments | « build/android/provision_devices.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698