| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 | 156 |
| 157 void* webView() const override { return m_popup->m_webView; } | 157 void* webView() const override { return m_popup->m_webView; } |
| 158 | 158 |
| 159 IntSize minimumWindowSize() const override { return IntSize(0, 0); } | 159 IntSize minimumWindowSize() const override { return IntSize(0, 0); } |
| 160 | 160 |
| 161 void setCursor(const Cursor& cursor, LocalFrame* localFrame) override { | 161 void setCursor(const Cursor& cursor, LocalFrame* localFrame) override { |
| 162 m_popup->m_widgetClient->didChangeCursor(WebCursorInfo(cursor)); | 162 m_popup->m_widgetClient->didChangeCursor(WebCursorInfo(cursor)); |
| 163 } | 163 } |
| 164 | 164 |
| 165 void setEventListenerProperties( | 165 void setEventListenerProperties( |
| 166 LocalFrame* frame, | |
| 167 WebEventListenerClass eventClass, | 166 WebEventListenerClass eventClass, |
| 168 WebEventListenerProperties properties) override { | 167 WebEventListenerProperties properties) override { |
| 169 DCHECK(frame->isMainFrame()); | 168 if (m_popup->m_layerTreeView) { |
| 170 WebWidgetClient* client = m_popup->widgetClient(); | 169 m_popup->m_layerTreeView->setEventListenerProperties(eventClass, |
| 171 if (WebLayerTreeView* layerTreeView = m_popup->m_layerTreeView) { | 170 properties); |
| 172 layerTreeView->setEventListenerProperties(eventClass, properties); | |
| 173 if (eventClass == WebEventListenerClass::TouchStartOrMove) { | 171 if (eventClass == WebEventListenerClass::TouchStartOrMove) { |
| 174 client->hasTouchEventHandlers( | 172 m_popup->widgetClient()->hasTouchEventHandlers( |
| 175 properties != WebEventListenerProperties::Nothing || | 173 properties != WebEventListenerProperties::Nothing || |
| 176 eventListenerProperties(frame, | 174 eventListenerProperties(WebEventListenerClass::TouchEndOrCancel) != |
| 177 WebEventListenerClass::TouchEndOrCancel) != | |
| 178 WebEventListenerProperties::Nothing); | 175 WebEventListenerProperties::Nothing); |
| 179 } else if (eventClass == WebEventListenerClass::TouchEndOrCancel) { | 176 } else if (eventClass == WebEventListenerClass::TouchEndOrCancel) { |
| 180 client->hasTouchEventHandlers( | 177 m_popup->widgetClient()->hasTouchEventHandlers( |
| 181 properties != WebEventListenerProperties::Nothing || | 178 properties != WebEventListenerProperties::Nothing || |
| 182 eventListenerProperties(frame, | 179 eventListenerProperties(WebEventListenerClass::TouchStartOrMove) != |
| 183 WebEventListenerClass::TouchStartOrMove) != | |
| 184 WebEventListenerProperties::Nothing); | 180 WebEventListenerProperties::Nothing); |
| 185 } | 181 } |
| 186 } else { | 182 } else { |
| 187 client->hasTouchEventHandlers(true); | 183 m_popup->widgetClient()->hasTouchEventHandlers(true); |
| 188 } | 184 } |
| 189 } | 185 } |
| 190 WebEventListenerProperties eventListenerProperties( | 186 WebEventListenerProperties eventListenerProperties( |
| 191 LocalFrame*, | |
| 192 WebEventListenerClass eventClass) const override { | 187 WebEventListenerClass eventClass) const override { |
| 193 if (m_popup->m_layerTreeView) { | 188 if (m_popup->m_layerTreeView) |
| 194 return m_popup->m_layerTreeView->eventListenerProperties(eventClass); | 189 return m_popup->m_layerTreeView->eventListenerProperties(eventClass); |
| 195 } | |
| 196 return WebEventListenerProperties::Nothing; | 190 return WebEventListenerProperties::Nothing; |
| 197 } | 191 } |
| 198 | 192 |
| 199 void setHasScrollEventHandlers(LocalFrame* frame, | 193 void setHasScrollEventHandlers(bool hasEventHandlers) override { |
| 200 bool hasEventHandlers) override { | |
| 201 DCHECK(frame->isMainFrame()); | |
| 202 if (m_popup->m_layerTreeView) | 194 if (m_popup->m_layerTreeView) |
| 203 m_popup->m_layerTreeView->setHaveScrollEventHandlers(hasEventHandlers); | 195 m_popup->m_layerTreeView->setHaveScrollEventHandlers(hasEventHandlers); |
| 204 } | 196 } |
| 205 | 197 |
| 198 bool hasScrollEventHandlers() const override { |
| 199 if (m_popup->m_layerTreeView) |
| 200 return m_popup->m_layerTreeView->haveScrollEventHandlers(); |
| 201 return false; |
| 202 } |
| 203 |
| 206 void setTouchAction(LocalFrame* frame, TouchAction touchAction) override { | 204 void setTouchAction(LocalFrame* frame, TouchAction touchAction) override { |
| 207 DCHECK(frame); | 205 DCHECK(frame); |
| 208 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame); | 206 WebLocalFrameImpl* webFrame = WebLocalFrameImpl::fromFrame(frame); |
| 209 WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget(); | 207 WebFrameWidgetBase* widget = webFrame->localRoot()->frameWidget(); |
| 210 if (!widget) | 208 if (!widget) |
| 211 return; | 209 return; |
| 212 | 210 |
| 213 if (WebWidgetClient* client = widget->client()) | 211 if (WebWidgetClient* client = widget->client()) |
| 214 client->setTouchAction(static_cast<WebTouchAction>(touchAction)); | 212 client->setTouchAction(static_cast<WebTouchAction>(touchAction)); |
| 215 } | 213 } |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 // A WebPagePopupImpl instance usually has two references. | 609 // A WebPagePopupImpl instance usually has two references. |
| 612 // - One owned by the instance itself. It represents the visible widget. | 610 // - One owned by the instance itself. It represents the visible widget. |
| 613 // - One owned by a WebViewImpl. It's released when the WebViewImpl ask the | 611 // - One owned by a WebViewImpl. It's released when the WebViewImpl ask the |
| 614 // WebPagePopupImpl to close. | 612 // WebPagePopupImpl to close. |
| 615 // We need them because the closing operation is asynchronous and the widget | 613 // We need them because the closing operation is asynchronous and the widget |
| 616 // can be closed while the WebViewImpl is unaware of it. | 614 // can be closed while the WebViewImpl is unaware of it. |
| 617 return adoptRef(new WebPagePopupImpl(client)).leakRef(); | 615 return adoptRef(new WebPagePopupImpl(client)).leakRef(); |
| 618 } | 616 } |
| 619 | 617 |
| 620 } // namespace blink | 618 } // namespace blink |
| OLD | NEW |