10cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato/* 20cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * Copyright (C) 2010 The Android Open Source Project 30cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * 40cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 50cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * you may not use this file except in compliance with the License. 60cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * You may obtain a copy of the License at 70cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * 80cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * http://www.apache.org/licenses/LICENSE-2.0 90cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * 100cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * Unless required by applicable law or agreed to in writing, software 110cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 120cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * See the License for the specific language governing permissions and 140cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * limitations under the License. 150cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato */ 160cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 1779de0c550037a5328bbc7f4fddaf02f192a5c283Joe Onoratopackage com.android.systemui.statusbar; 180cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 197e53f20c835ae2614c92717a6fc222b345c75036Jason Monkimport android.content.ComponentName; 2086905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggiimport android.graphics.Rect; 21165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggiimport android.os.Bundle; 220cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport android.os.Handler; 23a0c56fe93925d20d9c0b830b9664699ce557e78cJoe Onoratoimport android.os.IBinder; 24b5b0920170916e92b49f693df6e8580a785f81baJason Monkimport android.os.Looper; 250cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport android.os.Message; 26b5b0920170916e92b49f693df6e8580a785f81baJason Monkimport android.support.annotation.VisibleForTesting; 2724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggiimport android.util.Pair; 28c0d7058b14c24cd07912f5629c26b39b7b4673d5Winson 2986905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggiimport com.android.internal.os.SomeArgs; 300cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.IStatusBar; 310cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.StatusBarIcon; 32b5b0920170916e92b49f693df6e8580a785f81baJason Monkimport com.android.systemui.SystemUI; 330cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 3449fa016a98cef9940c883b3f620a0e90537a204eJason Monkimport java.util.ArrayList; 3549fa016a98cef9940c883b3f620a0e90537a204eJason Monk 36f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato/** 37f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * This class takes the functions from IStatusBar that come in on 38f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * binder pool threads and posts messages to get them onto the main 39f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * thread, and calls onto Callbacks. It also takes care of 404762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato * coalescing these calls so they don't stack up. For the calls 414762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato * are coalesced, note that they are all idempotent. 42f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato */ 43808182dc874e93582da38d013a4a790d6bc08fc9Joe Onoratopublic class CommandQueue extends IStatusBar.Stub { 441d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int INDEX_MASK = 0xffff; 451d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int MSG_SHIFT = 16; 461d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int MSG_MASK = 0xffff << MSG_SHIFT; 470cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 481d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler private static final int OP_SET_ICON = 1; 490cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato private static final int OP_REMOVE_ICON = 2; 500cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 51c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_ICON = 1 << MSG_SHIFT; 52c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_DISABLE = 2 << MSG_SHIFT; 53c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_EXPAND_NOTIFICATIONS = 3 << MSG_SHIFT; 54c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_COLLAPSE_PANELS = 4 << MSG_SHIFT; 55c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_EXPAND_SETTINGS = 5 << MSG_SHIFT; 56c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_SET_SYSTEMUI_VISIBILITY = 6 << MSG_SHIFT; 57c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_TOP_APP_WINDOW_CHANGED = 7 << MSG_SHIFT; 58c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_SHOW_IME_BUTTON = 8 << MSG_SHIFT; 59c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_TOGGLE_RECENT_APPS = 9 << MSG_SHIFT; 60c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_PRELOAD_RECENT_APPS = 10 << MSG_SHIFT; 61c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_CANCEL_PRELOAD_RECENT_APPS = 11 << MSG_SHIFT; 62c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_SET_WINDOW_STATE = 12 << MSG_SHIFT; 63c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_SHOW_RECENT_APPS = 13 << MSG_SHIFT; 64c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_HIDE_RECENT_APPS = 14 << MSG_SHIFT; 65c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_SHOW_SCREEN_PIN_REQUEST = 18 << MSG_SHIFT; 66c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_APP_TRANSITION_PENDING = 19 << MSG_SHIFT; 67c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_APP_TRANSITION_CANCELLED = 20 << MSG_SHIFT; 68c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_APP_TRANSITION_STARTING = 21 << MSG_SHIFT; 69c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_ASSIST_DISCLOSURE = 22 << MSG_SHIFT; 70c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_START_ASSIST = 23 << MSG_SHIFT; 71c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_CAMERA_LAUNCH_GESTURE = 24 << MSG_SHIFT; 72c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim private static final int MSG_TOGGLE_KEYBOARD_SHORTCUTS = 25 << MSG_SHIFT; 73ac52f2892d5c72c26387d510093ddfc741a8a632Winson Chung private static final int MSG_SHOW_PICTURE_IN_PICTURE_MENU = 26 << MSG_SHIFT; 747e53f20c835ae2614c92717a6fc222b345c75036Jason Monk private static final int MSG_ADD_QS_TILE = 27 << MSG_SHIFT; 757e53f20c835ae2614c92717a6fc222b345c75036Jason Monk private static final int MSG_REMOVE_QS_TILE = 28 << MSG_SHIFT; 767e53f20c835ae2614c92717a6fc222b345c75036Jason Monk private static final int MSG_CLICK_QS_TILE = 29 << MSG_SHIFT; 77315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver private static final int MSG_TOGGLE_APP_SPLIT_SCREEN = 30 << MSG_SHIFT; 782adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi private static final int MSG_APP_TRANSITION_FINISHED = 31 << MSG_SHIFT; 790bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu private static final int MSG_DISMISS_KEYBOARD_SHORTCUTS = 32 << MSG_SHIFT; 80c3a503d8fd505d3f14b52d4af1c6e2509de7d6b5Philip Quinn private static final int MSG_HANDLE_SYSTEM_KEY = 33 << MSG_SHIFT; 81361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk private static final int MSG_SHOW_GLOBAL_ACTIONS = 34 << MSG_SHIFT; 829ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen private static final int MSG_TOGGLE_PANEL = 35 << MSG_SHIFT; 830b99402f87ce1d8275dc60d98c2c12ccc0d9acebJason Monk private static final int MSG_SHOW_SHUTDOWN_UI = 36 << MSG_SHIFT; 843a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek private static final int MSG_SET_TOP_APP_HIDES_STATUS_BAR = 37 << MSG_SHIFT; 85328310c6fac6066d338926bb43d359862cae36d2Daniel Sandler 869a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_NONE = 0; 879a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0; 889a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_RECENTS_PANEL = 1 << 1; 899a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_NOTIFICATION_PANEL = 1 << 2; 909a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_INPUT_METHODS_PANEL = 1 << 3; 919a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller public static final int FLAG_EXCLUDE_COMPAT_MODE_PANEL = 1 << 4; 929a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller 93b605fecd9e4282823af754b3968b21205d64554aJason Monk private static final String SHOW_IME_SWITCHER_KEY = "showImeSwitcherKey"; 94b605fecd9e4282823af754b3968b21205d64554aJason Monk 9507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk private final Object mLock = new Object(); 9649fa016a98cef9940c883b3f620a0e90537a204eJason Monk private ArrayList<Callbacks> mCallbacks = new ArrayList<>(); 97b5b0920170916e92b49f693df6e8580a785f81baJason Monk private Handler mHandler = new H(Looper.getMainLooper()); 98aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk private int mDisable1; 99aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk private int mDisable2; 1000cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 1010cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato /** 1020cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato * These methods are called back on the main thread. 1030cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato */ 1040cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public interface Callbacks { 105b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void setIcon(String slot, StatusBarIcon icon) { } 106b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void removeIcon(String slot) { } 107b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void disable(int state1, int state2, boolean animate) { } 108b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void animateExpandNotificationsPanel() { } 109b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void animateCollapsePanels(int flags) { } 1109ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen default void togglePanel() { } 111b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void animateExpandSettingsPanel(String obj) { } 112b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void setSystemUiVisibility(int vis, int fullscreenStackVis, 113b5b0920170916e92b49f693df6e8580a785f81baJason Monk int dockedStackVis, int mask, Rect fullscreenStackBounds, Rect dockedStackBounds) { 114b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 115b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void topAppWindowChanged(boolean visible) { } 116b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void setImeWindowStatus(IBinder token, int vis, int backDisposition, 117b5b0920170916e92b49f693df6e8580a785f81baJason Monk boolean showImeSwitcher) { } 118b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) { } 119b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { } 120b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void toggleRecentApps() { } 121b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void toggleSplitScreen() { } 122b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void preloadRecentApps() { } 123b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void dismissKeyboardShortcutsMenu() { } 124b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void toggleKeyboardShortcutsMenu(int deviceId) { } 125b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void cancelPreloadRecentApps() { } 126b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void setWindowState(int window, int state) { } 127b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void showScreenPinningRequest(int taskId) { } 128aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk default void appTransitionPending(boolean forced) { } 129b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void appTransitionCancelled() { } 130aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk default void appTransitionStarting(long startTime, long duration, boolean forced) { } 131b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void appTransitionFinished() { } 132b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void showAssistDisclosure() { } 133b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void startAssist(Bundle args) { } 134b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void onCameraLaunchGestureDetected(int source) { } 135ac52f2892d5c72c26387d510093ddfc741a8a632Winson Chung default void showPictureInPictureMenu() { } 1363a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek default void setTopAppHidesStatusBar(boolean topAppHidesStatusBar) { } 137b5b0920170916e92b49f693df6e8580a785f81baJason Monk 138b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void addQsTile(ComponentName tile) { } 139b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void remQsTile(ComponentName tile) { } 140b5b0920170916e92b49f693df6e8580a785f81baJason Monk default void clickTile(ComponentName tile) { } 141b5b0920170916e92b49f693df6e8580a785f81baJason Monk 142c3a503d8fd505d3f14b52d4af1c6e2509de7d6b5Philip Quinn default void handleSystemKey(int arg1) { } 143361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk default void handleShowGlobalActionsMenu() { } 144b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk default void handleShowShutdownUi(boolean isReboot, String reason) { } 145b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 146b5b0920170916e92b49f693df6e8580a785f81baJason Monk 147b5b0920170916e92b49f693df6e8580a785f81baJason Monk @VisibleForTesting 148b5b0920170916e92b49f693df6e8580a785f81baJason Monk protected CommandQueue() { 149b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 150b5b0920170916e92b49f693df6e8580a785f81baJason Monk 151b5b0920170916e92b49f693df6e8580a785f81baJason Monk public void addCallbacks(Callbacks callbacks) { 15249fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.add(callbacks); 153aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk callbacks.disable(mDisable1, mDisable2, false /* animate */); 15449fa016a98cef9940c883b3f620a0e90537a204eJason Monk } 15549fa016a98cef9940c883b3f620a0e90537a204eJason Monk 15649fa016a98cef9940c883b3f620a0e90537a204eJason Monk public void removeCallbacks(Callbacks callbacks) { 15749fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.remove(callbacks); 1580cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1590cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 16007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk public void setIcon(String slot, StatusBarIcon icon) { 16107473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 16207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk // don't coalesce these 16307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk mHandler.obtainMessage(MSG_ICON, OP_SET_ICON, 0, 16407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk new Pair<String, StatusBarIcon>(slot, icon)).sendToTarget(); 1650cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1660cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1670cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 16807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk public void removeIcon(String slot) { 16907473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 17007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk // don't coalesce these 17107473cea3a6007d5e72b25d3445437a175735fa9Jason Monk mHandler.obtainMessage(MSG_ICON, OP_REMOVE_ICON, 0, slot).sendToTarget(); 1720cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1730cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 1740cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 1751e5ba5d087d8800407134af095aa4303e8721dbfJason Monk public void disable(int state1, int state2, boolean animate) { 17607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 177aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk mDisable1 = state1; 178aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk mDisable2 = state2; 179f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato mHandler.removeMessages(MSG_DISABLE); 1803d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk Message msg = mHandler.obtainMessage(MSG_DISABLE, state1, state2, animate); 1813d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk if (Looper.myLooper() == mHandler.getLooper()) { 1823d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk // If its the right looper execute immediately so hides can be handled quickly. 1833d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk mHandler.handleMessage(msg); 1843d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk msg.recycle(); 1853d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk } else { 1863d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk msg.sendToTarget(); 1873d3e99c465a25ec1a9eed930c2b1dbd745284d84Jason Monk } 188f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato } 189f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato } 190f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato 1911e5ba5d087d8800407134af095aa4303e8721dbfJason Monk public void disable(int state1, int state2) { 1921e5ba5d087d8800407134af095aa4303e8721dbfJason Monk disable(state1, state2, true); 1931e5ba5d087d8800407134af095aa4303e8721dbfJason Monk } 1941e5ba5d087d8800407134af095aa4303e8721dbfJason Monk 19500659bad38874f400297f58bc0d1037615de40fdJason Monk public void recomputeDisableFlags(boolean animate) { 19600659bad38874f400297f58bc0d1037615de40fdJason Monk disable(mDisable1, mDisable2, animate); 19700659bad38874f400297f58bc0d1037615de40fdJason Monk } 19800659bad38874f400297f58bc0d1037615de40fdJason Monk 19911cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateExpandNotificationsPanel() { 20007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 201e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov mHandler.removeMessages(MSG_EXPAND_NOTIFICATIONS); 202e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov mHandler.sendEmptyMessage(MSG_EXPAND_NOTIFICATIONS); 203e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } 204e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov } 205e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov 20611cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler public void animateCollapsePanels() { 20707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 20811cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mHandler.removeMessages(MSG_COLLAPSE_PANELS); 2099c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk mHandler.obtainMessage(MSG_COLLAPSE_PANELS, 0, 0).sendToTarget(); 2109c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk } 2119c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk } 2129c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk 2139c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk public void animateCollapsePanels(int flags) { 2149c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk synchronized (mLock) { 2159c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk mHandler.removeMessages(MSG_COLLAPSE_PANELS); 2169c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk mHandler.obtainMessage(MSG_COLLAPSE_PANELS, flags, 0).sendToTarget(); 2174762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 2184762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 2194762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato 2209ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen public void togglePanel() { 2219ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen synchronized (mLock) { 2229ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen mHandler.removeMessages(MSG_TOGGLE_PANEL); 2239ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen mHandler.obtainMessage(MSG_TOGGLE_PANEL, 0, 0).sendToTarget(); 2249ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen } 2259ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen } 2269ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen 227a9927325eda025504d59bb6594fee8e240d95b01Jason Monk public void animateExpandSettingsPanel(String subPanel) { 22807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 22911cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler mHandler.removeMessages(MSG_EXPAND_SETTINGS); 230a9927325eda025504d59bb6594fee8e240d95b01Jason Monk mHandler.obtainMessage(MSG_EXPAND_SETTINGS, subPanel).sendToTarget(); 2314762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 2324762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato } 2334762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato 23486905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi public void setSystemUiVisibility(int vis, int fullscreenStackVis, int dockedStackVis, 23586905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi int mask, Rect fullscreenStackBounds, Rect dockedStackBounds) { 23607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 2374a4a2bddc48a33cbaa49a8844b9fd36e2fc5e219Selim Cinek // Don't coalesce these, since it might have one time flags set such as 2384a4a2bddc48a33cbaa49a8844b9fd36e2fc5e219Selim Cinek // STATUS_BAR_UNHIDE which might get lost. 23986905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi SomeArgs args = SomeArgs.obtain(); 24086905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi args.argi1 = vis; 24186905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi args.argi2 = fullscreenStackVis; 24286905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi args.argi3 = dockedStackVis; 24386905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi args.argi4 = mask; 24486905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi args.arg1 = fullscreenStackBounds; 24586905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi args.arg2 = dockedStackBounds; 24686905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi mHandler.obtainMessage(MSG_SET_SYSTEMUI_VISIBILITY, args).sendToTarget(); 2479305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato } 2489305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato } 2499305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato 2507d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn public void topAppWindowChanged(boolean menuVisible) { 25107473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 2527d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn mHandler.removeMessages(MSG_TOP_APP_WINDOW_CHANGED); 2537d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn mHandler.obtainMessage(MSG_TOP_APP_WINDOW_CHANGED, menuVisible ? 1 : 0, 0, 2547d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn null).sendToTarget(); 255e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler } 256e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler } 257e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler 258b605fecd9e4282823af754b3968b21205d64554aJason Monk public void setImeWindowStatus(IBinder token, int vis, int backDisposition, 259b605fecd9e4282823af754b3968b21205d64554aJason Monk boolean showImeSwitcher) { 26007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 26106487a58be22b100daf3f950b9a1d25c3ea42aa2satok mHandler.removeMessages(MSG_SHOW_IME_BUTTON); 262b605fecd9e4282823af754b3968b21205d64554aJason Monk Message m = mHandler.obtainMessage(MSG_SHOW_IME_BUTTON, vis, backDisposition, token); 263b605fecd9e4282823af754b3968b21205d64554aJason Monk m.getData().putBoolean(SHOW_IME_SWITCHER_KEY, showImeSwitcher); 264b605fecd9e4282823af754b3968b21205d64554aJason Monk m.sendToTarget(); 26506487a58be22b100daf3f950b9a1d25c3ea42aa2satok } 26606487a58be22b100daf3f950b9a1d25c3ea42aa2satok } 26706487a58be22b100daf3f950b9a1d25c3ea42aa2satok 268681fc7b2670542aae0f3b9ef8f6c7a88db984ea9Jorim Jaggi public void showRecentApps(boolean triggeredFromAltTab, boolean fromHome) { 26907473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 2701e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung mHandler.removeMessages(MSG_SHOW_RECENT_APPS); 2711e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung mHandler.obtainMessage(MSG_SHOW_RECENT_APPS, 272681fc7b2670542aae0f3b9ef8f6c7a88db984ea9Jorim Jaggi triggeredFromAltTab ? 1 : 0, fromHome ? 1 : 0, null).sendToTarget(); 2731e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 2741e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 2751e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung 276cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { 27707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 2781e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung mHandler.removeMessages(MSG_HIDE_RECENT_APPS); 2796cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung mHandler.obtainMessage(MSG_HIDE_RECENT_APPS, 280cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung triggeredFromAltTab ? 1 : 0, triggeredFromHomeKey ? 1 : 0, 281cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung null).sendToTarget(); 2821e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 2831e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung } 2841e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung 285315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver public void toggleSplitScreen() { 286315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver synchronized (mLock) { 287315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver mHandler.removeMessages(MSG_TOGGLE_APP_SPLIT_SCREEN); 288315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver mHandler.obtainMessage(MSG_TOGGLE_APP_SPLIT_SCREEN, 0, 0, null).sendToTarget(); 289315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver } 290315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver } 291315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver 2923b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka public void toggleRecentApps() { 29307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 2943b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka mHandler.removeMessages(MSG_TOGGLE_RECENT_APPS); 2956b46038e6a0e4c45cebe655f1c3bcf8986319853Jorim Jaggi Message msg = mHandler.obtainMessage(MSG_TOGGLE_RECENT_APPS, 0, 0, null); 2966b46038e6a0e4c45cebe655f1c3bcf8986319853Jorim Jaggi msg.setAsynchronous(true); 2976b46038e6a0e4c45cebe655f1c3bcf8986319853Jorim Jaggi msg.sendToTarget(); 2983b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka } 2993b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka } 3003b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka 3017f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka public void preloadRecentApps() { 30207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 3037f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.removeMessages(MSG_PRELOAD_RECENT_APPS); 3047f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.obtainMessage(MSG_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget(); 3057f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 3067f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 3077f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka 3087f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka public void cancelPreloadRecentApps() { 30907473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 3107f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.removeMessages(MSG_CANCEL_PRELOAD_RECENT_APPS); 3117f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka mHandler.obtainMessage(MSG_CANCEL_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget(); 3127f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 3137f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka } 3147f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka 315f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri @Override 3160bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu public void dismissKeyboardShortcutsMenu() { 3170bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu synchronized (mLock) { 3180bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu mHandler.removeMessages(MSG_DISMISS_KEYBOARD_SHORTCUTS); 3190bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu mHandler.obtainMessage(MSG_DISMISS_KEYBOARD_SHORTCUTS).sendToTarget(); 3200bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu } 3210bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu } 3220bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu 3230bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu @Override 3244e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri public void toggleKeyboardShortcutsMenu(int deviceId) { 32507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 326c22ab7911a3efd7e0183f954f1760475d702ad3eAndrei Stingaceanu mHandler.removeMessages(MSG_TOGGLE_KEYBOARD_SHORTCUTS); 3274e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri mHandler.obtainMessage(MSG_TOGGLE_KEYBOARD_SHORTCUTS, deviceId, 0).sendToTarget(); 328f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri } 329f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri } 330f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri 331c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim @Override 332ac52f2892d5c72c26387d510093ddfc741a8a632Winson Chung public void showPictureInPictureMenu() { 333c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim synchronized (mLock) { 334ac52f2892d5c72c26387d510093ddfc741a8a632Winson Chung mHandler.removeMessages(MSG_SHOW_PICTURE_IN_PICTURE_MENU); 335ac52f2892d5c72c26387d510093ddfc741a8a632Winson Chung mHandler.obtainMessage(MSG_SHOW_PICTURE_IN_PICTURE_MENU).sendToTarget(); 336c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim } 337c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim } 338c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim 3399764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock public void setWindowState(int window, int state) { 34007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 3415b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock // don't coalesce these 3429764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock mHandler.obtainMessage(MSG_SET_WINDOW_STATE, window, state, null).sendToTarget(); 3439764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock } 3449764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock } 3459764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock 3460f051f5abdb31024d862a954cc4c4716b1dde616Andrii Kulian public void showScreenPinningRequest(int taskId) { 34707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 3480f051f5abdb31024d862a954cc4c4716b1dde616Andrii Kulian mHandler.obtainMessage(MSG_SHOW_SCREEN_PIN_REQUEST, taskId, 0, null) 3490f051f5abdb31024d862a954cc4c4716b1dde616Andrii Kulian .sendToTarget(); 3505565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk } 3515565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk } 3525565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk 35324bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi public void appTransitionPending() { 354aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk appTransitionPending(false /* forced */); 355aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk } 356aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk 357aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk public void appTransitionPending(boolean forced) { 35807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 359aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk mHandler.obtainMessage(MSG_APP_TRANSITION_PENDING, forced ? 1 : 0, 0).sendToTarget(); 36024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi } 36124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi } 36224bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi 36324bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi public void appTransitionCancelled() { 36407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 365b5b0920170916e92b49f693df6e8580a785f81baJason Monk mHandler.sendEmptyMessage(MSG_APP_TRANSITION_CANCELLED); 36624bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi } 36724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi } 36824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi 36924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi public void appTransitionStarting(long startTime, long duration) { 370aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk appTransitionStarting(startTime, duration, false /* forced */); 371aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk } 372aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk 373aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk public void appTransitionStarting(long startTime, long duration, boolean forced) { 37407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 375aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk mHandler.obtainMessage(MSG_APP_TRANSITION_STARTING, forced ? 1 : 0, 0, 376aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk Pair.create(startTime, duration)).sendToTarget(); 37724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi } 37824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi } 37924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi 3802adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi @Override 3812adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi public void appTransitionFinished() { 3822adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi synchronized (mLock) { 3832adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi mHandler.sendEmptyMessage(MSG_APP_TRANSITION_FINISHED); 3842adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi } 3852adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi } 3862adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi 3874f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos public void showAssistDisclosure() { 38807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 3894f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos mHandler.removeMessages(MSG_ASSIST_DISCLOSURE); 3904f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos mHandler.obtainMessage(MSG_ASSIST_DISCLOSURE).sendToTarget(); 3914f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos } 3924f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos } 3934f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos 394165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi public void startAssist(Bundle args) { 39507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 396165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi mHandler.removeMessages(MSG_START_ASSIST); 397165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi mHandler.obtainMessage(MSG_START_ASSIST, args).sendToTarget(); 398165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi } 399165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi } 400165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi 401372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek @Override 40240aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi public void onCameraLaunchGestureDetected(int source) { 40307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk synchronized (mLock) { 404372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek mHandler.removeMessages(MSG_CAMERA_LAUNCH_GESTURE); 40540aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE, source, 0).sendToTarget(); 406372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek } 407372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek } 408372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek 4097e53f20c835ae2614c92717a6fc222b345c75036Jason Monk @Override 4107e53f20c835ae2614c92717a6fc222b345c75036Jason Monk public void addQsTile(ComponentName tile) { 4117e53f20c835ae2614c92717a6fc222b345c75036Jason Monk synchronized (mLock) { 4127e53f20c835ae2614c92717a6fc222b345c75036Jason Monk mHandler.obtainMessage(MSG_ADD_QS_TILE, tile).sendToTarget(); 4137e53f20c835ae2614c92717a6fc222b345c75036Jason Monk } 4147e53f20c835ae2614c92717a6fc222b345c75036Jason Monk } 4157e53f20c835ae2614c92717a6fc222b345c75036Jason Monk 4167e53f20c835ae2614c92717a6fc222b345c75036Jason Monk @Override 4177e53f20c835ae2614c92717a6fc222b345c75036Jason Monk public void remQsTile(ComponentName tile) { 4187e53f20c835ae2614c92717a6fc222b345c75036Jason Monk synchronized (mLock) { 4197e53f20c835ae2614c92717a6fc222b345c75036Jason Monk mHandler.obtainMessage(MSG_REMOVE_QS_TILE, tile).sendToTarget(); 4207e53f20c835ae2614c92717a6fc222b345c75036Jason Monk } 4217e53f20c835ae2614c92717a6fc222b345c75036Jason Monk } 4227e53f20c835ae2614c92717a6fc222b345c75036Jason Monk 4237e53f20c835ae2614c92717a6fc222b345c75036Jason Monk @Override 4247e53f20c835ae2614c92717a6fc222b345c75036Jason Monk public void clickQsTile(ComponentName tile) { 4257e53f20c835ae2614c92717a6fc222b345c75036Jason Monk synchronized (mLock) { 4267e53f20c835ae2614c92717a6fc222b345c75036Jason Monk mHandler.obtainMessage(MSG_CLICK_QS_TILE, tile).sendToTarget(); 4277e53f20c835ae2614c92717a6fc222b345c75036Jason Monk } 4287e53f20c835ae2614c92717a6fc222b345c75036Jason Monk } 4297e53f20c835ae2614c92717a6fc222b345c75036Jason Monk 43007e0384a4e931bc94550c108ddd9b9514100161eJim Miller @Override 431c3a503d8fd505d3f14b52d4af1c6e2509de7d6b5Philip Quinn public void handleSystemKey(int key) { 43207e0384a4e931bc94550c108ddd9b9514100161eJim Miller synchronized (mLock) { 433c3a503d8fd505d3f14b52d4af1c6e2509de7d6b5Philip Quinn mHandler.obtainMessage(MSG_HANDLE_SYSTEM_KEY, key, 0).sendToTarget(); 43407e0384a4e931bc94550c108ddd9b9514100161eJim Miller } 43507e0384a4e931bc94550c108ddd9b9514100161eJim Miller } 43607e0384a4e931bc94550c108ddd9b9514100161eJim Miller 437361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk @Override 438361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk public void showGlobalActionsMenu() { 439361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk synchronized (mLock) { 440361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk mHandler.removeMessages(MSG_SHOW_GLOBAL_ACTIONS); 441361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk mHandler.obtainMessage(MSG_SHOW_GLOBAL_ACTIONS).sendToTarget(); 442361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk } 443361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk } 444361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk 445b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk @Override 4463a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek public void setTopAppHidesStatusBar(boolean hidesStatusBar) { 4473a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek mHandler.removeMessages(MSG_SET_TOP_APP_HIDES_STATUS_BAR); 4483a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek mHandler.obtainMessage(MSG_SET_TOP_APP_HIDES_STATUS_BAR, hidesStatusBar ? 1 : 0, 0) 4493a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek .sendToTarget(); 4503a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek } 4513a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek 4523a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek @Override 453b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk public void showShutdownUi(boolean isReboot, String reason) { 454b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk synchronized (mLock) { 455b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk mHandler.removeMessages(MSG_SHOW_SHUTDOWN_UI); 456b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk mHandler.obtainMessage(MSG_SHOW_SHUTDOWN_UI, isReboot ? 1 : 0, 0, reason) 457b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk .sendToTarget(); 458b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk } 459b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk } 460b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk 4610cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato private final class H extends Handler { 462b5b0920170916e92b49f693df6e8580a785f81baJason Monk private H(Looper l) { 463b5b0920170916e92b49f693df6e8580a785f81baJason Monk super(l); 464b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 465b5b0920170916e92b49f693df6e8580a785f81baJason Monk 4660cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato public void handleMessage(Message msg) { 467f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato final int what = msg.what & MSG_MASK; 46866d7d01ed91968f4ed2e2669fd306aa2af61cd16Joe Onorato switch (what) { 4690cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato case MSG_ICON: { 4700cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato switch (msg.arg1) { 4710cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato case OP_SET_ICON: { 47207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk Pair<String, StatusBarIcon> p = (Pair<String, StatusBarIcon>) msg.obj; 47349fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 47449fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).setIcon(p.first, p.second); 475b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 4760cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato break; 4770cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 4780cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato case OP_REMOVE_ICON: 47949fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 48049fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).removeIcon((String) msg.obj); 481b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 4820cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato break; 4830cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 4840cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato break; 485a0c56fe93925d20d9c0b830b9664699ce557e78cJoe Onorato } 486f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato case MSG_DISABLE: 48749fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 4881e5ba5d087d8800407134af095aa4303e8721dbfJason Monk mCallbacks.get(i).disable(msg.arg1, msg.arg2, (Boolean) msg.obj); 489b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 490f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato break; 491e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov case MSG_EXPAND_NOTIFICATIONS: 49249fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 49349fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).animateExpandNotificationsPanel(); 494b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 495e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov break; 49611cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler case MSG_COLLAPSE_PANELS: 49749fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 4989c7844cb91b43929d0a86b1c90aa1efb37f5463aJason Monk mCallbacks.get(i).animateCollapsePanels(msg.arg1); 499b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 500e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov break; 5019ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen case MSG_TOGGLE_PANEL: 5029ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen for (int i = 0; i < mCallbacks.size(); i++) { 5039ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen mCallbacks.get(i).togglePanel(); 5049ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen } 5059ad00e090d2a6d979dbc6e7eae056e1655c8ef2bAnthony Chen break; 50611cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler case MSG_EXPAND_SETTINGS: 50749fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 50849fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).animateExpandSettingsPanel((String) msg.obj); 509b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5109305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato break; 51160ee25643e0a7b8841063a4e97b0f18c51807e91Daniel Sandler case MSG_SET_SYSTEMUI_VISIBILITY: 51286905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi SomeArgs args = (SomeArgs) msg.obj; 51349fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 51449fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).setSystemUiVisibility(args.argi1, args.argi2, args.argi3, 515b5b0920170916e92b49f693df6e8580a785f81baJason Monk args.argi4, (Rect) args.arg1, (Rect) args.arg2); 516b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 51786905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi args.recycle(); 5189305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato break; 5197d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn case MSG_TOP_APP_WINDOW_CHANGED: 52049fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 52149fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).topAppWindowChanged(msg.arg1 != 0); 522b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 523e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler break; 52406487a58be22b100daf3f950b9a1d25c3ea42aa2satok case MSG_SHOW_IME_BUTTON: 52549fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 52649fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).setImeWindowStatus((IBinder) msg.obj, msg.arg1, msg.arg2, 527b5b0920170916e92b49f693df6e8580a785f81baJason Monk msg.getData().getBoolean(SHOW_IME_SWITCHER_KEY, false)); 528b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 52906487a58be22b100daf3f950b9a1d25c3ea42aa2satok break; 5301e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung case MSG_SHOW_RECENT_APPS: 53149fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 53249fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).showRecentApps(msg.arg1 != 0, msg.arg2 != 0); 533b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5341e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung break; 5351e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung case MSG_HIDE_RECENT_APPS: 53649fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 53749fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).hideRecentApps(msg.arg1 != 0, msg.arg2 != 0); 538b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5391e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung break; 5403b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka case MSG_TOGGLE_RECENT_APPS: 54149fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 54249fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).toggleRecentApps(); 543b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5443b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka break; 5457f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka case MSG_PRELOAD_RECENT_APPS: 54649fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 54749fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).preloadRecentApps(); 548b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5497f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka break; 5507f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka case MSG_CANCEL_PRELOAD_RECENT_APPS: 55149fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 55249fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).cancelPreloadRecentApps(); 553b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5547f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka break; 5550bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu case MSG_DISMISS_KEYBOARD_SHORTCUTS: 55649fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 55749fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).dismissKeyboardShortcutsMenu(); 558b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5590bf096f1b45959e260b09b2483e79187c1991f54Andrei Stingaceanu break; 560c22ab7911a3efd7e0183f954f1760475d702ad3eAndrei Stingaceanu case MSG_TOGGLE_KEYBOARD_SHORTCUTS: 56149fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 56249fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).toggleKeyboardShortcutsMenu(msg.arg1); 563b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 564f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri break; 5659764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock case MSG_SET_WINDOW_STATE: 56649fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 56749fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).setWindowState(msg.arg1, msg.arg2); 568b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5699764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock break; 5705565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk case MSG_SHOW_SCREEN_PIN_REQUEST: 57149fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 57249fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).showScreenPinningRequest(msg.arg1); 573b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5745565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk break; 57524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi case MSG_APP_TRANSITION_PENDING: 57649fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 577aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk mCallbacks.get(i).appTransitionPending(msg.arg1 != 0); 578b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 57924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi break; 58024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi case MSG_APP_TRANSITION_CANCELLED: 58149fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 58249fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).appTransitionCancelled(); 583b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 58424bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi break; 58524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi case MSG_APP_TRANSITION_STARTING: 58649fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 587b5b0920170916e92b49f693df6e8580a785f81baJason Monk Pair<Long, Long> data = (Pair<Long, Long>) msg.obj; 588aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk mCallbacks.get(i).appTransitionStarting(data.first, data.second, 589aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk msg.arg1 != 0); 590b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 59124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi break; 5922adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi case MSG_APP_TRANSITION_FINISHED: 59349fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 59449fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).appTransitionFinished(); 595b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 5962adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi break; 5974f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos case MSG_ASSIST_DISCLOSURE: 59849fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 59949fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).showAssistDisclosure(); 600b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 6014f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos break; 602165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi case MSG_START_ASSIST: 60349fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 60449fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).startAssist((Bundle) msg.obj); 605b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 606165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi break; 607372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek case MSG_CAMERA_LAUNCH_GESTURE: 60849fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 60949fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).onCameraLaunchGestureDetected(msg.arg1); 610b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 611372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek break; 612ac52f2892d5c72c26387d510093ddfc741a8a632Winson Chung case MSG_SHOW_PICTURE_IN_PICTURE_MENU: 61349fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 614ac52f2892d5c72c26387d510093ddfc741a8a632Winson Chung mCallbacks.get(i).showPictureInPictureMenu(); 615b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 616c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim break; 6177e53f20c835ae2614c92717a6fc222b345c75036Jason Monk case MSG_ADD_QS_TILE: 61849fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 61949fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).addQsTile((ComponentName) msg.obj); 620b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 6217e53f20c835ae2614c92717a6fc222b345c75036Jason Monk break; 6227e53f20c835ae2614c92717a6fc222b345c75036Jason Monk case MSG_REMOVE_QS_TILE: 62349fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 62449fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).remQsTile((ComponentName) msg.obj); 625b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 6267e53f20c835ae2614c92717a6fc222b345c75036Jason Monk break; 6277e53f20c835ae2614c92717a6fc222b345c75036Jason Monk case MSG_CLICK_QS_TILE: 62849fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 62949fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).clickTile((ComponentName) msg.obj); 630b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 6317e53f20c835ae2614c92717a6fc222b345c75036Jason Monk break; 632315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver case MSG_TOGGLE_APP_SPLIT_SCREEN: 63349fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 63449fa016a98cef9940c883b3f620a0e90537a204eJason Monk mCallbacks.get(i).toggleSplitScreen(); 635b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 636315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver break; 637c3a503d8fd505d3f14b52d4af1c6e2509de7d6b5Philip Quinn case MSG_HANDLE_SYSTEM_KEY: 63849fa016a98cef9940c883b3f620a0e90537a204eJason Monk for (int i = 0; i < mCallbacks.size(); i++) { 639c3a503d8fd505d3f14b52d4af1c6e2509de7d6b5Philip Quinn mCallbacks.get(i).handleSystemKey(msg.arg1); 640b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 64107e0384a4e931bc94550c108ddd9b9514100161eJim Miller break; 642361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk case MSG_SHOW_GLOBAL_ACTIONS: 643361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk for (int i = 0; i < mCallbacks.size(); i++) { 644361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk mCallbacks.get(i).handleShowGlobalActionsMenu(); 645361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk } 646361915c727fc2ad137bfeed7ff74b3eadde96597Jason Monk break; 647b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk case MSG_SHOW_SHUTDOWN_UI: 648b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk for (int i = 0; i < mCallbacks.size(); i++) { 649b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk mCallbacks.get(i).handleShowShutdownUi(msg.arg1 != 0, (String) msg.obj); 650b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk } 651b4302182bc916ba0f5ee08756c1b2d15cb845874Jason Monk break; 6523a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek case MSG_SET_TOP_APP_HIDES_STATUS_BAR: 6533a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek for (int i = 0; i < mCallbacks.size(); i++) { 6543a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek mCallbacks.get(i).setTopAppHidesStatusBar(msg.arg1 != 0); 6553a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek } 6563a49ba2e402701170a61f18632652d1a9379cf15Selim Cinek break; 6570cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 6580cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 6590cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato } 660b5b0920170916e92b49f693df6e8580a785f81baJason Monk 661b5b0920170916e92b49f693df6e8580a785f81baJason Monk // Need this class since CommandQueue already extends IStatusBar.Stub, so CommandQueueStart 662b5b0920170916e92b49f693df6e8580a785f81baJason Monk // is needed so it can extend SystemUI. 663b5b0920170916e92b49f693df6e8580a785f81baJason Monk public static class CommandQueueStart extends SystemUI { 664b5b0920170916e92b49f693df6e8580a785f81baJason Monk @Override 665b5b0920170916e92b49f693df6e8580a785f81baJason Monk public void start() { 666b5b0920170916e92b49f693df6e8580a785f81baJason Monk putComponent(CommandQueue.class, new CommandQueue()); 667b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 668b5b0920170916e92b49f693df6e8580a785f81baJason Monk } 6690cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato} 6700cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato 671