Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/DocumentLifecycle.cpp |
| diff --git a/third_party/WebKit/Source/core/dom/DocumentLifecycle.cpp b/third_party/WebKit/Source/core/dom/DocumentLifecycle.cpp |
| index efc1b4b99a161bf0e73e1faf24b2430f7a210383..bb39efdae2d6593659b5ff44066ce543c4e09237 100644 |
| --- a/third_party/WebKit/Source/core/dom/DocumentLifecycle.cpp |
| +++ b/third_party/WebKit/Source/core/dom/DocumentLifecycle.cpp |
| @@ -38,6 +38,10 @@ namespace blink { |
| static DocumentLifecycle::DeprecatedTransition* s_deprecatedTransitionStack = 0; |
| +// TODO(skyostil): Come up with a better way to store cross-frame lifecycle |
| +// related data to avoid this being a global setting. |
| +static unsigned s_preventThrottlingCount = 0; |
| + |
| DocumentLifecycle::Scope::Scope(DocumentLifecycle& lifecycle, State finalState) |
| : m_lifecycle(lifecycle) |
| , m_finalState(finalState) |
| @@ -62,6 +66,17 @@ DocumentLifecycle::DeprecatedTransition::~DeprecatedTransition() |
| s_deprecatedTransitionStack = m_previous; |
| } |
| +DocumentLifecycle::PreventThrottlingScope::PreventThrottlingScope(DocumentLifecycle& lifecycle) |
| + : m_lifecycle(lifecycle) |
| +{ |
| + m_lifecycle.incrementPreventThrottlingCount(); |
|
esprehn
2015/10/16 21:40:45
if you're going to put these out of line you don't
Sami
2015/10/19 10:51:06
Ah, of course. Done.
|
| +} |
| + |
| +DocumentLifecycle::PreventThrottlingScope::~PreventThrottlingScope() |
| +{ |
| + m_lifecycle.decrementPreventThrottlingCount(); |
| +} |
| + |
| DocumentLifecycle::DocumentLifecycle() |
| : m_state(Uninitialized) |
| , m_detachCount(0) |
| @@ -291,6 +306,22 @@ void DocumentLifecycle::ensureStateAtMost(State state) |
| m_state = state; |
| } |
| +void DocumentLifecycle::incrementPreventThrottlingCount() |
| +{ |
| + s_preventThrottlingCount++; |
| +} |
| + |
| +void DocumentLifecycle::decrementPreventThrottlingCount() |
| +{ |
| + ASSERT(s_preventThrottlingCount > 0); |
| + s_preventThrottlingCount--; |
| +} |
| + |
| +bool DocumentLifecycle::throttlingAllowed() const |
| +{ |
| + return !s_preventThrottlingCount; |
| +} |
| + |
| #if ENABLE(ASSERT) |
| #define DEBUG_STRING_CASE(StateName) \ |
| case StateName: return #StateName |