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; 277121697a5e2d4458f6f63e9eb3b5deec62ee6202Michael Wrightimport android.os.VibrationEffect; 288b85a8afea81c70acf29fc1e840aaaa690ccb8dbBrett Chabotimport android.test.suitebuilder.annotation.SmallTest; 2936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 3036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot/** 3136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * Verify that Hardware apis cannot be called without required permissions. 3236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 338b85a8afea81c70acf29fc1e840aaaa690ccb8dbBrett Chabot@SmallTest 343a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwoodpublic class VibratorServicePermissionTest extends TestCase { 3536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 363a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood private IVibratorService mVibratorService; 3736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 3836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot @Override 3936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot protected void setUp() throws Exception { 403a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService = IVibratorService.Stub.asInterface( 413a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood ServiceManager.getService("vibrator")); 4236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 4336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 4436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 453a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#vibrate(long)} requires permissions. 4636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 4736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 4836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 4936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 5036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testVibrate() throws RemoteException { 5136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 527121697a5e2d4458f6f63e9eb3b5deec62ee6202Michael Wright final VibrationEffect effect = 537121697a5e2d4458f6f63e9eb3b5deec62ee6202Michael Wright VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE); 547121697a5e2d4458f6f63e9eb3b5deec62ee6202Michael Wright mVibratorService.vibrate(Process.myUid(), null, effect, AudioManager.STREAM_ALARM, 552fcce9612d32df06c8dcd3c522411f4f49ad8138John Spurlock new Binder()); 5636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("vibrate did not throw SecurityException as expected"); 5736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 5836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 5936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 6036480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 6136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot 6236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot /** 633a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood * Test that calling {@link android.os.IVibratorService#cancelVibrate()} requires permissions. 6436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * <p>Tests permission: 6536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * {@link android.Manifest.permission#VIBRATE} 6636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot * @throws RemoteException 6736480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot */ 6836480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot public void testCancelVibrate() throws RemoteException { 6936480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot try { 703a32213c4029a03fe39486f3d6ebd0ea18928ee1Mike Lockwood mVibratorService.cancelVibrate(new Binder()); 7136480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot fail("cancelVibrate did not throw SecurityException as expected"); 7236480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } catch (SecurityException e) { 7336480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot // expected 7436480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 7536480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot } 7636480907331fd6e4afe0608f495f2c731cfa6047Brett Chabot} 77