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

Side by Side Diff: third_party/WebKit/Source/web/ChromeClientImpl.cpp

Issue 2479663002: Move compositor InputHandler from RenderViewImpl to RenderWidget. (Closed)
Patch Set: Add early out to accommodate null frameWidget in webkit_unit_tests. Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 String message = String("Blocked ") + dialogTypeToString(dialogType) + "('" + 912 String message = String("Blocked ") + dialogTypeToString(dialogType) + "('" +
913 dialogMessage + "') during " + 913 dialogMessage + "') during " +
914 dismissalTypeToString(dismissalType) + "."; 914 dismissalTypeToString(dismissalType) + ".";
915 m_webView->mainFrame()->addMessageToConsole( 915 m_webView->mainFrame()->addMessageToConsole(
916 WebConsoleMessage(WebConsoleMessage::LevelError, message)); 916 WebConsoleMessage(WebConsoleMessage::LevelError, message));
917 917
918 return false; 918 return false;
919 } 919 }
920 920
921 void ChromeClientImpl::setEventListenerProperties( 921 void ChromeClientImpl::setEventListenerProperties(
922 LocalFrame* frame,
922 WebEventListenerClass eventClass, 923 WebEventListenerClass eventClass,
923 WebEventListenerProperties properties) { 924 WebEventListenerProperties properties) {
924 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) { 925 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame);
926 if (!webFrame || webFrame->localRoot() == m_webView->mainFrame()) {
927 setEventListenerProperties(m_webView->layerTreeView(), eventClass,
928 properties);
929 } else {
930 WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget();
931 // The widget may be nullptr in some unit tests.
dcheng 2016/11/10 07:46:11 How many tests does this break? If possible, we sh
wjmaclean 2016/11/10 15:57:15 I realize I missed a case, this isn't just broken
dcheng 2016/11/11 08:51:52 Can you clarify what you mean?
wjmaclean 2016/11/11 15:40:51 The event listener properties are stored as an arr
dcheng 2016/11/11 22:32:11 I don't think we can expose that to the layer tree
932 if (!widget) {
933 LOG(INFO) << "Null frameWidget.";
dcheng 2016/11/10 07:46:11 Nit: remove this LOG
wjmaclean 2016/11/10 15:57:15 Done.
934 return;
935 }
936
937 WebWidgetClient* client = widget->client();
938 // TODO(wjmaclean): Do we need to inform the WebView about these also?
939 setEventListenerProperties(client->layerTreeView(), eventClass, properties);
940 }
941 }
942
943 void ChromeClientImpl::setEventListenerProperties(
944 WebLayerTreeView* treeView,
945 WebEventListenerClass eventClass,
946 WebEventListenerProperties properties) {
947 if (treeView) {
925 treeView->setEventListenerProperties(eventClass, properties); 948 treeView->setEventListenerProperties(eventClass, properties);
926 if (eventClass == WebEventListenerClass::TouchStartOrMove) { 949 if (eventClass == WebEventListenerClass::TouchStartOrMove) {
927 m_webView->hasTouchEventHandlers( 950 m_webView->hasTouchEventHandlers(
928 properties != WebEventListenerProperties::Nothing || 951 properties != WebEventListenerProperties::Nothing ||
929 eventListenerProperties(WebEventListenerClass::TouchEndOrCancel) != 952 eventListenerProperties(treeView,
953 WebEventListenerClass::TouchEndOrCancel) !=
930 WebEventListenerProperties::Nothing); 954 WebEventListenerProperties::Nothing);
931 } else if (eventClass == WebEventListenerClass::TouchEndOrCancel) { 955 } else if (eventClass == WebEventListenerClass::TouchEndOrCancel) {
932 m_webView->hasTouchEventHandlers( 956 m_webView->hasTouchEventHandlers(
933 properties != WebEventListenerProperties::Nothing || 957 properties != WebEventListenerProperties::Nothing ||
934 eventListenerProperties(WebEventListenerClass::TouchStartOrMove) != 958 eventListenerProperties(treeView,
959 WebEventListenerClass::TouchStartOrMove) !=
935 WebEventListenerProperties::Nothing); 960 WebEventListenerProperties::Nothing);
936 } 961 }
937 } else { 962 } else {
938 m_webView->hasTouchEventHandlers(true); 963 m_webView->hasTouchEventHandlers(true);
939 } 964 }
940 } 965 }
941 966
942 void ChromeClientImpl::beginLifecycleUpdates() { 967 void ChromeClientImpl::beginLifecycleUpdates() {
943 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) { 968 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) {
944 treeView->setDeferCommits(false); 969 treeView->setDeferCommits(false);
945 treeView->setNeedsBeginFrame(); 970 treeView->setNeedsBeginFrame();
946 } 971 }
947 } 972 }
948 973
949 WebEventListenerProperties ChromeClientImpl::eventListenerProperties( 974 WebEventListenerProperties ChromeClientImpl::eventListenerProperties(
975 LocalFrame* frame,
950 WebEventListenerClass eventClass) const { 976 WebEventListenerClass eventClass) const {
951 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) 977 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame);
978 if (!webFrame || webFrame->localRoot() == m_webView->mainFrame())
979 return eventListenerProperties(m_webView->layerTreeView(), eventClass);
980
981 WebWidgetClient* client =
982 WebLocalFrameImpl::fromFrame(frame)->localRoot()->frameWidget()->client();
983 return eventListenerProperties(client->layerTreeView(), eventClass);
984 }
985
986 WebEventListenerProperties ChromeClientImpl::eventListenerProperties(
987 WebLayerTreeView* treeView,
988 WebEventListenerClass eventClass) const {
989 if (treeView)
952 return treeView->eventListenerProperties(eventClass); 990 return treeView->eventListenerProperties(eventClass);
953 return WebEventListenerProperties::Nothing; 991 return WebEventListenerProperties::Nothing;
954 } 992 }
955 993
956 void ChromeClientImpl::setHasScrollEventHandlers(bool hasEventHandlers) { 994 void ChromeClientImpl::setHasScrollEventHandlers(bool hasEventHandlers) {
957 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) 995 if (WebLayerTreeView* treeView = m_webView->layerTreeView())
958 treeView->setHaveScrollEventHandlers(hasEventHandlers); 996 treeView->setHaveScrollEventHandlers(hasEventHandlers);
959 } 997 }
960 998
961 bool ChromeClientImpl::hasScrollEventHandlers() const { 999 bool ChromeClientImpl::hasScrollEventHandlers() const {
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 if (RuntimeEnabledFeatures::presentationEnabled()) 1197 if (RuntimeEnabledFeatures::presentationEnabled())
1160 PresentationController::provideTo(frame, client->presentationClient()); 1198 PresentationController::provideTo(frame, client->presentationClient());
1161 if (RuntimeEnabledFeatures::audioOutputDevicesEnabled()) 1199 if (RuntimeEnabledFeatures::audioOutputDevicesEnabled())
1162 provideAudioOutputDeviceClientTo(frame, 1200 provideAudioOutputDeviceClientTo(frame,
1163 AudioOutputDeviceClientImpl::create()); 1201 AudioOutputDeviceClientImpl::create());
1164 if (RuntimeEnabledFeatures::installedAppEnabled()) 1202 if (RuntimeEnabledFeatures::installedAppEnabled())
1165 InstalledAppController::provideTo(frame, client->installedAppClient()); 1203 InstalledAppController::provideTo(frame, client->installedAppClient());
1166 } 1204 }
1167 1205
1168 } // namespace blink 1206 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698