CommandQueue.java revision 2adba07d75419462873dfeef40d4c983d832ed99
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;
240cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport android.os.Message;
2524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggiimport android.util.Pair;
26c0d7058b14c24cd07912f5629c26b39b7b4673d5Winson
2786905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggiimport com.android.internal.os.SomeArgs;
280cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.IStatusBar;
290cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onoratoimport com.android.internal.statusbar.StatusBarIcon;
300cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
31f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato/**
32f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * This class takes the functions from IStatusBar that come in on
33f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * binder pool threads and posts messages to get them onto the main
34f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato * thread, and calls onto Callbacks.  It also takes care of
354762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato * coalescing these calls so they don't stack up.  For the calls
364762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato * are coalesced, note that they are all idempotent.
37f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato */
38808182dc874e93582da38d013a4a790d6bc08fc9Joe Onoratopublic class CommandQueue extends IStatusBar.Stub {
391d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler    private static final int INDEX_MASK = 0xffff;
401d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler    private static final int MSG_SHIFT  = 16;
411d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler    private static final int MSG_MASK   = 0xffff << MSG_SHIFT;
420cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
431d4d30aebd2c22627131819cabfe95f97def2c83Daniel Sandler    private static final int OP_SET_ICON    = 1;
440cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    private static final int OP_REMOVE_ICON = 2;
450cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
46c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_ICON                          = 1 << MSG_SHIFT;
47c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_DISABLE                       = 2 << MSG_SHIFT;
48c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_EXPAND_NOTIFICATIONS          = 3 << MSG_SHIFT;
49c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_COLLAPSE_PANELS               = 4 << MSG_SHIFT;
50c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_EXPAND_SETTINGS               = 5 << MSG_SHIFT;
51c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_SET_SYSTEMUI_VISIBILITY       = 6 << MSG_SHIFT;
52c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_TOP_APP_WINDOW_CHANGED        = 7 << MSG_SHIFT;
53c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_SHOW_IME_BUTTON               = 8 << MSG_SHIFT;
54c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_TOGGLE_RECENT_APPS            = 9 << MSG_SHIFT;
55c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_PRELOAD_RECENT_APPS           = 10 << MSG_SHIFT;
56c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_CANCEL_PRELOAD_RECENT_APPS    = 11 << MSG_SHIFT;
57c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_SET_WINDOW_STATE              = 12 << MSG_SHIFT;
58c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_SHOW_RECENT_APPS              = 13 << MSG_SHIFT;
59c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_HIDE_RECENT_APPS              = 14 << MSG_SHIFT;
60c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_BUZZ_BEEP_BLINKED             = 15 << MSG_SHIFT;
61c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_NOTIFICATION_LIGHT_OFF        = 16 << MSG_SHIFT;
62c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_NOTIFICATION_LIGHT_PULSE      = 17 << MSG_SHIFT;
63c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_SHOW_SCREEN_PIN_REQUEST       = 18 << MSG_SHIFT;
64c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_APP_TRANSITION_PENDING        = 19 << MSG_SHIFT;
65c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_APP_TRANSITION_CANCELLED      = 20 << MSG_SHIFT;
66c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_APP_TRANSITION_STARTING       = 21 << MSG_SHIFT;
67c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_ASSIST_DISCLOSURE             = 22 << MSG_SHIFT;
68c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_START_ASSIST                  = 23 << MSG_SHIFT;
69c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_CAMERA_LAUNCH_GESTURE         = 24 << MSG_SHIFT;
70c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_TOGGLE_KEYBOARD_SHORTCUTS     = 25 << MSG_SHIFT;
71c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    private static final int MSG_REQUEST_TV_PICTURE_IN_PICTURE = 26 << MSG_SHIFT;
727e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    private static final int MSG_ADD_QS_TILE                   = 27 << MSG_SHIFT;
737e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    private static final int MSG_REMOVE_QS_TILE                = 28 << MSG_SHIFT;
747e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    private static final int MSG_CLICK_QS_TILE                 = 29 << MSG_SHIFT;
75315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver    private static final int MSG_TOGGLE_APP_SPLIT_SCREEN       = 30 << MSG_SHIFT;
762adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi    private static final int MSG_APP_TRANSITION_FINISHED       = 31 << MSG_SHIFT;
77328310c6fac6066d338926bb43d359862cae36d2Daniel Sandler
789a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_NONE = 0;
799a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0;
809a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_RECENTS_PANEL = 1 << 1;
819a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_NOTIFICATION_PANEL = 1 << 2;
829a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_INPUT_METHODS_PANEL = 1 << 3;
839a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_COMPAT_MODE_PANEL = 1 << 4;
849a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller
85b605fecd9e4282823af754b3968b21205d64554aJason Monk    private static final String SHOW_IME_SWITCHER_KEY = "showImeSwitcherKey";
86b605fecd9e4282823af754b3968b21205d64554aJason Monk
8707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    private final Object mLock = new Object();
880cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    private Callbacks mCallbacks;
890cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    private Handler mHandler = new H();
900cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
910cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    /**
920cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato     * These methods are called back on the main thread.
930cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato     */
940cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    public interface Callbacks {
9507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        public void setIcon(String slot, StatusBarIcon icon);
9607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        public void removeIcon(String slot);
97cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz        public void disable(int state1, int state2, boolean animate);
9811cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler        public void animateExpandNotificationsPanel();
9911cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler        public void animateCollapsePanels(int flags);
100a9927325eda025504d59bb6594fee8e240d95b01Jason Monk        public void animateExpandSettingsPanel(String obj);
10186905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi        public void setSystemUiVisibility(int vis, int fullscreenStackVis,
10286905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                int dockedStackVis, int mask, Rect fullscreenStackBounds, Rect dockedStackBounds);
1037d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn        public void topAppWindowChanged(boolean visible);
104b605fecd9e4282823af754b3968b21205d64554aJason Monk        public void setImeWindowStatus(IBinder token, int vis, int backDisposition,
105b605fecd9e4282823af754b3968b21205d64554aJason Monk                boolean showImeSwitcher);
1061e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        public void showRecentApps(boolean triggeredFromAltTab);
107cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung        public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey);
1083b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka        public void toggleRecentApps();
109315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver        public void toggleSplitScreen();
1107f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka        public void preloadRecentApps();
1114e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri        public void toggleKeyboardShortcutsMenu(int deviceId);
1121e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        public void cancelPreloadRecentApps();
1139764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock        public void setWindowState(int window, int state);
114cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock        public void buzzBeepBlinked();
115cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        public void notificationLightOff();
116cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        public void notificationLightPulse(int argb, int onMillis, int offMillis);
1175565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk        public void showScreenPinningRequest();
11824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        public void appTransitionPending();
11924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        public void appTransitionCancelled();
12024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        public void appTransitionStarting(long startTime, long duration);
1212adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi        public void appTransitionFinished();
1224f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos        public void showAssistDisclosure();
123165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi        public void startAssist(Bundle args);
12440aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi        public void onCameraLaunchGestureDetected(int source);
125c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim        public void requestTvPictureInPicture();
1267e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
1277e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        void addQsTile(ComponentName tile);
1287e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        void remQsTile(ComponentName tile);
1297e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        void clickTile(ComponentName tile);
1300cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1310cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
13207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    public CommandQueue(Callbacks callbacks) {
1330cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        mCallbacks = callbacks;
1340cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1350cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
13607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    public void setIcon(String slot, StatusBarIcon icon) {
13707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
13807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            // don't coalesce these
13907473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            mHandler.obtainMessage(MSG_ICON, OP_SET_ICON, 0,
14007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                    new Pair<String, StatusBarIcon>(slot, icon)).sendToTarget();
1410cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        }
1420cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1430cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
14407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    public void removeIcon(String slot) {
14507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
14607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            // don't coalesce these
14707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            mHandler.obtainMessage(MSG_ICON, OP_REMOVE_ICON, 0, slot).sendToTarget();
1480cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        }
1490cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1500cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
151cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz    public void disable(int state1, int state2) {
15207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
153f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato            mHandler.removeMessages(MSG_DISABLE);
154cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz            mHandler.obtainMessage(MSG_DISABLE, state1, state2, null).sendToTarget();
155f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato        }
156f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato    }
157f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato
15811cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler    public void animateExpandNotificationsPanel() {
15907473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
160e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov            mHandler.removeMessages(MSG_EXPAND_NOTIFICATIONS);
161e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov            mHandler.sendEmptyMessage(MSG_EXPAND_NOTIFICATIONS);
162e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov        }
163e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov    }
164e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov
16511cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler    public void animateCollapsePanels() {
16607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
16711cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler            mHandler.removeMessages(MSG_COLLAPSE_PANELS);
16811cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler            mHandler.sendEmptyMessage(MSG_COLLAPSE_PANELS);
1694762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato        }
1704762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato    }
1714762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato
172a9927325eda025504d59bb6594fee8e240d95b01Jason Monk    public void animateExpandSettingsPanel(String subPanel) {
17307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
17411cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler            mHandler.removeMessages(MSG_EXPAND_SETTINGS);
175a9927325eda025504d59bb6594fee8e240d95b01Jason Monk            mHandler.obtainMessage(MSG_EXPAND_SETTINGS, subPanel).sendToTarget();
1764762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato        }
1774762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato    }
1784762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato
17986905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi    public void setSystemUiVisibility(int vis, int fullscreenStackVis, int dockedStackVis,
18086905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            int mask, Rect fullscreenStackBounds, Rect dockedStackBounds) {
18107473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
1824a4a2bddc48a33cbaa49a8844b9fd36e2fc5e219Selim Cinek            // Don't coalesce these, since it might have one time flags set such as
1834a4a2bddc48a33cbaa49a8844b9fd36e2fc5e219Selim Cinek            // STATUS_BAR_UNHIDE which might get lost.
18486905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            SomeArgs args = SomeArgs.obtain();
18586905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi1 = vis;
18686905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi2 = fullscreenStackVis;
18786905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi3 = dockedStackVis;
18886905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi4 = mask;
18986905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.arg1 = fullscreenStackBounds;
19086905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.arg2 = dockedStackBounds;
19186905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            mHandler.obtainMessage(MSG_SET_SYSTEMUI_VISIBILITY, args).sendToTarget();
1929305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato        }
1939305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato    }
1949305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato
1957d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn    public void topAppWindowChanged(boolean menuVisible) {
19607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
1977d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn            mHandler.removeMessages(MSG_TOP_APP_WINDOW_CHANGED);
1987d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn            mHandler.obtainMessage(MSG_TOP_APP_WINDOW_CHANGED, menuVisible ? 1 : 0, 0,
1997d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn                    null).sendToTarget();
200e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler        }
201e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler    }
202e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler
203b605fecd9e4282823af754b3968b21205d64554aJason Monk    public void setImeWindowStatus(IBinder token, int vis, int backDisposition,
204b605fecd9e4282823af754b3968b21205d64554aJason Monk            boolean showImeSwitcher) {
20507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
20606487a58be22b100daf3f950b9a1d25c3ea42aa2satok            mHandler.removeMessages(MSG_SHOW_IME_BUTTON);
207b605fecd9e4282823af754b3968b21205d64554aJason Monk            Message m = mHandler.obtainMessage(MSG_SHOW_IME_BUTTON, vis, backDisposition, token);
208b605fecd9e4282823af754b3968b21205d64554aJason Monk            m.getData().putBoolean(SHOW_IME_SWITCHER_KEY, showImeSwitcher);
209b605fecd9e4282823af754b3968b21205d64554aJason Monk            m.sendToTarget();
21006487a58be22b100daf3f950b9a1d25c3ea42aa2satok        }
21106487a58be22b100daf3f950b9a1d25c3ea42aa2satok    }
21206487a58be22b100daf3f950b9a1d25c3ea42aa2satok
2131e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung    public void showRecentApps(boolean triggeredFromAltTab) {
21407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2151e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung            mHandler.removeMessages(MSG_SHOW_RECENT_APPS);
2161e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung            mHandler.obtainMessage(MSG_SHOW_RECENT_APPS,
2171e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    triggeredFromAltTab ? 1 : 0, 0, null).sendToTarget();
2181e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        }
2191e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung    }
2201e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung
221cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung    public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
22207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2231e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung            mHandler.removeMessages(MSG_HIDE_RECENT_APPS);
2246cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung            mHandler.obtainMessage(MSG_HIDE_RECENT_APPS,
225cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung                    triggeredFromAltTab ? 1 : 0, triggeredFromHomeKey ? 1 : 0,
226cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung                    null).sendToTarget();
2271e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        }
2281e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung    }
2291e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung
230315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver    public void toggleSplitScreen() {
231315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver        synchronized (mLock) {
232315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver            mHandler.removeMessages(MSG_TOGGLE_APP_SPLIT_SCREEN);
233315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver            mHandler.obtainMessage(MSG_TOGGLE_APP_SPLIT_SCREEN, 0, 0, null).sendToTarget();
234315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver        }
235315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver    }
236315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver
2373b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka    public void toggleRecentApps() {
23807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2393b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka            mHandler.removeMessages(MSG_TOGGLE_RECENT_APPS);
2403b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka            mHandler.obtainMessage(MSG_TOGGLE_RECENT_APPS, 0, 0, null).sendToTarget();
2413b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka        }
2423b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka    }
2433b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka
2447f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    public void preloadRecentApps() {
24507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2467f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.removeMessages(MSG_PRELOAD_RECENT_APPS);
2477f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.obtainMessage(MSG_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget();
2487f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka        }
2497f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    }
2507f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka
2517f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    public void cancelPreloadRecentApps() {
25207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2537f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.removeMessages(MSG_CANCEL_PRELOAD_RECENT_APPS);
2547f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.obtainMessage(MSG_CANCEL_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget();
2557f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka        }
2567f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    }
2577f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka
258f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri    @Override
2594e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri    public void toggleKeyboardShortcutsMenu(int deviceId) {
26007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
261c22ab7911a3efd7e0183f954f1760475d702ad3eAndrei Stingaceanu            mHandler.removeMessages(MSG_TOGGLE_KEYBOARD_SHORTCUTS);
2624e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri            mHandler.obtainMessage(MSG_TOGGLE_KEYBOARD_SHORTCUTS, deviceId, 0).sendToTarget();
263f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri        }
264f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri    }
265f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri
266c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    @Override
267c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    public void requestTvPictureInPicture() {
268c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim        synchronized (mLock) {
269c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim            mHandler.removeMessages(MSG_REQUEST_TV_PICTURE_IN_PICTURE);
270c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim            mHandler.obtainMessage(MSG_REQUEST_TV_PICTURE_IN_PICTURE).sendToTarget();
271c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim        }
272c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    }
273c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim
2749764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock    public void setWindowState(int window, int state) {
27507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2765b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock            // don't coalesce these
2779764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock            mHandler.obtainMessage(MSG_SET_WINDOW_STATE, window, state, null).sendToTarget();
2789764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock        }
2799764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock    }
2809764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock
281cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock    public void buzzBeepBlinked() {
28207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
283cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock            mHandler.removeMessages(MSG_BUZZ_BEEP_BLINKED);
284cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock            mHandler.sendEmptyMessage(MSG_BUZZ_BEEP_BLINKED);
285cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock        }
286cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock    }
287380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi
288cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    public void notificationLightOff() {
28907473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
290cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock            mHandler.sendEmptyMessage(MSG_NOTIFICATION_LIGHT_OFF);
291cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        }
292cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    }
293cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock
294cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    public void notificationLightPulse(int argb, int onMillis, int offMillis) {
29507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
296cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock            mHandler.obtainMessage(MSG_NOTIFICATION_LIGHT_PULSE, onMillis, offMillis, argb)
297cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    .sendToTarget();
298cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        }
299cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    }
300cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock
3015565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk    public void showScreenPinningRequest() {
30207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
3035565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk            mHandler.sendEmptyMessage(MSG_SHOW_SCREEN_PIN_REQUEST);
3045565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk        }
3055565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk    }
3065565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk
30724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    public void appTransitionPending() {
30807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
30924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.removeMessages(MSG_APP_TRANSITION_PENDING);
31024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.sendEmptyMessage(MSG_APP_TRANSITION_PENDING);
31124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        }
31224bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    }
31324bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi
31424bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    public void appTransitionCancelled() {
31507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
31624bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.removeMessages(MSG_APP_TRANSITION_PENDING);
31724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.sendEmptyMessage(MSG_APP_TRANSITION_PENDING);
31824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        }
31924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    }
32024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi
32124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    public void appTransitionStarting(long startTime, long duration) {
32207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
32324bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.removeMessages(MSG_APP_TRANSITION_STARTING);
32424bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.obtainMessage(MSG_APP_TRANSITION_STARTING, Pair.create(startTime, duration))
32524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    .sendToTarget();
32624bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        }
32724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    }
32824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi
3292adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi    @Override
3302adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi    public void appTransitionFinished() {
3312adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi        synchronized (mLock) {
3322adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi            mHandler.removeMessages(MSG_APP_TRANSITION_FINISHED);
3332adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi            mHandler.sendEmptyMessage(MSG_APP_TRANSITION_FINISHED);
3342adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi        }
3352adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi    }
3362adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi
3374f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos    public void showAssistDisclosure() {
33807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
3394f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos            mHandler.removeMessages(MSG_ASSIST_DISCLOSURE);
3404f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos            mHandler.obtainMessage(MSG_ASSIST_DISCLOSURE).sendToTarget();
3414f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos        }
3424f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos    }
3434f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos
344165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi    public void startAssist(Bundle args) {
34507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
346165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi            mHandler.removeMessages(MSG_START_ASSIST);
347165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi            mHandler.obtainMessage(MSG_START_ASSIST, args).sendToTarget();
348165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi        }
349165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi    }
350165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi
351372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek    @Override
35240aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi    public void onCameraLaunchGestureDetected(int source) {
35307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
354372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek            mHandler.removeMessages(MSG_CAMERA_LAUNCH_GESTURE);
35540aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi            mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE, source, 0).sendToTarget();
356372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek        }
357372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek    }
358372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek
3597e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    @Override
3607e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    public void addQsTile(ComponentName tile) {
3617e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        synchronized (mLock) {
3627e53f20c835ae2614c92717a6fc222b345c75036Jason Monk            mHandler.obtainMessage(MSG_ADD_QS_TILE, tile).sendToTarget();
3637e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        }
3647e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    }
3657e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
3667e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    @Override
3677e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    public void remQsTile(ComponentName tile) {
3687e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        synchronized (mLock) {
3697e53f20c835ae2614c92717a6fc222b345c75036Jason Monk            mHandler.obtainMessage(MSG_REMOVE_QS_TILE, tile).sendToTarget();
3707e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        }
3717e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    }
3727e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
3737e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    @Override
3747e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    public void clickQsTile(ComponentName tile) {
3757e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        synchronized (mLock) {
3767e53f20c835ae2614c92717a6fc222b345c75036Jason Monk            mHandler.obtainMessage(MSG_CLICK_QS_TILE, tile).sendToTarget();
3777e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        }
3787e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    }
3797e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
3800cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    private final class H extends Handler {
3810cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        public void handleMessage(Message msg) {
382f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato            final int what = msg.what & MSG_MASK;
38366d7d01ed91968f4ed2e2669fd306aa2af61cd16Joe Onorato            switch (what) {
3840cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                case MSG_ICON: {
3850cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                    switch (msg.arg1) {
3860cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                        case OP_SET_ICON: {
38707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                            Pair<String, StatusBarIcon> p = (Pair<String, StatusBarIcon>) msg.obj;
38807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                            mCallbacks.setIcon(p.first, p.second);
3890cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                            break;
3900cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                        }
3910cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                        case OP_REMOVE_ICON:
39207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                            mCallbacks.removeIcon((String) msg.obj);
3930cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                            break;
3940cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                    }
3950cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                    break;
396a0c56fe93925d20d9c0b830b9664699ce557e78cJoe Onorato                }
397f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato                case MSG_DISABLE:
398cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz                    mCallbacks.disable(msg.arg1, msg.arg2, true /* animate */);
399f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato                    break;
400e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov                case MSG_EXPAND_NOTIFICATIONS:
40111cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                    mCallbacks.animateExpandNotificationsPanel();
402e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov                    break;
40311cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                case MSG_COLLAPSE_PANELS:
40411cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                    mCallbacks.animateCollapsePanels(0);
405e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov                    break;
40611cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                case MSG_EXPAND_SETTINGS:
407a9927325eda025504d59bb6594fee8e240d95b01Jason Monk                    mCallbacks.animateExpandSettingsPanel((String) msg.obj);
4089305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato                    break;
40960ee25643e0a7b8841063a4e97b0f18c51807e91Daniel Sandler                case MSG_SET_SYSTEMUI_VISIBILITY:
41086905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                    SomeArgs args = (SomeArgs) msg.obj;
41186905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                    mCallbacks.setSystemUiVisibility(args.argi1, args.argi2, args.argi3,
41286905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                            args.argi4, (Rect) args.arg1, (Rect) args.arg2);
41386905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                    args.recycle();
4149305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato                    break;
4157d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn                case MSG_TOP_APP_WINDOW_CHANGED:
4167d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn                    mCallbacks.topAppWindowChanged(msg.arg1 != 0);
417e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler                    break;
41806487a58be22b100daf3f950b9a1d25c3ea42aa2satok                case MSG_SHOW_IME_BUTTON:
419b605fecd9e4282823af754b3968b21205d64554aJason Monk                    mCallbacks.setImeWindowStatus((IBinder) msg.obj, msg.arg1, msg.arg2,
420b605fecd9e4282823af754b3968b21205d64554aJason Monk                            msg.getData().getBoolean(SHOW_IME_SWITCHER_KEY, false));
42106487a58be22b100daf3f950b9a1d25c3ea42aa2satok                    break;
4221e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                case MSG_SHOW_RECENT_APPS:
4231e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    mCallbacks.showRecentApps(msg.arg1 != 0);
4241e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    break;
4251e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                case MSG_HIDE_RECENT_APPS:
426cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung                    mCallbacks.hideRecentApps(msg.arg1 != 0, msg.arg2 != 0);
4271e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    break;
4283b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka                case MSG_TOGGLE_RECENT_APPS:
4293b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka                    mCallbacks.toggleRecentApps();
4303b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka                    break;
4317f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                case MSG_PRELOAD_RECENT_APPS:
4327f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    mCallbacks.preloadRecentApps();
4337f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    break;
4347f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                case MSG_CANCEL_PRELOAD_RECENT_APPS:
4357f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    mCallbacks.cancelPreloadRecentApps();
4367f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    break;
437c22ab7911a3efd7e0183f954f1760475d702ad3eAndrei Stingaceanu                case MSG_TOGGLE_KEYBOARD_SHORTCUTS:
4384e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri                    mCallbacks.toggleKeyboardShortcutsMenu(msg.arg1);
439f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri                    break;
4409764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock                case MSG_SET_WINDOW_STATE:
4419764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock                    mCallbacks.setWindowState(msg.arg1, msg.arg2);
4429764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock                    break;
443cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock                case MSG_BUZZ_BEEP_BLINKED:
444cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock                    mCallbacks.buzzBeepBlinked();
445cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock                    break;
446cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                case MSG_NOTIFICATION_LIGHT_OFF:
447cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    mCallbacks.notificationLightOff();
448cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    break;
449cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                case MSG_NOTIFICATION_LIGHT_PULSE:
450cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    mCallbacks.notificationLightPulse((Integer) msg.obj, msg.arg1, msg.arg2);
451cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    break;
4525565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk                case MSG_SHOW_SCREEN_PIN_REQUEST:
4535565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk                    mCallbacks.showScreenPinningRequest();
4545565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk                    break;
45524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                case MSG_APP_TRANSITION_PENDING:
45624bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    mCallbacks.appTransitionPending();
45724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    break;
45824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                case MSG_APP_TRANSITION_CANCELLED:
45924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    mCallbacks.appTransitionCancelled();
46024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    break;
46124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                case MSG_APP_TRANSITION_STARTING:
46224bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    Pair<Long, Long> data = (Pair<Long, Long>) msg.obj;
46324bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    mCallbacks.appTransitionStarting(data.first, data.second);
46424bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    break;
4652adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi                case MSG_APP_TRANSITION_FINISHED:
4662adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi                    mCallbacks.appTransitionFinished();
4672adba07d75419462873dfeef40d4c983d832ed99Jorim Jaggi                    break;
4684f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos                case MSG_ASSIST_DISCLOSURE:
4694f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos                    mCallbacks.showAssistDisclosure();
4704f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos                    break;
471165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi                case MSG_START_ASSIST:
472165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi                    mCallbacks.startAssist((Bundle) msg.obj);
473165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi                    break;
474372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek                case MSG_CAMERA_LAUNCH_GESTURE:
47540aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi                    mCallbacks.onCameraLaunchGestureDetected(msg.arg1);
476372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek                    break;
477c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim                case MSG_REQUEST_TV_PICTURE_IN_PICTURE:
478c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim                    mCallbacks.requestTvPictureInPicture();
479c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim                    break;
4807e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                case MSG_ADD_QS_TILE:
4817e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    mCallbacks.addQsTile((ComponentName) msg.obj);
4827e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    break;
4837e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                case MSG_REMOVE_QS_TILE:
4847e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    mCallbacks.remQsTile((ComponentName) msg.obj);
4857e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    break;
4867e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                case MSG_CLICK_QS_TILE:
4877e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    mCallbacks.clickTile((ComponentName) msg.obj);
4887e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    break;
489315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver                case MSG_TOGGLE_APP_SPLIT_SCREEN:
490315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver                    mCallbacks.toggleSplitScreen();
491315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver                    break;
4920cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato            }
4930cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        }
4940cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
4950cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato}
4960cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
497