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