diff options
| author | 2018-08-06 20:52:16 +0000 | |
|---|---|---|
| committer | 2018-08-06 20:52:16 +0000 | |
| commit | ee1510593486c0e837c47414cbc5ad751fe3c734 (patch) | |
| tree | 2e0ff467bd1f1799dd9800832d9d62bfbbb20819 | |
| parent | d30079505d232461e1f025d5730741df3ab3da3a (diff) | |
| parent | 6b0f1a3d7764b2cd0cbdb56b5cbbdd8778ef846e (diff) | |
Merge "Expose DockedStackListener for logging purposes in Launcher"
4 files changed, 78 insertions, 4 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/DockedStackListenerCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/DockedStackListenerCompat.java new file mode 100644 index 000000000000..bb319e625b44 --- /dev/null +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/DockedStackListenerCompat.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.shared.system; + +import android.view.IDockedStackListener; + +/** + * An interface to track docked stack changes. + */ +public class DockedStackListenerCompat { + + IDockedStackListener.Stub mListener = new IDockedStackListener.Stub() { + @Override + public void onDividerVisibilityChanged(boolean visible) {} + + @Override + public void onDockedStackExistsChanged(boolean exists) { + DockedStackListenerCompat.this.onDockedStackExistsChanged(exists); + } + + @Override + public void onDockedStackMinimizedChanged(boolean minimized, long animDuration, + boolean isHomeStackResizable) { + DockedStackListenerCompat.this.onDockedStackMinimizedChanged(minimized, animDuration, + isHomeStackResizable); + } + + @Override + public void onAdjustedForImeChanged(boolean adjustedForIme, long animDuration) {} + + @Override + public void onDockSideChanged(final int newDockSide) { + DockedStackListenerCompat.this.onDockSideChanged(newDockSide); + } + }; + + public void onDockedStackExistsChanged(boolean exists) { + // To be overridden + } + + public void onDockedStackMinimizedChanged(boolean minimized, long animDuration, + boolean isHomeStackResizable) { + // To be overridden + } + + public void onDockSideChanged(final int newDockSide) { + // To be overridden + } +} diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java index ed2f8310eff4..d83b36d6ea80 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/WindowManagerWrapper.java @@ -166,4 +166,16 @@ public class WindowManagerWrapper { } return NAV_BAR_POS_INVALID; } + + /** + * Registers a docked stack listener with the system. + */ + public void registerDockedStackListener(DockedStackListenerCompat listener) { + try { + WindowManagerGlobal.getWindowManagerService().registerDockedStackListener( + listener.mListener); + } catch (RemoteException e) { + Log.w(TAG, "Failed to register docked stack listener"); + } + } } diff --git a/packages/SystemUI/tests/AndroidManifest.xml b/packages/SystemUI/tests/AndroidManifest.xml index 1be83229cf22..e604877c63b0 100644 --- a/packages/SystemUI/tests/AndroidManifest.xml +++ b/packages/SystemUI/tests/AndroidManifest.xml @@ -49,6 +49,7 @@ <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" /> <uses-permission android:name="android.permission.NETWORK_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.REGISTER_WINDOW_MANAGER_LISTENERS" /> <application android:debuggable="true"> <uses-library android:name="android.test.runner" /> diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 4bd48344e961..0015693ec0db 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -6926,10 +6926,8 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void registerDockedStackListener(IDockedStackListener listener) { - if (!checkCallingPermission(REGISTER_WINDOW_MANAGER_LISTENERS, - "registerDockedStackListener()")) { - return; - } + mAtmInternal.enforceCallerIsRecentsOrHasPermission(REGISTER_WINDOW_MANAGER_LISTENERS, + "registerDockedStackListener()"); synchronized (mWindowMap) { // TODO(multi-display): The listener is registered on the default display only. getDefaultDisplayContentLocked().mDividerControllerLocked.registerDockedStackListener( |