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..0e5d4591a6cc7b4e5dda16399a6d503ee1d97d15 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,23 @@ class VibrationProvider { |
@CalledByNative |
private void vibrate(long milliseconds) { |
- if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) |
- mVibrator.vibrate(milliseconds); |
+ if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) { |
+ if (mHasVibratePermission) mVibrator.vibrate(milliseconds); |
Michael van Ouwerkerk
2014/01/28 15:09:04
This condition would be cleaner if merged into the
|
+ } |
} |
@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.e(TAG, "Caught security exception, requires VIBRATE permission."); |
Michael van Ouwerkerk
2014/01/28 15:09:04
This code did not actually catch an exception, ple
jdduke (slow)
2014/01/28 15:45:33
Also, could we make this a warning, Log.w, instead
|
+ } |
} |
} |