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 e781f71df9e193761e93209c435258d5fbbf2b0f..98c24ec1501c13b7269b380224e192465e3a260b 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,8 +10,7 @@ |
import android.os.Vibrator; |
import android.util.Log; |
-import org.chromium.base.annotations.CalledByNative; |
-import org.chromium.base.annotations.JNINamespace; |
+import org.chromium.base.VisibleForTesting; |
import org.chromium.device.mojom.VibrationManager; |
import org.chromium.mojo.system.MojoException; |
import org.chromium.services.service_manager.InterfaceFactory; |
@@ -20,7 +19,6 @@ |
* Android implementation of the vibration manager service defined in |
* device/vibration/vibration_manager.mojom. |
*/ |
-@JNINamespace("device") |
public class VibrationManagerImpl implements VibrationManager { |
private static final String TAG = "VibrationManagerImpl"; |
@@ -31,12 +29,35 @@ |
private final Vibrator mVibrator; |
private final boolean mHasVibratePermission; |
- private static long sVibrateMilliSecondsForTesting = -1; |
- private static boolean sVibrateCancelledForTesting = false; |
+ private static AndroidVibratorWrapper sVibratorWrapper; |
+ |
+ /** |
+ * Android Vibrator wrapper class provided to test code to extend. |
+ */ |
+ @VisibleForTesting |
+ public static class AndroidVibratorWrapper { |
+ protected AndroidVibratorWrapper() {} |
+ |
+ public void vibrate(Vibrator vibrator, long milliseconds) { |
+ vibrator.vibrate(milliseconds); |
+ } |
+ |
+ public void cancel(Vibrator vibrator) { |
+ vibrator.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(); |
+ } |
// TODO(mvanouwerkerk): What happens if permission is revoked? Handle this better. |
mHasVibratePermission = |
context.checkCallingOrSelfPermission(android.Manifest.permission.VIBRATE) |
@@ -61,18 +82,14 @@ |
if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT |
&& mHasVibratePermission) { |
- mVibrator.vibrate(sanitizedMilliseconds); |
+ sVibratorWrapper.vibrate(mVibrator, sanitizedMilliseconds); |
} |
- setVibrateMilliSecondsForTesting(sanitizedMilliseconds); |
callback.call(); |
} |
@Override |
public void cancel(CancelResponse callback) { |
- if (mHasVibratePermission) { |
- mVibrator.cancel(); |
- } |
- setVibrateCancelledForTesting(true); |
+ if (mHasVibratePermission) sVibratorWrapper.cancel(mVibrator); |
callback.call(); |
} |
@@ -90,22 +107,4 @@ |
return new VibrationManagerImpl(mContext); |
} |
} |
- |
- static void setVibrateMilliSecondsForTesting(long milliseconds) { |
- sVibrateMilliSecondsForTesting = milliseconds; |
- } |
- |
- static void setVibrateCancelledForTesting(boolean cancelled) { |
- sVibrateCancelledForTesting = cancelled; |
- } |
- |
- @CalledByNative |
- static long getVibrateMilliSecondsForTesting() { |
- return sVibrateMilliSecondsForTesting; |
- } |
- |
- @CalledByNative |
- static boolean getVibrateCancelledForTesting() { |
- return sVibrateCancelledForTesting; |
- } |
} |