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

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

Issue 18777003: Extract simpler classes for observing context lifecycle and observe Page lifecycle inNavigatorVibra… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebaselined~ Created 7 years, 5 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
« no previous file with comments | « Source/modules/vibration/NavigatorVibration.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/vibration/NavigatorVibration.cpp
diff --git a/Source/modules/vibration/NavigatorVibration.cpp b/Source/modules/vibration/NavigatorVibration.cpp
index a397bb1a448ce25da88b4e163f9ddc9506762446..05ff456debd2367b505d37ca5edcd887586c4229 100644
--- a/Source/modules/vibration/NavigatorVibration.cpp
+++ b/Source/modules/vibration/NavigatorVibration.cpp
@@ -21,7 +21,9 @@
#include "modules/vibration/NavigatorVibration.h"
#include "core/page/Frame.h"
+#include "core/page/Navigator.h"
#include "core/page/Page.h"
+#include "core/page/PageVisibilityState.h"
#include "public/platform/Platform.h"
#include "public/platform/WebVibration.h"
@@ -30,8 +32,9 @@ namespace WebCore {
// Maximum number of entries in a vibration pattern.
const unsigned kVibrationPatternLengthMax = 99;
-NavigatorVibration::NavigatorVibration()
- : m_timerStart(this, &NavigatorVibration::timerStartFired)
+NavigatorVibration::NavigatorVibration(Page* page)
+ : PageLifecycleObserver(page)
+ , m_timerStart(this, &NavigatorVibration::timerStartFired)
, m_timerStop(this, &NavigatorVibration::timerStopFired)
, m_isVibrating(false)
{
@@ -95,23 +98,6 @@ void NavigatorVibration::cancelVibration()
}
}
-void NavigatorVibration::suspendVibration()
-{
- if (!m_isVibrating)
- return;
-
- m_pattern.insert(0, m_timerStop.nextFireInterval());
- m_timerStop.stop();
- cancelVibration();
-}
-
-void NavigatorVibration::resumeVibration()
-{
- ASSERT(!m_timerStart.isActive());
-
- m_timerStart.startOneShot(0);
-}
-
void NavigatorVibration::timerStartFired(Timer<NavigatorVibration>* timer)
{
ASSERT_UNUSED(timer, timer == &m_timerStart);
@@ -136,6 +122,12 @@ void NavigatorVibration::timerStopFired(Timer<NavigatorVibration>* timer)
}
}
+void NavigatorVibration::pageVisibilityChanged()
+{
+ if (page()->visibilityState() != PageVisibilityStateVisible)
+ cancelVibration();
+}
+
bool NavigatorVibration::vibrate(Navigator* navigator, unsigned time)
{
VibrationPattern pattern;
@@ -145,21 +137,22 @@ bool NavigatorVibration::vibrate(Navigator* navigator, unsigned time)
bool NavigatorVibration::vibrate(Navigator* navigator, const VibrationPattern& pattern)
{
- if (!navigator->frame()->page())
+ Page* page = navigator->frame()->page();
+ if (!page)
return false;
- if (navigator->frame()->page()->visibilityState() != PageVisibilityStateVisible)
+ if (page->visibilityState() != PageVisibilityStateVisible)
return false;
- return NavigatorVibration::from(navigator)->vibrate(pattern);
+ return NavigatorVibration::from(page)->vibrate(pattern);
}
-NavigatorVibration* NavigatorVibration::from(Navigator* navigator)
+NavigatorVibration* NavigatorVibration::from(Page* page)
{
- NavigatorVibration* navigatorVibration = static_cast<NavigatorVibration*>(Supplement<Navigator>::from(navigator, supplementName()));
+ NavigatorVibration* navigatorVibration = static_cast<NavigatorVibration*>(Supplement<Page>::from(page, supplementName()));
if (!navigatorVibration) {
- navigatorVibration = new NavigatorVibration();
- Supplement<Navigator>::provideTo(navigator, supplementName(), adoptPtr(navigatorVibration));
+ navigatorVibration = new NavigatorVibration(page);
+ Supplement<Page>::provideTo(page, supplementName(), adoptPtr(navigatorVibration));
}
return navigatorVibration;
}
« no previous file with comments | « Source/modules/vibration/NavigatorVibration.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698