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

Unified Diff: Source/modules/vibration/NavigatorVibration.cpp

Issue 1042513002: Add the vibrate attribute to the Notification object (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
Index: Source/modules/vibration/NavigatorVibration.cpp
diff --git a/Source/modules/vibration/NavigatorVibration.cpp b/Source/modules/vibration/NavigatorVibration.cpp
index b8fd026b8522b4fe913424749140cd41d38e458a..e43606838d30cbb807e3076b70c4e329f0153689 100644
--- a/Source/modules/vibration/NavigatorVibration.cpp
+++ b/Source/modules/vibration/NavigatorVibration.cpp
@@ -20,6 +20,7 @@
#include "config.h"
#include "modules/vibration/NavigatorVibration.h"
+#include "bindings/modules/v8/UnionTypesModules.h"
#include "core/frame/LocalFrame.h"
#include "core/frame/Navigator.h"
#include "core/page/PageVisibilityState.h"
@@ -47,30 +48,11 @@ NavigatorVibration::~NavigatorVibration()
bool NavigatorVibration::vibrate(const VibrationPattern& pattern)
{
- VibrationPattern sanitized = pattern;
- size_t length = sanitized.size();
-
- // If the pattern is too long then truncate it.
- if (length > kVibrationPatternLengthMax) {
- sanitized.shrink(kVibrationPatternLengthMax);
- length = kVibrationPatternLengthMax;
- }
-
- // If any pattern entry is too long then truncate it.
- for (size_t i = 0; i < length; ++i) {
- if (sanitized[i] > kVibrationDurationMax)
- sanitized[i] = kVibrationDurationMax;
- }
-
- // If the last item in the pattern is a pause then discard it.
- if (length && !(length % 2))
- sanitized.removeLast();
-
// Cancelling clears the stored pattern so do it before setting the new one.
if (m_isVibrating)
cancelVibration();
- m_pattern = sanitized;
+ m_pattern = sanitizeVibrationPattern(pattern);
if (m_timerStart.isActive())
m_timerStart.stop();
@@ -168,6 +150,42 @@ NavigatorVibration& NavigatorVibration::from(Page& page)
return *navigatorVibration;
}
+NavigatorVibration::VibrationPattern NavigatorVibration::sanitizeVibrationPattern(const UnsignedLongOrUnsignedLongSequence& pattern)
+{
+ VibrationPattern sanitized;
+
+ if (pattern.isUnsignedLong())
+ sanitized.append(pattern.getAsUnsignedLong());
+ else if (pattern.isUnsignedLongSequence())
+ sanitized = pattern.getAsUnsignedLongSequence();
+
+ return sanitizeVibrationPattern(sanitized);
+}
+
+NavigatorVibration::VibrationPattern NavigatorVibration::sanitizeVibrationPattern(const VibrationPattern& pattern)
+{
+ VibrationPattern sanitized = pattern;
+ size_t length = sanitized.size();
+
+ // If the pattern is too long then truncate it.
+ if (length > kVibrationPatternLengthMax) {
+ sanitized.shrink(kVibrationPatternLengthMax);
+ length = kVibrationPatternLengthMax;
+ }
+
+ // If any pattern entry is too long then truncate it.
+ for (size_t i = 0; i < length; ++i) {
+ if (sanitized[i] > kVibrationDurationMax)
+ sanitized[i] = kVibrationDurationMax;
+ }
+
+ // If the last item in the pattern is a pause then discard it.
+ if (length && !(length % 2))
+ sanitized.removeLast();
+
+ return sanitized;
+}
+
const char* NavigatorVibration::supplementName()
{
return "NavigatorVibration";

Powered by Google App Engine
This is Rietveld 408576698