Create DependencyBinder which is abstract and can tell dagger how
to convert directly between interfaces and implementations without
requiring code for it.
Test: compile (which runs dagger)
Change-Id: I7013ee12d37172441e2c70cf2fe36f707975c821
Since we have persistent plugins now, it doesn't
make sense to crash on each wtf.
Bug: 117607819
Change-Id: Ic00a75ed796cd71a36dc6f056cc92be5b190536b
Fixes: 117564930
Test: observe no crash on wtf
TerribleFailureHandler is hidden API, so we abstract it out so only
sysui uses it.
Test: compiles
Bug: 115877296
Change-Id: Iec9ca5c22beffcd9a86edde8eb5bdba06ae6aea5
SystemUI uses PackageManager to enable/disable plugin components.
Launcher cannot do this, so we abstract this logic into an interface;
Launcher will have a different implementation.
Test: "atest com.android.systemui.shared.plugins"
build succeeds and all tests pass
Bug: 115877296
Change-Id: Ie6f11572026dafa369c99722d63d4daa0ea44fb5
In addition to changing imports, this required some changes to use java
7, since that's what the shared lib needs to be for launcher.
See bug for more details on this project.
Test: "atest com.android.systemui.shared.plugins"
build succeeds and all tests pass
Bug: 115877296
Change-Id: Ib79ede0a61664df0ba1a194632a345d2229777fc
Plugins should only run on user builds if explicitly whitelisted.
It's also necessary to hold a signature permission:
com.android.systemui.permission.PLUGIN
Test: atest PluginInstanceManagerTest
Test: atest PluginManagerTest
Test: manually try to install plugin on user build (whitelisted or not)
Bug: 111414690
Change-Id: If17b13f4caef677d641cba84b491b65c8135679b
Also adds some additional debugging:
`adb shell dumpsys activity service SystemUI` will now dump
the plugin map. This will help us discover leaks that happen
to interact with plugins, or leaks in the plugins themselves.
(Note that plugins only work on debuggable builds.)
Bug: 72138063
Test: adb shell dumpsys activity service SystemUI
Change-Id: I328aeb9a0940404760e9121ef26a0518371b8319
Adds new mechanism for activities in sysui to be replaced by plugins
and allows that to happen for recents.
Test: runtest systemui
Change-Id: I8b570ce7c57484c58a52afe5e247d24ebfa0c57f
Sometimes when the PluginManagerImpl got around to executing the
message it posts in the constructor, the next test would be initializing
the Dependencies and it would cause a crash. Clean up this whole
thing by making the looper injectable and the message runs at
a deterministic time.
Test: runtest systemui
Change-Id: I485d72aea22aa8f6c759012d54701af8a503681b
- 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
An ExtensionController provides an easy way to say I need an
object of interface X. Then a plugin or a tuner factory can
actually provide X when needed or fallback to a default implementation.
Test: runtest systemui
Change-Id: I5e1b76def3c790d7f673867648ffeb13c4d0a829
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