SystemBarHelperTest.java revision e96ec75d23e82b352ab1393dbac8d6372ceb62d7
1/* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.setupwizardlib.test; 18 19import android.annotation.SuppressLint; 20import android.content.Context; 21import android.content.res.Configuration; 22import android.graphics.drawable.Drawable; 23import android.net.Uri; 24import android.os.Bundle; 25import android.test.AndroidTestCase; 26import android.test.suitebuilder.annotation.SmallTest; 27import android.view.InputQueue; 28import android.view.KeyEvent; 29import android.view.LayoutInflater; 30import android.view.MotionEvent; 31import android.view.SurfaceHolder.Callback2; 32import android.view.View; 33import android.view.ViewGroup.LayoutParams; 34import android.view.Window; 35import android.view.WindowManager; 36 37import com.android.setupwizardlib.util.SystemBarHelper; 38 39public class SystemBarHelperTest extends AndroidTestCase { 40 41 private static final int STATUS_BAR_DISABLE_BACK = 0x00400000; 42 43 @SuppressLint("InlinedApi") 44 private static final int DEFAULT_IMMERSIVE_FLAGS = 45 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 46 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 47 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 48 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; 49 50 @SmallTest 51 public void testAddVisibilityFlagView() { 52 final View view = createViewWithSystemUiVisibility(0x456); 53 SystemBarHelper.addVisibilityFlag(view, 0x1400); 54 assertEquals("View visibility should be 0x1456", 0x1456, view.getSystemUiVisibility()); 55 } 56 57 @SmallTest 58 public void testRemoveVisibilityFlagView() { 59 final View view = createViewWithSystemUiVisibility(0x456); 60 SystemBarHelper.removeVisibilityFlag(view, 0x1400); 61 assertEquals("View visibility should be 0x56", 0x56, view.getSystemUiVisibility()); 62 } 63 64 @SmallTest 65 public void testAddVisibilityFlagWindow() { 66 final Window window = createWindowWithSystemUiVisibility(0x456); 67 SystemBarHelper.addVisibilityFlag(window, 0x1400); 68 assertEquals("View visibility should be 0x1456", 0x1456, 69 window.getAttributes().systemUiVisibility); 70 } 71 72 @SmallTest 73 public void testRemoveVisibilityFlagWindow() { 74 final Window window = createWindowWithSystemUiVisibility(0x456); 75 SystemBarHelper.removeVisibilityFlag(window, 0x1400); 76 assertEquals("View visibility should be 0x56", 0x56, 77 window.getAttributes().systemUiVisibility); 78 } 79 80 @SmallTest 81 public void testHideSystemBarsWindow() { 82 final Window window = createWindowWithSystemUiVisibility(0x456); 83 SystemBarHelper.hideSystemBars(window); 84 assertEquals("DEFAULT_IMMERSIVE_FLAGS should be added to window's systemUiVisibility", 85 DEFAULT_IMMERSIVE_FLAGS | 0x456, 86 window.getAttributes().systemUiVisibility); 87 assertEquals("DEFAULT_IMMERSIVE_FLAGS should be added to decorView's systemUiVisibility", 88 DEFAULT_IMMERSIVE_FLAGS | 0x456, 89 window.getDecorView().getSystemUiVisibility()); 90 } 91 92 @SmallTest 93 public void testSetBackButtonVisibleTrue() { 94 final Window window = createWindowWithSystemUiVisibility(0x456); 95 SystemBarHelper.setBackButtonVisible(window, true); 96 assertEquals("View visibility should be 0x456", 0x456, 97 window.getAttributes().systemUiVisibility); 98 } 99 100 @SmallTest 101 public void testSetBackButtonVisibleFalse() { 102 final Window window = createWindowWithSystemUiVisibility(0x456); 103 SystemBarHelper.setBackButtonVisible(window, false); 104 assertEquals("STATUS_BAR_DISABLE_BACK should be added to systemUiVisibility", 105 0x456 | STATUS_BAR_DISABLE_BACK, window.getAttributes().systemUiVisibility); 106 } 107 108 private View createViewWithSystemUiVisibility(int vis) { 109 final View view = new View(getContext()); 110 view.setSystemUiVisibility(vis); 111 return view; 112 } 113 114 private Window createWindowWithSystemUiVisibility(int vis) { 115 final Window window = new TestWindow(getContext(), createViewWithSystemUiVisibility(vis)); 116 WindowManager.LayoutParams attrs = window.getAttributes(); 117 attrs.systemUiVisibility = vis; 118 window.setAttributes(attrs); 119 return window; 120 } 121 122 private static class TestWindow extends Window { 123 124 private View mDecorView; 125 126 public TestWindow(Context context, View decorView) { 127 super(context); 128 mDecorView = decorView; 129 } 130 131 @Override 132 public void takeSurface(Callback2 callback2) { 133 134 } 135 136 @Override 137 public void takeInputQueue(InputQueue.Callback callback) { 138 139 } 140 141 @Override 142 public boolean isFloating() { 143 return false; 144 } 145 146 @Override 147 public void setContentView(int i) { 148 149 } 150 151 @Override 152 public void setContentView(View view) { 153 154 } 155 156 @Override 157 public void setContentView(View view, LayoutParams layoutParams) { 158 159 } 160 161 @Override 162 public void addContentView(View view, LayoutParams layoutParams) { 163 164 } 165 166 @Override 167 public View getCurrentFocus() { 168 return null; 169 } 170 171 @Override 172 public LayoutInflater getLayoutInflater() { 173 return LayoutInflater.from(getContext()); 174 } 175 176 @Override 177 public void setTitle(CharSequence charSequence) { 178 179 } 180 181 @Override 182 public void setTitleColor(int i) { 183 184 } 185 186 @Override 187 public void openPanel(int i, KeyEvent keyEvent) { 188 189 } 190 191 @Override 192 public void closePanel(int i) { 193 194 } 195 196 @Override 197 public void togglePanel(int i, KeyEvent keyEvent) { 198 199 } 200 201 @Override 202 public void invalidatePanelMenu(int i) { 203 204 } 205 206 @Override 207 public boolean performPanelShortcut(int i, int i2, KeyEvent keyEvent, int i3) { 208 return false; 209 } 210 211 @Override 212 public boolean performPanelIdentifierAction(int i, int i2, int i3) { 213 return false; 214 } 215 216 @Override 217 public void closeAllPanels() { 218 219 } 220 221 @Override 222 public boolean performContextMenuIdentifierAction(int i, int i2) { 223 return false; 224 } 225 226 @Override 227 public void onConfigurationChanged(Configuration configuration) { 228 229 } 230 231 @Override 232 public void setBackgroundDrawable(Drawable drawable) { 233 234 } 235 236 @Override 237 public void setFeatureDrawableResource(int i, int i2) { 238 239 } 240 241 @Override 242 public void setFeatureDrawableUri(int i, Uri uri) { 243 244 } 245 246 @Override 247 public void setFeatureDrawable(int i, Drawable drawable) { 248 249 } 250 251 @Override 252 public void setFeatureDrawableAlpha(int i, int i2) { 253 254 } 255 256 @Override 257 public void setFeatureInt(int i, int i2) { 258 259 } 260 261 @Override 262 public void takeKeyEvents(boolean b) { 263 264 } 265 266 @Override 267 public boolean superDispatchKeyEvent(KeyEvent keyEvent) { 268 return false; 269 } 270 271 @Override 272 public boolean superDispatchKeyShortcutEvent(KeyEvent keyEvent) { 273 return false; 274 } 275 276 @Override 277 public boolean superDispatchTouchEvent(MotionEvent motionEvent) { 278 return false; 279 } 280 281 @Override 282 public boolean superDispatchTrackballEvent(MotionEvent motionEvent) { 283 return false; 284 } 285 286 @Override 287 public boolean superDispatchGenericMotionEvent(MotionEvent motionEvent) { 288 return false; 289 } 290 291 @Override 292 public View getDecorView() { 293 return mDecorView; 294 } 295 296 @Override 297 public View peekDecorView() { 298 return mDecorView; 299 } 300 301 @Override 302 public Bundle saveHierarchyState() { 303 return null; 304 } 305 306 @Override 307 public void restoreHierarchyState(Bundle bundle) { 308 309 } 310 311 @Override 312 protected void onActive() { 313 314 } 315 316 @Override 317 public void setChildDrawable(int i, Drawable drawable) { 318 319 } 320 321 @Override 322 public void setChildInt(int i, int i2) { 323 324 } 325 326 @Override 327 public boolean isShortcutKey(int i, KeyEvent keyEvent) { 328 return false; 329 } 330 331 @Override 332 public void setVolumeControlStream(int i) { 333 334 } 335 336 @Override 337 public int getVolumeControlStream() { 338 return 0; 339 } 340 341 @Override 342 public int getStatusBarColor() { 343 return 0; 344 } 345 346 @Override 347 public void setStatusBarColor(int i) { 348 349 } 350 351 @Override 352 public int getNavigationBarColor() { 353 return 0; 354 } 355 356 @Override 357 public void setNavigationBarColor(int i) { 358 359 } 360 } 361} 362