summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/android/apply_shared_preference_file.py
blob: fbeed28c16b29d747ed946c32f7b7140fd8542dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/env vpython3
#
# Copyright 2018 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.

"""Manually applies a shared preference JSON file.

If needed during automation, use the --shared-prefs-file in test_runner.py
instead.
"""

import argparse
import sys

# pylint: disable=ungrouped-imports
from pylib.constants import host_paths
if host_paths.DEVIL_PATH not in sys.path:
  sys.path.append(host_paths.DEVIL_PATH)

from devil.android import device_utils
from devil.android.sdk import shared_prefs
from pylib.utils import shared_preference_utils


def main():
  parser = argparse.ArgumentParser(
      description='Manually apply shared preference JSON files.')
  parser.add_argument('filepaths', nargs='*',
                      help='Any number of paths to shared preference JSON '
                           'files to apply.')
  args = parser.parse_args()

  all_devices = device_utils.DeviceUtils.HealthyDevices()
  if not all_devices:
    raise RuntimeError('No healthy devices attached')

  for filepath in args.filepaths:
    all_settings = shared_preference_utils.ExtractSettingsFromJson(filepath)
    for setting in all_settings:
      for device in all_devices:
        shared_pref = shared_prefs.SharedPrefs(
            device, setting['package'], setting['filename'],
            use_encrypted_path=setting.get('supports_encrypted_path', False))
        shared_preference_utils.ApplySharedPreferenceSetting(
            shared_pref, setting)


if __name__ == '__main__':
  main()