Commit Graph

579 Commits

Author SHA1 Message Date
Dianne Hackborn
2ee89ea288 Applications should -not- be able to set preferred activities.
I can't believe I let this slip through.  And in the SDK no less. :(

The APIs for setting preferred activities will now throw a security
exception when used.  This may break some apps, we'll see how it
goes.  If it is too bad we can just make these log and not throw
anything, but I would much prefer they throw an exception.

Change-Id: I3aed434750eef8b202aa9d5bd774a0121be521c6
2010-03-10 21:26:23 -08:00
Omari Stephens
d2a2daaa89 Fix small typo in javadoc: "deleting" -> "updating"
Change-Id: Ie0464aa92d33eb5b076a8122f5bd6317fd44a7b2
2010-03-10 18:54:49 -08:00
Fred Quintana
3802141d17 Merge "make the syncmanager keep track if whether a service has been unbound from so that it knows whether to call unbind at a later time" 2010-03-10 13:41:44 -08:00
Fred Quintana
3ec4730e37 make the syncmanager keep track if whether a service has been unbound
from so that it knows whether to call unbind at a later time

Change-Id: Ida0d4b06454909d84380e2336fcc238834d292bc
http://b/2492397
2010-03-10 12:38:10 -08:00
Suchi Amalapurapu
6069beb2df Rename ApplicationInfo.FLAG_ON_SDCARD to ApplicationInfo.FLAG_EXTERNAL_STORAGE
Change-Id: Iadef9f9bb2851c38b6d79be1bafbf932abce4210

Change-Id: I2e412bace3d8005db5057a3497bd836d0038b90c
2010-03-10 09:46:49 -08:00
Dianne Hackborn
cf244ada58 Add ability for some manifest attributes to reference resources.
This loosens our restriction on many manifest attributes requiring
literal string values, to allow various ones to use values from
resources.  This is only allowed if the resource value does not change
from configuration changes, and the restriction is still in place
for attributes that are core to security (requesting permissions) or
market operation (used libraries and features etc).

Change-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8
2010-03-09 17:18:05 -08:00
Brad Fitzpatrick
104798b706 Merge "Speed up ContentProvider.query() in simple case by ~30%" 2010-03-09 16:42:44 -08:00
Brad Fitzpatrick
9ffdfa0c23 Speed up ContentProvider.query() in simple case by ~30%
When query() uses bulkQuery() and we know we're going to need some
metadata right afterwards (number of rows and column index of _id, if
present), just asked for it in the initial binder transaction instead
of immediately fetching it again.

Also, this defers loading column names until the client asks for them.

This gets down the simpler (and very common) use cases of
ContentProvider.query() down to 3 binder calls:

   QUERY_TRANSACTION to android.content.ContentProvider$Transport
   GET_CURSOR_WINDOW_TRANSACTION to android.database.CursorToBulkCursorAdaptor
   CLOSE_TRANSACTION to android.database.CursorToBulkCursorAdaptor

More can still be done, but this is a good bite-sized first piece.

Change-Id: I7ad45949f53e0097ff18c2478d659f0f36929693
2010-03-09 15:20:21 -08:00
Suchi Amalapurapu
a2b6c3775e Add conditions to check for updated system applications. Restrict them
to internal flash only even before we copy.

Return error codes when install flag options mismatch.
Some conditions for existings apps
 - install flags override existing location
 - explicity manifest option install location overrides previous location
 - if upgraded package's install location is unspecified or auto, fall
   back to recommended install policy which considers user setting as well.

Check for sdcard status before finding available size on sdcard
Add light weight parsing for manifest attributes including package name and
install location only

Change-Id: I5143dda87c88c595f564b317326c926d0ec3ceb8
2010-03-09 09:24:35 -08:00
Brad Fitzpatrick
f19d43d880 Merge "Fix Parcel leak in ContentProvider.call()" 2010-03-08 22:18:52 -08:00
Brad Fitzpatrick
dfb437e17c Fix Parcel leak in ContentProvider.call()
This manifested itself as memory allocation and Binder failures during
my load testing / benchmarking.

BUG=2498615

Change-Id: I260fd916f97777fc98bee98d10474f12deb21dee
2010-03-08 22:12:49 -08:00
Dan Morrill
50ab63f583 Adding definitions & APIs for features that are newly-optional in FroYo.
This also refactors the files containing the features so that they are more
modular. Note that this also changes data/etc/Android.mk so that
required_hardware.xml is NOT copied automatically for all devices
anymore. Accordingly, that file is removed.
2010-03-08 19:28:28 -08:00
Christopher Tate
4528186e0d Refactor android.backup => android.app.backup
Change-Id: I0b21316ff890d7f3c7d4b82837bb60670724c2e8
2010-03-05 16:27:15 -08:00
Brad Fitzpatrick
1877d0158b Add "call" method on ContentProvider.
This permits implementing interfaces which are faster than using
remote Cursors.  It then uses it for Settings & SettingProvider, which
together account for ~50% of total ContentProvider event loop stalls
across Froyo dogfooders.

For fetching Settings this looks like it should reduce average
Settings lookup from 10 ms to 0.4 ms on Sholes, once the
SettingsProvider serves most gets from in-memory cache.  Currently it
brings the Sholes average down from 10ms to 2.5 ms while still using
SQLite queries on each get.
2010-03-05 12:08:39 -08:00
Dianne Hackborn
7299c41630 Refactor car mode.
Extract all UI behavior from dock observer and ACTION_DOCK_EVENT.

Also introduce a desk type to go along with the car type all through
the resource system, since we now need to have corresponding high-level
broadcasts for desk dock mode.  As part of that I also reworked some
of the logic for switching modes to all funnel through a single
update() call that looks all of the current state to decide what to
do next, and fixed various locking issues.

In addition I found there were bugs in the configuration change
handling causing us to only switch into the car mode config and
then never get out of it.  Unfortunately now that we are actually
changing the configuration for each mode change, the transitions
between them are really crummy as we restart all kinds of
activities. :(
2010-03-05 10:57:47 -08:00
Joe Onorato
1a31ae34a0 Merge "Fix typo. According to grep, this is the only place in the tree that has it." 2010-03-04 13:13:42 -08:00
Joe Onorato
8a051a4ec3 Fix typo. According to grep, this is the only place in the tree that has it. 2010-03-04 15:54:50 -05:00
Dianne Hackborn
20cb56e26e Fix some bugs.
Bug #2376231: Apps lose window focus (and back key causes ANR) if the
lock screen is dismissed while the phone is in landscape mode

This is another case where we weren't recomputing the focused window
after changing the visibility policy.

bug #2479958: Investigate source of "Resources don't contain package
for resource number 0x7f0a0000"

Um, okay, so it turns out there were bugs all over the place where
we would load an XML resource from a another application, but not
use the Resources for that application to retrieve its resources...!
I think the only reason any of this stuff was working at all was
because it typically only cared about retrieving the resource
identifiers of the items (it would look up the values later).

Bug #2401082: Passion ERE26 monkey crash - InputMethodManagerService

Add some null checks.
2010-03-04 11:52:14 -08:00
Dianne Hackborn
c1552397be Allow multiple original-package tags.
Also fix some issues with moving files from update commands.
2010-03-03 16:26:26 -08:00
Mike Lockwood
bf2dd44a6f MountService: Send ACTION_MEDIA_UNSHARED Intent a volume is no longer shared via UMS.
Change-Id: I21c887ae76eccabcc5d8449aa0a38e98758e8958
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-03 06:16:52 -05:00
Fred Quintana
db204c2383 Merge "change ObserverNode.binderDied() to lock the root node before manipulating the observers tree by calling removeObserverLocked()" 2010-03-02 13:23:17 -08:00
Fred Quintana
002ffad599 change ObserverNode.binderDied() to lock the root node before manipulating
the observers tree by calling removeObserverLocked()

http://b/issue?id=2457485
2010-03-02 11:18:16 -08:00
Dianne Hackborn
ef05e076ce Fix issue #2448075: aapt doesn't fix up activity-alias android:targetActivity links
And related:

- The aapt tool now sets a resource configurations sdk level to match any configs
  that have been set (for example if you specify density your sdk level will be
  at least 4).
- New option to modify the targetPackage attribute of instrumentation.
- Clean up of aapt options help.
- Fix of UI type values to leave 0 for "unspecified".
- Make the UI mode config APIs public.
2010-03-01 20:42:14 -08:00
Fred Quintana
881cc1dffb Merge "fix a bug where if a syncmanager gets back a SyncAlreadyInProgress error it immediately reschedules another sync, thus burning up the battery if the sync is in progress for a while." 2010-03-01 13:00:26 -08:00
Fred Quintana
82c5c4248a fix a bug where if a syncmanager gets back a SyncAlreadyInProgress error
it immediately reschedules another sync, thus burning up the battery if
the sync is in progress for a while.

http://b/issue?id=2477901
2010-03-01 12:36:21 -08:00
Dianne Hackborn
87bba1ee14 Move DeviceAdmin APIs to android.app.admin.
Also add ability for admins to hide themselves when not in use,
a facility for admins to not allow other admins to reset
their password, and debug dumping.
2010-02-26 23:32:48 -08:00
Suchi Amalapurapu
1f9e1b4c37 Remove public variables in PackageManager
Dont invoke getInstallLocation for forward locked apps.
If INSTALL_ON_SDCARD is selected as default, forward locked
apps are not being installed because of conflicting flags.
2010-02-26 14:32:24 -08:00
Fred Quintana
6cb6f246fe remove redundant @hides 2010-02-26 13:19:18 -08:00
Fred Quintana
1b487ec44b expose some sync control methods
- ActiveSyncInfo
- ContentResolver.addStatusChangeListener
  - SYNC_OBSERVER_TYPE_SETTINGS
  - SYNC_OBSERVER_TYPE_PENDING
  - SYNC_OBSERVER_TYPE_ACTIVE
- make the ContentService resilient to nulls passed in to the
  status change listener registration and unregistration calls

bug http://b/issue?id=2337197
2010-02-26 13:07:54 -08:00
Bjorn Bringert
08bbffb049 Support CharSequence lists+arrays in Bundle+Intent
Fixes http://b/issue?id=2468093

Change-Id: Id82686f6ca8c9501f6db8a07018278a78ddacd05
2010-02-26 11:16:17 -08:00
Suchi Amalapurapu
aaec779513 Pick up default install location 2010-02-25 14:03:34 -08:00
Dianne Hackborn
2269d1572e Re-arrange android-common so framework no longer links with it.
This is the framework part, moving classes around so the framework
no longer needs to link to android-common.  Makes some APIs public,
others that didn't need to be public are private in the framework,
some small things are copied.
2010-02-25 11:39:33 -08:00
Christopher Tate
3dda518a4f Add 'restoreAnyVersion' attr for apps that want to restore "future" data
If a backup-participating app sets android:restoreAnyVersion="true" in its
manifest <application> tag, then its agent will be invoked for restore
even if the available dataset was created by a later version of the app
than is currently installed on the device.  This will not typically be
a problem for third party applications, since for them the installation
and initial data restore are tightly coupled, but it can cause serious
problems for applications which are both preinstalled on the system
partition and overridden by later updates.  The primary difficulty
that this new attribute addresses is this:

1. User buys a Nexus One, Market self-updates, and the user installs some apps.
At this point the backup data on the server may indicate that the version of
Market which originated its bookkeeping is newer than the stock N1 Market app.
2. User loses their phone, and buys a replacement N1.  At setup time, Market
has not yet had a chance to self-update, so when the restore comes in, it's
tagged as being from "the future" and so the restore is refused.  No apps get
reinstalled.

Bug: 2442127
Change-Id: I076a9553dc613e5c3189350e778315718ed1ed2b
2010-02-24 17:23:54 -08:00
Dianne Hackborn
c3b91fd26a Fix crash in PendingIntentRecord debug output.
Add null checks to a few places to avoid crashes when dumping
debug data.

Also add some sanity checks for accessing content providers in
the activity manager.
2010-02-24 13:12:52 -08:00
Suchi Amalapurapu
cf6eaeaae9 Some framework fixes for apps on sd
change hard coded path in installd
fix tests
Work around for renaming containers.
Do forced unmount when destroying containers.
Force a gc in default container service to release handle to parsed package
and thus avoid getting killed by vold
Some cosmetic changes to PackageManager api.
Unit tests for renaming container for MountService
Remove internal size limit on app to be installed.
2010-02-24 11:31:36 -08:00
Brad Fitzpatrick
25880968cb Reduce SQLiteDatabase and ContentResolver EventLog logging thresholds.
Turns out the database is used a ton, and not particularly quickly, so
these were spamming the logs at their prior 100ms thresholds.  Setting
it to 500ms now.  (still sub-sampled, so should be ~5x less spammy...)
2010-02-22 15:17:49 -08:00
Tobias Haamel
5333288354 Manager for controlling the UI modes.
The ui modes can be controlled with the UiModeManager class, which
is can be retrieved as a system service via getSytemService(Context.UIMODE_SERVICE).

The class is necessary so that CarHome can be unbundled and other apps can
disable the car mode. Its currently a hidden class, since I'm not sure if this
is the best way to provide this functionality to the user.
2010-02-22 21:42:39 +01:00
Dianne Hackborn
21f1bd17b2 Fix issue #2438980: Implement package watcher for voice recognizer service setting
I am getting tired of writing package monitor code, realized this is missing in
a number of places, and at this point it has gotten complicated enough that I
don't think anyone actually does it 100% right so:

Introducing PackageMonitor.

Yes there are no Java docs.  I am still playing around with just what this
thing is to figure out what makes sense and how people will use it.  It is
being used to fix this bug for monitoring voice recognizers (integrating the
code from the settings provider for setting an initial value), to replace
the existing code for monitoring input methods (and fix the bug where we
wouldn't remove an input method from the enabled list when it got
uninstalled), to now monitor live wallpaper package changes (now allowing
us to avoid reverting back to the default live wallpaper when the current
one is updated!), and to monitor device admin changes.

Also includes a fix so you can't uninstall an .apk that is currently enabled
as a device admin.

Also includes a fix where the default time zone was not initialized early
enough which should fix issue #2455507 (Observed Google services frame work crash).

In addition, this finally introduces a mechanism to determine if the
"force stop" button should be enabled, with convenience in PackageMonitor
for system services to handle it.  All services have been updated to support
this.  There is also new infrastructure for reporting battery usage as an
applicatin error report.
2010-02-22 11:27:52 -08:00
Christopher Tate
1bb6906c7a Automatically restore app data at install time
When an application being installed defines a backupAgent in its manifest, we
now automatically perform a restore of the latest-known-good data for that app.
This is defined as "data backed up by this app from this handset, if available;
otherwise data for this app as it existed when the device was initially
provisioned."  If neither option exists for the app, no restore action is
taken.

The CL involves major changes in the Backup and Package Managers...

* The Package Manager's act of installing an application has now been split
into two separate phases, with a data-restore phase optionally occurring
between these two PM actions.  First, the details of the install are performed
as usual.  Instead of immediately notifying install observers and issuing the
install-related broadcasts, the in-process install state is snapshotted and
the backup manager notified that a restore operation should be attempted.  It
does this by calling a new API on IBackupManager, passing a token by which it
identifies its in-progress install state.

The backup manager then downloads [if possible] the data for the newly-installed
application and invokes the app's backupAgent to do the restore.  After this
step, regardless of failure, it then calls back into the Package Manager to
indicate that the restore phase has been completed, supplying the token that
was passed in the original notification from the Package Manager.

The Package Manager then runs the final post-install actions: notifying install
observers and sending out all the appropriate broadcasts.  It's only at this
point that the app becomes visible to the Launcher and the rest of the OS.

... and a few other bits and pieces...

* The ApplicationInfo.backupAgentName field has been exposed to the SDK.  This
can be reverted if there's a reason to do so, but it wasn't clear that this
info needs to be hidden from 3rd party apps.

* Debug logging of restore set IDs and operation timeout tokens [used during
any asynchronous Backup Manager operation] are now consistently in hex for
readability.

* We now properly reset our binder identity before calling into the transport
during restore-set operations.  This fixes a permissions failure when a
single-app restore was attempted.

* The 'BackupTest' test app is no longer lumped onto the system partition
by default.

Change-Id: If3addefb846791f327e2a221de97c8d5d20ee7b3
2010-02-19 17:24:07 -08:00
Ken Shirriff
35abad216d Add error logging to ContentProviderOperation.
This will dump out the contents of the operation in some error cases
to make debugging easier.
2010-02-19 15:30:44 -08:00
Suchi Amalapurapu
6c81defa3d Merge "Move package from internal to external and vice versa." 2010-02-19 14:27:29 -08:00
Suchi Amalapurapu
8946dd3355 Move package from internal to external and vice versa. 2010-02-19 14:20:54 -08:00
Fred Quintana
bda8874a29 improve logging of errors when trying to resolve backrefs http://b/2371475 2010-02-19 13:13:16 -08:00
Fred Quintana
ac7c8e6cd1 Merge "- fix the AccountManager documentation. http://b/2401790 - only pass the authtoken through from the authenticator to the client for getAuthToken() and strip it out from the other calls, like addAccount(). http://b/2332762 - beef up the documentation to indicate what calls are allowed to be made from the main thread and which are not allowed. http://b/2384961 - wait a bit before retrying syncs that failed because one was already in progress. http://b/2414235" 2010-02-19 10:46:36 -08:00
Mike LeBeau
bd3f527ea0 Elaborate a little on the documentation for PackageManager's resolveActivity.
Not sure if this wording is perfectly appropriate, so comments welcome.
2010-02-18 19:27:17 -08:00
Fred Quintana
8570f74407 - fix the AccountManager documentation. http://b/2401790
- only pass the authtoken through from the authenticator to the client
  for getAuthToken() and strip it out from the other calls, like
  addAccount(). http://b/2332762
- beef up the documentation to indicate what calls are allowed to be made
  from the main thread and which are not allowed. http://b/2384961
- wait a bit before retrying syncs that failed because one was already
  in progress. http://b/2414235
2010-02-18 17:34:33 -08:00
Dianne Hackborn
e36d6e277e Work on issue #2263557: PMF3000 showing hybrid of portrait and landscape modes
This is a bunch of reworking of how configuration changes are handled:

- When orientation is changing (for whatever reason), the window manager no
  longer tries to pre-emptively compute a new configuration.  Instead, it
  just determines  change is happening and tells the window manager.
- The activity manager is now responsible for giving the window manager the
  final configuration it is using.  This is both so it knows whem the
  activity manager is done with its configuration updates, and so the window
  manager can use the "real" configuration.
- When an orientation or other configuration change is happening, freeze the
  screen and keep it frozen until the activity manager has given us the
  final configuration.
- The window manager can now send new configurations to its clients during
  its layout pass, as part of a resize, if it has determined that it has
  changed.  This allows for a new View.onConfigurationChanged() API for any
  view to easily find out when the configuration has changed.
- ViewRoot now also works with the activity thread to make sure the process's
  current resources are updated to the new configuration when it receives one
  from a window.  This ensures that at the time onConfigurationChanged() and
  other view callbacks are happening, the correct configuration is in force.
- There is now a sequence number associated with Configuration, which
  ActivityThread uses to avoid using stale configurations.  This is needed now
  that it can receive configurations asynchronously from both the window
  manager and activity manager.
- The hack for keeping the locale has been removed, and underlying problem
  fixed by having Configuration initialize its locale to "unknown" instead of
  a valid default value.
2010-02-18 15:47:34 -08:00
Tobias Haamel
154f7a1cc2 Show car mode notification in status bar.
The notification is an ongoing event and can be used to get out of car mode.
2010-02-18 11:43:03 -08:00
Fred Quintana
fb6a5359e4 remove check for obsolete property ro.config.sync 2010-02-17 13:35:49 -08:00
Costin Manolache
63cfebf2db Switch from REMOTE_INTENT to the new push messaging, add the required permission. 2010-02-16 13:57:52 -08:00