aboutsummaryrefslogtreecommitdiff
path: root/catapult/devil/devil/android/sdk/shared_prefs.py
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/devil/devil/android/sdk/shared_prefs.py')
-rw-r--r--catapult/devil/devil/android/sdk/shared_prefs.py33
1 files changed, 18 insertions, 15 deletions
diff --git a/catapult/devil/devil/android/sdk/shared_prefs.py b/catapult/devil/devil/android/sdk/shared_prefs.py
index c8c82b4e..7b12bf54 100644
--- a/catapult/devil/devil/android/sdk/shared_prefs.py
+++ b/catapult/devil/devil/android/sdk/shared_prefs.py
@@ -1,7 +1,6 @@
# Copyright 2015 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.
-
"""Helper object to read and modify Shared Preferences from Android apps.
See e.g.:
@@ -17,7 +16,6 @@ from devil.android.sdk import version_codes
logger = logging.getLogger(__name__)
-
_XML_DECLARATION = "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n"
@@ -161,12 +159,14 @@ class StringSetPref(StringPref):
ElementTree.SubElement(self._elem, 'string').text = str(item)
-_PREF_TYPES = {c.tag_name: c for c in [BooleanPref, FloatPref, IntPref,
- LongPref, StringPref, StringSetPref]}
+_PREF_TYPES = {
+ c.tag_name: c
+ for c in
+ [BooleanPref, FloatPref, IntPref, LongPref, StringPref, StringSetPref]
+}
class SharedPrefs(object):
-
def __init__(self, device, package, filename, use_encrypted_path=False):
"""Helper object to read and update "Shared Prefs" of Android apps.
@@ -224,8 +224,10 @@ class SharedPrefs(object):
def __repr__(self):
"""Get a useful printable representation of the object."""
return '<{cls} file {filename} for {package} on {device}>'.format(
- cls=type(self).__name__, filename=self.filename, package=self.package,
- device=str(self._device))
+ cls=type(self).__name__,
+ filename=self.filename,
+ package=self.package,
+ device=str(self._device))
def __str__(self):
"""Get the underlying xml document as a string."""
@@ -292,15 +294,16 @@ class SharedPrefs(object):
return
self._device.RunShellCommand(
['mkdir', '-p', posixpath.dirname(self.path)],
- as_root=True, check_return=True)
+ as_root=True,
+ check_return=True)
self._device.WriteFile(self.path, str(self), as_root=True)
# Creating the directory/file can cause issues with SELinux if they did
# not already exist. As a workaround, apply the package's security context
# to the shared_prefs directory, which mimics the behavior of a file
# created by the app itself
if self._device.build_version_sdk >= version_codes.MARSHMALLOW:
- security_context = self._device.GetSecurityContextForPackage(self.package,
- encrypted=self._encrypted)
+ security_context = self._device.GetSecurityContextForPackage(
+ self.package, encrypted=self._encrypted)
if security_context is None:
raise device_errors.CommandFailedError(
'Failed to get security context for %s' % self.package)
@@ -310,11 +313,11 @@ class SharedPrefs(object):
# Ensure that there isn't both an encrypted and unencrypted version of the
# file on the device at the same time.
if self._device.build_version_sdk >= version_codes.NOUGAT:
- remove_path = (self._unencrypted_path if self._encrypted
- else self._encrypted_path)
+ remove_path = (self._unencrypted_path
+ if self._encrypted else self._encrypted_path)
if self._device.PathExists(remove_path, as_root=True):
logging.warning('Found an equivalent shared prefs file at %s, removing',
- remove_path)
+ remove_path)
self._device.RemovePath(remove_path, as_root=True)
self._device.KillAll(self.package, exact=True, as_root=True, quiet=True)
@@ -431,8 +434,8 @@ class SharedPrefs(object):
pref = pref_cls(self._GetChild(key))
old_value = pref.get()
except KeyError:
- pref = pref_cls(ElementTree.SubElement(
- self.xml, pref_cls.tag_name, {'name': key}))
+ pref = pref_cls(
+ ElementTree.SubElement(self.xml, pref_cls.tag_name, {'name': key}))
old_value = None
if old_value != value:
pref.set(value)