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; 20262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport android.test.AndroidTestCase; 21262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 22262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.Arrays; 23262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.HashSet; 24262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.List; 25262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovimport java.util.Set; 26262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 27262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolovpublic class RestrictionsManagerTest extends AndroidTestCase { 28262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov private RestrictionsManager mRm; 29262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 30262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov @Override 31262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov protected void setUp() throws Exception { 32262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov super.setUp(); 33262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov mRm = (RestrictionsManager) mContext.getSystemService(Context.RESTRICTIONS_SERVICE); 34262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 35262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 36262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov public void testGetManifestRestrictions() { 37262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov String packageName = getContext().getPackageName(); 38262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov List<RestrictionEntry> manifestRestrictions = mRm.getManifestRestrictions(packageName); 39262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(6, manifestRestrictions.size()); 40262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Set<String> verifiedKeys = new HashSet<>(Arrays.asList("bundle_key", "bundle_array_key", 41262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov "bundle_array_bundle_key")); 42262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov for (RestrictionEntry entry : manifestRestrictions) { 43262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov if ("bundle_key".equals(entry.getKey())) { 44262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals("bundle_key entry should have 2 children entries", 45262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 2, entry.getRestrictions().length); 46262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov verifiedKeys.remove(entry.getKey()); 47262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } else if ("bundle_array_key".equals(entry.getKey())) { 48262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals("bundle_array_key should have 2 children entries", 49262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 2, entry.getRestrictions().length); 50262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertNotNull(entry.getRestrictions()); 51262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov for (RestrictionEntry childEntry : entry.getRestrictions()) { 52262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov if ("bundle_array_bundle_key".equals(childEntry.getKey())) { 53262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertNotNull(childEntry.getRestrictions()); 54262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals("bundle_array_bundle_key should have 1 child entry", 55262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 1, childEntry.getRestrictions().length); 56262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov verifiedKeys.remove(childEntry.getKey()); 57262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 58262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 59262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov verifiedKeys.remove(entry.getKey()); 60262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 61262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 62262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertTrue("Entries" + verifiedKeys + " were not found", verifiedKeys.isEmpty()); 63262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 64262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 65262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov public void testConvertRestrictionsToBundle() { 66262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov String packageName = getContext().getPackageName(); 67262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov List<RestrictionEntry> manifestRestrictions = mRm.getManifestRestrictions(packageName); 68262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Bundle bundle = RestrictionsManager.convertRestrictionsToBundle(manifestRestrictions); 69262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(6, bundle.size()); 70262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Bundle childBundle = bundle.getBundle("bundle_key"); 71262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertNotNull(childBundle); 72262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(2, childBundle.size()); 73262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov Parcelable[] childBundleArray = bundle.getParcelableArray("bundle_array_key"); 74262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov assertEquals(2, childBundleArray.length); 75262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov } 76262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov 77262f9952e6e78e00a6d42bab97d73dccfb9607f4Fyodor Kupolov} 78