Home | History | Annotate | Download | only in cts
      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