Commit Graph

904 Commits

Author SHA1 Message Date
Craig Mautner
8be5ea3bdb Perform activityIdleInternal in correct order.
Refactor of ActivityManagerService.activityIdle left
activityIdleInternalLocked called only if stopProfiling was true.
Calling it in all situations is the correct behavior.

Fixes bug 8532130.

Change-Id: Ibd7f112bab104094ff1b1f3a2fb8c03b527ec453
2013-04-02 22:37:45 -07:00
Kenny Root
232b4d60a6 resolved conflicts for merge of c16da6aa to master
Change-Id: Ibaaf2995def15573609562162902b3d73dd78ec0
2013-04-02 10:57:10 -07:00
Craig Mautner
e79d4268c0 Yet more movement from ActivityStack to Supervisor
- Remove redundant synchronize in ActivityStack.activityIdleInternal().
- Move startSpecificActivityLocked from ActivityStack to Supervisor.
- Move handleAppDiedLocked from Supervisor to ActivityStack.

Change-Id: Id746ab3bdff861b61182282bea1deb8fcf284084
2013-04-01 19:01:53 -07:00
Craig Mautner
2420ead032 More movement from ActivityStack to Supervisor
- Move showAskCompatModeDialogLocked from ActivityStack to
ActivityManagerService.
- Keep track of userId in ActivityStackSupervisor and initialize
new ActivityStacks with it.
- Move realStartActivityLocked to ActivityStackSupervisor except
for the part that actually updates the ActivityStack.

Change-Id: I7467302f1249fee2ea3cf027a49e0894c9a2213d
2013-04-01 17:31:37 -07:00
Craig Mautner
23ac33bb85 Migrate activity starts into ActivityStackSupervisor.
Individual ActivityStacks should not be the place where stack
decisions are made.

Change-Id: If9c7a10e1127618c3ae008a0fea6e5943f776be4
2013-04-01 16:27:10 -07:00
Craig Mautner
20e7227454 Remove mFocusedStack from ActivityManagerService.
Use ActivityStackSupervisor.mMainStack in its place. Or, in cases
where multiple stacks must replace mFocusedStack, create new
methods in ActivityStackSupervisor that will replace it.

Change-Id: Ib0dda51e1043a6d5110e5a2914d695ef16bf9371
2013-04-01 13:57:18 -07:00
Christopher Tate
58d380d2af debuggerd now notifies the Activity Manager about native crashes
The Activity Manager sets up a permission-guarded domain socket, which
debuggerd connects to when a crash happens.  If this is successful,
the daemon then mirrors the logged crash report to that socket, then
closes it.

The Activity Manager parses the native crash dump supplied by debuggerd
and forwards it to the standard app-crashed code.  The UX result is
that users now see the normal "app has stopped unexpectedly" dialog
with "report" and "okay" options for native crashes, not just for
DVM-mediated crashes.

Bug 8322568

Change-Id: Ie1b279896c603bd74d82d6cfcfd66a8f231da134
2013-04-01 13:50:23 -07:00
Craig Mautner
e11f2b774b Minor refactors
- Eliminate unused mLooper.
- Rename isSleeping to isSleepingOrShuttingDown.
- Fix dump formats.

Change-Id: I4cfc99605ac34213bf9b705562f2c701810434fd
2013-04-01 13:06:11 -07:00
Craig Mautner
5496140428 Merge "Move mStacks to ActivityStackSupervisor" 2013-04-01 16:11:05 +00:00
Craig Mautner
8d341efad0 Move mStacks to ActivityStackSupervisor
Lift all ActivityStack behaviors from ActivityManagerService.

Change-Id: I356f1c22fe31f0442ff5e363f62fe99b7bfd6153
2013-03-28 11:30:01 -07:00
Dianne Hackborn
1a95a42c89 am 177543db: am 3bcc2fba: Merge "Fix issue #8470131: Process thrash kills battery" into jb-mr2-dev
* commit '177543db55f88f060d9a43df79afd6733cd565da':
  Fix issue #8470131: Process thrash kills battery
2013-03-26 17:28:19 -07:00
Dianne Hackborn
3bcc2fbaad Merge "Fix issue #8470131: Process thrash kills battery" into jb-mr2-dev 2013-03-27 00:24:04 +00:00
Craig Mautner
2219a1ba3d Modify primary ActivityStack accessing.
- Move mHomeStack to ActivityStackSupervisor.
- Move mMainStack to ActivityStackSupervisor.

Change-Id: I43522c9505f066b379ea172dd63663e78a0feece
2013-03-26 07:50:40 -07:00
Geremy Condra
98157242e2 am d6c1394d: am 51163e3b: Merge "Add seinfo parsing to PackageManagerService." into jb-mr2-dev
* commit 'd6c1394dd0046944e66d391ff0e099fb5ac57751':
  Add seinfo parsing to PackageManagerService.
2013-03-26 01:47:03 +00:00
Dianne Hackborn
a40cfeb55f Fix issue #8470131: Process thrash kills battery
Protect app widget broadcasts from abuse.

In this case the app was sending an APPWIDGET_UPDATE broadcast
without specifying a target, which (a) should not be allowed (you
should not be able to send updates to other apps), and (b) resulted
in every single potential app widget in the system being launched...
which was about 75 of them.

Change-Id: I9d48733610ce6d5a7c32e69a3e06b9f33bd79a34
2013-03-25 17:49:36 -07:00
Robert Craig
0f40dc923c Add seinfo parsing to PackageManagerService.
This patch set allows the PMS to parse the
mac_permissions.xml file which contains the
seinfo values. Each package that is installed
on the device will be assigned an seinfo value
based on policy. This seinfo value will help label
the app process and data directory.  Modifications
include adjustments to ApplicationInfo.java
to store the seinfo tag per package as well as
adjustments to installd to communicate the seinfo
tag to libselinux.

Change-Id: I61ad1ea12fb6a9a6d0b108ec163bc4bf4c954b58
Signed-off-by: rpcraig <rpcraig@tycho.ncsc.mil>
2013-03-25 17:30:08 -07:00
Craig Mautner
270843072c Introduce ActivityStackSupervisor.
- New coordinating class to juggle multiple ActivityStacks.
- First job: take singleton Keyguard dismiss behavior out of
ActivityStack.

Change-Id: I68e4b44411d3ec9401e86ac23703d6540dcb12e8
2013-03-25 08:06:16 -07:00
Craig Mautner
d9a22881fd Complete removal of Task from DisplayContent.
Moved Tasks into TaskStacks.

Change-Id: I3478dab4eab3a68d4d71a7a5bb2e65ba2394f2d7
2013-03-17 16:19:21 -07:00
Craig Mautner
c00204b4d1 Start moving Tasks from DisplayContent to TaskStack
- Create new classes for Stacks on WindowManager.
- Stop using DisplayContent methods and members:
    addAppToken(),
    removeAppToken(),
    setAppTaskId(),
    removeTask(),
    mTaskIdToDisplayContents,
    mTaskIdToTask.
- Start using WindowManagerService.createTask().
- Establish hierarchy of references: AppWindowToken=>Task=>
TaskStack=>StackBox=>DisplayContent.
- Clean up StackBox, TaskStack, and Task.

Change-Id: I798990aa7966784d22f4a43822087d8bb0404dd6
2013-03-15 22:44:29 -07:00
Craig Mautner
64f2b1738a Add ActivityStack to PendingActivityLaunch
The task used by doPendingActivityLaunches is not known at the
time that the PendingActivityLaunch is created. Leading to an NPE.
Adding the ActivityStack to the PAL fixes this.

Fixes bug 8351149.

Change-Id: I64539b8f2e608128ef9d795c0739ef1de7a246d0
2013-03-11 11:40:31 -07:00
Christopher Tate
1ccdf0ee16 am 0de66314: am 6916c6ee: Merge "Do not hang in pm clear on an invalid package name" into jb-mr2-dev
* commit '0de6631450fedca4071513d90cfaa5eec4c57d6c':
  Do not hang in pm clear on an invalid package name
2013-03-08 02:08:50 +00:00
Christopher Tate
a83cab0001 Do not hang in pm clear on an invalid package name
The Activity Manager was not properly informing the observer that
the operation had concluded (unsuccessfully).

Bug 8222595

Change-Id: I8234e32d8edf4112c8c7a5e20e341d0b41e23014
2013-03-07 17:50:11 -08:00
Craig Mautner
d2328958de Prepare ActivityManagerService for multiple stacks.
- Replace mMainStack with mFocusedStack and mStacks.
- Remove stack from ActivityRecord.
- Add stack to TaskRecord.

Change-Id: I22e9ba34b12c2bd90806b14aafe063d5a2fe66ae
2013-03-06 13:57:26 -08:00
Michael Wright
7ca095f095 am 32440aa2: Merge "Unify inputDispatchingTimedOut with keyDispatchingTimedOut" into jb-mr2-dev
* commit '32440aa25d958c8b82e7c17f784defc0a5860c0a':
  Unify inputDispatchingTimedOut with keyDispatchingTimedOut
2013-03-01 22:25:50 +00:00
Michael Wright
32440aa25d Merge "Unify inputDispatchingTimedOut with keyDispatchingTimedOut" into jb-mr2-dev 2013-03-01 22:20:46 +00:00
Michael Wright
7dd5bb18d4 Unify inputDispatchingTimedOut with keyDispatchingTimedOut
Bug: 8194916
Change-Id: Iac40108d848bcca77f49a7a49c57a095b3dbe9c9
2013-03-01 14:14:35 -08:00
Michael Wright
9990e67b8c am 173bb615: Merge "Move stack dump off of InputDispatcher thread" into jb-mr2-dev
* commit '173bb61544fb41a10398606766f2bdf079ee02fc':
  Move stack dump off of InputDispatcher thread
2013-02-26 22:21:38 +00:00
Michael Wright
173bb61544 Merge "Move stack dump off of InputDispatcher thread" into jb-mr2-dev 2013-02-26 22:14:41 +00:00
Michael Wright
5633e23c22 Move stack dump off of InputDispatcher thread
Change-Id: I7250a0488c3e4c5dc159f4635a57e1e49aa8397a
2013-02-25 17:52:37 -08:00
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