| Index: content/public/android/java/src/org/chromium/content/browser/VibrationProvider.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/VibrationProvider.java b/content/public/android/java/src/org/chromium/content/browser/VibrationProvider.java
|
| index 10edcbb1737cefe62d0a4d1f7d96ee876a749bfe..015d8d87c3b4121bc8b4e30e01f2fd10fcc09fac 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/VibrationProvider.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/VibrationProvider.java
|
| @@ -5,8 +5,10 @@
|
| package org.chromium.content.browser;
|
|
|
| import android.content.Context;
|
| +import android.content.pm.PackageManager;
|
| import android.media.AudioManager;
|
| import android.os.Vibrator;
|
| +import android.util.Log;
|
|
|
| import org.chromium.base.CalledByNative;
|
| import org.chromium.base.JNINamespace;
|
| @@ -16,9 +18,11 @@ import org.chromium.base.JNINamespace;
|
| */
|
| @JNINamespace("content")
|
| class VibrationProvider {
|
| + private static final String TAG = "VibrationProvider";
|
|
|
| private final AudioManager mAudioManager;
|
| private final Vibrator mVibrator;
|
| + private final boolean mHasVibratePermission;
|
|
|
| @CalledByNative
|
| private static VibrationProvider create(Context context) {
|
| @@ -27,17 +31,24 @@ class VibrationProvider {
|
|
|
| @CalledByNative
|
| private void vibrate(long milliseconds) {
|
| - if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT)
|
| + if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT &&
|
| + mHasVibratePermission) {
|
| mVibrator.vibrate(milliseconds);
|
| + }
|
| }
|
|
|
| @CalledByNative
|
| private void cancelVibration() {
|
| - mVibrator.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.");
|
| + }
|
| }
|
| }
|
|
|