Commit Graph

3394 Commits

Author SHA1 Message Date
Nick Kralevich
d5c8044e7e resolved conflicts for merge of 1cbea39f to master
Change-Id: Ib33484546c6a03cbc4cd96e97d9d785d68e10700
2014-02-12 14:41:25 -08:00
Nick Kralevich
dd3d95f182 resolved conflicts for merge of 4ad93639 to klp-modular-dev-plus-aosp
Change-Id: I7ad222301ec0b863d48a1a9a839469436c385ea0
2014-02-12 11:05:59 -08:00
Jeff Brown
ca9bc702df Add support for injecting events into ActivityContainers.
Modified ActivityView to inject touch events it receives back into
its activity container.  The container then injects the event into
the input system along with the display id of the underlying virtual
display.

Change-Id: I23d018a2f7dd30f1f833f522eb7f143b43d8e637
2014-02-11 14:47:48 -08:00
Jeff Brown
38f96e5020 Add support for injecting events into ActivityContainers. (DO NOT MERGE)
Modified ActivityView to inject touch events it receives back into
its activity container.  The container then injects the event into
the input system along with the display id of the underlying virtual
display.

Enhanced the input system to support concurrent dispatch of touch
events on multiple displays which is required for this to work.

Change-Id: I9cf1870db3be6f99a52ed9a1e3ceafe42c940093
2014-02-11 14:43:04 -08:00
Griff Hazen
6adfd86ca9 am 4e795ebe: am 0ff811db: Merge "Add local-only option to Notification (using flag)" into klp-modular-dev
* commit '4e795ebe1783623a28a988f77b4f0f11d54e73be':
  Add local-only option to Notification (using flag)
2014-02-11 21:40:48 +00:00
Griff Hazen
dfcb0803bf Add local-only option to Notification (using flag)
Change-Id: Ic6d2f3b0cf06b58c0afa2af0fa6b245124424223
2014-02-11 12:00:00 -08:00
Griff Hazen
9b4ee2f334 am edb555ed: am 92ade49e: Merge "Fix ActivityView layout bug." into klp-modular-dev
* commit 'edb555edceaf51f7ef40e35257a4b00c06a68e72':
  Fix ActivityView layout bug.
2014-02-10 18:01:27 +00:00
Griff Hazen
af745f6df7 Fix ActivityView layout bug.
Child TextureView should be positioned at origin of ActivityView,
with matching width and height. Previously, a container's padding
would be applied twice for example.

Change-Id: Ie0be10614a45aede4207abf986721385d04d8c76
2014-02-10 08:58:32 -08:00
Craig Mautner
e666350e12 am e03ed510: am 4e5b67e6: Queue startActivity params if not yet ready.
* commit 'e03ed51068bcb4253e2fd2a4a3f39a7e580a721a':
  Queue startActivity params if not yet ready.
2014-02-10 12:51:24 +00:00
Craig Mautner
4e5b67e695 Queue startActivity params if not yet ready.
If the ActivityView is not ready when the startActivity method is
called we now save the Intent until the ActivityView is ready.

Fixes bug 12821638.

Change-Id: I30ebb2699963f174cc2d5a3fb77a99ed33a4252b
2014-02-07 15:30:03 -08:00
Adam Connors
776c555d95 Extend DeviceOwner concept to accommodate ProfileOwners
ProfileOwners, like DeviceOwners, are Device Admins that have
additional priviledges. ProfileOwners however are scoped per
user.

Change-Id: I1e22c85878e0672121e6ebbe97fca38591f992b2
2014-02-06 10:07:19 +00:00
George Mount
8adb491e08 Merge "Cross-Activity Scene transition API." 2014-02-05 00:23:03 +00:00
George Mount
0a778eda69 Cross-Activity Scene transition API.
First pass at API for cross-Activity Scene transitions.
Remaining work:
  Transition back
  Automatically capture hero element info
  Transfer of surface texture to synchronize between Activities
  Possibly use scene names to indicate preferred transition

Change-Id: I59d07de1fae694a46b92b1c82525daa301ec1377
2014-02-04 16:18:43 -08:00
Craig Mautner
9e4adfb358 resolved conflicts for merge of 32360147 to master
Change-Id: I97cc95f66df50006469f8debd286966cc21edb60
2014-02-04 15:55:19 -08:00
Craig Mautner
df88d73092 Add IIntentSender to ActivityContainer.startActivity
PendingIntents and IntentSenders can now be launched. Still does not
work once the host activity has been paused and resumed.

Window manager TaskStacks now exist independently of Displays and app
windows persist after Displays are removed below them. Attaching the
stack to a new Display does not yet restore the windows to it.

Fixes bug 12747909.

Change-Id: I509007ee23fda400b353f483cf6ecce08177763b
2014-02-04 15:10:13 -08:00
Alan Viverette
8eea3ea559 Add APIs for obtaining themed Drawable from Theme, Context
BUG: 12611005
Change-Id: Ic0057be4e4c2d0c61ce02a019b3f7d0625e3a016
2014-02-03 18:42:24 -08:00
Christopher Tate
31b4834b6d Merge "Introduce "IdleService" API to expose idle-time maintenance to apps" 2014-02-03 20:35:01 +00:00
Mårten Kongstad
48d22323ce Runtime resource overlay, iteration 2
Support any number of overlay packages. Support any target package.

UPDATED PACKAGE MATCHING
------------------------
In Runtime resource overlay, iteration 1, only a single overlay package
was considered. Package matching was based on file paths:
/vendor/overlay/system/framework-res.apk corresponded to
/system/framework-res.apk. Introduce a more flexible matching scheme
where any package is an overlay package if its manifest includes

    <overlay targetPackage="com.target.package"/>

For security reasons, an overlay package must fulfill certain criteria
to take effect: see below.

THE IDMAP TOOL AND IDMAP FILES
------------------------------
Idmap files are created by the 'idmap' binary; idmap files must be
present when loading packages. For the Android system, Zygote calls
'idmap' as part of the resource pre-loading. For application packages,
'idmap' is invoked via 'installd' during package installation (similar
to 'dexopt').

UPDATED FLOW
------------
The following is an outline of the start-up sequences for the Android
system and Android apps. Steps marked with '+' are introduced by this
commit.

Zygote initialization
   Initial AssetManager object created
+    idmap --scan creates idmaps for overlays targeting 'android', \
           stores list of overlays in /data/resource-cache/overlays.list
   AssetManager caches framework-res.apk
+  AssetManager caches overlay packages listed in overlays.list

Android boot
   New AssetManager's ResTable acquired
     AssetManager re-uses cached framework-res.apk
+    AssetManager re-uses cached 'android' overlays (if any)

App boot
   ActivityThread prepares AssetManager to load app.apk
+  ActivityThread prepares AssetManager to load app overlays (if any)
   New AssetManager's ResTable acquired as per Android boot

SECURITY
--------
Overlay packages are required to be pre-loaded (in /vendor/overlay).
These packages are trusted by definition. A future iteration of runtime
resource overlay may add support for downloaded overlays, which would
likely require target and overlay signatures match for the overlay to
be trusted.

LOOKUP PRIORITY
---------------
During resource lookup, packages are sequentially queried to provide a
best match, given the constraints of the current configuration. If any
package provide a better match than what has been found so far, it
replaces the previous match. The target package is always queried last.

When loading a package with more than one overlay, the order in which
the overlays are added become significant if several packages overlay
the same resource.

Had downloaded overlays been supported, the install time could have been
used to determine the load order. Regardless, for pre-installed
overlays, the install time is randomly determined by the order in which
the Package Manager locates the packages during initial boot. To support
a well-defined order, pre-installed overlay packages are expected to
define an additional 'priority' attribute in their <overlay> tags:

    <overlay targetPackage="com.target.package" priority="1234"/>

Pre-installed overlays are loaded in order of their priority attributes,
sorted in ascending order.

Assigning the same priority to several overlays targeting the same base
package leads to undefined behaviour. It is the responsibility of the
vendor to avoid this.

The following example shows the ResTable and PackageGroups after loading
an application and two overlays. The resource lookup framework will
query the packages in the order C, B, A.

        +------+------+-     -+------+------+
        | 0x01 |      |  ...  |      | 0x7f |
        +------+------+-     -+------+------+
            |                           |
        "android"                Target package A
                                        |
                       Pre-installed overlay B (priority 1)
                                        |
                       Pre-installed overlay C (priority 2)

Change-Id: If49c963149369b1957f7d2303b3dd27f669ed24e
2014-02-03 11:20:30 +01:00
Christopher Tate
d417d625d2 Introduce "IdleService" API to expose idle-time maintenance to apps
When an application wishes to do low-priority background work when the
device is otherwise idle (e.g. in a desk dock overnight), it declares
a service in its manifest that requires this permission:

     android:permission="android.permission.BIND_IDLE_SERVICE

to launch, and which publishes this intent filter:

    <intent-filter>
        <action android:name="android.service.idle.IdleService" />
    </intent-filter>

This string is declared in the API as IdleService.SERVICE_INTERFACE.

The service must be implemented by extending the new "IdleService"
class, which provides the API through which the system will communicate
with the app.

IdleService declares three methods, two of which are lifecycle callbacks
to the service, and the third of which is for the service itself to
invoke when appropriate.  The lifecycle callbacks are

    public abstract boolean onIdleStart();
    public abstract void onIdleStop();

The first of these is a notification to the service that an idle
maintenance interval has begun.  The service can then spin off
whatever non-UI work it wishes.  When the interval is over, or if
the OS determines that idle services should be shut down immediately,
the onIdleStop() method will be invoked.  The service must shut down
any background processing immediately when this method is called.

Both of these methods must return immediately.  However, the OS
holds a wakelock on the application's behalf for the entire period
between the onIdleStart() and onIdleStop() callbacks.  This means
that for system-arbitrated idle-time operation, the application does
not need to do any of its own wakelock management, and does not need
to hold any wakelock permissions.

The third method in IdleService is

    public final void finishIdle();

Calling this method notifies the OS that the application has finished
whatever idle-time operation it needed to perform, and the OS is thus
free to release the wakelock and return to normal operation (or to
allow other apps to run their own idle services).

Currently the idle window granted to each idle service is ten minutes.
The OS is rather conservative about when these services are run; low
battery or any user activity will suppress them, and the OS will not
choose to run them particularly often.

Idle services are granted their execution windows in round-robin
fashion.

Bug 9680213

Change-Id: Idd6f35940c938c31b94aa4269a67870abf7125b6
2014-01-31 15:41:40 -08:00
Chris Wren
91ad563da3 record the notification style
Bug: 10634902
Change-Id: I7d29f252367f4ab58e97a6ac8b0c6702f558e5cf
2014-01-31 12:15:03 -05:00
Dan Sandler
a5e0f415d3 SystemUI support for notification visibility.
In this implementation, DISABLE_NOTIFICATION_TICKER (which was never
really used on its own and can be safely subsumed by
DISABLE_NOTIFICATION_ICONS) is now DISABLE_PRIVATE_NOTIFICATIONS;
when this SystemUI bit is set by the keyguard, SystemUI knows to switch
its presentation into "public" mode, in which
VISIBILITY_PRIVATE notifications are replaced with their
publicVersion's contentView (or a placeholder view,
synthesized by SystemUI, that leaks no additional
information about the notification). VISIBILITY_SECRET
notifications are suppressed altogether in this mode.

This behavior is enabled but not activated by default. To
turn it on, run:

  $ adb shell settings put secure lock_screen_allow_notifications 1

and restart SystemUI.

Change-Id: Id660bef7737580e16a83f60567c22b53ee81c602
2014-01-30 13:23:14 -05:00
Dan Sandler
0bf2ed8ae3 Notification visibility APIs.
The new visibility property allows an application to signal
to SystemUI whether a notification's contents are safe to
show in "public" situations, i.e. outside of a secure
lockscreen, or whether they should be treated as "private"
(where only the icon is revealed).

Apps that post information that includes no personal or
sensitive information (e.g. a weather alert) can use
VISIBILITY_PUBLIC to allow users to see (and potentially
even dismiss) this kind of notification without unlocking
their devices.

The historical treatment of Android notifications
corresponds to VISIBILITY_PRIVATE, which is the default
visibility setting for all notifications, including apps
that are not aware of this API.

VISIBILITY_PRIVATE notifications may optionally specify a
publicVersion, which is a whole other Notification object
whose contentView will be shown in public contexts. This
allows an app to provide a "redacted" public version of its
notification that is more useful than the system-supplied
version (showing just the icon and app name) but still
conceals private information. For example, a messaging app
that today posts a Notification including the sender and
contents of each message could additionally specify a
publicVersion that says, simply, "N new messages".

There's also VISIBILITY_SECRET for notifications that should
be totally concealed (that is, no icon) in public contexts.
To reveal any hint of this kind of notification would
require the user to unlock the device.

Change-Id: I1552db36c469954d27d3c92ba21ac5c703d47ae1
2014-01-30 12:26:30 -05:00
Dianne Hackborn
099bc627c4 Battery stats improvements.
- Adjust total power use when there is unaccounted power so that our
  percentages don't end up > 100%.
- Fix accounting of isolated uids to be against the owning real app
  uids.
- Rework how we put cpu use into the battery stats to no longer need
  this uid name cache that can confuse the uid it is associated with.
- Finish implementing events in the history, adding a string pool and
  reading/writing/dumping them.
- Add first two events: processes starting and finishing.
- Fix alarm manager reporting of wakeup alarms to be adjusted by the
  WorkSource associated with the alarm, so they are blamed on the
  correct app.
- New "--history" dump option allows you to perform a checkin of
  only the history data.
- Fixed BitDescription bug that would cause incorrect printing of
  changes in some states.

Change-Id: Ifbdd0740132ed178033851c58f165adc0d50f716
2014-01-22 14:09:02 -08:00
Craig Mautner
fc8fa54f80 am e9ddaa0b: Merge "Cleanup after ActivityView" into klp-modular-dev
* commit 'e9ddaa0b183d979be782a63970929cebd861b7c9':
  Cleanup after ActivityView
2014-01-16 15:22:15 +00:00
Craig Mautner
34b73dfaa3 Cleanup after ActivityView
- Release Surface and VirtualDisplay when shutting down ActivityView.
- Shut down child stacks when relaunching parent activity.

Change-Id: I60314b2b43bd2da5406cf6ec871293b5baca157c
2014-01-15 17:47:51 -08:00
Narayan Kamath
793bbd2929 am 909427d0: am f588d2df: am d0ec6d8c: am bc2a449a: am cb4d3ec1: Merge "Fix preference puts with "null" values."
* commit '909427d093c30d2d4f4ffe5da19f1db6c3e9a3b3':
  Fix preference puts with "null" values.
2014-01-13 13:10:53 +00:00
Narayan Kamath
909427d093 am f588d2df: am d0ec6d8c: am bc2a449a: am cb4d3ec1: Merge "Fix preference puts with "null" values."
* commit 'f588d2dff2ca6000fe02c5ac6e85f97133477767':
  Fix preference puts with "null" values.
2014-01-13 13:07:47 +00:00
Narayan Kamath
d0ec6d8c50 am bc2a449a: am cb4d3ec1: Merge "Fix preference puts with "null" values."
* commit 'bc2a449a615b30efb81a1a0082a1bb0db515d0f5':
  Fix preference puts with "null" values.
2014-01-13 05:01:44 -08:00
Narayan Kamath
cb4d3ec1ea Merge "Fix preference puts with "null" values." 2014-01-13 12:29:41 +00:00
Craig Mautner
1f7488e219 resolved conflicts for merge of 4504de5d to master
Change-Id: I8d96fd2b479aebd6de913e617ca190f66c25aaa5
2014-01-10 11:15:19 -08:00
Craig Mautner
4504de5d5a Implement ActivityView.
With an existing ActivityContainer a caller can now create an
ActivityView which consists of a new VirtualDisplay immediately
attached to the ActivityContainer.

Change-Id: Id70333dcbef55d524a87df8f8c92d72ca5579364
2014-01-10 10:54:55 -08:00
Craig Mautner
5ab77ac4a5 am 96ada57b: Merge "Allow for the possibility of null ActivityContainer" into klp-modular-dev
* commit '96ada57b2c0c456e9d3a1f43e3ff691f14ec1459':
  Allow for the possibility of null ActivityContainer
2014-01-10 18:27:49 +00:00
Craig Mautner
bd503a4e3a Allow for the possibility of null ActivityContainer
When BinderProxy is passed in as the IBinder for
getEnclosingActivityContainer the activity manager cannot turn it into
an ActivityRecord. This causes NPE in ActivityThread which is Not Good
(tm).

Allowing null to be returned when requesting an ActivityContainer and
handling it appropriately fixes this bug.

Fixes bug 12473669.

Change-Id: I6937636042f8853b3ddc2df40be010e7391e41a5
2014-01-10 10:16:43 -08:00
Craig Mautner
b859449b71 resolved conflicts for merge of 88bfc6dd to master
Change-Id: Ib656ac0591b21ad14f2df51021729552e9373515
2014-01-08 09:51:33 -08:00
Craig Mautner
88bfc6ddc8 Merge "Extend stack management to other displays." into klp-modular-dev 2014-01-08 17:33:42 +00:00
Narayan Kamath
0203d58ecf am db47efd3: am 651807fc: am 3f589e5d: am 2842bd02: am de8c3cf1: Merge "AArch64: Use long for pointers in App/Backup"
* commit 'db47efd3f8581c2c0d72a1b8617aeae9830f7ea4':
  AArch64: Use long for pointers in App/Backup
2014-01-08 12:38:37 +00:00
Narayan Kamath
db47efd3f8 am 651807fc: am 3f589e5d: am 2842bd02: am de8c3cf1: Merge "AArch64: Use long for pointers in App/Backup"
* commit '651807fcd0b1012ea848efe5f67b4381d8ce6797':
  AArch64: Use long for pointers in App/Backup
2014-01-08 12:33:16 +00:00
Narayan Kamath
c6f429007c Fix preference puts with "null" values.
Null values were being written out as <null /> elements in the
XML prefs file (as expected). This allowed the getFoo() functions
to work correctly because they treated null values as missing mappings
but containsKey would fail.

bug: https://code.google.com/p/android/issues/detail?id=64563
Change-Id: I1f466d01db96bf26e208d4fed3a6f257228bea5d
2014-01-08 12:04:53 +00:00
Narayan Kamath
3f589e5d1e am 2842bd02: am de8c3cf1: Merge "AArch64: Use long for pointers in App/Backup"
* commit '2842bd021c11274720d6a10219538b536b7d2050':
  AArch64: Use long for pointers in App/Backup
2014-01-08 04:02:05 -08:00
Ashok Bhat
58b8b24256 AArch64: Use long for pointers in App/Backup
For storing pointers, long is used, as
native pointers can be 64-bit.

In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use
of jint instead of int in JNI function prototypes)

Change-Id: I7aee49dc26cf6c86af8f1d882e9cd1cc145a1977
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
2014-01-08 11:54:01 +00:00
Ian Rogers
6c6a11648f am 878df18c: am 8dbfde50: am 0e16e3d7: am c2b50c10: am f11dee79: Merge "Add a call to registerAppInfo for the VMRuntime"
* commit '878df18c48fa5f0282cee5ded80238f64826cf84':
  Add a call to registerAppInfo for the VMRuntime
2014-01-07 21:47:37 +00:00
Ian Rogers
878df18c48 am 8dbfde50: am 0e16e3d7: am c2b50c10: am f11dee79: Merge "Add a call to registerAppInfo for the VMRuntime"
* commit '8dbfde504787a002de1074a5dfac7eea9d060a43':
  Add a call to registerAppInfo for the VMRuntime
2014-01-07 21:45:07 +00:00
Ian Rogers
0e16e3d7dd am c2b50c10: am f11dee79: Merge "Add a call to registerAppInfo for the VMRuntime"
* commit 'c2b50c10f0bf636562deba1d92ec7b54b13909de':
  Add a call to registerAppInfo for the VMRuntime
2014-01-07 13:38:44 -08:00
Craig Mautner
e0a3884cb6 Extend stack management to other displays.
- Abandon ActivityContainer.startActivity() in favor of
IActivityManager.startActivityAsUserInContainer().
- Modify Am to test starting an activity on a container.
- Create a DisplayContext as the base context if the activity token
is on a different display.
- Test for home display in more cases when manipulating home stack.
- Rename mDisplayInfos => mActivityDisplays.
- Create new method for moving task to front of stack regardless of
which display it is on.

Change-Id: I4fcb83ae844c5839ee3e2722229623d1a80ed921
2014-01-06 08:51:21 -08:00
Michael Jurka
1971963fbe Merge "Change wallpaper sizing" 2013-12-20 20:01:00 +00:00
Michael Jurka
824a4b5ea4 Change wallpaper sizing
- ignore suggested dimensions
- when orientation changes, scale up wallpaper if
it doesn't fill the whole screen, or scale back to
original size if not necessary

Change-Id: I75b7519a105d4097bf7a35cd8af61fc40f45f8fb
2013-12-19 15:42:50 -08:00
Craig Mautner
ff288f7f57 resolved conflicts for merge of b7bba718 to master
Change-Id: Ibbac3f6e3eda0149ae9446d6baed1d1bee5138ac
2013-12-19 10:55:17 -08:00
Craig Mautner
ed6649f89f DO NOT MERGE: Eliminate StackBox.
StackBox is too constraining. Adding size and position to TaskStacks
directly makes stack positioning and management more flexible and
prepares for ActivityView.

Change-Id: I33c6b4e1c23a5a8069fd507c160bcb34e4d287b2
2013-12-19 10:51:23 -08:00
Dave Allison
24bafbc933 Add a call to registerAppInfo for the VMRuntime
This calls into the VMRuntime tells it where the
application directory is located.

Bug: 11539952
Change-Id: I20e0b8c63e459699a1bc9af435e65ae96f1e1e73
2013-12-18 17:01:37 -08:00
Craig Mautner
4a1cb22056 Pair ActivityStacks with Displays
- Introduce concept of ActivityStacks residing on Displays and able
to be decoupled and moved around.
- Add a new interface, IActivityContainer for clients to handle
ActivityStacks.
- Abandon ordering of stacks based on mStackState and instead use
ActivityDisplayInfo.stacks<ActivityStack> ordering.

Progress towards closing bug 12078972.

Change-Id: I7785b61c26dc17f432a4803eebee07c7415fcc1f
2013-12-18 15:08:15 -08:00