1 /* 2 * Copyright (C) 2008 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 17 package android.view.cts; 18 19 import static org.junit.Assert.assertEquals; 20 import static org.junit.Assert.assertFalse; 21 import static org.junit.Assert.assertNotNull; 22 import static org.junit.Assert.assertTrue; 23 import static org.junit.Assert.fail; 24 25 import android.graphics.PixelFormat; 26 import android.os.Binder; 27 import android.os.IBinder; 28 import android.os.Parcel; 29 import android.support.test.filters.SmallTest; 30 import android.support.test.runner.AndroidJUnit4; 31 import android.text.SpannedString; 32 import android.view.Gravity; 33 import android.view.WindowManager; 34 35 import org.junit.Test; 36 import org.junit.runner.RunWith; 37 38 @SmallTest 39 @RunWith(AndroidJUnit4.class) 40 public class WindowManager_LayoutParamsTest { 41 private static final int WINDOW_WIDTH = 320; 42 private static final int WINDOW_HEIGHT = 480; 43 private static final int XPOS = 10; 44 private static final int YPOS = 15; 45 private static final String PACKAGE_NAME = "android.content"; 46 private static final String TITLE = "params title"; 47 private static final String PARAMS_TITLE = "params title"; 48 private static final float HORIZONTAL_MARGIN = 1.0f; 49 private static final float VERTICAL_MARGIN = 3.0f; 50 private static final float ALPHA = 1.0f; 51 private static final float DIM_AMOUNT = 1.0f; 52 private static final float HORIZONTAL_WEIGHT = 1.0f; 53 private static final float MARGIN = 1.0f; 54 private static final float VERTICAL_WEIGHT = 1.0f; 55 private static final int WINDOW_ANIMATIONS = 6; 56 57 private WindowManager.LayoutParams mLayoutParams; 58 59 @Test 60 public void testConstructor() { 61 new WindowManager.LayoutParams(); 62 63 new WindowManager.LayoutParams( 64 WindowManager.LayoutParams.TYPE_APPLICATION); 65 66 new WindowManager.LayoutParams( 67 WindowManager.LayoutParams.TYPE_APPLICATION, 68 WindowManager.LayoutParams.FLAG_DITHER); 69 70 new WindowManager.LayoutParams( 71 WindowManager.LayoutParams.TYPE_APPLICATION, 72 WindowManager.LayoutParams.FLAG_DITHER, PixelFormat.JPEG); 73 74 new WindowManager.LayoutParams(WINDOW_WIDTH, WINDOW_HEIGHT, 75 WindowManager.LayoutParams.TYPE_APPLICATION, 76 WindowManager.LayoutParams.FLAG_DITHER, PixelFormat.JPEG); 77 78 new WindowManager.LayoutParams(WINDOW_WIDTH, WINDOW_HEIGHT, XPOS, YPOS, 79 WindowManager.LayoutParams.TYPE_APPLICATION, 80 WindowManager.LayoutParams.FLAG_DITHER, PixelFormat.JPEG); 81 82 IBinder binder = new Binder(); 83 mLayoutParams = new WindowManager.LayoutParams(); 84 mLayoutParams.token = binder; 85 mLayoutParams.packageName = PACKAGE_NAME; 86 mLayoutParams.setTitle(TITLE); 87 Parcel parcel = Parcel.obtain(); 88 mLayoutParams.writeToParcel(parcel, 0); 89 parcel.setDataPosition(0); 90 91 new WindowManager.LayoutParams(parcel); 92 assertTrue(WindowManager.LayoutParams.mayUseInputMethod(0)); 93 assertTrue(WindowManager.LayoutParams.mayUseInputMethod( 94 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 95 | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM)); 96 assertFalse(WindowManager.LayoutParams 97 .mayUseInputMethod(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)); 98 assertFalse(WindowManager.LayoutParams 99 .mayUseInputMethod(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM)); 100 } 101 102 @Test 103 public void testCopyFrom() { 104 mLayoutParams = new WindowManager.LayoutParams(); 105 WindowManager.LayoutParams params = new WindowManager.LayoutParams( 106 WindowManager.LayoutParams.TYPE_BASE_APPLICATION, 107 WindowManager.LayoutParams.FLAG_DITHER); 108 assertEquals(WindowManager.LayoutParams.TYPE_CHANGED 109 | WindowManager.LayoutParams.FLAGS_CHANGED, 110 mLayoutParams.copyFrom(params)); 111 assertEquals(WindowManager.LayoutParams.TYPE_BASE_APPLICATION, mLayoutParams.type); 112 assertEquals(WindowManager.LayoutParams.FLAG_DITHER, mLayoutParams.flags); 113 114 mLayoutParams = new WindowManager.LayoutParams(); 115 params = new WindowManager.LayoutParams(WINDOW_WIDTH, WINDOW_HEIGHT, 116 WindowManager.LayoutParams.TYPE_APPLICATION, 117 WindowManager.LayoutParams.FLAG_DITHER, PixelFormat.JPEG); 118 assertEquals(WindowManager.LayoutParams.LAYOUT_CHANGED 119 | WindowManager.LayoutParams.FLAGS_CHANGED 120 | WindowManager.LayoutParams.FORMAT_CHANGED, 121 mLayoutParams.copyFrom(params)); 122 assertEquals(WINDOW_WIDTH, mLayoutParams.width); 123 assertEquals(WINDOW_HEIGHT, mLayoutParams.height); 124 assertEquals(WindowManager.LayoutParams.FLAG_DITHER, mLayoutParams.flags); 125 assertEquals(PixelFormat.JPEG, mLayoutParams.format); 126 127 params = new WindowManager.LayoutParams(); 128 params.setTitle(PARAMS_TITLE); 129 params.accessibilityTitle = PARAMS_TITLE; 130 params.alpha = ALPHA - 0.5f; 131 params.windowAnimations = WINDOW_ANIMATIONS; 132 params.dimAmount = DIM_AMOUNT - 1.0f; 133 mLayoutParams = new WindowManager.LayoutParams(); 134 assertEquals(WindowManager.LayoutParams.TITLE_CHANGED 135 | WindowManager.LayoutParams.ALPHA_CHANGED 136 | WindowManager.LayoutParams.ANIMATION_CHANGED 137 | WindowManager.LayoutParams.DIM_AMOUNT_CHANGED 138 | WindowManager.LayoutParams.ACCESSIBILITY_TITLE_CHANGED, 139 mLayoutParams.copyFrom(params)); 140 assertEquals(params.getTitle(), mLayoutParams.getTitle()); 141 assertEquals(params.alpha, mLayoutParams.alpha, 0.0f); 142 assertEquals(params.dimAmount, mLayoutParams.dimAmount, 0.0f); 143 144 params = new WindowManager.LayoutParams(); 145 params.gravity = Gravity.TOP; 146 mLayoutParams = new WindowManager.LayoutParams(); 147 assertEquals(WindowManager.LayoutParams.LAYOUT_CHANGED, 148 mLayoutParams.copyFrom(params)); 149 assertEquals(params.gravity, mLayoutParams.gravity); 150 151 params = new WindowManager.LayoutParams(); 152 params.horizontalMargin = HORIZONTAL_MARGIN; 153 mLayoutParams = new WindowManager.LayoutParams(); 154 assertEquals(WindowManager.LayoutParams.LAYOUT_CHANGED, 155 mLayoutParams.copyFrom(params)); 156 assertEquals(params.horizontalMargin, mLayoutParams.horizontalMargin, 0.0f); 157 158 params = new WindowManager.LayoutParams(); 159 params.horizontalWeight = HORIZONTAL_WEIGHT; 160 mLayoutParams = new WindowManager.LayoutParams(); 161 assertEquals(WindowManager.LayoutParams.LAYOUT_CHANGED, 162 mLayoutParams.copyFrom(params)); 163 assertEquals(params.horizontalWeight, mLayoutParams.horizontalWeight, 0.0f); 164 165 params = new WindowManager.LayoutParams(); 166 params.verticalMargin = MARGIN; 167 mLayoutParams = new WindowManager.LayoutParams(); 168 assertEquals(WindowManager.LayoutParams.LAYOUT_CHANGED, 169 mLayoutParams.copyFrom(params)); 170 assertEquals(params.verticalMargin, mLayoutParams.verticalMargin, 0.0f); 171 172 params = new WindowManager.LayoutParams(); 173 params.verticalWeight = VERTICAL_WEIGHT; 174 mLayoutParams = new WindowManager.LayoutParams(); 175 assertEquals(WindowManager.LayoutParams.LAYOUT_CHANGED, 176 mLayoutParams.copyFrom(params)); 177 assertEquals(params.verticalWeight, mLayoutParams.verticalWeight, 0.0f); 178 } 179 180 @Test 181 public void testDescribeContents() { 182 mLayoutParams = new WindowManager.LayoutParams(); 183 184 assertEquals(0, mLayoutParams.describeContents()); 185 } 186 187 @Test 188 public void testAccessTitle() { 189 String title = ""; 190 mLayoutParams = new WindowManager.LayoutParams(); 191 192 mLayoutParams.setTitle(null); 193 assertEquals(title, mLayoutParams.getTitle()); 194 195 title = "Android Test Title"; 196 mLayoutParams.setTitle(title); 197 assertEquals(title, mLayoutParams.getTitle()); 198 199 SpannedString spannedTitle = new SpannedString(title); 200 mLayoutParams.setTitle(spannedTitle); 201 assertEquals(spannedTitle, mLayoutParams.getTitle()); 202 } 203 204 @Test 205 public void testToString() { 206 mLayoutParams = new WindowManager.LayoutParams(); 207 assertNotNull(mLayoutParams.toString()); 208 209 mLayoutParams = new WindowManager.LayoutParams(WINDOW_WIDTH, WINDOW_HEIGHT, XPOS, YPOS, 210 WindowManager.LayoutParams.TYPE_APPLICATION, 211 WindowManager.LayoutParams.FLAG_DITHER, PixelFormat.JPEG); 212 assertNotNull(mLayoutParams.toString()); 213 } 214 215 @Test 216 public void testWriteToParcel() { 217 IBinder binder = new Binder(); 218 mLayoutParams = new WindowManager.LayoutParams(WINDOW_WIDTH, WINDOW_HEIGHT, XPOS, YPOS, 219 WindowManager.LayoutParams.TYPE_APPLICATION, 220 WindowManager.LayoutParams.FLAG_DITHER, PixelFormat.JPEG); 221 mLayoutParams.memoryType = WindowManager.LayoutParams.MEMORY_TYPE_HARDWARE; 222 mLayoutParams.gravity = Gravity.TOP; 223 mLayoutParams.horizontalMargin = HORIZONTAL_MARGIN; 224 mLayoutParams.verticalMargin = VERTICAL_MARGIN; 225 mLayoutParams.windowAnimations = WINDOW_ANIMATIONS; 226 mLayoutParams.token = binder; 227 mLayoutParams.packageName = PACKAGE_NAME; 228 mLayoutParams.setTitle(PARAMS_TITLE); 229 Parcel parcel = Parcel.obtain(); 230 231 mLayoutParams.writeToParcel(parcel, 0); 232 parcel.setDataPosition(0); 233 WindowManager.LayoutParams out = 234 WindowManager.LayoutParams.CREATOR.createFromParcel(parcel); 235 assertEquals(0, out.copyFrom(mLayoutParams)); 236 237 try { 238 mLayoutParams.writeToParcel(null, 0); 239 fail("should throw NullPointerException"); 240 } catch (NullPointerException e) { 241 // expected 242 } 243 } 244 } 245