| Index: device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
|
| diff --git a/device/vibration/android/java/src/org/chromium/device/vibration/VibrationProvider.java b/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
|
| similarity index 41%
|
| rename from device/vibration/android/java/src/org/chromium/device/vibration/VibrationProvider.java
|
| rename to device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
|
| index 0f12d7c2e67cbbd83ca2dc12628b72df6f77fb13..dd8d2755c8a5df286dc21bf4d9dd33518aaf8c69 100644
|
| --- a/device/vibration/android/java/src/org/chromium/device/vibration/VibrationProvider.java
|
| +++ b/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
|
| @@ -1,4 +1,4 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -10,45 +10,55 @@ import android.media.AudioManager;
|
| import android.os.Vibrator;
|
| import android.util.Log;
|
|
|
| -import org.chromium.base.annotations.CalledByNative;
|
| -import org.chromium.base.annotations.JNINamespace;
|
| +import org.chromium.mojo.system.MojoException;
|
| +import org.chromium.mojom.device.VibrationManager;
|
|
|
| /**
|
| - * This is the implementation of the C++ counterpart VibrationProvider.
|
| + * Android implementation of the vibration manager service defined in
|
| + * device/vibration/vibration_manager.mojom.
|
| */
|
| -@JNINamespace("device")
|
| -class VibrationProvider {
|
| - private static final String TAG = "VibrationProvider";
|
| +public class VibrationManagerImpl implements VibrationManager {
|
| + private static final String TAG = "VibrationManagerImpl";
|
| +
|
| + private static final long MINIMUM_VIBRATION_DURATION_MS = 1; // 1 millisecond
|
| + private static final long MAXIMUM_VIBRATION_DURATION_MS = 10000; // 10 seconds
|
|
|
| private final AudioManager mAudioManager;
|
| private final Vibrator mVibrator;
|
| private final boolean mHasVibratePermission;
|
|
|
| - @CalledByNative
|
| - private static VibrationProvider create(Context context) {
|
| - return new VibrationProvider(context);
|
| + public VibrationManagerImpl(Context context) {
|
| + mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
| + mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
|
| + mHasVibratePermission =
|
| + context.checkCallingOrSelfPermission(android.Manifest.permission.VIBRATE)
|
| + == PackageManager.PERMISSION_GRANTED;
|
| + if (!mHasVibratePermission) {
|
| + Log.w(TAG, "Failed to use vibrate API, requires VIBRATE permission.");
|
| + }
|
| }
|
|
|
| - @CalledByNative
|
| - private void vibrate(long milliseconds) {
|
| + @Override
|
| + public void close() {}
|
| +
|
| + @Override
|
| + public void onConnectionError(MojoException e) {}
|
| +
|
| + @Override
|
| + public void vibrate(long milliseconds) {
|
| + // Though the Blink implementation already sanitizes vibration times, don't
|
| + // trust any values passed from the client.
|
| + long sanitizedMilliseconds = Math.max(MINIMUM_VIBRATION_DURATION_MS,
|
| + Math.min(milliseconds, MAXIMUM_VIBRATION_DURATION_MS));
|
| +
|
| if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT
|
| && mHasVibratePermission) {
|
| - mVibrator.vibrate(milliseconds);
|
| + mVibrator.vibrate(sanitizedMilliseconds);
|
| }
|
| }
|
|
|
| - @CalledByNative
|
| - private void cancelVibration() {
|
| + @Override
|
| + public void cancel() {
|
| if (mHasVibratePermission) mVibrator.cancel();
|
| }
|
| -
|
| - private VibrationProvider(Context context) {
|
| - mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
| - mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
|
| - mHasVibratePermission = context.checkCallingOrSelfPermission(
|
| - android.Manifest.permission.VIBRATE) == PackageManager.PERMISSION_GRANTED;
|
| - if (!mHasVibratePermission) {
|
| - Log.w(TAG, "Failed to use vibrate API, requires VIBRATE permission.");
|
| - }
|
| - }
|
| }
|
|
|