| Index: Source/core/page/Page.cpp | 
| diff --git a/Source/core/page/Page.cpp b/Source/core/page/Page.cpp | 
| index a022a6b8d2e483a3af6734474e96ac0bd1d7275b..7f3c39367788fea3a812c05568c02e7df6b0cb24 100644 | 
| --- a/Source/core/page/Page.cpp | 
| +++ b/Source/core/page/Page.cpp | 
| @@ -44,6 +44,7 @@ | 
| #include "core/page/FrameView.h" | 
| #include "core/page/PageConsole.h" | 
| #include "core/page/PageGroup.h" | 
| +#include "core/page/PageLifecycleNotifier.h" | 
| #include "core/page/PointerLockController.h" | 
| #include "core/page/Settings.h" | 
| #include "core/page/scrolling/ScrollingCoordinator.h" | 
| @@ -625,6 +626,9 @@ void Page::setVisibilityState(PageVisibilityState visibilityState, bool isInitia | 
| else | 
| setTimerAlignmentInterval(DOMTimer::visiblePageAlignmentInterval()); | 
|  | 
| +    if (!isInitialState) | 
| +        lifecycleNotifier()->notifyPageVisibilityChanged(); | 
| + | 
| if (!isInitialState && m_mainFrame) | 
| m_mainFrame->dispatchVisibilityStateChangeEvent(); | 
| } | 
| @@ -783,6 +787,16 @@ void Page::multisamplingChanged() | 
| (*it)->multisamplingChanged(m_settings->openGLMultisamplingEnabled()); | 
| } | 
|  | 
| +PageLifecycleNotifier* Page::lifecycleNotifier() | 
| +{ | 
| +    return static_cast<PageLifecycleNotifier*>(LifecycleContext::lifecycleNotifier()); | 
| +} | 
| + | 
| +PassOwnPtr<LifecycleNotifier> Page::createLifecycleNotifier() | 
| +{ | 
| +    return PageLifecycleNotifier::create(this); | 
| +} | 
| + | 
| Page::PageClients::PageClients() | 
| : chromeClient(0) | 
| , contextMenuClient(0) | 
|  |