Commit Graph

35 Commits

Author SHA1 Message Date
Ned Burns
e33b495c7d Add service for dumping at NORMAL priority
SystemUIService is hard-coded to dump at CRITICAL priority and so can't
dump very much (and, most importantly, can't handle dumping our length
log buffers). So instead we create a new service,
SystemUIAuxiliaryDumpService, which will dump alongside all other
services in the NORMAL section. Its dump method calls straight into the
DumpManager.

Test: atest, manual
Change-Id: If76f206081a1663e23fc14076b50bef7396e517f
2020-02-20 22:11:31 -05:00
Ned Burns
c7cfa69ffd Introduce DumpManager
Introduces DumpManager, a unified dumping system that supports dumping
at different priority levels.

Currently, when a bug report gets taken, SystemUI is only dumped during
the CRITICAL section. This has its advantages (we get to go first!) but
also imposes a strict limit on how much we can dump. To get around this
restriction, we need to *also* dump SystemUI during the NORMAL section,
which has much more forgiving constraints.

This CL simply creates the mechanism for systemUI to dump at different
priority levels, but doesn't actually cause us to participate in the
NORMAL section (yet, see later CLs).

It introduces the DumpManager, unified replacement for DumpController &
various logic in SystemUIService and Dependency.java. See kdoc in
DumpManager for usage notes.

Migration of current users of DumpController coming in a later CL.

Test: atest, manual
Change-Id: If4f41ed496c0c64024a83aad812b77f60fe27555
2020-02-20 22:11:19 -05:00
Dave Mankoff
00e8a2fa8d Conslidate @MainHandler and similar to @Main (and similar).
@MainHandler, @MainLooper, @MainResources -> @Main
@BgHandler, @BgLooper -> @Background.

Also, move the providers for Handlers and Loopers into the
ConcurrencyModule.

Bug: 146510722
Test: atest SystemUITests
Change-Id: I991735e1fdca397784427409a2ae696a7374f584
2019-12-20 16:35:42 -05:00
Dave Mankoff
6711ec9e45 Remove Dependency.get(MAIN_HANDLER) from SystemUIService
Bug: 144503618
Test: atest SystemUITests
Change-Id: Ia75498b500333ac4924f1b1e3f7831f7ff7754e3
2019-11-19 21:24:34 -05:00
Ned Burns
c478deb466 Don't dump SysUI config if other args are provided
This was polluting the output of selective dump from
adb shell dumpsys activity service com.android.systemui/.SystemUIService dependency DumpController <tag>

Test: manual
Change-Id: Ifcfb97e3edf2005e16a1433862fe9094927c0761
2019-10-29 20:27:07 -04:00
Felipe Leme
c15290610a Merge "Dump the system UI components config, so we can check if OEM redefines them." into qt-qpr1-dev am: 305a6bd1d9
am: cc2e228cb7

Change-Id: I6926201f1c81dc3d76c72f1102dd7061bd1f1f22
2019-10-18 15:35:50 -07:00
Felipe Leme
98e8118868 Dump the system UI components config, so we can check if OEM redefines them.
Test: adb shell dumpsys activity service com.android.systemui/.SystemUIService --config
Test: adb shell dumpsys activity service com.android.systemui/.SystemUIService
Bug: 141631055

Change-Id: I157824b69e57ea133be666194b2f11c0e1ba36e8
(cherry picked from commit adff0b052d032cd779383a7e518b96acb16f3e44)
2019-10-11 10:32:42 -07:00
Fabian Kozynski
429f160f69 Fix dump Dependency
Test: adb shell dumpsys activity service com.android.systemui/.SystemUIService Dependency
Test: adb shell dumpsys activity service com.android.systemui/.SystemUIService dependency
Change-Id: I6c7fa060ab48321ae86f93ad14ff9621d2f498b1
2019-09-17 16:33:10 -04:00
Hyunyoung Song
8f9d34cb5f [DO NOT MERGE] qt-qpr1-sysui-dev @ build 5814791
Test: presubmit setup on source branch

Bug: 130289146 Create a Gradle build for SystemUI
Bug: 136279712 Daggerize FalsingManager
Bug: 137324767 "Unable to instantiate service com.android.systemui.doze.DozeService" exception breaks launcher tests
Bug: 137563419 Remove Bouncer reveal delay from bypass flow
Bug: 138787339 Allow Services and Activities to be injected into directly.
Bug: 139128921 [AS 3.5 RC2, SDK API 29 rev 2] Overload resolution ambiguity: while removing element from HashMap
Bug: 64712476 Import translations for dev branches


Change-Id: Ib7fd4706c070907fd556c3532957f3b1b046de6d
2019-09-01 00:31:47 -07:00
Dave Mankoff
037d9fcd95 Initialize Dependency with the Application when Dagger starts.
Dependency is no longer a subclass of SystemUI. It gets initialized
directly as part of the application, just like the rest of Dagger.
It was an awkward implementation of SystemUI anyways.

Bug: 137324767
Change-Id: Icf49e9262e8c0710210a8bc0231c4d16396ffdf3
Test: atest SystemUITests
2019-08-09 13:54:23 -04:00
Winson Chung
e8e4bdba18 Add ability to dump specific dependency controller
Bug: 130804868
Test: adb shell dumpsys activity service SystemUIService Dependency OverviewProxyService
Change-Id: Ie88f62d0d0b17ded6f8ff5d3d850f1f444eed444
2019-04-18 17:13:52 +00:00
Gus Prevas
ab33679d7e Fixes import ordering.
Test: n/a
Change-Id: I432e11b52deb7974e50f62076af3b7aa07e364b6
2018-11-14 14:16:52 -05:00
Tony Wickham
023cb195be Move plugin support to shared lib
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
2018-09-28 10:04:09 -07:00
Dan Sandler
c6dff3db61 Clean up DozeService plugin listeners.
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
2018-02-15 21:39:35 +00:00
Dan Sandler
dc2ddd7e3e Add BinderProxy tracking code to SysUI.
Bug: 71353150
Test: runtest systemui
Change-Id: I48fbee833fb1c9e70c6efa8c0b232abbc340dce3
2018-01-24 19:36:05 -05:00
Jeff Sharkey
fe6f85cac9 Introduce RescueParty.
When a device gets stuck in a crash loop, it's pretty much unusable
and impossible for users to recover from.

To help rescue devices from this state, this change introduces a new
feature that watches for runtime restart loops and persistent app
crash loops, and escalates through a series of increasingly
aggressive rescue operations.  Currently these rescue levels walk
through clearing any experiments in SettingsProvider before finally
rebooting and prompting the user to wipe data.

Crash loops are detected based on a number of events in a specific
window of time.  App stats can be stored in memory, but boot stats
need to be stored in system properties to be more robust.

Start up RecoveryService much earlier during the boot so we can
reboot into recovery when needed.

Add properties tha push system_server or SystemUI into a crash loops
for testing purposes.

Test: builds, boots, forced crashing walks through modes
Bug: 24872457, 30951331
Change-Id: I6cdd37682973fe18de0f08521e88f70ee7d7728b
2017-01-20 17:36:38 -07:00
Jorim Jaggi
3beffdf4a0 Fix crash when taking screenshot.
Start SystemUI services only if needed.

Bug: 13635952
Change-Id: I76a5e3333ed8f51a267e33b2cf172d6c775ac914
2014-04-05 17:06:21 +02:00
Jorim Jaggi
cff0acb6b1 Wait for Keyguard to be drawn after boot.
The old logic with waiting for the Keyguard to be drawn assumed that
it is in an own window, and just checked for the visibility. This is
no longer possible as the Keyguard is in the status bar, and the status
bar might have been drawn without the Keyguard. So we have to wait
explicitely until Keyguard told PhoneWindowManager that it has now been
drawn and we can turn on the screen.

In addition, the starting logic of SystemUI is moved into
SystemUIApplication such the we can make sure that the status bar
already exists when the callbacks from PhoneWindowManager reach
KeyguardService. This simplifies the logic a lot.

Bug: 13635952
Change-Id: Ifd6ba795647edcf3501641e39052e4d04bc826fb
2014-04-02 22:11:19 +02:00
John Spurlock
3e309b2edc Decouple storage notification from status bar.
Hoist the usb storage notification listener to a top-level
system ui service, not dependent on a status bar implementation.

Change-Id: Ic9e7fba1e5bfd758d72226f6d796c2f04f6b17e6
2013-06-25 11:12:41 -04:00
John Spurlock
d08de37a22 Decouple recents from status bar.
Remove remaining references to recents package from status bar.

Introduce in-process "components" to the existing SystemUI base class
to make component boundaries explicit, and implement Recents as the
first component.

Change-Id: Ieefd386379a1f46806b31f68a4cacd76c093aea4
2013-06-24 14:30:12 -04:00
John Spurlock
5c4541246c Introduce SystemUI-managed alternative system bars.
If a service component is defined in a new secure setting,
SystemUI will attempt to use that service as the status bar
provider.

Falls back to the existing in-process implementation configured
in the product config if the setting is missing or invalid.

Nothing changes yet from a permission point of view.  Alternative
system bar implementations still require the status bar permission.

Also nothing changes from an api point of view.  Alternative
system bar implementations use the existing IStatusBar interface.

This simply enables testing alternative system bar implementations
installed from other trusted, platform-signed packages.

Known caveat: the setting is stored per user, multi-user changes
will be handled in a future CL.

Change-Id: I0413df185f7e75f77ad2ae1bc3689306d5e6e0fb
2013-06-21 17:31:25 -04:00
John Spurlock
b0e49fc93c Remove TabletStatusBar from systemui package.
Change-Id: Ie8b556dbba8751617582f8c717ee83e480938b27
2013-06-12 15:59:37 -04:00
John Spurlock
de84f0e77e Organize the imports in systemui.
To follow android conventions, more importantly to remove the
unused.

Change-Id: I75881718e84360a579a3b02c26489ad250bc9227
2013-06-12 14:50:47 -04:00
John Spurlock
cd686b5b6d Migrate systemui Slog calls to Log
Change-Id: Ib6734c85960f06fed646599565b8eeba26b9e98e
2013-06-06 16:40:56 -04:00
Svetoslav
6b25e726cb Remove a workaround for accessibility managers that works across users.
The system and some processes such as the keyguard and system UI
run across users. Hence, the local accessibility manager should call
into the backing system service with the id of the current user.
For all other processes the local manager uses the current user id.
There was a method that is to be called before the local accessibility
manager has been accessed to initialize it to work across users.
This had to be done for keyguard and system UI.

This change removed the workaround and now the local accessibility
manager determines under the hood which user id to use while calling
into the system. If the local manager is in the system process or
its process has permissions to work across uses, the manager uses
UserHandle.USER_CURRENT, otherwise it uses the user if its process.

Change-Id: I3e97fe98805adca01c1a0127a276828e90926f95
2013-02-28 17:57:29 -08:00
Michael Wright
0087a14d4b Add brightness dialog to SystemUI
Change-Id: If31406c9144bb2583876f08dd54b259d1dfa3601
2013-02-20 14:39:03 -08:00
Svetoslav Ganov
58d37b55bd Multi-user support for the accessibility layer.
1. This change converts the accessibility manager service to
   maintain a state per user. When the user changes the services
   for the user that is going away are disconnected, the local
   accessibility managers in the processes for this user are
   disabled, the state is swapped with the new user's one, and
   the new user state is refreshed.

   This change updates all calls into the system to use their
   user specific versions when applicable. For example, regisetring
   content observers, package monitors, calls into other system
   services, etc.

   There are some components that are shared across users such
   as UI created by the system process and the SystemUI package.
   Such components are managed as a global state shared across
   all users and are updated accordingly on a user switch. Since
   the SystemUI is running in a normal app process this change
   adds hidden APIs on the local window manager to allow the
   SystemUI to notify the accessibility layer that it will run
   accross users.

   Calls to AccessibiltyManager's isEnabled(), isTouchExplorationEnabled()
   and sendAccessibilityEvent return false or a are a nop for a
   background user sice he should not send accessibility events,
   and should not perform touch exploration.

   Update the internal accessibility tests due to changes in the
   AccessibilityManager.

   This change also fixes several issues that were encountered
   such as calling out the accessibility manager service with a
   lock held.

   Removed some incorrect debugging code from the TouchExplorer
   that was leading to a system crash.

bug:6967373

Change-Id: I2cf32ffdee1d827a8197ae4ce717dc0ff798b259
2012-09-21 16:48:07 -07:00
Jeff Brown
98365d7663 Refactor for multi-display support.
Split WindowManagerImpl into two parts, the WindowManager
interface implementation remains where it is but the global
communications with the window manager are now handled by
the WindowManagerGlobal class.  This change greatly simplifies
the challenge of having separate WindowManager instances
for each Context.

Removed WindowManagerImpl.getDefault().  This represents the
bulk of this change.  Most of the usages of this method were
either to perform global functions (now handled by WindowManagerGlobal)
or to obtain the default display (now handled by DisplayManager).

Explicitly associate each new window with a display and make
the Display object available to the View hierarchy.

Add stubs for some new display manager API features.

Start to split apart the concepts of display id and layer stack.
since they operate at different layers of abstraction.
While it's true that each logical display uniquely corresponds to a
surface flinger layer stack, it is not necessarily the case that
they must use the same ids.  Added Display.getLayerStack()
and started using it in places where it was relatively easy to do.

Change-Id: I29ed909114dec86807c4d3a5059c3fa0358bea61
2012-08-19 22:42:08 -07:00
Jeff Sharkey
098d580cc2 Migrate ringtone playback to SystemUI.
Introduce IRingtonePlayer, which handles playback for both Ringtone
objects and Notifications. SystemUI now hosts this player, which it
registers with AudioService. It also keeps MediaPlayer instances
warm, and cleans them up after stop() or Binder death.

Move both Ringtone and NotificationManagerService to play back audio
through this new interface.

Bug: 6376128, 6350773
Change-Id: I1dcb86d16ee3c4f07cdb2248d33dcff4ead3609a
2012-04-27 14:15:05 -07:00
Jeff Sharkey
eb4cc492c9 Protect system services with DUMP permission.
Change-Id: I5e53859f8b8e5473e54eca43ebd7de841f1a05ff
2012-04-26 18:17:29 -07:00
Dianne Hackborn
f87d19621d Clean up status bar, system bar, navigation bar management.
The status bar and navigation bar are two completely separate
elements, with their own semantics.  The system bar now classifies
itself as a navigation bar, since that is really how it behaves.

This required rewriting the HDMI resizing code, so that it is
all done by PhoneWindowManager since that is what is responsible
for the size of the navigation bar (and thus now system bar).  This
actually gets rid of a fair amount of code, and means we can also
do the same thing for a pure navigation bar.

Likewise the system bar now has the navigation bar ability to be
hidden when requested by system UI flags.  To get the behavior
we want on Xoom, we only allow the nav bar to be hidden when it
will help provide a better aspect ratio for showing widescreen
videos.

Finally the nav/system bar now animates when hidden and shown.

Change-Id: Ie927154b68376a0b61802f99171ff56b8da92e7a
2012-04-04 16:00:45 -07:00
Dianne Hackborn
81e56d535c Rework how we decide whether to use system or status bar.
The PhoneWindowManager is now responsible for determing this,
since it needs to do this before we can generate the configuration
since we need to take into account the system bar size we will use.

Also the Display should now report the screen height without
including the system bar.

Change-Id: I82dfcc5e327e4d13d82c373c6c870f557a99b757
2011-05-26 10:46:19 -07:00
Daniel Sandler
0ad460b087 Look again; the system bar is now diamonds.
Lights Out 3.0 (bug 3241144)
  - new artwork
  - new transition animations
  - new interaction (tap anywhere to dismiss & interact)
  - much simpler overall design and implementation

Layout (bug 3242949)
  - fine-tuned spacing on navigation and notification icons
  - notification icon spacing compresses in portrait

Shirt Pocket (bug 3203179)
  - disabled for now

Bug: 3241144
Bug: 3242949
Bug: 3203179
Change-Id: I6e9b7f9ebe07317d07609f11d5f03f22269bc7bb
2010-12-15 20:53:32 -05:00
Joe Onorato
10523b4d0c Make the low battery dialog work again.
Change-Id: I97232a3645e6a817c9c5f5f90b88a7e925d36d13
2010-10-27 11:26:00 -07:00
Joe Onorato
f3c3c4fd14 Refactor SystemUI so the status bar isn't a Service of its own.
There is now one SystemUIService, which starts the status bar service.
Pretty soon there will be other things running in here too.  This way
we don't need to have each of them started by something individually.

This also moves the choice between tablet and phone status bar into
SystemUI.apk, which seems like a much better place for it.

Change-Id: Ib69ef2f43d648764f8dbb52008f5d036a1ee07d9
2010-10-21 15:42:34 -04:00