115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2009 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 17cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornpackage com.android.framework.permission.tests; 18cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn 19cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport com.android.internal.os.BinderInternal; 20cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn 21cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport android.os.Binder; 22cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport android.os.IPermissionController; 23cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport android.os.RemoteException; 24cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport android.os.ServiceManager; 25cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport android.os.ServiceManagerNative; 26cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport android.test.suitebuilder.annotation.SmallTest; 27cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn 28cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornimport junit.framework.TestCase; 29cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn 30cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn/** 31cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn * TODO: Remove this. This is only a placeholder, need to implement this. 32cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn */ 33cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackbornpublic class ServiceManagerPermissionTests extends TestCase { 34cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn @SmallTest 358a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock public void testAddService() { 36cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn try { 37cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn // The security in the service manager is that you can't replace 38cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn // a service that is already published. 39cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn Binder binder = new Binder(); 40cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn ServiceManager.addService("activity", binder); 41cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn fail("ServiceManager.addService did not throw SecurityException as" 42cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn + " expected"); 43cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn } catch (SecurityException e) { 44cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn // expected 45cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn } 468a985d24ce9a38f40ed88fecbdcd0e75e3a68f44John Spurlock } 47cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn 48cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn @SmallTest 49cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn public void testSetPermissionController() { 50cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn try { 51cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn IPermissionController pc = new IPermissionController.Stub() { 52cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn public boolean checkPermission(java.lang.String permission, int pid, int uid) { 53cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn return true; 54cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn } 55fa5ecdc4ac6d7a8db2bb9e4a6a60a3189025df30Svet Ganov 56fa5ecdc4ac6d7a8db2bb9e4a6a60a3189025df30Svet Ganov @Override 57fa5ecdc4ac6d7a8db2bb9e4a6a60a3189025df30Svet Ganov public String[] getPackagesForUid(int uid) { 58fa5ecdc4ac6d7a8db2bb9e4a6a60a3189025df30Svet Ganov return new String[0]; 59fa5ecdc4ac6d7a8db2bb9e4a6a60a3189025df30Svet Ganov } 60b9d71a6f89b1183f6389b1774652445a420c6cbfSvet Ganov 61b9d71a6f89b1183f6389b1774652445a420c6cbfSvet Ganov @Override 62b9d71a6f89b1183f6389b1774652445a420c6cbfSvet Ganov public boolean isRuntimePermission(String permission) { 63b9d71a6f89b1183f6389b1774652445a420c6cbfSvet Ganov return false; 64b9d71a6f89b1183f6389b1774652445a420c6cbfSvet Ganov } 65cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn }; 66cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn ServiceManagerNative.asInterface(BinderInternal.getContextObject()) 67cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn .setPermissionController(pc); 68cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn fail("IServiceManager.setPermissionController did not throw SecurityException as" 69cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn + " expected"); 70cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn } catch (SecurityException e) { 71cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn // expected 72cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn } catch (RemoteException e) { 73cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn fail("Unexpected remote exception"); 74cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn } 75cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn } 76cfaef699e1dfb3a75d5b51f3b15816f13670fd51Dianne Hackborn} 77