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