Index: third_party/WebKit/Source/web/ChromeClientImpl.cpp |
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.cpp b/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
index e8098cd0d95dc1d8171bfd092272d763b78331cf..11d980e89a6250fd8cc4a10933d6ccef31805e9e 100644 |
--- a/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
+++ b/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
@@ -929,58 +929,24 @@ |
} |
void ChromeClientImpl::setEventListenerProperties( |
- LocalFrame* frame, |
WebEventListenerClass eventClass, |
WebEventListenerProperties properties) { |
- // |frame| might be null if called via TreeScopeAdopter:: |
- // moveNodeToNewDocument() and the new document has no frame attached. |
- // Since a document without a frame cannot attach one later, it is safe to |
- // exit early. |
- if (!frame) |
- return; |
- |
- WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame); |
- WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget(); |
- // The widget may be nullptr if the frame is provisional. |
- // TODO(dcheng): This needs to be cleaned up at some point. |
- // https://crbug.com/578349 |
- if (!widget) { |
- // If we hit a provisional frame, we expect it to be during initialization |
- // in which case the |properties| should be 'nothing'. |
- DCHECK(properties == WebEventListenerProperties::Nothing); |
- return; |
- } |
- |
- // This relies on widget always pointing to a WebFrameWidgetImpl when |
- // |frame| points to an OOPIF frame, i.e. |frame|'s mainFrame() is |
- // remote. |
- WebWidgetClient* client = widget->client(); |
- if (WebLayerTreeView* treeView = widget->getLayerTreeView()) { |
+ if (WebLayerTreeView* treeView = m_webView->layerTreeView()) { |
treeView->setEventListenerProperties(eventClass, properties); |
if (eventClass == WebEventListenerClass::TouchStartOrMove) { |
- client->hasTouchEventHandlers( |
+ m_webView->hasTouchEventHandlers( |
properties != WebEventListenerProperties::Nothing || |
- treeView->eventListenerProperties( |
- WebEventListenerClass::TouchEndOrCancel) != |
+ eventListenerProperties(WebEventListenerClass::TouchEndOrCancel) != |
WebEventListenerProperties::Nothing); |
} else if (eventClass == WebEventListenerClass::TouchEndOrCancel) { |
- client->hasTouchEventHandlers( |
+ m_webView->hasTouchEventHandlers( |
properties != WebEventListenerProperties::Nothing || |
- treeView->eventListenerProperties( |
- WebEventListenerClass::TouchStartOrMove) != |
+ eventListenerProperties(WebEventListenerClass::TouchStartOrMove) != |
WebEventListenerProperties::Nothing); |
} |
} else { |
- client->hasTouchEventHandlers(true); |
- } |
-} |
- |
-void ChromeClientImpl::updateTouchRectsForSubframeIfNecessary( |
- LocalFrame* frame) { |
- WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame); |
- WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget(); |
- if (WebLayerTreeView* treeView = widget->getLayerTreeView()) |
- treeView->updateTouchRectsForSubframeIfNecessary(); |
+ m_webView->hasTouchEventHandlers(true); |
+ } |
} |
void ChromeClientImpl::beginLifecycleUpdates() { |
@@ -991,35 +957,21 @@ |
} |
WebEventListenerProperties ChromeClientImpl::eventListenerProperties( |
- LocalFrame* frame, |
WebEventListenerClass eventClass) const { |
- if (!frame) |
- return WebEventListenerProperties::Nothing; |
- |
- WebFrameWidgetBase* widget = |
- WebLocalFrameImpl::fromFrame(frame)->localRoot()->frameWidget(); |
- |
- if (!widget || !widget->getLayerTreeView()) |
- return WebEventListenerProperties::Nothing; |
- return widget->getLayerTreeView()->eventListenerProperties(eventClass); |
-} |
- |
-void ChromeClientImpl::setHasScrollEventHandlers(LocalFrame* frame, |
- bool hasEventHandlers) { |
- // |frame| might be null if called via TreeScopeAdopter:: |
- // moveNodeToNewDocument() and the new document has no frame attached. |
- // Since a document without a frame cannot attach one later, it is safe to |
- // exit early. |
- if (!frame) |
- return; |
- |
- WebFrameWidgetBase* widget = |
- WebLocalFrameImpl::fromFrame(frame)->localRoot()->frameWidget(); |
- // While a frame is shutting down, we may get called after the layerTreeView |
- // is gone: in this case we always expect |hasEventHandlers| to be false. |
- DCHECK(!widget || widget->getLayerTreeView() || !hasEventHandlers); |
- if (widget && widget->getLayerTreeView()) |
- widget->getLayerTreeView()->setHaveScrollEventHandlers(hasEventHandlers); |
+ if (WebLayerTreeView* treeView = m_webView->layerTreeView()) |
+ return treeView->eventListenerProperties(eventClass); |
+ return WebEventListenerProperties::Nothing; |
+} |
+ |
+void ChromeClientImpl::setHasScrollEventHandlers(bool hasEventHandlers) { |
+ if (WebLayerTreeView* treeView = m_webView->layerTreeView()) |
+ treeView->setHaveScrollEventHandlers(hasEventHandlers); |
+} |
+ |
+bool ChromeClientImpl::hasScrollEventHandlers() const { |
+ if (WebLayerTreeView* treeView = m_webView->layerTreeView()) |
+ return treeView->haveScrollEventHandlers(); |
+ return false; |
} |
void ChromeClientImpl::setTouchAction(LocalFrame* frame, |