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

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

Issue 2649573003: Revert of Move compositor InputHandler from RenderViewImpl to RenderWidget. (Closed)
Patch Set: Created 3 years, 11 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 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 911 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 String message = String("Blocked ") + dialogTypeToString(dialogType) + "('" + 922 String message = String("Blocked ") + dialogTypeToString(dialogType) + "('" +
923 dialogMessage + "') during " + 923 dialogMessage + "') during " +
924 dismissalTypeToString(dismissalType) + "."; 924 dismissalTypeToString(dismissalType) + ".";
925 WebLocalFrameImpl::fromFrame(frame)->addMessageToConsole( 925 WebLocalFrameImpl::fromFrame(frame)->addMessageToConsole(
926 WebConsoleMessage(WebConsoleMessage::LevelError, message)); 926 WebConsoleMessage(WebConsoleMessage::LevelError, message));
927 927
928 return false; 928 return false;
929 } 929 }
930 930
931 void ChromeClientImpl::setEventListenerProperties( 931 void ChromeClientImpl::setEventListenerProperties(
932 LocalFrame* frame,
933 WebEventListenerClass eventClass, 932 WebEventListenerClass eventClass,
934 WebEventListenerProperties properties) { 933 WebEventListenerProperties properties) {
935 // |frame| might be null if called via TreeScopeAdopter:: 934 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) {
936 // moveNodeToNewDocument() and the new document has no frame attached.
937 // Since a document without a frame cannot attach one later, it is safe to
938 // exit early.
939 if (!frame)
940 return;
941
942 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame);
943 WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget();
944 // The widget may be nullptr if the frame is provisional.
945 // TODO(dcheng): This needs to be cleaned up at some point.
946 // https://crbug.com/578349
947 if (!widget) {
948 // If we hit a provisional frame, we expect it to be during initialization
949 // in which case the |properties| should be 'nothing'.
950 DCHECK(properties == WebEventListenerProperties::Nothing);
951 return;
952 }
953
954 // This relies on widget always pointing to a WebFrameWidgetImpl when
955 // |frame| points to an OOPIF frame, i.e. |frame|'s mainFrame() is
956 // remote.
957 WebWidgetClient* client = widget->client();
958 if (WebLayerTreeView* treeView = widget->getLayerTreeView()) {
959 treeView->setEventListenerProperties(eventClass, properties); 935 treeView->setEventListenerProperties(eventClass, properties);
960 if (eventClass == WebEventListenerClass::TouchStartOrMove) { 936 if (eventClass == WebEventListenerClass::TouchStartOrMove) {
961 client->hasTouchEventHandlers( 937 m_webView->hasTouchEventHandlers(
962 properties != WebEventListenerProperties::Nothing || 938 properties != WebEventListenerProperties::Nothing ||
963 treeView->eventListenerProperties( 939 eventListenerProperties(WebEventListenerClass::TouchEndOrCancel) !=
964 WebEventListenerClass::TouchEndOrCancel) !=
965 WebEventListenerProperties::Nothing); 940 WebEventListenerProperties::Nothing);
966 } else if (eventClass == WebEventListenerClass::TouchEndOrCancel) { 941 } else if (eventClass == WebEventListenerClass::TouchEndOrCancel) {
967 client->hasTouchEventHandlers( 942 m_webView->hasTouchEventHandlers(
968 properties != WebEventListenerProperties::Nothing || 943 properties != WebEventListenerProperties::Nothing ||
969 treeView->eventListenerProperties( 944 eventListenerProperties(WebEventListenerClass::TouchStartOrMove) !=
970 WebEventListenerClass::TouchStartOrMove) !=
971 WebEventListenerProperties::Nothing); 945 WebEventListenerProperties::Nothing);
972 } 946 }
973 } else { 947 } else {
974 client->hasTouchEventHandlers(true); 948 m_webView->hasTouchEventHandlers(true);
975 } 949 }
976 } 950 }
977 951
978 void ChromeClientImpl::updateTouchRectsForSubframeIfNecessary(
979 LocalFrame* frame) {
980 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame);
981 WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget();
982 if (WebLayerTreeView* treeView = widget->getLayerTreeView())
983 treeView->updateTouchRectsForSubframeIfNecessary();
984 }
985
986 void ChromeClientImpl::beginLifecycleUpdates() { 952 void ChromeClientImpl::beginLifecycleUpdates() {
987 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) { 953 if (WebLayerTreeView* treeView = m_webView->layerTreeView()) {
988 treeView->setDeferCommits(false); 954 treeView->setDeferCommits(false);
989 treeView->setNeedsBeginFrame(); 955 treeView->setNeedsBeginFrame();
990 } 956 }
991 } 957 }
992 958
993 WebEventListenerProperties ChromeClientImpl::eventListenerProperties( 959 WebEventListenerProperties ChromeClientImpl::eventListenerProperties(
994 LocalFrame* frame,
995 WebEventListenerClass eventClass) const { 960 WebEventListenerClass eventClass) const {
996 if (!frame) 961 if (WebLayerTreeView* treeView = m_webView->layerTreeView())
997 return WebEventListenerProperties::Nothing; 962 return treeView->eventListenerProperties(eventClass);
998 963 return WebEventListenerProperties::Nothing;
999 WebFrameWidgetBase* widget =
1000 WebLocalFrameImpl::fromFrame(frame)->localRoot()->frameWidget();
1001
1002 if (!widget || !widget->getLayerTreeView())
1003 return WebEventListenerProperties::Nothing;
1004 return widget->getLayerTreeView()->eventListenerProperties(eventClass);
1005 } 964 }
1006 965
1007 void ChromeClientImpl::setHasScrollEventHandlers(LocalFrame* frame, 966 void ChromeClientImpl::setHasScrollEventHandlers(bool hasEventHandlers) {
1008 bool hasEventHandlers) { 967 if (WebLayerTreeView* treeView = m_webView->layerTreeView())
1009 // |frame| might be null if called via TreeScopeAdopter:: 968 treeView->setHaveScrollEventHandlers(hasEventHandlers);
1010 // moveNodeToNewDocument() and the new document has no frame attached. 969 }
1011 // Since a document without a frame cannot attach one later, it is safe to
1012 // exit early.
1013 if (!frame)
1014 return;
1015 970
1016 WebFrameWidgetBase* widget = 971 bool ChromeClientImpl::hasScrollEventHandlers() const {
1017 WebLocalFrameImpl::fromFrame(frame)->localRoot()->frameWidget(); 972 if (WebLayerTreeView* treeView = m_webView->layerTreeView())
1018 // While a frame is shutting down, we may get called after the layerTreeView 973 return treeView->haveScrollEventHandlers();
1019 // is gone: in this case we always expect |hasEventHandlers| to be false. 974 return false;
1020 DCHECK(!widget || widget->getLayerTreeView() || !hasEventHandlers);
1021 if (widget && widget->getLayerTreeView())
1022 widget->getLayerTreeView()->setHaveScrollEventHandlers(hasEventHandlers);
1023 } 975 }
1024 976
1025 void ChromeClientImpl::setTouchAction(LocalFrame* frame, 977 void ChromeClientImpl::setTouchAction(LocalFrame* frame,
1026 TouchAction touchAction) { 978 TouchAction touchAction) {
1027 DCHECK(frame); 979 DCHECK(frame);
1028 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame); 980 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame);
1029 WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget(); 981 WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget();
1030 if (!widget) 982 if (!widget)
1031 return; 983 return;
1032 984
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
1214 PresentationController::provideTo(frame, client->presentationClient()); 1166 PresentationController::provideTo(frame, client->presentationClient());
1215 if (RuntimeEnabledFeatures::audioOutputDevicesEnabled()) { 1167 if (RuntimeEnabledFeatures::audioOutputDevicesEnabled()) {
1216 provideAudioOutputDeviceClientTo(frame, 1168 provideAudioOutputDeviceClientTo(frame,
1217 new AudioOutputDeviceClientImpl(frame)); 1169 new AudioOutputDeviceClientImpl(frame));
1218 } 1170 }
1219 if (RuntimeEnabledFeatures::installedAppEnabled()) 1171 if (RuntimeEnabledFeatures::installedAppEnabled())
1220 InstalledAppController::provideTo(frame, client->installedAppClient()); 1172 InstalledAppController::provideTo(frame, client->installedAppClient());
1221 } 1173 }
1222 1174
1223 } // namespace blink 1175 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/ChromeClientImpl.h ('k') | third_party/WebKit/Source/web/WebPagePopupImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698