OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |