summaryrefslogtreecommitdiffstats
path: root/packages/SettingsProvider
Commit message (Collapse)AuthorAgeFilesLines
* Back up and restore the set of enabled IMEsChristopher Tate2015-03-231-1/+2
| | | | | | | | | | | | | | | | | The restored set of enabled IMEs/subtypes is merged into the current state of the system, rather than simply replacing it. This is because we do not want to accidentally disable or reconfigure something that the user is currently relying on. There's a certain amount of repetitive activity here, rebuilding the enabled-state data structures in a different format, but it's important for maintainability that the restore code be able to rely on the core InputMethodUtils implementation of reading/writing the settings element. Bug 19822542 Change-Id: If0104151b3526da6ecc669adde3119a239ecafeb
* Import translations. DO NOT MERGEGeoff Mendal2015-03-212-0/+47
| | | | | Change-Id: I0acc044f88445fe6d48f84bcaee6a971409ad144 Auto-generated-cl: translation import
* Revert "Persist settings on a normal priority thread."Svetoslav Ganov2015-03-171-23/+3
| | | | | | This reverts commit d289e64a2d7c8efba78b9066b647ee321eba701a. Change-Id: Ic9455b538e0be8b9a4e4672f99b14978e70d2911
* Merge restored accessibility enable state, don't overwriteChristopher Tate2015-03-161-1/+2
| | | | | | | | | | | We do not want to accidentally disable the user's currently-enabled accessibility service(s); presumably they turned them on during setup for a reason. We now merge the prior + current states rather than simply replacing the current state with the former. Bug 19427367 Change-Id: I96eb47df57318c88066c5da6862f23f656639148
* Notification listener backup & restoreChristopher Tate2015-03-162-26/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now back up & restore the set of enabled notification listeners. Post- restore, a listener that had been enabled on the ancestral device will be enabled on the current device as soon as it's installed, matching the user's previous configuration. After this has happened the enable/disable state for that app is not "sticky"; disabling it again will work as expected. The infrastructure for accomplishing this is general: it can be leveraged by any ManagedServices derivative. There's a bit of extra wiring in the settings provider to support the restore-time information flow as well. This is because ManagedServices -- like many other parts of the system -- monitors writes to the settings provider and does work in response to new writes of the elements that it cares about. Unfortunately this means that there is no way to use the BackupAgent's restoreFinished() hook to post- process the restored data: by the time it is run, the ManagedService's observers have already executed and culled any unknown components from the description that was just pushed into settings. As of this patch, the settings provider's restore logic knows that a particular settings element will require a message to interested observers about the restore-driven change. The message is delivered as a broadcast, and is sent after the new value has been committed to the settings db. Adding other system ManagedService handling that parallels this will only require adding a new corresponding entry to the table of individual settings for which the relevant "this settings element is being restored" broadcast is sent, found in SettingsHelper. (It isn't sent for all settings elements because very few settings elements have semantics that require it; 3rd party code won't be running yet during platform restore anyway; and sending up to hundreds of broadcasts during setup & restore is far from ideal.) Bug 19254153 Change-Id: Ib8268c6cb273862a3ee089d2764f3bff4a299103
* Persist settings on a normal priority thread.Svetoslav2015-03-131-3/+23
| | | | | | | | | | | We were doing the work for persisting settings on a background priority thread and as a result persistence was not happening correctly on a low end devices. Now we use a worker thread with normal priority. bug:19611897 Change-Id: I378c6e324935f5e3def8b986bd48486bfab55265
* Fix XML parsing crash in SettingsProviderRaph Levien2015-03-111-1/+1
| | | | | | | | | A previous change added more whitespace to settings_global.xml to improve human readability, but the parser is overly picky in ignoring whitespace. This patch makes it accept all whitespace strings. Bug: 19696812 Change-Id: I3ebb8f6df2e25f4e6b6841da743be3f3a91e2442
* Make settings XML files readableSvetoslav2015-03-101-1/+2
| | | | Change-Id: I320f5419e045d257dc5ccbf81a9434f9b9d38564
* Backup/restore owner info from locksettingsAmith Yamasani2015-02-181-4/+108
| | | | | | | | | | | | | Backup the owner info string and whether or not owner info is to be shown on the lockscreen. Watch for changes to the two settings in LockSettingsService and inform backup manager. Bump up version numbers for the new entity. Bug: 19300363 Change-Id: I35485c961d18b26be68873f4d5eeedc5ae513cc8
* am 32f216c3: am 8cd95aba: am 56238eaa: am 129ea76a: Fix wifi AP backupChristopher Tate2015-02-181-0/+1
|\ | | | | | | | | * commit '32f216c359540219905bbe0295da31e594d83f5f': Fix wifi AP backup
| * am 8cd95aba: am 56238eaa: am 129ea76a: Fix wifi AP backupChristopher Tate2015-02-181-0/+1
| |\ | | | | | | | | | | | | * commit '8cd95aba2f97eb552d437c185b156ba964886a6e': Fix wifi AP backup
| | * am 56238eaa: am 129ea76a: Fix wifi AP backupChristopher Tate2015-02-181-0/+1
| | |\ | | | | | | | | | | | | | | | | * commit '56238eaaa3688c9a9858058f4dc63aade7092d9b': Fix wifi AP backup
| | | * am 129ea76a: Fix wifi AP backupChristopher Tate2015-02-181-0/+1
| | | |\ | | | | | | | | | | | | | | | | | | | | * commit '129ea76a4a129fb3e8e997e8c604c0712e8a9d73': Fix wifi AP backup
| | | | * Fix wifi AP backupChristopher Tate2015-02-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An OutputStream buffers only by explicit contract. OutputStreamWriter buffers internally, always. Do not get these behaviors confused. Bug 19341967 Change-Id: I0610ed625b0175620083dd286f3a73c24956b171
| | * | | Import translations. DO NOT MERGEGeoff Mendal2015-02-1219-2/+21
| | |/ / | | | | | | | | | | | | | | | | Change-Id: Idd108e5eb791007b3604c67ce4a0853a368a445e Auto-generated-cl: translation import
* | | | Location settings not properly set.Svetoslav2015-02-171-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Settings provider has special handling for location providers. The code to set the location providers was calling itself recursively instead of updating the setting value. bug:19361236 Change-Id: I1ef1932c7faa8226b52123aa3f23f38048258328
* | | | Merge "Add dump support to the settings provider"Svetoslav2015-02-182-7/+63
|\ \ \ \
| * | | | Add dump support to the settings providerSvetoslav2015-02-172-7/+63
| | | | | | | | | | | | | | | | | | | | Change-Id: I1338af4c660e3ecc412954a7cb9b820952aae523
* | | | | Handle a missed case in query the settings providerSvetoslav2015-02-124-22/+62
|/ / / / | | | | | | | | | | | | | | | | | | | | bug:19361521 Change-Id: Ibf4731b5d665563bb87ef93a4cf63e4c4d2e46a4
* | | | Rewrite of the settings provider.Svetoslav2015-02-1111-1077/+2978
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change modifies how global, secure, and system settings are managed. In particular, we are moving away from the database to an in-memory model where the settings are persisted asynchronously to XML. This simplifies evolution and improves performance, for example, changing a setting is down from around 400 ms to 10 ms as we do not hit the disk. The trade off is that we may lose data if the system dies before persisting the change. In practice this is not a problem because 1) this is very rare; 2) apps changing a setting use the setting itself to know if it changed, so next time the app runs (after a reboot that lost data) the app will be oblivious that data was lost. When persisting the settings we delay the write a bit to batch multiple changes. If a change occurs we reschedule the write but when a maximal delay occurs after the first non-persisted change we write to disk no matter what. This prevents a malicious app poking the settings all the time to prevent them being persisted. The settings are persisted in separate XML files for each type of setting per user. Specifically, they are in the user's system directory and the files are named: settings_type_of_settings.xml. Data migration is performed after the data base is upgraded to its last version after which the global, system, and secure tables are dropped. The global, secure, and system settings now have the same version and are upgraded as a whole per user to allow migration of settings between these them. The upgrade steps should be added to the SettingsProvider.UpgradeController and not in the DatabaseHelper. Setting states are mapped to an integer key derived from the user id and the setting type. Therefore, all setting states are in a lookup table which makes all opertions very fast. The code is a complete rewrite aiming for improved clarity and increased maintainability as opposed to using minor optimizations. Now setting and getting the changed setting takes around 10 ms. We can optimize later if needed. Now the code path through the call API and the one through the content provider APIs end up being the same which fixes bugs where some enterprise cases were not implemented in the content provider code path. Note that we are keeping the call code path as it is a bit faster than the provider APIs with about 2 ms for setting and getting a setting. The front-end settings APIs use the call method. Further, we are restricting apps writing to the system settings. If the app is targeting API higher than Lollipop MR1 we do not let them have their settings in the system ones. Otherwise, we warn that this will become an error. System apps like GMS core can change anything like the system or shell or root. Since old apps can add their settings, this can increase the system memory footprint with no limit. Therefore, we limit the amount of settings data an app can write to the system settings before starting to reject new data. Another problem with the system settings was that an app with a permission to write there can put invalid values for the settings. We now have validators for these settings that ensure only valid values are accepted. Since apps can put their settings in the system table, when the app is uninstalled this data is stale in the sytem table without ever being used. Now we keep the package that last changed the setting and when the package is removed all settings it touched that are not in the ones defined in the APIs are dropped. Keeping in memory settings means that we cannot handle arbitrary SQL operations, rather the supported operations are on a single setting by name and all settings (querying). This should not be a problem in practice but we have to verify it. For that reason, we log unsupported SQL operations to the event log to do some crunching and see what if any cases we should additionally support. There are also tests for the settings provider in this change. Change-Id: I941dc6e567588d9812905b147dbe1a3191c8dd68
* | | | Move AudioService to services.John Spurlock2015-02-091-14/+14
| | | | | | | | | | | | | | | | | | | | | | | | ...and a few dependencies. Move remaining shared items to AudioSystem. Change-Id: Ib9623ff867678d34977337856bb0156e8cdaeeb5
* | | | Use shared value for default muteable streams.John Spurlock2015-02-051-4/+1
| | | | | | | | | | | | | | | | Change-Id: Ib8fa7aee3bed83fc26945fd0caf0cbd9f4f8af3a
* | | | Import translations. DO NOT MERGEGeoff Mendal2015-02-021-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I5113a08f43c71e78b43dc3c73f8c329adc411e9a Auto-generated-cl: translation import
* | | | am a97fe138: Merge "Exclude ephemeral networks from wifi backup" into ↵Christopher Tate2015-01-091-29/+105
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | lmp-mr1-dev automerge: 68dabad automerge: f3ac99f * commit 'f3ac99f2e093f851ca52bcd5aefb251046db10fa': Exclude ephemeral networks from wifi backup
| * | | am a97fe138: Merge "Exclude ephemeral networks from wifi backup" into ↵Christopher Tate2015-01-091-29/+105
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | lmp-mr1-dev automerge: 68dabad * commit '68dabada9e6e380ec0c6dacbc2ce7a46aa663a07': Exclude ephemeral networks from wifi backup
| | * | am a97fe138: Merge "Exclude ephemeral networks from wifi backup" into ↵Christopher Tate2015-01-091-29/+105
| | |\ \ | | | |/ | | | | | | | | | | | | | | | | | | | | lmp-mr1-dev * commit 'a97fe1387df731ddbbdae7c75dfbdfa4f1eb0339': Exclude ephemeral networks from wifi backup
| | | * Exclude ephemeral networks from wifi backupChristopher Tate2015-01-081-29/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We compare the set of networks defined in the supplicant with the set of networks described as "configured" by the Wifi Manager. The latter excludes ephemeral networks, so any network definition we find in the supplicant data that we do not also find in the configured network set, we ignore for backup purposes. Bug 18917753 Change-Id: I8e0f258d0cdb72d7bf9482fafe64dc921419fcb2
* | | | Merge "Don\'t backup ringtone on non-telephony devices." into lmp-mr1-dev ↵Marvin Paul2014-12-301-3/+18
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | automerge: a30fdf7 automerge: 8298afb automerge: 9ff2160 * commit '9ff2160eddf4dfbd118eb9b0656e7803603f215a': Don't backup ringtone on non-telephony devices.
| * | | Merge "Don\'t backup ringtone on non-telephony devices." into lmp-mr1-dev ↵Marvin Paul2014-12-301-3/+18
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | automerge: a30fdf7 automerge: 8298afb * commit '8298afbc78f2b2c609f2e52ca3fc7c6a2cd9797e': Don't backup ringtone on non-telephony devices.
| | * | Merge "Don\'t backup ringtone on non-telephony devices." into lmp-mr1-devMarvin Paul2014-12-301-3/+18
| | |\ \ | | | |/ | | | | | | | | | | | | | | | | | | | | automerge: a30fdf7 * commit 'a30fdf790d66e241252c51d7dbdc401e021e51ad': Don't backup ringtone on non-telephony devices.
| | | * Don't backup ringtone on non-telephony devices.Marvin Paul2014-12-231-3/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Restoring a device that supports telephony using the backup set of a non-telephony device would cause the ringtone to be set to "None" instead of the default value. This was due to the fact that on non-telephony devices, the ringtone value was being backed up as "_silent" instead of null. Bug: 18777629 Change-Id: Idece1f874438a895169dbba7df1d716adea6660e
| | | * Import translations. DO NOT MERGEBaligh Uddin2014-12-021-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: Ia2ccce90103cdc5e6b3814d50394e9c81e38010d Auto-generated-cl: translation import
* | | | Buffer SettingsBackupAgent checksum writesMarvin Paul2014-12-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reduce SettingsBackupAgent I/O when writing new checksum by wrapping FileOutputStream in a BufferedOutputStream. Bug: 18674340 Change-Id: Ia8169445d42d032e24d8a395e678295f67841a65
* | | | am bb35bbf1: am 6f10d1c3: am b22462c5: Merge "Adding new setting ↵Amit Mahajan2014-11-191-2/+1
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | LTE_SERVICE_FORCED." into lmp-mr1-dev * commit 'bb35bbf198201fc00858ea56cdf97eae8f2cfdbb': Adding new setting LTE_SERVICE_FORCED.
| * | | am 6f10d1c3: am b22462c5: Merge "Adding new setting LTE_SERVICE_FORCED." ↵Amit Mahajan2014-11-191-2/+1
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | into lmp-mr1-dev * commit '6f10d1c34efba28856fea162f1d193319cad2576': Adding new setting LTE_SERVICE_FORCED.
| | * | am b22462c5: Merge "Adding new setting LTE_SERVICE_FORCED." into lmp-mr1-devAmit Mahajan2014-11-191-2/+1
| | |\ \ | | | |/ | | | | | | | | | | | | * commit 'b22462c57f35404f5b39680a9fb76165968d8faf': Adding new setting LTE_SERVICE_FORCED.
| | | * Adding new setting LTE_SERVICE_FORCED.Amit Mahajan2014-11-181-2/+1
| | | | | | | | | | | | | | | | | | | | Bug: 18328639 Change-Id: Icbf9d7987d27af34cbe4ee1b4e9df19e139c2fc7
* | | | am 670cf5c6: am 22c3f906: am 628d2606: Merge "Move ringtone redirection to ↵Jeff Sharkey2014-11-141-74/+2
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | MediaPlayer." into lmp-mr1-dev * commit '670cf5c663f4f17faafa9d4f7cf7209f68a02468': Move ringtone redirection to MediaPlayer.
| * | | am 22c3f906: am 628d2606: Merge "Move ringtone redirection to MediaPlayer." ↵Jeff Sharkey2014-11-141-74/+2
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | into lmp-mr1-dev * commit '22c3f90639fa8d74de68a63b0a13412740580845': Move ringtone redirection to MediaPlayer.
| | * | am 628d2606: Merge "Move ringtone redirection to MediaPlayer." into lmp-mr1-devJeff Sharkey2014-11-131-74/+2
| | |\ \ | | | |/ | | | | | | | | | | | | * commit '628d2606f757da7b6734c7cd438535069f77b065': Move ringtone redirection to MediaPlayer.
| | | * Move ringtone redirection to MediaPlayer.Jeff Sharkey2014-11-131-74/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Way back in API 1 we defined Settings.System.DEFAULT_NOTIFICATION_URI which redirects through SettingsProvider before finally ariving at the real underlying ContentProvider, usually MediaStore. With new SELinux rules, we're no longer allowing the system_server to hold open FDs to shared storage devices, which causes these proxied openFile() calls to fail. To work around this, teach MediaPlayer to resolve the final ringtone Uri without going through the system. Bug: 18226181 Change-Id: I40c68617c952c0bb3e939e5084f5b68a35e31ae3
* | | | am 829519df: Merge "Add HIDE_CARRIER_NETWORK_SETTINGS global setting." into ↵Junda Liu2014-11-121-0/+3
|\ \ \ \ | |/ / / | | | | | | | | | | | | | | | | | | | | lmp-mr1-dev automerge: 2eb5a5f automerge: 5716ebe * commit '829519dfaab9f2c13492d97556a95300a6908ea4': Add HIDE_CARRIER_NETWORK_SETTINGS global setting.
| * | | Merge "Add HIDE_CARRIER_NETWORK_SETTINGS global setting." into lmp-mr1-dev ↵Junda Liu2014-11-121-0/+3
| |\ \ \ | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | automerge: 2eb5a5f automerge: 5716ebe * commit '5716ebe50debab01ede01b2f99abde85a250c82c': Add HIDE_CARRIER_NETWORK_SETTINGS global setting.
| | * | Merge "Add HIDE_CARRIER_NETWORK_SETTINGS global setting." into lmp-mr1-devJunda Liu2014-11-121-0/+3
| | |\ \ | | | |/ | | | | | | | | | | | | | | | | | | | | automerge: 2eb5a5f * commit '2eb5a5f727d4692b70b68cb4b1b7e31bf74f13a4': Add HIDE_CARRIER_NETWORK_SETTINGS global setting.
| | | * Merge "Add HIDE_CARRIER_NETWORK_SETTINGS global setting." into lmp-mr1-devJunda Liu2014-11-121-0/+3
| | | |\
| | | | * Add HIDE_CARRIER_NETWORK_SETTINGS global setting.Junda Liu2014-11-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also remove hidden APIs to get/set the preference. Bug: b/17673255 Change-Id: I8957b0380bf617c953f6665cbfdcc77c3be78411
* | | | | am 41cf9241: am 1e64aa33: Merge "Reset rotation-lock-for-accessibility ↵John Spurlock2014-11-071-1/+17
|\ \ \ \ \ | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | setting on upgrade." into lmp-mr1-dev automerge: e586ab7 * commit '41cf924137feb7be16f93d5f2701f2af2a74fade': Reset rotation-lock-for-accessibility setting on upgrade.
| * | | | am 1e64aa33: Merge "Reset rotation-lock-for-accessibility setting on ↵John Spurlock2014-11-071-1/+17
| |\ \ \ \ | | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | upgrade." into lmp-mr1-dev automerge: e586ab7 * commit '1e64aa3382f6d25a6ac2231f861c25ecca328285': Reset rotation-lock-for-accessibility setting on upgrade.
| | * | | Merge "Reset rotation-lock-for-accessibility setting on upgrade." into ↵John Spurlock2014-11-071-1/+17
| | |\ \ \ | | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lmp-mr1-dev automerge: e586ab7 * commit 'e586ab79670b6fabfa80f1f29ecb184f97f06f72': Reset rotation-lock-for-accessibility setting on upgrade.
| | | * | Reset rotation-lock-for-accessibility setting on upgrade.John Spurlock2014-11-071-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since it now hides the display setting, force the user to opt-in again. Bug: 18104538 Change-Id: I4cac947f7a35ba0f578d059542401dcc5d169307