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