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 2136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotimport android.os.Binder; 223a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodimport android.os.IVibratorService; 2336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotimport android.os.RemoteException; 2436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabotimport android.os.ServiceManager; 258b85a8afea81c70acf29fc1e840aaaa690ccb8dbBrett Chabotimport android.test.suitebuilder.annotation.SmallTest; 2636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 2736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot/** 2836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * Verify that Hardware apis cannot be called without required permissions. 2936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 308b85a8afea81c70acf29fc1e840aaaa690ccb8dbBrett Chabot@SmallTest 313a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodpublic class VibratorServicePermissionTest extends TestCase { 3236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 333a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood private IVibratorService mVibratorService; 3436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 3536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot @Override 3636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot protected void setUp() throws Exception { 373a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService = IVibratorService.Stub.asInterface( 383a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood ServiceManager.getService("vibrator")); 3936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 4036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 4136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 423a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#vibrate(long)} requires permissions. 4336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 4436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 4536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 4636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 4736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testVibrate() throws RemoteException { 4836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 493a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService.vibrate(2000, new Binder()); 5036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("vibrate did not throw SecurityException as expected"); 5136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 5236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 5336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 5436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 5536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 5636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 573a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#vibratePattern(long[], 5836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * int, android.os.IBinder)} requires permissions. 5936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 6036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 6136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 6236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 6336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testVibratePattern() throws RemoteException { 6436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 653a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService.vibratePattern(new long[] {0}, 0, new Binder()); 6636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("vibratePattern did not throw SecurityException as expected"); 6736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 6836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 6936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 7036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 7136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 7236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 733a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#cancelVibrate()} requires permissions. 7436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 7536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 7636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 7736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 7836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testCancelVibrate() throws RemoteException { 7936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 803a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService.cancelVibrate(new Binder()); 8136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("cancelVibrate did not throw SecurityException as expected"); 8236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 8336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 8436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 8536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 8636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot} 87