Index: third_party/WebKit/Source/web/CompositorWorkerProxyClientImpl.cpp |
diff --git a/third_party/WebKit/Source/web/CompositorWorkerProxyClientImpl.cpp b/third_party/WebKit/Source/web/CompositorWorkerProxyClientImpl.cpp |
index c564b861cb89f47fc1470e1b1f228a0ccf242fb3..48890aad0e92c88a91892e316c72297a461985aa 100644 |
--- a/third_party/WebKit/Source/web/CompositorWorkerProxyClientImpl.cpp |
+++ b/third_party/WebKit/Source/web/CompositorWorkerProxyClientImpl.cpp |
@@ -21,46 +21,50 @@ class ScopedCompositorMutableState final { |
STACK_ALLOCATED(); |
public: |
- ScopedCompositorMutableState( |
- HeapHashSet<WeakMember<CompositorProxy>>& proxies, |
- CompositorMutableStateProvider* stateProvider) |
- : m_proxies(proxies) { |
- for (CompositorProxy* proxy : m_proxies) { |
+ ScopedCompositorMutableState(CompositorProxyClientImpl* compositorProxyClient, |
+ CompositorMutableStateProvider* stateProvider) |
+ : m_compositorProxyClient(compositorProxyClient) { |
+ DCHECK(!isMainThread()); |
+ DCHECK(m_compositorProxyClient); |
+ for (CompositorProxy* proxy : m_compositorProxyClient->proxies()) { |
proxy->takeCompositorMutableState( |
stateProvider->getMutableStateFor(proxy->elementId())); |
} |
} |
~ScopedCompositorMutableState() { |
- for (CompositorProxy* proxy : m_proxies) |
+ for (CompositorProxy* proxy : m_compositorProxyClient->proxies()) |
proxy->takeCompositorMutableState(nullptr); |
} |
private: |
- HeapHashSet<WeakMember<CompositorProxy>>& m_proxies; |
+ Member<CompositorProxyClientImpl> m_compositorProxyClient; |
}; |
CompositorWorkerProxyClientImpl::CompositorWorkerProxyClientImpl( |
CompositorMutatorImpl* mutator) |
- : m_mutator(mutator), m_globalScope(nullptr) { |
+ : m_mutator(mutator) { |
DCHECK(isMainThread()); |
} |
DEFINE_TRACE(CompositorWorkerProxyClientImpl) { |
- visitor->trace(m_proxies); |
CompositorAnimator::trace(visitor); |
CompositorWorkerProxyClient::trace(visitor); |
} |
void CompositorWorkerProxyClientImpl::setGlobalScope(WorkerGlobalScope* scope) { |
+ DCHECK(!isMainThread()); |
TRACE_EVENT0("compositor-worker", |
"CompositorWorkerProxyClientImpl::setGlobalScope"); |
DCHECK(!m_globalScope); |
+ DCHECK(!m_compositorProxyClient); |
DCHECK(scope); |
m_globalScope = static_cast<CompositorWorkerGlobalScope*>(scope); |
m_mutator->registerCompositorAnimator(this); |
+ m_compositorProxyClient = new CompositorProxyClientImpl(); |
} |
void CompositorWorkerProxyClientImpl::dispose() { |
+ DCHECK(!isMainThread()); |
// CompositorWorkerProxyClientImpl and CompositorMutatorImpl form a reference |
// cycle. CompositorWorkerGlobalScope and CompositorWorkerProxyClientImpl |
// also form another big reference cycle. So dispose needs to be called on |
@@ -71,6 +75,7 @@ void CompositorWorkerProxyClientImpl::dispose() { |
} |
void CompositorWorkerProxyClientImpl::requestAnimationFrame() { |
+ DCHECK(!isMainThread()); |
TRACE_EVENT0("compositor-worker", |
"CompositorWorkerProxyClientImpl::requestAnimationFrame"); |
m_requestedAnimationFrameCallbacks = true; |
@@ -80,6 +85,7 @@ void CompositorWorkerProxyClientImpl::requestAnimationFrame() { |
bool CompositorWorkerProxyClientImpl::mutate( |
double monotonicTimeNow, |
CompositorMutableStateProvider* stateProvider) { |
+ DCHECK(!isMainThread()); |
if (!m_globalScope) |
return false; |
@@ -88,7 +94,8 @@ bool CompositorWorkerProxyClientImpl::mutate( |
return false; |
{ |
- ScopedCompositorMutableState mutableState(m_proxies, stateProvider); |
+ ScopedCompositorMutableState mutableState(m_compositorProxyClient, |
+ stateProvider); |
m_requestedAnimationFrameCallbacks = |
executeAnimationFrameCallbacks(monotonicTimeNow); |
} |
@@ -98,6 +105,7 @@ bool CompositorWorkerProxyClientImpl::mutate( |
bool CompositorWorkerProxyClientImpl::executeAnimationFrameCallbacks( |
double monotonicTimeNow) { |
+ DCHECK(!isMainThread()); |
TRACE_EVENT0( |
"compositor-worker", |
"CompositorWorkerProxyClientImpl::executeAnimationFrameCallbacks"); |
@@ -110,14 +118,4 @@ bool CompositorWorkerProxyClientImpl::executeAnimationFrameCallbacks( |
return m_globalScope->executeAnimationFrameCallbacks(highResTimeMs); |
} |
-void CompositorWorkerProxyClientImpl::registerCompositorProxy( |
- CompositorProxy* proxy) { |
- m_proxies.insert(proxy); |
-} |
- |
-void CompositorWorkerProxyClientImpl::unregisterCompositorProxy( |
- CompositorProxy* proxy) { |
- m_proxies.erase(proxy); |
-} |
- |
} // namespace blink |