Index: device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java |
diff --git a/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java b/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java |
index dd8d2755c8a5df286dc21bf4d9dd33518aaf8c69..f0ddbc98eb79d04233e31f7e53688964638018ef 100644 |
--- a/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java |
+++ b/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java |
@@ -10,6 +10,7 @@ import android.media.AudioManager; |
import android.os.Vibrator; |
import android.util.Log; |
+import org.chromium.base.VisibleForTesting; |
import org.chromium.mojo.system.MojoException; |
import org.chromium.mojom.device.VibrationManager; |
@@ -24,12 +25,41 @@ public class VibrationManagerImpl implements VibrationManager { |
private static final long MAXIMUM_VIBRATION_DURATION_MS = 10000; // 10 seconds |
private final AudioManager mAudioManager; |
- private final Vibrator mVibrator; |
private final boolean mHasVibratePermission; |
+ private static AndroidVibratorWrapper sVibratorWrapper; |
+ |
+ /** |
+ * Android Vibrator wrapper class provided to test code to extend. |
+ */ |
+ @VisibleForTesting |
+ public static class AndroidVibratorWrapper { |
+ private final Vibrator mAndroidVibrator; |
+ |
+ protected AndroidVibratorWrapper(Vibrator vibrator) { |
+ mAndroidVibrator = vibrator; |
+ } |
+ |
+ public void vibrate(long milliseconds) { |
+ mAndroidVibrator.vibrate(milliseconds); |
+ } |
+ |
+ public void cancel() { |
+ mAndroidVibrator.cancel(); |
+ } |
+ } |
+ |
+ // Test code can use this function to inject other wrapper for testing. |
+ public static void setVibratorWrapperForTesting(AndroidVibratorWrapper wrapper) { |
+ sVibratorWrapper = wrapper; |
+ } |
+ |
public VibrationManagerImpl(Context context) { |
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); |
- mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); |
+ if (sVibratorWrapper == null) { |
+ sVibratorWrapper = new AndroidVibratorWrapper( |
+ (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE)); |
David Trainor- moved to gerrit
2015/11/02 16:43:51
If this is a static, should we make *sure* this is
Ted C
2015/11/02 23:16:47
If you want to avoid keeping a static like this, y
leonhsl(Using Gerrit)
2015/11/03 08:56:26
Hi, David, Ted, Thank you very much for helpful ad
ppi
2015/11/03 13:27:10
Ted's suggestion sg to me.
|
+ } |
mHasVibratePermission = |
context.checkCallingOrSelfPermission(android.Manifest.permission.VIBRATE) |
== PackageManager.PERMISSION_GRANTED; |
@@ -53,12 +83,12 @@ public class VibrationManagerImpl implements VibrationManager { |
if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT |
&& mHasVibratePermission) { |
- mVibrator.vibrate(sanitizedMilliseconds); |
+ sVibratorWrapper.vibrate(sanitizedMilliseconds); |
} |
} |
@Override |
public void cancel() { |
- if (mHasVibratePermission) mVibrator.cancel(); |
+ if (mHasVibratePermission) sVibratorWrapper.cancel(); |
} |
} |