Proguard fails for jars that contain no class files, disable it.
Test: m -j ANDROID_COMPILE_WITH_JACK=false PluginDummyLib
Change-Id: I0001eb3de7b7cea2fa9f91de0c1e59569d41ae8a
Very few logic changes, mostly just breaking out certain interfaces
and classes to the plugin lib.
Test: make + volume keys
Change-Id: Ieabc6d35f6ef980842849236a0b8ffd5543b3a2c
1) Updates the notification menu plugin to do more:
- The plugin can now supply the view it wants to display behind a
notification as the menu
- Touch interaction (i.e. notification translating on top) is piped
through to the plugin so it can update the view behind the notification
2) Makes NotificationMenuRow an implementor of the plugin which moves
a bunch of that logic out of NotificationStackScroller
Test: runtest systemui
Change-Id: I8723b96c195ff7311317d5523418cfcbe2a79b52
- Move default global actions ui to sysui
- Add fallback legacy interface in case sysui breaks
- Switch to fallback if sysui dies or isn't responding
Test: Long-press power
Change-Id: I943522611de5dbbee61e66c67cf3a56379091e97
- Adds footer to QS which contains the date/alarm info
and all touch targets (settings, edit, etc.)
- Swaps out emergency + carrier text on cell tile for a
standard CarrierText from lock screen in the header
to make the header only contain status info.
- Add dividing line
- Work on animations
Test: runtest systemui
Change-Id: I97dfea1b1ea7006b53eb61ac3a1f942c64dd282d
This will allow prototyping of individual QS tiles and/or their
visual representation without having to write a plugin for the
entire panel. This will allow quick iteration on QS UI + dual
target tiles.
Test: Install plugin using new API
Change-Id: I05ca9d9f5a200a1dad2c3582251a36edb5cb9aba
The new annotation versioning system allows plugins to share common
global interfaces that can be versioned on their own. To facilitate
this add a static method for plugins to get a hold of dependencies.
To get any dependency a plugin must @Requires it so it can be version
checked.
Test: Plugin that uses the new call.
Change-Id: I8e01260f8fbc14465502d506a7aa08212795ad9b
Also fixes an issue where the guts closed listener would always call
onHeightChanged because the notification isn’t marked as removed
until after the listener gets called.
Fixes: 34866027
Test: Manual - have one notification, snooze it
Change-Id: Ic67bdb353b8bb5df8bdaaf6d3e71ade7da05ee46
Removed old xml resources, strings, dimens, etc
Different behavior when sent from the default channel.
Display how many notification categories are used by the app.
Group label when channel is associated with group.
Add package icon.
Fix tap-away-to-save behavior
Test: runtest systemui
Change-Id: Ib41a536a5c4e7c7747a2453eddc3b4b4b99ffa7a
Use annotations to handle the multi-dimensionalness of interface
versions, but still maintain compile time inclusion of current
versions.
Test: runtest systemui
Change-Id: I0789a72112cf6630a6406f76020071c8a6d9e24c
Lots of things detect overlays these days (installing apps) and the
only way to avoid the problems associated with this is to live in
the status bar window. So allow plugins to hold the window open
when they want to so they can have overlays be in that.
Move StatusBarWindowManager to Dependency to make things easier
as well.
Test: Install the example plugin, test can access QS and interact
with apps
Change-Id: Ib2288bf56704960847217bad01a480ab407e0ffe
Add support for testing for PluginManager and TunerService leaks
and add tests for the known leaks and fix them. Also port PluginManager
and TunerService to Dependency to make them easier to handle in
tests.
Test: runtest systemui
Change-Id: I5642539ee24dd72f802905106decd0c87b41b4eb
Fixes: 34846972
It is a relic of a more complex time, but has passed out of all
knowledge for too long.
Test: manual testing on phones and TV
Change-Id: I62a15d9413ea4bda3ac82bf6f7d22c096e2c1cdc
There are five channels at present:
ALERTS - low battery etc.
SCREENSHOTS - progress & result
SECURITY - notifications hidden due to policy
STORAGE - disk low
STATUS - basically everything else
The importance for each channel should match the legacy
priority of the notifications it carries.
Bug: 34250937
Test: runtest systemui
Change-Id: I5915ca453258caea63b0d9bd756893db05e8d600
NotificationGuts is now given a view to display, the notification
management controls have been moved into their own view.
NotificationGuts is provided a view to show via a MenuItem.
This allows configuration via the NotificationMenuRowProvider Plugin.
Test: manual
Change-Id: I68cb23ea2cada30cc6e930fa8c03e0aa4014dfe2
This will allow plugins to supply additional menu options to the
menu "behind" a notification.
This CL does not include behavior for when one of these new menu
items is tapped, this will be added in a separate CL.
Test: manual
Change-Id: I322f9f39d33b043bd23dcbede5dd15e6afa73fc1
Use a new system for constructing fragments so they can be swapped
out in place maintaining state. This will allow easier integration
with plugin lifecycle as parents who have child plugin fragments
can depend on the class existing and won't have to listen to
the lifecycle.
Test: runtest systemui
Change-Id: I517f4ce3d114abd49b1b5baca388d19e929b8f90
One of the many problems with PhoneStatusBar is that it holds
dependencies for many other parts of SysUI. Fix this by creating
a static method of grabbing dependencies that are global to sysui
this cleans up a lot of chains of interdependence.
Also add easy way to inject mocks of these dependencies for the
purpose of testing.
Test: runtest systemui
Change-Id: Ia0e947faea62d15b665facada47ac9916c99f895
This will hopefully avoid blaming sysui for ANRs when the system
is hosed.
Test: Manual, build, push, wait for time to change
Change-Id: I1661ac1a997ad8917b449dd175229d8b77f583c9
Port all system UI notifications to use the registry. Retain stable
integer IDs where they exist. Assign new stable IDs where resource IDs
were previously used.
Using "message" rather than "notification" since we may eventually
want to include dialogs and toasts.
Bug: 32584866
Bug: 30995038
Test: runtest systemui
Change-Id: Iec4d7cebbd88683e339ada29a279315222699942
Before navbar assumes rotation 0 means portrait and rotation 90
means landscape. This is not necessarily true, in certain devices
the natural orientation (0) is landscape. Here we removed that
assumption and make sure we use the right inflater at all times.
Bug: 32516898
Test: Locally on test device
Change-Id: I3db44dcb35d8511fb9d42b147b2bd137ff0750f7
Allows fragments to be easily switched over to plugins and a provides
a convenient base class for plugins to use that makes sure the layout
inflater and context point at the plugin's and not sysui's.
Bug: 32609190
Test: runtest systemui
Change-Id: I6503947e980f66ddcd826f6ca9a92b591ce0eb1e
There is now a bit too much of the view/layout logic touching the
fragment, but sort out that later and get something over to fragments
for now.
Bug: 32609190
Test: Manual
Change-Id: Icf677f4a70e6b92892a0fc27a0e673940ebc7a73
The heart of this change are two things:
1) Instead of using the force hide mechanism to hide windows behind
Keyguard, we actually make the activities invisible in activity manager.
2) When Keyguard is going away, we change the visibilities in activity
manager and run an app transition.
At the very core we move the responsibility of hiding activities to
ActivityStack, which checks whether Keyguard is showing, and then
hides all non-show-when-locked activities. For that, we need to check
whether any window of an activity has SHOW_WHEN_LOCKED set. We
introduce a callback from WM -> AM in case these Keyguard flags have
changed.
Furthermore, we decide whether to occlude Keyguard in KeyguardController,
which just checks whether the top activity has SHOW_WHEN_LOCKED set. When
this state changes, we prepare an occlude/unocclude app transition, and
in PWM we just inform the Keyguard about the animation so SysUI can play
along this animations in a mostly synchronized manner.
Since we now use an app transition when unlocking the phone, we get
lockscreen launch animations for free - window manager automatically
waits until the activity is drawn, or directly executes the transition
if there is nothing to animate. Thus, we can remove all the infrastructure
around "waitingForActivityDrawn".
The logic to show/hide non-app windows is moved to policy, and we add the
ability to run animations on non-app windows when executing an app
transition.
Test:
1) runtest frameworks-services -c com.android.server.wm.AppTransitionTests
2) Manually test unlocking Keyguard:
2a) Without security
2b) With security
2c) With security but trusted
2d) Portrait while activity behind is in landscape
3) Test launching things from Keyguard
3a) Without security
3b) With security
3c) Launch camera without security
3d) Launch camera with security
3e) Launch camera with securtiy and trusted
3f) Launch voice affordance
4) Set no notifications on lockscreen, drag down, make sure you get
the correct animation
5) Test clicking "emergency" on bouncer
5b) Test "Emergency info" on emergency dialer
5c) Test clicking edit button on emergency info, should show pattern on
Keyguard
Bug: 32057734
Change-Id: Icada03cca74d6a612c1f988845f4d4f601087558
Should be used only during dev to avoid having to turn crashing
plugins back on constantly.
Test: Manual
Change-Id: I2f2a461bf7aef017781ed3b61fcb216d7e1cbae9
Send a broadcast back and forth to speed up the rate at which plugins
are enabled or disabled.
Also update make files to handle exclude tests better.
Test: Manual
Change-Id: Ic8f45c663c3a5e5fd4b3e9e2f79480e155845c14
For some reason it makes android studio angry when embedding the
plugin lib in it.
Test: runtest systemui
Change-Id: I8c7202846903a75ffcbad86cb31862098e8d939a
Cache ClassLoader by pkg so that Plugins can talk to each other.
Also add some filtering so that only classes from the plugins package
and sub-packages are included in plugin classloaders.
Test: Manual
Change-Id: I42aabb418168d5a5d0581b8133aa93f07cb7e977