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

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

Issue 2776983002: [DeviceService] Move all vibration codes into //services/device (Closed)
Patch Set: Rebase only Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « device/vibration/android/BUILD.gn ('k') | device/vibration/vibration_export.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.device.vibration;
6
7 import android.content.Context;
8 import android.content.pm.PackageManager;
9 import android.media.AudioManager;
10 import android.os.Vibrator;
11 import android.util.Log;
12
13 import org.chromium.base.annotations.CalledByNative;
14 import org.chromium.base.annotations.JNINamespace;
15 import org.chromium.device.mojom.VibrationManager;
16 import org.chromium.mojo.system.MojoException;
17 import org.chromium.services.service_manager.InterfaceFactory;
18
19 /**
20 * Android implementation of the vibration manager service defined in
21 * device/vibration/vibration_manager.mojom.
22 */
23 @JNINamespace("device")
24 public class VibrationManagerImpl implements VibrationManager {
25 private static final String TAG = "VibrationManagerImpl";
26
27 private static final long MINIMUM_VIBRATION_DURATION_MS = 1; // 1 millisecon d
28 private static final long MAXIMUM_VIBRATION_DURATION_MS = 10000; // 10 secon ds
29
30 private final AudioManager mAudioManager;
31 private final Vibrator mVibrator;
32 private final boolean mHasVibratePermission;
33
34 private static long sVibrateMilliSecondsForTesting = -1;
35 private static boolean sVibrateCancelledForTesting = false;
36
37 public VibrationManagerImpl(Context context) {
38 mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SE RVICE);
39 mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE );
40 // TODO(mvanouwerkerk): What happens if permission is revoked? Handle th is better.
41 mHasVibratePermission =
42 context.checkCallingOrSelfPermission(android.Manifest.permission .VIBRATE)
43 == PackageManager.PERMISSION_GRANTED;
44 if (!mHasVibratePermission) {
45 Log.w(TAG, "Failed to use vibrate API, requires VIBRATE permission." );
46 }
47 }
48
49 @Override
50 public void close() {}
51
52 @Override
53 public void onConnectionError(MojoException e) {}
54
55 @Override
56 public void vibrate(long milliseconds, VibrateResponse callback) {
57 // Though the Blink implementation already sanitizes vibration times, do n't
58 // trust any values passed from the client.
59 long sanitizedMilliseconds = Math.max(MINIMUM_VIBRATION_DURATION_MS,
60 Math.min(milliseconds, MAXIMUM_VIBRATION_DURATION_MS));
61
62 if (mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT
63 && mHasVibratePermission) {
64 mVibrator.vibrate(sanitizedMilliseconds);
65 }
66 setVibrateMilliSecondsForTesting(sanitizedMilliseconds);
67 callback.call();
68 }
69
70 @Override
71 public void cancel(CancelResponse callback) {
72 if (mHasVibratePermission) {
73 mVibrator.cancel();
74 }
75 setVibrateCancelledForTesting(true);
76 callback.call();
77 }
78
79 /**
80 * A factory for implementations of the VibrationManager interface.
81 */
82 public static class Factory implements InterfaceFactory<VibrationManager> {
83 private Context mContext;
84 public Factory(Context context) {
85 mContext = context;
86 }
87
88 @Override
89 public VibrationManager createImpl() {
90 return new VibrationManagerImpl(mContext);
91 }
92 }
93
94 static void setVibrateMilliSecondsForTesting(long milliseconds) {
95 sVibrateMilliSecondsForTesting = milliseconds;
96 }
97
98 static void setVibrateCancelledForTesting(boolean cancelled) {
99 sVibrateCancelledForTesting = cancelled;
100 }
101
102 @CalledByNative
103 static long getVibrateMilliSecondsForTesting() {
104 return sVibrateMilliSecondsForTesting;
105 }
106
107 @CalledByNative
108 static boolean getVibrateCancelledForTesting() {
109 return sVibrateCancelledForTesting;
110 }
111 }
OLDNEW
« no previous file with comments | « device/vibration/android/BUILD.gn ('k') | device/vibration/vibration_export.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698