Chromium Code Reviews| 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 { |
|
timvolodine
2015/09/11 16:40:15
normally we try to minimize test-related code in p
leonhsl(Using Gerrit)
2015/09/22 09:56:19
As bellowing discussion.
|
| + 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) { |
|
timvolodine
2015/09/11 16:40:15
I think ideally the way to test this would be to i
leonhsl(Using Gerrit)
2015/09/22 09:56:19
ContentBrowserClient provides OverrideRenderProces
|
| + 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)); |
| + } |
| 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(); |
| } |
| } |