Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1257)

Unified Diff: device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java

Issue 1274033002: Vibration API: convert implementation to java mojo-service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix trybot failure Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
diff --git a/device/vibration/android/java/src/org/chromium/device/vibration/VibrationProvider.java b/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
similarity index 41%
rename from device/vibration/android/java/src/org/chromium/device/vibration/VibrationProvider.java
rename to device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
index 0f12d7c2e67cbbd83ca2dc12628b72df6f77fb13..dd8d2755c8a5df286dc21bf4d9dd33518aaf8c69 100644
--- a/device/vibration/android/java/src/org/chromium/device/vibration/VibrationProvider.java
+++ b/device/vibration/android/java/src/org/chromium/device/vibration/VibrationManagerImpl.java
@@ -1,4 +1,4 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
+// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -10,45 +10,55 @@ import android.media.AudioManager;
import android.os.Vibrator;
import android.util.Log;
-import org.chromium.base.annotations.CalledByNative;
-import org.chromium.base.annotations.JNINamespace;
+import org.chromium.mojo.system.MojoException;
+import org.chromium.mojom.device.VibrationManager;
/**
- * This is the implementation of the C++ counterpart VibrationProvider.
+ * Android implementation of the vibration manager service defined in
+ * device/vibration/vibration_manager.mojom.
*/
-@JNINamespace("device")
-class VibrationProvider {
- private static final String TAG = "VibrationProvider";
+public class VibrationManagerImpl implements VibrationManager {
+ private static final String TAG = "VibrationManagerImpl";
+
+ private static final long MINIMUM_VIBRATION_DURATION_MS = 1; // 1 millisecond
+ private static final long MAXIMUM_VIBRATION_DURATION_MS = 10000; // 10 seconds
private final AudioManager mAudioManager;
private final Vibrator mVibrator;
private final boolean mHasVibratePermission;
- @CalledByNative
- private static VibrationProvider create(Context context) {
- return new VibrationProvider(context);
+ public VibrationManagerImpl(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.");
+ }
}
- @CalledByNative
- private void vibrate(long milliseconds) {
+ @Override
+ public void close() {}
+
+ @Override
+ public void onConnectionError(MojoException e) {}
+
+ @Override
+ public void vibrate(long milliseconds) {
+ // Though the Blink implementation already sanitizes vibration times, don't
+ // trust any values passed from the client.
+ long sanitizedMilliseconds = Math.max(MINIMUM_VIBRATION_DURATION_MS,
+ Math.min(milliseconds, MAXIMUM_VIBRATION_DURATION_MS));
+
if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT
&& mHasVibratePermission) {
- mVibrator.vibrate(milliseconds);
+ mVibrator.vibrate(sanitizedMilliseconds);
}
}
- @CalledByNative
- private void cancelVibration() {
+ @Override
+ public void 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.");
- }
- }
}

Powered by Google App Engine
This is Rietveld 408576698