The public API is not supposed to require the BACKUP permission in order
for an application to restore its own last-known-good backup data. However,
as currently implemented, BackupManager.requestRestore() [the public API
in question] depends on private Backup Manager methods that *do* enforce
that permission. The net result is that the method cannot be successfully
used by third party applications: it will throw an exception if attempted.
This CL restructures the permission checking involved.
First, the underlying beginRestoreSession() operation can now be passed a
'null' transport name; if this is done, then the restore session is begun
on whatever the currently-active transport is. Looking up the name of the
active transport is one of the permission-guarded actions that was required
with the initial implementation.
Second, a package name can now be passed to beginRestoreSession(). If
this is done, then the restore session can only be used to perform a
single-package restore of that one application. The BACKUP permission is
not required if the caller is tying the restore to its own package name.
In combination, these changes permit BackupManager.requestRestore() to
function without the calling app needing to hold any special permission.
The no-permission case is intentionally quite narrow: the caller must
hold the permission unless they both (a) pass 'null' for the transport
name, thereby accepting whatever the currently active transport is, and
(b) pass their own package name to restrict the restore session only
to their own app.
External bug http://code.google.com/p/android/issues/detail?id=10094
Internal bug 3197202
Change-Id: Ibc9d652323f2da03727d850f991b4096af6520d2
Rename method that was missed in previous ActionBar
refactoring. Deprecated previous version for compatibility for apps in
development.
Change-Id: I2c466aed8ed620aec5056026257e131fadf8843e
for programmatic scrolls
Allow for onScrollStateChanged implementations that end up changing
scroll state again.
Change-Id: I53105f5be708bacc0d3ec8e76ba1cc22f4131467
launch a new fragment on the same call.
There were some problems with the API design where you could do
things in such a way that a back stack entry that was not at the
top would get popped. Ouch. Hopefully this change prevents that
from being able to happen.
Change-Id: I8cbc952e12ddd231ff6c84b6e9bbf5125f449f04
Programmatic scrolls fail when the scroll has not had a chance
to start. In this case, the current position equals the last
position; the logic erroneously cancels the scrolls, assuming
that in this case the scroll has finished.
Also, new scrolls should cancel the old velocity whether they
are animated or not.
This has a companion change in external/webkit, which is not
required, but makes tap initiated scrolls work more reliably.
bug:1331125
bug:3099569
Change-Id: I80ae8e8cdefce2d8d09532f79d1b2e1ae4738fa6
DO NOT MERGE Fix bug 3121030 - Text handles erroneously appear over
extract mode IME window
Make the SelectionModifierCursorController track its show/hide state
more accurately in the presence of an extract mode IME.
Lazily initialize CursorControllers so that we don't end up creating
them for various TextViews where they are not needed.
Change-Id: I3dce7535db3a1bd25ed9899406de47b00058e665
- Add a XML parser to parse Wi-Fi configurations
- Add Wifi connection tests
- Fix issue: failure in setup will block the next tests.
call tearDown() if the test fails at setUp().
Change-Id: I1a380fa02ebc96b69165d1514da12df985224e8d
The ICU CLDR data doesn't use the month abbreviations that are
appropriate for the DatePicker, so use the framework copy of the CLDR
data.
Bug: 2641810
Change-Id: Ic0f7b461b43c76dfa3f8b73a9479b79df230d7bd