History log of /frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5ba0d3e3a3035b67d2ce3a59975145b1e0061ef4 11-Apr-2016 Makoto Onuki <omakoto@google.com> ShortcutManager: First cut of CTS

Bug 27548047

Change-Id: Idd7a768ea4fee44c2cf6e3bd473cea9e67f5f7cd
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
cdc78f7137b8036dd96c92ff15fc04ee8fc49c5c 21-Mar-2016 Makoto Onuki <omakoto@google.com> ShortcutManager: Clean up for uninstalled packages.

Bug 27548047

Change-Id: I95ca832af496fbf71023eb27a7e2647c124ffb86
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
8a372a0a280127743ce9a7ce4b6198c7a02d2a4f 16-Mar-2016 Jeff Sharkey <jsharkey@android.com> Refactoring FBE APIs based on council feedback.

Mostly consists of removing the word "encryption" from most APIs,
since we can't actually make promises about the data being encrypted.

Bug: 27531029
Change-Id: Iace9d7c4e64716abf86ed11847c40f3947e1d625
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
720e0d2cb774f74617c90e2e1da54c107a34b79b 02-Mar-2016 Amith Yamasani <yamasani@google.com> Allow for uninstalled apps in ShortcutManager

In split system/user devices, user 0 will not have
several of the system apps installed by default. So
system services that are doing package queries need
to consider uninstalled packages as well in some cases.

Bug: 27388370
Change-Id: If6f4b20f60d36743c76ef307e0ac74112b2ca69e
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
e7d716d5e35a4e6b5fcc1ff012942e4ad4933d1a 14-Jan-2016 Jiaquan He <hejq@google.com> Add support for shortcuts with the shift key.

Now shortcuts with the shift key can be defined in
frameworks/base/packages/SettingsProvider/res/xml/bookmarks.xml.

Sample:

<bookmark
package="package"
class="package.Class"
shift="true"
shortcut="z" />

Bug 26540880

Change-Id: Ib6d6ea59124226d4e4eb8ec9972059f2d71bd77e
(cherry picked from commit e7319ecbbe865db8884914ceb10f526f4e160a64)
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
2a9e3f8e6813716ab88ca54fd04ae047dc9aaaeb 18-Dec-2015 Jeff Sharkey <jsharkey@android.com> Better named encryption flags, start triaging.

Create distinct flags for encryption aware, unaware, and both, and
name them like the other MATCH_ flags.

Start adding logic to help triage all system internal callers to
verify that they've done their homework and thought about how to
handle apps while locked. Call sites in the system should either
ask for explicit matching behavior, or explicitly use the DEFAULT
match flag to indicate that they've been triaged to use the
default state-based matching.

Bug: 26250295
Change-Id: I86214e5c4f71a6dc72f06930800388713aecd107
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
683914bfb13908bf380a25258cd45bcf43f13dc9 15-Jan-2015 Svetoslav <svetoslavganov@google.com> Rewrite of the settings provider.

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
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
b10e33ff804a831c71be9303146cea892b9aeb5d 04-Feb-2015 Jorim Jaggi <jjaggi@google.com> Split up android.policy into framework.jar and services.jar 1/3

Change-Id: Ifd69f1f3dd308a7e17a1442e2f3950da8b03cec4
/frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java