CommandQueue.java revision 4e850ffaa757cd6f1e2578c454a7a83a93419e83
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;
76328310c6fac6066d338926bb43d359862cae36d2Daniel Sandler
779a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_NONE = 0;
789a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0;
799a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_RECENTS_PANEL = 1 << 1;
809a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_NOTIFICATION_PANEL = 1 << 2;
819a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_INPUT_METHODS_PANEL = 1 << 3;
829a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller    public static final int FLAG_EXCLUDE_COMPAT_MODE_PANEL = 1 << 4;
839a720f5eb6c67b581df22f4ecb498cebb459babeJim Miller
84b605fecd9e4282823af754b3968b21205d64554aJason Monk    private static final String SHOW_IME_SWITCHER_KEY = "showImeSwitcherKey";
85b605fecd9e4282823af754b3968b21205d64554aJason Monk
8607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    private final Object mLock = new Object();
870cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    private Callbacks mCallbacks;
880cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    private Handler mHandler = new H();
890cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
900cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    /**
910cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato     * These methods are called back on the main thread.
920cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato     */
930cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    public interface Callbacks {
9407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        public void setIcon(String slot, StatusBarIcon icon);
9507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        public void removeIcon(String slot);
96cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz        public void disable(int state1, int state2, boolean animate);
9711cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler        public void animateExpandNotificationsPanel();
9811cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler        public void animateCollapsePanels(int flags);
99a9927325eda025504d59bb6594fee8e240d95b01Jason Monk        public void animateExpandSettingsPanel(String obj);
10086905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi        public void setSystemUiVisibility(int vis, int fullscreenStackVis,
10186905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                int dockedStackVis, int mask, Rect fullscreenStackBounds, Rect dockedStackBounds);
1027d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn        public void topAppWindowChanged(boolean visible);
103b605fecd9e4282823af754b3968b21205d64554aJason Monk        public void setImeWindowStatus(IBinder token, int vis, int backDisposition,
104b605fecd9e4282823af754b3968b21205d64554aJason Monk                boolean showImeSwitcher);
1051e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        public void showRecentApps(boolean triggeredFromAltTab);
106cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung        public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey);
1073b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka        public void toggleRecentApps();
108315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver        public void toggleSplitScreen();
1097f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka        public void preloadRecentApps();
1104e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri        public void toggleKeyboardShortcutsMenu(int deviceId);
1111e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        public void cancelPreloadRecentApps();
1129764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock        public void setWindowState(int window, int state);
113cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock        public void buzzBeepBlinked();
114cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        public void notificationLightOff();
115cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        public void notificationLightPulse(int argb, int onMillis, int offMillis);
1165565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk        public void showScreenPinningRequest();
11724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        public void appTransitionPending();
11824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        public void appTransitionCancelled();
11924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        public void appTransitionStarting(long startTime, long duration);
1204f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos        public void showAssistDisclosure();
121165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi        public void startAssist(Bundle args);
12240aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi        public void onCameraLaunchGestureDetected(int source);
123c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim        public void requestTvPictureInPicture();
1247e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
1257e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        void addQsTile(ComponentName tile);
1267e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        void remQsTile(ComponentName tile);
1277e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        void clickTile(ComponentName tile);
1280cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1290cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
13007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    public CommandQueue(Callbacks callbacks) {
1310cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        mCallbacks = callbacks;
1320cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1330cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
13407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    public void setIcon(String slot, StatusBarIcon icon) {
13507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
13607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            // don't coalesce these
13707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            mHandler.obtainMessage(MSG_ICON, OP_SET_ICON, 0,
13807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                    new Pair<String, StatusBarIcon>(slot, icon)).sendToTarget();
1390cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        }
1400cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1410cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
14207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk    public void removeIcon(String slot) {
14307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
14407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            // don't coalesce these
14507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk            mHandler.obtainMessage(MSG_ICON, OP_REMOVE_ICON, 0, slot).sendToTarget();
1460cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        }
1470cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
1480cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
149cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz    public void disable(int state1, int state2) {
15007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
151f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato            mHandler.removeMessages(MSG_DISABLE);
152cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz            mHandler.obtainMessage(MSG_DISABLE, state1, state2, null).sendToTarget();
153f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato        }
154f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato    }
155f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato
15611cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler    public void animateExpandNotificationsPanel() {
15707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
158e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov            mHandler.removeMessages(MSG_EXPAND_NOTIFICATIONS);
159e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov            mHandler.sendEmptyMessage(MSG_EXPAND_NOTIFICATIONS);
160e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov        }
161e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov    }
162e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov
16311cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler    public void animateCollapsePanels() {
16407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
16511cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler            mHandler.removeMessages(MSG_COLLAPSE_PANELS);
16611cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler            mHandler.sendEmptyMessage(MSG_COLLAPSE_PANELS);
1674762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato        }
1684762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato    }
1694762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato
170a9927325eda025504d59bb6594fee8e240d95b01Jason Monk    public void animateExpandSettingsPanel(String subPanel) {
17107473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
17211cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler            mHandler.removeMessages(MSG_EXPAND_SETTINGS);
173a9927325eda025504d59bb6594fee8e240d95b01Jason Monk            mHandler.obtainMessage(MSG_EXPAND_SETTINGS, subPanel).sendToTarget();
1744762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato        }
1754762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato    }
1764762c2d75a55e0854bbff2f996748116d4ab1a37Joe Onorato
17786905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi    public void setSystemUiVisibility(int vis, int fullscreenStackVis, int dockedStackVis,
17886905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            int mask, Rect fullscreenStackBounds, Rect dockedStackBounds) {
17907473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
1804a4a2bddc48a33cbaa49a8844b9fd36e2fc5e219Selim Cinek            // Don't coalesce these, since it might have one time flags set such as
1814a4a2bddc48a33cbaa49a8844b9fd36e2fc5e219Selim Cinek            // STATUS_BAR_UNHIDE which might get lost.
18286905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            SomeArgs args = SomeArgs.obtain();
18386905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi1 = vis;
18486905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi2 = fullscreenStackVis;
18586905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi3 = dockedStackVis;
18686905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.argi4 = mask;
18786905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.arg1 = fullscreenStackBounds;
18886905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            args.arg2 = dockedStackBounds;
18986905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi            mHandler.obtainMessage(MSG_SET_SYSTEMUI_VISIBILITY, args).sendToTarget();
1909305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato        }
1919305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato    }
1929305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato
1937d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn    public void topAppWindowChanged(boolean menuVisible) {
19407473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
1957d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn            mHandler.removeMessages(MSG_TOP_APP_WINDOW_CHANGED);
1967d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn            mHandler.obtainMessage(MSG_TOP_APP_WINDOW_CHANGED, menuVisible ? 1 : 0, 0,
1977d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn                    null).sendToTarget();
198e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler        }
199e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler    }
200e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler
201b605fecd9e4282823af754b3968b21205d64554aJason Monk    public void setImeWindowStatus(IBinder token, int vis, int backDisposition,
202b605fecd9e4282823af754b3968b21205d64554aJason Monk            boolean showImeSwitcher) {
20307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
20406487a58be22b100daf3f950b9a1d25c3ea42aa2satok            mHandler.removeMessages(MSG_SHOW_IME_BUTTON);
205b605fecd9e4282823af754b3968b21205d64554aJason Monk            Message m = mHandler.obtainMessage(MSG_SHOW_IME_BUTTON, vis, backDisposition, token);
206b605fecd9e4282823af754b3968b21205d64554aJason Monk            m.getData().putBoolean(SHOW_IME_SWITCHER_KEY, showImeSwitcher);
207b605fecd9e4282823af754b3968b21205d64554aJason Monk            m.sendToTarget();
20806487a58be22b100daf3f950b9a1d25c3ea42aa2satok        }
20906487a58be22b100daf3f950b9a1d25c3ea42aa2satok    }
21006487a58be22b100daf3f950b9a1d25c3ea42aa2satok
2111e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung    public void showRecentApps(boolean triggeredFromAltTab) {
21207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2131e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung            mHandler.removeMessages(MSG_SHOW_RECENT_APPS);
2141e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung            mHandler.obtainMessage(MSG_SHOW_RECENT_APPS,
2151e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    triggeredFromAltTab ? 1 : 0, 0, null).sendToTarget();
2161e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        }
2171e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung    }
2181e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung
219cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung    public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
22007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2211e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung            mHandler.removeMessages(MSG_HIDE_RECENT_APPS);
2226cb485fd2e2f8ace05e1ff281ab0fc824d3652cbWinson Chung            mHandler.obtainMessage(MSG_HIDE_RECENT_APPS,
223cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung                    triggeredFromAltTab ? 1 : 0, triggeredFromHomeKey ? 1 : 0,
224cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung                    null).sendToTarget();
2251e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung        }
2261e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung    }
2271e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung
228315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver    public void toggleSplitScreen() {
229315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver        synchronized (mLock) {
230315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver            mHandler.removeMessages(MSG_TOGGLE_APP_SPLIT_SCREEN);
231315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver            mHandler.obtainMessage(MSG_TOGGLE_APP_SPLIT_SCREEN, 0, 0, null).sendToTarget();
232315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver        }
233315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver    }
234315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver
2353b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka    public void toggleRecentApps() {
23607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2373b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka            mHandler.removeMessages(MSG_TOGGLE_RECENT_APPS);
2383b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka            mHandler.obtainMessage(MSG_TOGGLE_RECENT_APPS, 0, 0, null).sendToTarget();
2393b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka        }
2403b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka    }
2413b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka
2427f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    public void preloadRecentApps() {
24307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2447f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.removeMessages(MSG_PRELOAD_RECENT_APPS);
2457f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.obtainMessage(MSG_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget();
2467f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka        }
2477f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    }
2487f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka
2497f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    public void cancelPreloadRecentApps() {
25007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2517f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.removeMessages(MSG_CANCEL_PRELOAD_RECENT_APPS);
2527f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka            mHandler.obtainMessage(MSG_CANCEL_PRELOAD_RECENT_APPS, 0, 0, null).sendToTarget();
2537f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka        }
2547f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka    }
2557f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka
256f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri    @Override
2574e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri    public void toggleKeyboardShortcutsMenu(int deviceId) {
25807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
259c22ab7911a3efd7e0183f954f1760475d702ad3eAndrei Stingaceanu            mHandler.removeMessages(MSG_TOGGLE_KEYBOARD_SHORTCUTS);
2604e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri            mHandler.obtainMessage(MSG_TOGGLE_KEYBOARD_SHORTCUTS, deviceId, 0).sendToTarget();
261f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri        }
262f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri    }
263f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri
264c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    @Override
265c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    public void requestTvPictureInPicture() {
266c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim        synchronized (mLock) {
267c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim            mHandler.removeMessages(MSG_REQUEST_TV_PICTURE_IN_PICTURE);
268c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim            mHandler.obtainMessage(MSG_REQUEST_TV_PICTURE_IN_PICTURE).sendToTarget();
269c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim        }
270c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim    }
271c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim
2729764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock    public void setWindowState(int window, int state) {
27307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
2745b9145bf990a9bbf4fdef1739e61ff8c70ec868fJohn Spurlock            // don't coalesce these
2759764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock            mHandler.obtainMessage(MSG_SET_WINDOW_STATE, window, state, null).sendToTarget();
2769764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock        }
2779764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock    }
2789764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock
279cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock    public void buzzBeepBlinked() {
28007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
281cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock            mHandler.removeMessages(MSG_BUZZ_BEEP_BLINKED);
282cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock            mHandler.sendEmptyMessage(MSG_BUZZ_BEEP_BLINKED);
283cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock        }
284cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock    }
285380ecb81db52a9d0197ca969951d07b91c20d2b9Jorim Jaggi
286cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    public void notificationLightOff() {
28707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
288cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock            mHandler.sendEmptyMessage(MSG_NOTIFICATION_LIGHT_OFF);
289cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        }
290cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    }
291cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock
292cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    public void notificationLightPulse(int argb, int onMillis, int offMillis) {
29307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
294cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock            mHandler.obtainMessage(MSG_NOTIFICATION_LIGHT_PULSE, onMillis, offMillis, argb)
295cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    .sendToTarget();
296cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock        }
297cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock    }
298cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock
2995565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk    public void showScreenPinningRequest() {
30007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
3015565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk            mHandler.sendEmptyMessage(MSG_SHOW_SCREEN_PIN_REQUEST);
3025565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk        }
3035565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk    }
3045565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk
30524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    public void appTransitionPending() {
30607473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
30724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.removeMessages(MSG_APP_TRANSITION_PENDING);
30824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.sendEmptyMessage(MSG_APP_TRANSITION_PENDING);
30924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        }
31024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    }
31124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi
31224bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    public void appTransitionCancelled() {
31307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
31424bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.removeMessages(MSG_APP_TRANSITION_PENDING);
31524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.sendEmptyMessage(MSG_APP_TRANSITION_PENDING);
31624bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        }
31724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    }
31824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi
31924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    public void appTransitionStarting(long startTime, long duration) {
32007473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
32124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.removeMessages(MSG_APP_TRANSITION_STARTING);
32224bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi            mHandler.obtainMessage(MSG_APP_TRANSITION_STARTING, Pair.create(startTime, duration))
32324bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    .sendToTarget();
32424bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi        }
32524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi    }
32624bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi
3274f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos    public void showAssistDisclosure() {
32807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
3294f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos            mHandler.removeMessages(MSG_ASSIST_DISCLOSURE);
3304f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos            mHandler.obtainMessage(MSG_ASSIST_DISCLOSURE).sendToTarget();
3314f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos        }
3324f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos    }
3334f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos
334165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi    public void startAssist(Bundle args) {
33507473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
336165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi            mHandler.removeMessages(MSG_START_ASSIST);
337165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi            mHandler.obtainMessage(MSG_START_ASSIST, args).sendToTarget();
338165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi        }
339165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi    }
340165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi
341372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek    @Override
34240aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi    public void onCameraLaunchGestureDetected(int source) {
34307473cea3a6007d5e72b25d3445437a175735fa9Jason Monk        synchronized (mLock) {
344372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek            mHandler.removeMessages(MSG_CAMERA_LAUNCH_GESTURE);
34540aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi            mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE, source, 0).sendToTarget();
346372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek        }
347372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek    }
348372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek
3497e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    @Override
3507e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    public void addQsTile(ComponentName tile) {
3517e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        synchronized (mLock) {
3527e53f20c835ae2614c92717a6fc222b345c75036Jason Monk            mHandler.obtainMessage(MSG_ADD_QS_TILE, tile).sendToTarget();
3537e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        }
3547e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    }
3557e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
3567e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    @Override
3577e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    public void remQsTile(ComponentName tile) {
3587e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        synchronized (mLock) {
3597e53f20c835ae2614c92717a6fc222b345c75036Jason Monk            mHandler.obtainMessage(MSG_REMOVE_QS_TILE, tile).sendToTarget();
3607e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        }
3617e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    }
3627e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
3637e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    @Override
3647e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    public void clickQsTile(ComponentName tile) {
3657e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        synchronized (mLock) {
3667e53f20c835ae2614c92717a6fc222b345c75036Jason Monk            mHandler.obtainMessage(MSG_CLICK_QS_TILE, tile).sendToTarget();
3677e53f20c835ae2614c92717a6fc222b345c75036Jason Monk        }
3687e53f20c835ae2614c92717a6fc222b345c75036Jason Monk    }
3697e53f20c835ae2614c92717a6fc222b345c75036Jason Monk
3700cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    private final class H extends Handler {
3710cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        public void handleMessage(Message msg) {
372f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato            final int what = msg.what & MSG_MASK;
37366d7d01ed91968f4ed2e2669fd306aa2af61cd16Joe Onorato            switch (what) {
3740cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                case MSG_ICON: {
3750cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                    switch (msg.arg1) {
3760cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                        case OP_SET_ICON: {
37707473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                            Pair<String, StatusBarIcon> p = (Pair<String, StatusBarIcon>) msg.obj;
37807473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                            mCallbacks.setIcon(p.first, p.second);
3790cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                            break;
3800cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                        }
3810cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                        case OP_REMOVE_ICON:
38207473cea3a6007d5e72b25d3445437a175735fa9Jason Monk                            mCallbacks.removeIcon((String) msg.obj);
3830cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                            break;
3840cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                    }
3850cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato                    break;
386a0c56fe93925d20d9c0b830b9664699ce557e78cJoe Onorato                }
387f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato                case MSG_DISABLE:
388cde0a2a9ea00d6e4acfe6ce7a7c9061343df7fa3Benjamin Franz                    mCallbacks.disable(msg.arg1, msg.arg2, true /* animate */);
389f3f0e053f0cc66249a11639eb67d0cdc2da26dedJoe Onorato                    break;
390e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov                case MSG_EXPAND_NOTIFICATIONS:
39111cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                    mCallbacks.animateExpandNotificationsPanel();
392e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov                    break;
39311cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                case MSG_COLLAPSE_PANELS:
39411cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                    mCallbacks.animateCollapsePanels(0);
395e20a177d3f147f3011647c3bdab401f90b2c5d1dSvetoslav Ganov                    break;
39611cf178100e71d3f9f34ab5865e03a277c5eadaaDaniel Sandler                case MSG_EXPAND_SETTINGS:
397a9927325eda025504d59bb6594fee8e240d95b01Jason Monk                    mCallbacks.animateExpandSettingsPanel((String) msg.obj);
3989305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato                    break;
39960ee25643e0a7b8841063a4e97b0f18c51807e91Daniel Sandler                case MSG_SET_SYSTEMUI_VISIBILITY:
40086905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                    SomeArgs args = (SomeArgs) msg.obj;
40186905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                    mCallbacks.setSystemUiVisibility(args.argi1, args.argi2, args.argi3,
40286905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                            args.argi4, (Rect) args.arg1, (Rect) args.arg2);
40386905582411c5c77a3e7641589cf206c6e5770f5Jorim Jaggi                    args.recycle();
4049305647eb61bb60a1f42481a0c0d208dc9bbe965Joe Onorato                    break;
4057d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn                case MSG_TOP_APP_WINDOW_CHANGED:
4067d04932ef5c001769ccef244f551b75773f1666bDianne Hackborn                    mCallbacks.topAppWindowChanged(msg.arg1 != 0);
407e02d808abf370965c3c4e4d38af11bc69110fde2Daniel Sandler                    break;
40806487a58be22b100daf3f950b9a1d25c3ea42aa2satok                case MSG_SHOW_IME_BUTTON:
409b605fecd9e4282823af754b3968b21205d64554aJason Monk                    mCallbacks.setImeWindowStatus((IBinder) msg.obj, msg.arg1, msg.arg2,
410b605fecd9e4282823af754b3968b21205d64554aJason Monk                            msg.getData().getBoolean(SHOW_IME_SWITCHER_KEY, false));
41106487a58be22b100daf3f950b9a1d25c3ea42aa2satok                    break;
4121e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                case MSG_SHOW_RECENT_APPS:
4131e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    mCallbacks.showRecentApps(msg.arg1 != 0);
4141e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    break;
4151e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                case MSG_HIDE_RECENT_APPS:
416cdcd487abad10f728f0542accc42a31d1f7fedacWinson Chung                    mCallbacks.hideRecentApps(msg.arg1 != 0, msg.arg2 != 0);
4171e8d71b605b4872e93200706a80a88a3ff25498cWinson Chung                    break;
4183b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka                case MSG_TOGGLE_RECENT_APPS:
4193b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka                    mCallbacks.toggleRecentApps();
4203b1fc47d004f6b29af8f40d181baa3460b1e3b15Michael Jurka                    break;
4217f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                case MSG_PRELOAD_RECENT_APPS:
4227f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    mCallbacks.preloadRecentApps();
4237f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    break;
4247f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                case MSG_CANCEL_PRELOAD_RECENT_APPS:
4257f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    mCallbacks.cancelPreloadRecentApps();
4267f2668c8469934ce83a5647977f6e74ab782cf07Michael Jurka                    break;
427c22ab7911a3efd7e0183f954f1760475d702ad3eAndrei Stingaceanu                case MSG_TOGGLE_KEYBOARD_SHORTCUTS:
4284e850ffaa757cd6f1e2578c454a7a83a93419e83Clara Bayarri                    mCallbacks.toggleKeyboardShortcutsMenu(msg.arg1);
429f2debb1f9a8a166e249a456efc0b41d731c275c2Clara Bayarri                    break;
4309764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock                case MSG_SET_WINDOW_STATE:
4319764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock                    mCallbacks.setWindowState(msg.arg1, msg.arg2);
4329764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock                    break;
433cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock                case MSG_BUZZ_BEEP_BLINKED:
434cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock                    mCallbacks.buzzBeepBlinked();
435cad5768e22e5132efb2e5179f4988a763c7a8d9eJohn Spurlock                    break;
436cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                case MSG_NOTIFICATION_LIGHT_OFF:
437cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    mCallbacks.notificationLightOff();
438cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    break;
439cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                case MSG_NOTIFICATION_LIGHT_PULSE:
440cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    mCallbacks.notificationLightPulse((Integer) msg.obj, msg.arg1, msg.arg2);
441cb566aab57cafb69c628809fc0a0ffa2151c7d6eJohn Spurlock                    break;
4425565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk                case MSG_SHOW_SCREEN_PIN_REQUEST:
4435565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk                    mCallbacks.showScreenPinningRequest();
4445565cb42f2ac07fcdbe3aab2503de07fbeb39504Jason Monk                    break;
44524bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                case MSG_APP_TRANSITION_PENDING:
44624bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    mCallbacks.appTransitionPending();
44724bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    break;
44824bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                case MSG_APP_TRANSITION_CANCELLED:
44924bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    mCallbacks.appTransitionCancelled();
45024bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    break;
45124bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                case MSG_APP_TRANSITION_STARTING:
45224bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    Pair<Long, Long> data = (Pair<Long, Long>) msg.obj;
45324bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    mCallbacks.appTransitionStarting(data.first, data.second);
45424bec7ce7adc3c0d693cfadcb4b28f5fc41555aeJorim Jaggi                    break;
4554f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos                case MSG_ASSIST_DISCLOSURE:
4564f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos                    mCallbacks.showAssistDisclosure();
4574f43dc042bf76ec6c3b340b2297dec7c4cdd9098Adrian Roos                    break;
458165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi                case MSG_START_ASSIST:
459165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi                    mCallbacks.startAssist((Bundle) msg.obj);
460165ce066b701ba0153000f0692bfc7032655d17dJorim Jaggi                    break;
461372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek                case MSG_CAMERA_LAUNCH_GESTURE:
46240aa8811bc817293d7400c14fa60350d2350d29fJorim Jaggi                    mCallbacks.onCameraLaunchGestureDetected(msg.arg1);
463372d1bdd54fe977c71bdaae895687c76ac35202aSelim Cinek                    break;
464c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim                case MSG_REQUEST_TV_PICTURE_IN_PICTURE:
465c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim                    mCallbacks.requestTvPictureInPicture();
466c552b04cb4aac9d31dbaf9744f32ddc14886e222Jaewan Kim                    break;
4677e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                case MSG_ADD_QS_TILE:
4687e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    mCallbacks.addQsTile((ComponentName) msg.obj);
4697e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    break;
4707e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                case MSG_REMOVE_QS_TILE:
4717e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    mCallbacks.remQsTile((ComponentName) msg.obj);
4727e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    break;
4737e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                case MSG_CLICK_QS_TILE:
4747e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    mCallbacks.clickTile((ComponentName) msg.obj);
4757e53f20c835ae2614c92717a6fc222b345c75036Jason Monk                    break;
476315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver                case MSG_TOGGLE_APP_SPLIT_SCREEN:
477315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver                    mCallbacks.toggleSplitScreen();
478315c34e7d62ce4b609f2d08b18a11a2d44e93abaPhil Weaver                    break;
4790cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato            }
4800cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato        }
4810cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato    }
4820cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato}
4830cbda99f8721ad9b03ada04d2637fb75a2a0fecaJoe Onorato
484