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

Unified Diff: Source/core/dom/ExecutionContext.cpp

Issue 901663005: Revert r189385 "Remove LifecycleContext" and r189391, r189530, r189456 that block it (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 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/core/dom/ExecutionContext.h ('k') | Source/core/dom/ScopedWindowFocusAllowedIndicator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/ExecutionContext.cpp
diff --git a/Source/core/dom/ExecutionContext.cpp b/Source/core/dom/ExecutionContext.cpp
index e7e379d9a76a0bd35b25b23ff44bd4a33f175b23..9f0f684a38618eda54c024f8c1ef468c62082023 100644
--- a/Source/core/dom/ExecutionContext.cpp
+++ b/Source/core/dom/ExecutionContext.cpp
@@ -28,6 +28,7 @@
#include "config.h"
#include "core/dom/ExecutionContext.h"
+#include "core/dom/ContextLifecycleNotifier.h"
#include "core/dom/ExecutionContextTask.h"
#include "core/events/ErrorEvent.h"
#include "core/events/EventTarget.h"
@@ -66,13 +67,12 @@ public:
};
ExecutionContext::ExecutionContext()
- : ContextLifecycleNotifier(this)
- , m_circularSequentialID(0)
+ : m_circularSequentialID(0)
, m_inDispatchErrorEvent(false)
, m_activeDOMObjectsAreSuspended(false)
, m_activeDOMObjectsAreStopped(false)
, m_strictMixedContentCheckingEnforced(false)
- , m_windowInteractionTokens(0)
+ , m_windowFocusTokens(0)
{
}
@@ -80,10 +80,15 @@ ExecutionContext::~ExecutionContext()
{
}
+bool ExecutionContext::hasPendingActivity()
+{
+ return lifecycleNotifier().hasPendingActivity();
+}
+
void ExecutionContext::suspendActiveDOMObjects()
{
ASSERT(!m_activeDOMObjectsAreSuspended);
- notifySuspendingActiveDOMObjects();
+ lifecycleNotifier().notifySuspendingActiveDOMObjects();
m_activeDOMObjectsAreSuspended = true;
}
@@ -91,18 +96,18 @@ void ExecutionContext::resumeActiveDOMObjects()
{
ASSERT(m_activeDOMObjectsAreSuspended);
m_activeDOMObjectsAreSuspended = false;
- notifyResumingActiveDOMObjects();
+ lifecycleNotifier().notifyResumingActiveDOMObjects();
}
void ExecutionContext::stopActiveDOMObjects()
{
m_activeDOMObjectsAreStopped = true;
- notifyStoppingActiveDOMObjects();
+ lifecycleNotifier().notifyStoppingActiveDOMObjects();
}
unsigned ExecutionContext::activeDOMObjectCount()
{
- return activeDOMObjects().size();
+ return lifecycleNotifier().activeDOMObjects().size();
}
void ExecutionContext::suspendScheduledTasks()
@@ -119,7 +124,7 @@ void ExecutionContext::resumeScheduledTasks()
void ExecutionContext::suspendActiveDOMObjectIfNeeded(ActiveDOMObject* object)
{
- ASSERT(contains(object));
+ ASSERT(lifecycleNotifier().contains(object));
// Ensure all ActiveDOMObjects are suspended also newly created ones.
if (m_activeDOMObjectsAreSuspended)
object->suspend();
@@ -206,24 +211,39 @@ KURL ExecutionContext::completeURL(const String& url) const
return virtualCompleteURL(url);
}
-void ExecutionContext::allowWindowInteraction()
+PassOwnPtr<LifecycleNotifier<ExecutionContext> > ExecutionContext::createLifecycleNotifier()
+{
+ return ContextLifecycleNotifier::create(this);
+}
+
+ContextLifecycleNotifier& ExecutionContext::lifecycleNotifier()
+{
+ return static_cast<ContextLifecycleNotifier&>(LifecycleContext<ExecutionContext>::lifecycleNotifier());
+}
+
+bool ExecutionContext::isIteratingOverObservers() const
+{
+ return m_lifecycleNotifier && m_lifecycleNotifier->isIteratingOverObservers();
+}
+
+void ExecutionContext::allowWindowFocus()
{
- ++m_windowInteractionTokens;
+ ++m_windowFocusTokens;
}
-void ExecutionContext::consumeWindowInteraction()
+void ExecutionContext::consumeWindowFocus()
{
- if (m_windowInteractionTokens == 0)
+ if (m_windowFocusTokens == 0)
return;
- --m_windowInteractionTokens;
+ --m_windowFocusTokens;
}
-bool ExecutionContext::isWindowInteractionAllowed() const
+bool ExecutionContext::isWindowFocusAllowed() const
{
// FIXME: WindowFocusAllowedIndicator::windowFocusAllowed() is temporary,
// it will be removed as soon as WebScopedWindowFocusAllowedIndicator will
// be updated to not use WindowFocusAllowedIndicator.
- return m_windowInteractionTokens > 0 || WindowFocusAllowedIndicator::windowFocusAllowed();
+ return m_windowFocusTokens > 0 || WindowFocusAllowedIndicator::windowFocusAllowed();
}
void ExecutionContext::trace(Visitor* visitor)
@@ -233,7 +253,7 @@ void ExecutionContext::trace(Visitor* visitor)
visitor->trace(m_publicURLManager);
HeapSupplementable<ExecutionContext>::trace(visitor);
#endif
- ContextLifecycleNotifier::trace(visitor);
+ LifecycleContext<ExecutionContext>::trace(visitor);
}
} // namespace blink
« no previous file with comments | « Source/core/dom/ExecutionContext.h ('k') | Source/core/dom/ScopedWindowFocusAllowedIndicator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698