Commit Graph

875 Commits

Author SHA1 Message Date
Craig Mautner
2ad920759b Revert ActivityManager changes for tasks. DO NOT MERGE
Keeping all activity=>task changes in master and removing them
from jb-mr2.

Revert "Update histories simultaneously."
Revert "Add null check to setAppGroupId."
Revert "Fix crashing bug in validator."
Revert "Switch topRunning* and moveTaskTo*"
Revert "Begin switch over to task based history."
Revert "Reset and reuse Iterators and don't new() one."
Revert "Remove AppWindowToken lists."
Revert "Fix build."
Revert "Remove unused App methods."
Revert "Stop using AppToken movement and start using Task."
Revert "Replace access to mAppTokens with AppTokenIterator"
Revert "Refactor setAppOpVisibility implementation."
Revert "Add AppWindowTokens to TaskList."
Revert "Make ActivityStack.mHistory private."
Revert "Migrate AppWindowToken lists into DisplayContent."

Change-Id: I5722c9a4956dccb52864207e2967690bc58e4ebb
2013-02-25 17:07:39 -08:00
Craig Mautner
bea3b60ed1 Merge "Add AppWindowTokens to TaskList." 2013-02-12 23:57:09 +00:00
Craig Mautner
05d6272bad Add AppWindowTokens to TaskList.
- Add/remove/move TaskLists from ActivityStack.
- Further isolate mHistory.
- Cleanup warnings by parameterizing ArrayList.
- Fix previous bugs.

Change-Id: Ife8c7b7347479c70f10467cc384283456149ac50
2013-02-12 10:52:55 -08:00
Dianne Hackborn
1d3079cb8d Merge "App ops: cleanup, handle root and shell, perms." 2013-02-12 00:41:07 +00:00
Dianne Hackborn
514074fae8 App ops: cleanup, handle root and shell, perms.
Rework how the shell user is defined so that it is
associated with an actual apk, instead of being a free
roaming uid with special permissions assigned to it.
This allows us to correctly account for its operations
in app ops.

Implement a special case for the root user in app ops --
it is always allowed, always with the package name "root".

Add various code to take care of cleaning up package state
from app ops -- when packages are uninstalled, and during
boot if any packages currently being stored no longer exist.

Also fix a bug in the activity manager to correctly grant
permissions in all cases when onNewIntent() is being called.

Change-Id: Iae9f6d793ee48b93518c984ad957e46ae4582581
2013-02-11 15:33:48 -08:00
Craig Mautner
cae015fea3 Make ActivityStack.mHistory private.
Isolate the Activity history for later conversion to Task-based
management.

Change-Id: I4b6bf22de035c768aa705df0cc4f84486e8ede56
2013-02-08 14:31:27 -08:00
Craig Mautner
2ceb081505 Merge "Migrate AppWindowToken lists into DisplayContent." 2013-02-07 18:50:52 +00:00
Jeff Sharkey
08d11e1fa9 Merge "Require that bugreport requesters have DUMP." 2013-02-06 23:57:44 +00:00
Craig Mautner
b1fd65c0ff Migrate AppWindowToken lists into DisplayContent.
In preparation for converting ActivityManager control to a task-based
interface the AppWindowTokens are being stored per-display.

Change-Id: Ie5e355219554523f5e56eaef138d382975cf1682
2013-02-05 17:08:10 -08:00
Jeff Sharkey
b932319bff Require that bugreport requesters have DUMP.
Bug: 8139970
Change-Id: I055855fa5450521122e54ed39df5981190b401bd
2013-02-05 13:32:18 -08:00
Dianne Hackborn
f51f61269a App ops: new operations for SMS.
Implementation required a new framework feature
to associate an app op with a broadcast.

Change-Id: I4ff41a52f7ad4ee8fd80cbf7b394f04d6c4315b3
2013-02-05 11:56:12 -08:00
Dianne Hackborn
f265ea9d83 App ops: vibration, neighboring cells, dialing, etc.
Improve handling of vibration op, so that apps are
better blamed (there is now a hidden vibrator API that
supplies the app to blame, and the system now uses this
when vibrating on behalf of an app).

Add operation for retrieving neighboring cell information.

Add a new op for calling a phone number.  This required
plumbing information about the launching package name through
the activity manager, which required changing the internal
startActivity class, which required hitting a ton of code that
uses those internal APIs.

Change-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07
2013-02-01 15:14:29 -08:00
Svetoslav Ganov
d0fd54648c Merge "Adding UI test automation APIs." 2013-01-29 03:16:40 +00:00
Dianne Hackborn
f9c5e0fe83 Add new API to propagate contextual data to the assist action
When launching an assist, we have a new API allowing the
current foreground activity/application to provide additional
arbitrary contextual information that is stuffed in the
assist intent before it is launched.

Change-Id: I0b2a6f5a266dc42cc0175327fa76774f814af3b4
2013-01-23 14:39:13 -08:00
Svetoslav Ganov
80943d8daa Adding UI test automation APIs.
This change adds APIs support for implementing UI tests. Such tests do
not rely on internal application structure and can span across application
boundaries. UI automation APIs are encapsulated in the UiAutomation object
that is provided by an Instrumentation object. It is initialized by the
system and can be used for both introspecting the screen and performing
interactions simulating a user. UI test are normal instrumentation tests
and are executed on the device.

UiAutomation uses the accessibility APIs to introspect the screen and
a special delegate object to perform privileged operations such as
injecting input events. Since instrumentation tests are invoked by a shell
command, the shell program launching the tests creates a delegate object and
passes it as an argument to started instrumentation. This delegate
allows the APK that runs the tests to access some privileged operations
protected by a signature level permissions which are explicitly granted
to the shell user.

The UiAutomation object also supports running tests in the legacy way
where the tests are run as a Java shell program. This enables existing
UiAutomator tests to keep working while the new ones should be implemented
using the new APIs. The UiAutomation object exposes lower level APIs which
allow simulation of arbitrary user interactions and writing complete UI test
cases. Clients, such as UiAutomator, are encouraged to implement higher-
level APIs which minimize development effort and can be used as a helper
library by the test developer.

The benefit of this change is decoupling UiAutomator from the system
since the former was calling hidden APIs which required that it is
bundled in the system image. This prevented UiAutomator from being
evolved separately from the system. Also UiAutomator was creating
additional API surface in the system image. Another benefit of the new
design is that now test cases have access to a context and can use
public platform APIs in addition to the UiAutomator ones. Further,
third-parties can develop their own higher level test APIs on top
of the lower level ones exposes by UiAutomation.

bug:8028258

Also this change adds the fully qualified resource name of the view's
id in the emitted AccessibilityNodeInfo if a special flag is set while
configuring the accessibility service. Also added is API for looking
up node infos by this id. The id resource name is relatively more stable
compared to the generaed id number which may change from one build to
another. This API facilitate reuing the already defined ids for UI
automation.

bug:7678973

Change-Id: I589ad14790320dec8a33095953926c2a2dd0228b
2013-01-22 17:56:53 -08:00
Dianne Hackborn
35654b61e8 More work on App Ops service.
Implemented reading and writing state to retain information
across boots, API to retrieve state from it, improved location
manager interaction to monitor both coarse and fine access
and only note operations when location data is being delivered
back to app (not when it is just registering to get the data at
some time in the future).

Also implement tracking of read/write ops on contacts and the
call log.  This involved tweaking the content provider protocol
to pass over the name of the calling package, and some
infrastructure in the ContentProvider transport to note incoming
calls with the app ops service.  The contacts provider and call
log provider turn this on for themselves.

This also implements some of the mechanics of being able to ignore
incoming provider calls...  all that is left are some new APIs for
the real content provider implementation to be involved with
providing the correct behavior for query() (return an empty
cursor with the right columns) and insert() (need to figure out
what URI to return).

Change-Id: I36ebbcd63dee58264a480f3d3786891ca7cbdb4c
2013-01-16 12:11:01 -08:00
Dianne Hackborn
885bfcd523 am 9e6575bc: am 854458f4: am 0287ca3c: am e62fa825: Merge from master: fix issue #7966357: Super lights out mode vs. volume dialog
* commit '9e6575bc52f421484fe262aff224db247e70d830':
  Merge from master: fix issue #7966357: Super lights out mode vs. volume dialog
2013-01-11 10:53:19 -08:00
Dianne Hackborn
854458f4d5 am 0287ca3c: am e62fa825: Merge from master: fix issue #7966357: Super lights out mode vs. volume dialog
* commit '0287ca3ca36ad98004ddabfa189105e6324a820e':
  Merge from master: fix issue #7966357: Super lights out mode vs. volume dialog
2013-01-09 19:00:06 -08:00
Dianne Hackborn
e62fa82579 Merge from master: fix issue #7966357: Super lights out mode vs. volume dialog
The volume panel now forces us out of the UI modes while it
is up.

Change-Id: If39fa33b1c52579bf5d376ce4722408cee3ca951
2013-01-09 18:51:51 -08:00
Dianne Hackborn
a06de0f29b New "app ops" service.
Initial implementation, tracking use of the vibrator, GPS,
and location reports.

Also includes an update to battery stats to also keep track of
vibrator usage (since I had to be in the vibrator code anyway
to instrument it).

The service itself is only half-done.  Currently no API to
retrieve the data (which once there will allow us to show you
which apps are currently causing the GPS to run and who has
recently accessed your location), it doesn't persist its data
like it should, and no way to tell it to reject app requests
for various operations.

But hey, it's a start!

Change-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15
2013-01-09 12:47:47 -08:00
Craig Mautner
4b71aa1f8a Move app transition constants
Move app transition constants from WindowManagerPolicy to
AppTransition.

Change-Id: I8ae6c4d0da1db826c44eb4ea0c6b85016b50b1a3
2013-01-07 23:38:57 -08:00
Craig Mautner
6cf1a66348 Merge "Call adjustWallpaperWindowsLocked once per pass." 2012-12-12 15:35:57 -08:00
Craig Mautner
ae44659f30 Call adjustWallpaperWindowsLocked once per pass.
Also refactor a few methods and improve logging.

Change-Id: Ic54a1ff99f6de732b31cda5c06d36e8de01a269c
2012-12-12 10:09:19 -08:00
Christopher Tate
1423fa30c2 am 1de62393: am 534de491: Merge "Make immersive mode public & imply update locking" into jb-mr1-aah-dev
* commit '1de623939090993d03a7c398d09e2d13950d682b':
  Make immersive mode public & imply update locking
2012-12-11 16:15:38 -08:00
Christopher Tate
73c2aee40a Make immersive mode public & imply update locking
Activity.setImmersive(boolean) / android:immersive="bool" are now public.
In addition, if the foreground activity is immersive then an update lock
will be held on its behalf.  This lets applications such as movie players
suppress the display of intrusive notifications, OTA-availability dialogs,
and the like while they are displaying content that ought not to be
rudely interrupted.

The update lock aspect of this mode is *advisory*, not binding -- the
update mechanism is not actually constrained; it simply uses this information
in deciding whether/when to prompt the user.  It's more a guideline than
a rule.

Bug 7681380

Change-Id: I3c412a84cbf3933e3bf0168f2c71c54a86e4b7e5
2012-12-10 18:40:57 -08:00
Craig Mautner
4abf3f987f Call setSize to sync Surface to SurfaceFlinger. DO NOT MERGE
RecentsActivity screenshots are called for very quickly after
WindowStateAnimator prepareSurface(). Without enough delay the
Surface.setLayer call does not propagate to the SurfaceFlinger
and the screenshot is incorrect (black) because it stops sampling
the layers too early.

This fix calls Surface.setSize() for each sampled Surface in
screenshots. setSize forces the SurfaceFlinger to process all
transactions queued before returning from closeTransaction.

Bug 7552304 fixed.

Change-Id: I1911dfa0b09cab713c55f5ba0c612496337a77df

Conflicts:

	services/java/com/android/server/wm/WindowManagerService.java
2012-12-07 11:21:35 -08:00
Dianne Hackborn
bb4ca5271a Fix issue #7649590: Background windows sometimes not being hidden for secondary users
There are two things going on here:

(1) In secondary users, some times theme information such as whether
the window is full screen opaque was not being retrieved, so the window
manager didn't know that it could hide the windows behind the app.
This would just be a performance problem, except that:

(2) There appear to be a number of applications that declare that they
are full screen opaque, when in fact they are not.  Instead they are
using window surfaces with an alpha channel, and setting some pixels
in their window to a non-opaque alpha level.  This will allow you to
see whatever is behind the app.  If the system happens to completely
remove the windows behind the app, and somebody is filling the frame
buffer with black, then you will see what the app intends -- those
parts of its UI blended with black.  If one of those cases doesn't
hold (and though we have never guaranteed they would, in practice this
is generally what happens), then you will see something else.

At any rate, if nothing else than for performance reasons, we need to
fix issue #1.

It turns out what is happening here is that the AttributeCache used
by the activity manager and window manager to retreive theme and other
information about applications has not yet been updated for multi-user.

One of the things we retrieve from this is the theme information telling
the window manager whether an application's window should be treated
as full screen opaque, allowing it to hide any windows behind it.  In
the current implementation, the AttributeCache always retrieves this
information about the application as the primary user (user 0).

So, if you have an application that is installed on a secondary user but
not installed on the primary user, when the AttributeCache tries to retrieve
the requested information for it, then from the perspective of the primary user
it considers the application not installed, and is not able to retrieve that
info.

The change here makes AttributeCache multi-user aware, keeping all of its
data separately per-user, and requiring that callers now provide the user
they want to retrieve information for.  Activity manager and window manager
are updated to be able to pass in the user when needed.  This required some
fiddling of the window manager to have that information available -- in
particular it needs to be associated with the AppWindowToken.

Change-Id: I4b50b4b3a41bab9d4689e61f3584778e451343c8
2012-12-03 14:09:06 -08:00
Dianne Hackborn
db69db1510 am b8d8562c: am 40ca751b: am ebec2315: Merge "Always report user switched after unfreezing screen." into jb-mr1.1-dev
* commit 'b8d8562cc36e5ab2f8b8c5adfd8d4839fe0909d3':
  Always report user switched after unfreezing screen.
2012-11-29 16:47:16 -08:00
Dianne Hackborn
4d78abfca7 Always report user switched after unfreezing screen.
Change-Id: I58172896892a07e72a3430e56e4d2944d388c7c9
2012-11-29 15:10:18 -08:00
Dianne Hackborn
36893b16ce am 221d59f7: am afdd978c: am 68e0da7e: Merge "Quiet down a lot of logging." into jb-mr1.1-dev
* commit '221d59f723584d316ea225bdaf1bc75cbfd7a794':
  Quiet down a lot of logging.
2012-11-29 14:32:25 -08:00
Dianne Hackborn
40e9f2922c Quiet down a lot of logging.
Also fix a little problem where the USER_STARTED broadcasts
were not being sent as ordered broadcasts(!).

Change-Id: I3aa3e0a9b3900967cdd2d115ee103371b0a50c41
2012-11-27 19:12:23 -08:00
Dianne Hackborn
816a5d9c27 am 360acd03: am 78551bc7: am ba4ac518: Merge "Improve debugging for issue #7586414: AlarmManager wakelocks held" into jb-mr1.1-dev
* commit '360acd03bfe0d597ee845d2392d715633a89e12b':
  Improve debugging for issue #7586414: AlarmManager wakelocks held
2012-11-27 17:34:11 -08:00
Winson Chung
fb8ca912e8 am d0079891: am 9f6e8ddf: am 2b847c39: Merge "Removing unecessary additional lock metadata from QuickSettings user tile." into jb-mr1.1-dev
* commit 'd0079891e3a8034f560eaf88d5be692b61ca4b9a':
  Removing unecessary additional lock metadata from QuickSettings user tile.
2012-11-27 17:33:46 -08:00
Dianne Hackborn
ba4ac51823 Merge "Improve debugging for issue #7586414: AlarmManager wakelocks held" into jb-mr1.1-dev 2012-11-27 11:06:35 -08:00
Dianne Hackborn
8103890a59 Improve debugging for issue #7586414: AlarmManager wakelocks held
In alarm manager, print a summary of the top 10 alarms by time
being executed.  Keep track of execution time (and wake count) of
each type of alarm for each application so this can be printed in
the summary (and used to compute the top 10 alarms).  Rework how
the alarm summary stats are tracked so that we don't need to hold
on to the full Intent for each stat and can get the Intent information
at the time the alarm is sent rather than waiting for whatever Intent
comes back in the result.

Also in the battery stats: sort the kernel wake locks by time, add
a new section showing all partial wake locks across all applications
sorted by time.

Finally a new LocalLog class that is used by AlarmManager to log
important warning messages, so these can also be later found in
its dumpsys output.

Change-Id: Icc07810053e60fb623a49937e696819cb8352b06
2012-11-27 11:05:42 -08:00
Winson Chung
f7614fc744 Removing unecessary additional lock metadata from QuickSettings user tile.
Change-Id: I89ec94385eb3cdd46ad6942bf8989fb04d5c0370
2012-11-26 14:44:03 -08:00
Jeff Sharkey
ec14d78cfa am 1aa4f6fe: am 5691474c: am ad08e6dc: Merge "Emit event log message when switching users." into jb-mr1.1-dev
* commit '1aa4f6fe7e150fb60c5f28a9c4dd8ad6fb06984a':
  Emit event log message when switching users.
2012-11-09 22:49:38 -08:00
Jeff Sharkey
86597df79f Emit event log message when switching users.
Change-Id: I8e521e177b0e17e2ab9e033e0ff8bc421cd5f784
2012-11-09 15:09:13 -08:00
Amith Yamasani
7644dbc051 am d02f2313: am 47ece2e5: am 03f7ebfe: Merge "Relax permission requirements for posting notifications across users" into jb-mr1-dev
* commit 'd02f231318014925bead88ce9408c3c37f9a0e8b':
  Relax permission requirements for posting notifications across users
2012-10-31 13:14:30 -07:00
Amith Yamasani
2c7ebeae9f Relax permission requirements for posting notifications across users
Bug: 7430689
Change-Id: I2430b20137705ed2d6dc0f870690acda0662392b
2012-10-30 16:12:54 -07:00
Jeff Sharkey
b36d3e7614 am f1ad6d5b: am 93b17876: am 5831159b: Merge "More migration to Global settings." into jb-mr1-dev
* commit 'f1ad6d5b79edc4d171700233edcb9b5cdf3937e1':
  More migration to Global settings.
2012-10-18 23:31:20 -07:00
Jeff Sharkey
8d9a1f66d9 More migration to Global settings.
Bug: 7375796
Change-Id: I3954ce141ad30073896090a28eee743ba15fd736
2012-10-18 15:38:14 -07:00
Christopher Tate
597ea5b3cd am d9466f94: am 2f296598: am 1ea75b88: Merge "Sanity-check erroneous backup agent instantiations" into jb-mr1-dev
* commit 'd9466f940ae3f04f8efede13b876d5968ff0e820':
  Sanity-check erroneous backup agent instantiations
2012-10-18 12:25:19 -07:00
Christopher Tate
346acb123d Sanity-check erroneous backup agent instantiations
Two distinct changes:

Fix a bug seen in the wild where a newly-launched application will be
spuriously asked to instantiate a backup agent.  What was happening
there is that some Activity Manager state was being left stale in certain
circumstances, and then in combination with app uninstall / install, there
could be a case where uid reuse wound up looking like an app identity
match.

We now positively verify before instantiating the agent that the intended
backup target package is uid-compatible with the app process that the
instantiation was requested of.  The incomplete bookkeeping in the
Activity Manager has also been tightened up, and the Backup Manager is
more aggressive about cleaning up pending operations pertaining to
apps being uninstalled.

Bug 5874010

Change-Id: Ic389f4a96c9dcd0ba6b3962b579084033d8ae9f8
2012-10-17 13:36:15 -07:00
Dianne Hackborn
49c762f79a am 547c20df: am 48f6b7e2: am 59cb2cf1: Merge "Revert fix to issue #6880627: PendingIntent.getService() returns..." into jb-mr1-dev
* commit '547c20dfc88c7981449fcfdecf7deaa17d6fedc2':
  Revert fix to issue #6880627: PendingIntent.getService() returns...
2012-10-12 17:50:32 -07:00
Dianne Hackborn
861a3b2d4f Revert fix to issue #6880627: PendingIntent.getService() returns...
...stale intent of force stopped app

Fixing this caused other problems elsewhere that we don't have time
to address at this point.

Fixes issue #7338275: Tapping clock home screen widget doesn't open
alarms anymore

Change-Id: Iedc1fae5f62b6ead28d1895d709591358e5d6634
2012-10-12 15:25:20 -07:00
Dianne Hackborn
3c30494d44 am 572286b4: am 31af905a: am 36db9d08: Merge "Further work on issue #7307399: Framework needs a new pre-user-shutdown..." into jb-mr1-dev
* commit '572286b4152245a73ac00ebc69b4bd8fc4bc586d':
  Further work on issue #7307399: Framework needs a new pre-user-shutdown...
2012-10-09 19:17:09 -07:00
Dianne Hackborn
c0bd747b06 Further work on issue #7307399: Framework needs a new pre-user-shutdown...
...phase & callback API

I realized there were a few things wrong with what was there.  The new
ACTION_USER_STARTING was not being sent for the first user at boot, and
there was an existing problem where ACTION_USER_STARTED was sent every
time there was a user switch.

Also improved some debug output of broadcasts to make it easier to see
what is going on in this stuff, and better reporting of why a service
couldn't be started.

Change-Id: Id8a536defbbad1f73d94a37d13762436b822fbe3
2012-10-09 17:57:14 -07:00
Dianne Hackborn
96a739737f am 7beb70a9: am e5456645: am 840590dd: Merge "Fix issue #7311376: Add API to allow apps to know if they are..." into jb-mr1-dev
* commit '7beb70a94af2ce29b4184fd7927bba93d90cf878':
  Fix issue #7311376: Add API to allow apps to know if they are...
2012-10-09 17:53:13 -07:00
Dianne Hackborn
a8a9bd65bf Fix issue #7311376: Add API to allow apps to know if they are...
...running as the foreground user

Add UserManager.isUserRunning() which is the public version of the
existing method on ActivityManager.

Also add UserManager.isUserRunningOrStopping() since that seems like
it will be useful.

And fix the internal function that returns the array of currently
running users to not include stopped users.

Change-Id: I84672fa8748fc027fd402729586b5603f640e498
2012-10-09 17:00:31 -07:00