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