136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot/* 236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * Copyright (C) 2009 The Android Open Source Project 336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * 436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * Licensed under the Apache License, Version 2.0 (the "License"); 536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * you may not use this file except in compliance with the License. 636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * You may obtain a copy of the License at 736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * 836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * http://www.apache.org/licenses/LICENSE-2.0 936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * 1036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * Unless required by applicable law or agreed to in writing, software 1136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * distributed under the License is distributed on an "AS IS" BASIS, 1236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * See the License for the specific language governing permissions and 1436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * limitations under the License. 1536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 1636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 1736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotpackage com.android.framework.permission.tests; 1836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 1936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotimport junit.framework.TestCase; 2036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 212fcce9612d32df06c8dcd3c522411f4f49ad8138John Spurlockimport android.media.AudioManager; 2236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotimport android.os.Binder; 233a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodimport android.os.IVibratorService; 240c5b66fc9f29f2bcd1cfaa976cd0755bca340ec7Dianne Hackbornimport android.os.Process; 2536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotimport android.os.RemoteException; 2636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotimport android.os.ServiceManager; 278b85a8afea81c70acf29fc1e840aaaa690ccb8dbBrett Chabotimport android.test.suitebuilder.annotation.SmallTest; 2836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 2936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot/** 3036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * Verify that Hardware apis cannot be called without required permissions. 3136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 328b85a8afea81c70acf29fc1e840aaaa690ccb8dbBrett Chabot@SmallTest 333a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodpublic class VibratorServicePermissionTest extends TestCase { 3436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 353a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood private IVibratorService mVibratorService; 3636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 3736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot @Override 3836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot protected void setUp() throws Exception { 393a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService = IVibratorService.Stub.asInterface( 403a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood ServiceManager.getService("vibrator")); 4136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 4236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 4336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 443a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#vibrate(long)} requires permissions. 4536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 4636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 4736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 4836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 4936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testVibrate() throws RemoteException { 5036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 512fcce9612d32df06c8dcd3c522411f4f49ad8138John Spurlock mVibratorService.vibrate(Process.myUid(), null, 2000, AudioManager.STREAM_ALARM, 522fcce9612d32df06c8dcd3c522411f4f49ad8138John Spurlock new Binder()); 5336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("vibrate did not throw SecurityException as expected"); 5436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 5536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 5636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 5736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 5836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 5936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 603a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#vibratePattern(long[], 6136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * int, android.os.IBinder)} requires permissions. 6236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 6336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 6436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 6536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 6636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testVibratePattern() throws RemoteException { 6736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 682fcce9612d32df06c8dcd3c522411f4f49ad8138John Spurlock mVibratorService.vibratePattern(Process.myUid(), null, new long[] {0}, 0, 692fcce9612d32df06c8dcd3c522411f4f49ad8138John Spurlock AudioManager.STREAM_ALARM, new Binder()); 7036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("vibratePattern did not throw SecurityException as expected"); 7136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 7236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 7336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 7436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 7536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 7636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 773a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#cancelVibrate()} requires permissions. 7836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 7936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 8036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 8136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 8236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testCancelVibrate() throws RemoteException { 8336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 843a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService.cancelVibrate(new Binder()); 8536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("cancelVibrate did not throw SecurityException as expected"); 8636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 8736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 8836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 8936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 9036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot} 91