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

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

Issue 179333002: Update android device provisioning script to set some reliability settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch for landing Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « build/android/provision_devices.py ('k') | build/android/pylib/device_settings.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5
6 class ContentSettings(dict):
7
8 """A dict interface to interact with device content settings.
9
10 System properties are key/value pairs as exposed by adb shell content.
11 """
12
13 def __init__(self, table, adb):
14 super(ContentSettings, self).__init__()
15 self._table = table
16 self._adb = adb
17
18 def _GetTypeBinding(self, value):
19 if isinstance(value, bool):
20 return 'b'
21 if isinstance(value, float):
22 return 'f'
23 if isinstance(value, int):
24 return 'i'
25 if isinstance(value, long):
26 return 'l'
27 if isinstance(value, str):
28 return 's'
29 raise ValueError('Unsupported type %s' % type(value))
30
31 def iteritems(self):
32 # Example row:
33 # 'Row: 0 _id=13, name=logging_id2, value=-1fccbaa546705b05'
34 for row in self._adb.RunShellCommandWithSU(
35 'content query --uri content://%s' % self._table):
36 fields = row.split(', ')
37 key = None
38 value = None
39 for field in fields:
40 k, _, v = field.partition('=')
41 if k == 'name':
42 key = v
43 elif k == 'value':
44 value = v
45 assert key, value
46 yield key, value
47
48 def __getitem__(self, key):
49 return self._adb.RunShellCommandWithSU(
50 'content query --uri content://%s --where "name=\'%s\'" '
51 '--projection value' % (self._table, key)).strip()
52
53 def __setitem__(self, key, value):
54 if key in self:
55 self._adb.RunShellCommandWithSU(
56 'content update --uri content://%s '
57 '--bind value:%s:%s --where "name=\'%s\'"' % (
58 self._table,
59 self._GetTypeBinding(value), value, key))
60 else:
61 self._adb.RunShellCommandWithSU(
62 'content insert --uri content://%s '
63 '--bind name:%s:%s --bind value:%s:%s' % (
64 self._table,
65 self._GetTypeBinding(key), key,
66 self._GetTypeBinding(value), value))
67
68 def __delitem__(self, key):
69 self._adb.RunShellCommandWithSU(
70 'content delete --uri content://%s '
71 '--bind name:%s:%s' % (
72 self._table,
73 self._GetTypeBinding(key), key))
OLDNEW
« no previous file with comments | « build/android/provision_devices.py ('k') | build/android/pylib/device_settings.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698