WallpaperColorsTest.java revision 4bd24f36c5c4845bc9fda9c7211d1be2937a748a
14bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin/* 24bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * Copyright (C) 2017 The Android Open Source Project 34bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * 44bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * Licensed under the Apache License, Version 2.0 (the "License"); 54bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * you may not use this file except in compliance with the License. 64bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * You may obtain a copy of the License at 74bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * 84bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * http://www.apache.org/licenses/LICENSE-2.0 94bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * 104bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * Unless required by applicable law or agreed to in writing, software 114bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * distributed under the License is distributed on an "AS IS" BASIS, 124bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * See the License for the specific language governing permissions and 144bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * limitations under the License 154bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin */ 164bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 174bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinpackage android.app; 184bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 194bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Bitmap; 204bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Canvas; 214bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Color; 224bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.graphics.Paint; 234bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.support.test.filters.SmallTest; 244bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport android.support.test.runner.AndroidJUnit4; 254bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 264bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport org.junit.Assert; 274bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport org.junit.Test; 284bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinimport org.junit.runner.RunWith; 294bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 304bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin@SmallTest 314bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin@RunWith(AndroidJUnit4.class) 324bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupinpublic class WallpaperColorsTest { 334bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 344bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin @Test 354bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin public void supportsDarkTextOverrideTest() { 364bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin final Color color = Color.valueOf(Color.WHITE); 374bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin // Default should not support dark text! 384bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin WallpaperColors colors = new WallpaperColors(color, null, null, 0); 394bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Assert.assertTrue("Default behavior is not to support dark text", 404bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0); 414bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 424bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin // Override it 434bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin colors = new WallpaperColors(color, null, null, WallpaperColors.HINT_SUPPORTS_DARK_TEXT); 444bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Assert.assertFalse("Forcing dark text support doesn't work", 454bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin (colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) == 0); 464bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin } 474bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 484bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin /** 494bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin * Sanity check to guarantee that white supports dark text and black doesn't 504bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin */ 514bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin @Test 524bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin public void colorHintsTest() { 534bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Bitmap image = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888); 544bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Canvas canvas = new Canvas(image); 554bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 564bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin canvas.drawColor(Color.WHITE); 574bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin int hints = WallpaperColors.fromBitmap(image).getColorHints(); 584bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin boolean supportsDarkText = (hints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; 594bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin boolean supportsDarkTheme = (hints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0; 604bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Assert.assertTrue("White surface should support dark text", supportsDarkText); 614bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Assert.assertFalse("White surface shouldn't support dark theme", supportsDarkTheme); 624bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 634bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin canvas.drawColor(Color.BLACK); 644bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin hints = WallpaperColors.fromBitmap(image).getColorHints(); 654bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin supportsDarkText = (hints & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; 664bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin supportsDarkTheme = (hints & WallpaperColors.HINT_SUPPORTS_DARK_THEME) != 0; 674bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Assert.assertFalse("Black surface shouldn't support dark text", supportsDarkText); 684bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Assert.assertTrue("Black surface should support dark theme", supportsDarkTheme); 694bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin 704bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Paint paint = new Paint(); 714bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin paint.setStyle(Paint.Style.FILL); 724bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin paint.setColor(Color.BLACK); 734bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin canvas.drawColor(Color.WHITE); 744bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin canvas.drawRect(0, 0, 8, 8, paint); 754bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin supportsDarkText = (WallpaperColors.fromBitmap(image) 764bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin .getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0; 774bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin Assert.assertFalse("Light surface shouldn't support dark text " 784bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin + "when it contains dark pixels", supportsDarkText); 794bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin } 804bd24f36c5c4845bc9fda9c7211d1be2937a748aLucas Dupin} 81