1262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov/* 2262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * Copyright (C) 2015 The Android Open Source Project 3262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * 4262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * Licensed under the Apache License, Version 2.0 (the "License"); 5262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * you may not use this file except in compliance with the License. 6262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * You may obtain a copy of the License at 7262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * 8262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * http://www.apache.org/licenses/LICENSE-2.0 9262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * 10262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * Unless required by applicable law or agreed to in writing, software 11262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * distributed under the License is distributed on an "AS IS" BASIS, 12262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * See the License for the specific language governing permissions and 14262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov * limitations under the License 15262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov */ 16262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovpackage android.content; 17262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 18262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport android.os.Bundle; 19262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport android.os.Parcelable; 20bdbde55592792efe350acd6a46733f439f6a3f3dAurimas Liutikasimport android.support.test.filters.LargeTest; 21262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport android.test.AndroidTestCase; 22262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 23262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.Arrays; 24262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.HashSet; 25262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.List; 26262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.Set; 27262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 28bdbde55592792efe350acd6a46733f439f6a3f3dAurimas Liutikas@LargeTest 29262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovpublic class RestrictionsManagerTest extends AndroidTestCase { 30262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov private RestrictionsManager mRm; 31262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 32262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov @Override 33262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov protected void setUp() throws Exception { 34262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov super.setUp(); 35262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov mRm = (RestrictionsManager) mContext.getSystemService(Context.RESTRICTIONS_SERVICE); 36262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 37262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 38262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov public void testGetManifestRestrictions() { 39262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov String packageName = getContext().getPackageName(); 40262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov List<RestrictionEntry> manifestRestrictions = mRm.getManifestRestrictions(packageName); 41262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(6, manifestRestrictions.size()); 42262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Set<String> verifiedKeys = new HashSet<>(Arrays.asList("bundle_key", "bundle_array_key", 43262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov "bundle_array_bundle_key")); 44262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov for (RestrictionEntry entry : manifestRestrictions) { 45262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov if ("bundle_key".equals(entry.getKey())) { 46262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals("bundle_key entry should have 2 children entries", 47262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 2, entry.getRestrictions().length); 48262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov verifiedKeys.remove(entry.getKey()); 49262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } else if ("bundle_array_key".equals(entry.getKey())) { 50262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals("bundle_array_key should have 2 children entries", 51262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 2, entry.getRestrictions().length); 52262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertNotNull(entry.getRestrictions()); 53262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov for (RestrictionEntry childEntry : entry.getRestrictions()) { 54262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov if ("bundle_array_bundle_key".equals(childEntry.getKey())) { 55262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertNotNull(childEntry.getRestrictions()); 56262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals("bundle_array_bundle_key should have 1 child entry", 57262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 1, childEntry.getRestrictions().length); 58262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov verifiedKeys.remove(childEntry.getKey()); 59262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 60262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 61262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov verifiedKeys.remove(entry.getKey()); 62262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 63262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 64262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertTrue("Entries" + verifiedKeys + " were not found", verifiedKeys.isEmpty()); 65262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 66262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 67262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov public void testConvertRestrictionsToBundle() { 68262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov String packageName = getContext().getPackageName(); 69262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov List<RestrictionEntry> manifestRestrictions = mRm.getManifestRestrictions(packageName); 70262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Bundle bundle = RestrictionsManager.convertRestrictionsToBundle(manifestRestrictions); 71262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(6, bundle.size()); 72262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Bundle childBundle = bundle.getBundle("bundle_key"); 73262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertNotNull(childBundle); 74262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(2, childBundle.size()); 75262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Parcelable[] childBundleArray = bundle.getParcelableArray("bundle_array_key"); 76262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(2, childBundleArray.length); 77262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 78262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 791d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak public void testConvertRestrictionsToBundle_bundleArray() { 801d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak String packageName = getContext().getPackageName(); 811d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak List<RestrictionEntry> manifestRestrictions = mRm.getManifestRestrictions(packageName); 821d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak Bundle bundle = RestrictionsManager.convertRestrictionsToBundle(manifestRestrictions); 831d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak assertEquals(6, bundle.size()); 841d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak Parcelable[] array = bundle.getParcelableArray("bundle_array_key"); 851d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak assertNotNull(array); 861d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak assertEquals(2, array.length); 871d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak Bundle firstBundle = (Bundle) array[0]; 881d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak assertEquals(0, firstBundle.size()); 891d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak Bundle secondBundle = (Bundle) array[1]; 901d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak assertEquals(1, secondBundle.size()); 911d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak assertTrue(secondBundle.containsKey("bundle_array_bundle_int_key")); 921d18efe080f63f6518f06ebfb85d2bad4556590cTony Mak } 93262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov} 94