| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 #include "public/web/WebTextInputInfo.h" | 139 #include "public/web/WebTextInputInfo.h" |
| 140 #include "public/web/WebViewClient.h" | 140 #include "public/web/WebViewClient.h" |
| 141 #include "public/web/WebWindowFeatures.h" | 141 #include "public/web/WebWindowFeatures.h" |
| 142 #include "web/CompositionUnderlineVectorBuilder.h" | 142 #include "web/CompositionUnderlineVectorBuilder.h" |
| 143 #include "web/ContextFeaturesClientImpl.h" | 143 #include "web/ContextFeaturesClientImpl.h" |
| 144 #include "web/DatabaseClientImpl.h" | 144 #include "web/DatabaseClientImpl.h" |
| 145 #include "web/FullscreenController.h" | 145 #include "web/FullscreenController.h" |
| 146 #include "web/GraphicsLayerFactoryChromium.h" | 146 #include "web/GraphicsLayerFactoryChromium.h" |
| 147 #include "web/LinkHighlight.h" | 147 #include "web/LinkHighlight.h" |
| 148 #include "web/NavigatorContentUtilsClientImpl.h" | 148 #include "web/NavigatorContentUtilsClientImpl.h" |
| 149 #include "web/PopupContainer.h" | |
| 150 #include "web/PrerendererClientImpl.h" | 149 #include "web/PrerendererClientImpl.h" |
| 151 #include "web/StorageQuotaClientImpl.h" | 150 #include "web/StorageQuotaClientImpl.h" |
| 152 #include "web/ValidationMessageClientImpl.h" | 151 #include "web/ValidationMessageClientImpl.h" |
| 153 #include "web/ViewportAnchor.h" | 152 #include "web/ViewportAnchor.h" |
| 154 #include "web/WebDevToolsAgentImpl.h" | 153 #include "web/WebDevToolsAgentImpl.h" |
| 155 #include "web/WebDevToolsAgentPrivate.h" | 154 #include "web/WebDevToolsAgentPrivate.h" |
| 156 #include "web/WebInputEventConversion.h" | 155 #include "web/WebInputEventConversion.h" |
| 157 #include "web/WebLocalFrameImpl.h" | 156 #include "web/WebLocalFrameImpl.h" |
| 158 #include "web/WebPagePopupImpl.h" | 157 #include "web/WebPagePopupImpl.h" |
| 159 #include "web/WebPluginContainerImpl.h" | 158 #include "web/WebPluginContainerImpl.h" |
| 160 #include "web/WebPopupMenuImpl.h" | |
| 161 #include "web/WebRemoteFrameImpl.h" | 159 #include "web/WebRemoteFrameImpl.h" |
| 162 #include "web/WebSettingsImpl.h" | 160 #include "web/WebSettingsImpl.h" |
| 163 #include "web/WorkerGlobalScopeProxyProviderImpl.h" | 161 #include "web/WorkerGlobalScopeProxyProviderImpl.h" |
| 164 #include "web/painting/ContinuousPainter.h" | 162 #include "web/painting/ContinuousPainter.h" |
| 165 #include "wtf/CurrentTime.h" | 163 #include "wtf/CurrentTime.h" |
| 166 #include "wtf/RefPtr.h" | 164 #include "wtf/RefPtr.h" |
| 167 #include "wtf/TemporaryChange.h" | 165 #include "wtf/TemporaryChange.h" |
| 168 | 166 |
| 169 #if USE(DEFAULT_RENDER_THEME) | 167 #if USE(DEFAULT_RENDER_THEME) |
| 170 #include "core/rendering/RenderThemeChromiumDefault.h" | 168 #include "core/rendering/RenderThemeChromiumDefault.h" |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 { | 478 { |
| 481 m_client->setMouseOverURL(WebURL()); | 479 m_client->setMouseOverURL(WebURL()); |
| 482 PageWidgetEventHandler::handleMouseLeave(mainFrame, event); | 480 PageWidgetEventHandler::handleMouseLeave(mainFrame, event); |
| 483 } | 481 } |
| 484 | 482 |
| 485 void WebViewImpl::handleMouseDown(LocalFrame& mainFrame, const WebMouseEvent& ev
ent) | 483 void WebViewImpl::handleMouseDown(LocalFrame& mainFrame, const WebMouseEvent& ev
ent) |
| 486 { | 484 { |
| 487 // If there is a popup open, close it as the user is clicking on the page (o
utside of the | 485 // If there is a popup open, close it as the user is clicking on the page (o
utside of the |
| 488 // popup). We also save it so we can prevent a click on an element from imme
diately | 486 // popup). We also save it so we can prevent a click on an element from imme
diately |
| 489 // reopening the same popup. | 487 // reopening the same popup. |
| 490 RefPtrWillBeRawPtr<PopupContainer> selectPopup = nullptr; | |
| 491 RefPtr<WebPagePopupImpl> pagePopup; | 488 RefPtr<WebPagePopupImpl> pagePopup; |
| 492 if (event.button == WebMouseEvent::ButtonLeft) { | 489 if (event.button == WebMouseEvent::ButtonLeft) { |
| 493 selectPopup = m_selectPopup; | |
| 494 pagePopup = m_pagePopup; | 490 pagePopup = m_pagePopup; |
| 495 hidePopups(); | 491 hidePopups(); |
| 496 ASSERT(!m_selectPopup); | |
| 497 ASSERT(!m_pagePopup); | 492 ASSERT(!m_pagePopup); |
| 498 } | 493 } |
| 499 | 494 |
| 500 m_lastMouseDownPoint = WebPoint(event.x, event.y); | 495 m_lastMouseDownPoint = WebPoint(event.x, event.y); |
| 501 | 496 |
| 502 // Take capture on a mouse down on a plugin so we can send it mouse events. | 497 // Take capture on a mouse down on a plugin so we can send it mouse events. |
| 503 // If the hit node is a plugin but a scrollbar is over it don't start mouse | 498 // If the hit node is a plugin but a scrollbar is over it don't start mouse |
| 504 // capture because it will interfere with the scrollbar receiving events. | 499 // capture because it will interfere with the scrollbar receiving events. |
| 505 IntPoint point(event.x, event.y); | 500 IntPoint point(event.x, event.y); |
| 506 if (event.button == WebMouseEvent::ButtonLeft && m_page->mainFrame()->isLoca
lFrame()) { | 501 if (event.button == WebMouseEvent::ButtonLeft && m_page->mainFrame()->isLoca
lFrame()) { |
| 507 point = m_page->deprecatedLocalMainFrame()->view()->windowToContents(poi
nt); | 502 point = m_page->deprecatedLocalMainFrame()->view()->windowToContents(poi
nt); |
| 508 HitTestResult result(m_page->deprecatedLocalMainFrame()->eventHandler().
hitTestResultAtPoint(point)); | 503 HitTestResult result(m_page->deprecatedLocalMainFrame()->eventHandler().
hitTestResultAtPoint(point)); |
| 509 result.setToShadowHostIfInUserAgentShadowRoot(); | 504 result.setToShadowHostIfInUserAgentShadowRoot(); |
| 510 Node* hitNode = result.innerNonSharedNode(); | 505 Node* hitNode = result.innerNonSharedNode(); |
| 511 | 506 |
| 512 if (!result.scrollbar() && hitNode && hitNode->renderer() && hitNode->re
nderer()->isEmbeddedObject()) { | 507 if (!result.scrollbar() && hitNode && hitNode->renderer() && hitNode->re
nderer()->isEmbeddedObject()) { |
| 513 m_mouseCaptureNode = hitNode; | 508 m_mouseCaptureNode = hitNode; |
| 514 TRACE_EVENT_ASYNC_BEGIN0("input", "capturing mouse", this); | 509 TRACE_EVENT_ASYNC_BEGIN0("input", "capturing mouse", this); |
| 515 } | 510 } |
| 516 } | 511 } |
| 517 | 512 |
| 518 PageWidgetEventHandler::handleMouseDown(mainFrame, event); | 513 PageWidgetEventHandler::handleMouseDown(mainFrame, event); |
| 519 | 514 |
| 520 if (event.button == WebMouseEvent::ButtonLeft && m_mouseCaptureNode) | 515 if (event.button == WebMouseEvent::ButtonLeft && m_mouseCaptureNode) |
| 521 m_mouseCaptureGestureToken = mainFrame.eventHandler().takeLastMouseDownG
estureToken(); | 516 m_mouseCaptureGestureToken = mainFrame.eventHandler().takeLastMouseDownG
estureToken(); |
| 522 | 517 |
| 523 if (m_selectPopup && m_selectPopup == selectPopup) { | |
| 524 // That click triggered a select popup which is the same as the one that | |
| 525 // was showing before the click. It means the user clicked the select | |
| 526 // while the popup was showing, and as a result we first closed then | |
| 527 // immediately reopened the select popup. It needs to be closed. | |
| 528 hideSelectPopup(); | |
| 529 } | |
| 530 | |
| 531 if (m_pagePopup && pagePopup && m_pagePopup->hasSamePopupClient(pagePopup.ge
t())) { | 518 if (m_pagePopup && pagePopup && m_pagePopup->hasSamePopupClient(pagePopup.ge
t())) { |
| 532 // That click triggered a page popup that is the same as the one we just
closed. | 519 // That click triggered a page popup that is the same as the one we just
closed. |
| 533 // It needs to be closed. | 520 // It needs to be closed. |
| 534 closePagePopup(m_pagePopup.get()); | 521 closePagePopup(m_pagePopup.get()); |
| 535 } | 522 } |
| 536 | 523 |
| 537 // Dispatch the contextmenu event regardless of if the click was swallowed. | 524 // Dispatch the contextmenu event regardless of if the click was swallowed. |
| 538 if (!page()->settings().showContextMenuOnMouseUp()) { | 525 if (!page()->settings().showContextMenuOnMouseUp()) { |
| 539 #if OS(MACOSX) | 526 #if OS(MACOSX) |
| 540 if (event.button == WebMouseEvent::ButtonRight | 527 if (event.button == WebMouseEvent::ButtonRight |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 728 } | 715 } |
| 729 | 716 |
| 730 switch (event.type) { | 717 switch (event.type) { |
| 731 case WebInputEvent::GestureTap: { | 718 case WebInputEvent::GestureTap: { |
| 732 m_client->cancelScheduledContentIntents(); | 719 m_client->cancelScheduledContentIntents(); |
| 733 if (detectContentOnTouch(targetedEvent)) { | 720 if (detectContentOnTouch(targetedEvent)) { |
| 734 eventSwallowed = true; | 721 eventSwallowed = true; |
| 735 break; | 722 break; |
| 736 } | 723 } |
| 737 | 724 |
| 738 RefPtrWillBeRawPtr<PopupContainer> selectPopup = nullptr; | |
| 739 selectPopup = m_selectPopup; | |
| 740 hideSelectPopup(); | |
| 741 ASSERT(!m_selectPopup); | |
| 742 | |
| 743 // Don't trigger a disambiguation popup on sites designed for mobile dev
ices. | 725 // Don't trigger a disambiguation popup on sites designed for mobile dev
ices. |
| 744 // Instead, assume that the page has been designed with big enough butto
ns and links. | 726 // Instead, assume that the page has been designed with big enough butto
ns and links. |
| 745 // Don't trigger a disambiguation popup when screencasting, since it's i
mplemented outside of | 727 // Don't trigger a disambiguation popup when screencasting, since it's i
mplemented outside of |
| 746 // compositor pipeline and is not being screencasted itself. This leads
to bad user experience. | 728 // compositor pipeline and is not being screencasted itself. This leads
to bad user experience. |
| 747 if (event.data.tap.width > 0 && !shouldDisableDesktopWorkarounds() && !p
age()->inspectorController().screencastEnabled()) { | 729 if (event.data.tap.width > 0 && !shouldDisableDesktopWorkarounds() && !p
age()->inspectorController().screencastEnabled()) { |
| 748 WebGestureEvent scaledEvent = event; | 730 WebGestureEvent scaledEvent = event; |
| 749 scaledEvent.x = event.x / pageScaleFactor(); | 731 scaledEvent.x = event.x / pageScaleFactor(); |
| 750 scaledEvent.y = event.y / pageScaleFactor(); | 732 scaledEvent.y = event.y / pageScaleFactor(); |
| 751 scaledEvent.data.tap.width = event.data.tap.width / pageScaleFactor(
); | 733 scaledEvent.data.tap.width = event.data.tap.width / pageScaleFactor(
); |
| 752 scaledEvent.data.tap.height = event.data.tap.height / pageScaleFacto
r(); | 734 scaledEvent.data.tap.height = event.data.tap.height / pageScaleFacto
r(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 774 for (size_t i = 0; i < m_linkHighlights.size(); ++i) | 756 for (size_t i = 0; i < m_linkHighlights.size(); ++i) |
| 775 m_linkHighlights[i]->startHighlightAnimationIfNeeded(); | 757 m_linkHighlights[i]->startHighlightAnimationIfNeeded(); |
| 776 eventSwallowed = true; | 758 eventSwallowed = true; |
| 777 eventCancelled = true; | 759 eventCancelled = true; |
| 778 break; | 760 break; |
| 779 } | 761 } |
| 780 } | 762 } |
| 781 | 763 |
| 782 eventSwallowed = mainFrameImpl()->frame()->eventHandler().handleGestureE
vent(targetedEvent); | 764 eventSwallowed = mainFrameImpl()->frame()->eventHandler().handleGestureE
vent(targetedEvent); |
| 783 | 765 |
| 784 if (m_selectPopup && m_selectPopup == selectPopup) { | |
| 785 // That tap triggered a select popup which is the same as the one th
at | |
| 786 // was showing before the tap. It means the user tapped the select | |
| 787 // while the popup was showing, and as a result we first closed then | |
| 788 // immediately reopened the select popup. It needs to be closed. | |
| 789 hideSelectPopup(); | |
| 790 } | |
| 791 | |
| 792 break; | 766 break; |
| 793 } | 767 } |
| 794 case WebInputEvent::GestureTwoFingerTap: | 768 case WebInputEvent::GestureTwoFingerTap: |
| 795 case WebInputEvent::GestureLongPress: | 769 case WebInputEvent::GestureLongPress: |
| 796 case WebInputEvent::GestureLongTap: { | 770 case WebInputEvent::GestureLongTap: { |
| 797 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 771 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
| 798 break; | 772 break; |
| 799 | 773 |
| 800 m_client->cancelScheduledContentIntents(); | 774 m_client->cancelScheduledContentIntents(); |
| 801 m_page->contextMenuController().clearContextMenu(); | 775 m_page->contextMenuController().clearContextMenu(); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 endActiveFlingAnimation(); | 910 endActiveFlingAnimation(); |
| 937 | 911 |
| 938 // Please refer to the comments explaining the m_suppressNextKeypressEvent | 912 // Please refer to the comments explaining the m_suppressNextKeypressEvent |
| 939 // member. | 913 // member. |
| 940 // The m_suppressNextKeypressEvent is set if the KeyDown is handled by | 914 // The m_suppressNextKeypressEvent is set if the KeyDown is handled by |
| 941 // Webkit. A keyDown event is typically associated with a keyPress(char) | 915 // Webkit. A keyDown event is typically associated with a keyPress(char) |
| 942 // event and a keyUp event. We reset this flag here as this is a new keyDown | 916 // event and a keyUp event. We reset this flag here as this is a new keyDown |
| 943 // event. | 917 // event. |
| 944 m_suppressNextKeypressEvent = false; | 918 m_suppressNextKeypressEvent = false; |
| 945 | 919 |
| 946 // If there is a select popup, it should be the one processing the event, | 920 // If there is a popup, it should be the one processing the event, |
| 947 // not the page. | 921 // not the page. |
| 948 if (m_selectPopup) | |
| 949 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)
); | |
| 950 if (m_pagePopup) { | 922 if (m_pagePopup) { |
| 951 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); | 923 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); |
| 952 // We need to ignore the next Char event after this otherwise pressing | 924 // We need to ignore the next Char event after this otherwise pressing |
| 953 // enter when selecting an item in the popup will go to the page. | 925 // enter when selecting an item in the popup will go to the page. |
| 954 if (WebInputEvent::RawKeyDown == event.type) | 926 if (WebInputEvent::RawKeyDown == event.type) |
| 955 m_suppressNextKeypressEvent = true; | 927 m_suppressNextKeypressEvent = true; |
| 956 return true; | 928 return true; |
| 957 } | 929 } |
| 958 | 930 |
| 959 RefPtrWillBeRawPtr<Frame> focusedFrame = focusedCoreFrame(); | 931 RefPtrWillBeRawPtr<Frame> focusedFrame = focusedCoreFrame(); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1005 ASSERT(event.type == WebInputEvent::Char); | 977 ASSERT(event.type == WebInputEvent::Char); |
| 1006 | 978 |
| 1007 // Please refer to the comments explaining the m_suppressNextKeypressEvent | 979 // Please refer to the comments explaining the m_suppressNextKeypressEvent |
| 1008 // member. The m_suppressNextKeypressEvent is set if the KeyDown is | 980 // member. The m_suppressNextKeypressEvent is set if the KeyDown is |
| 1009 // handled by Webkit. A keyDown event is typically associated with a | 981 // handled by Webkit. A keyDown event is typically associated with a |
| 1010 // keyPress(char) event and a keyUp event. We reset this flag here as it | 982 // keyPress(char) event and a keyUp event. We reset this flag here as it |
| 1011 // only applies to the current keyPress event. | 983 // only applies to the current keyPress event. |
| 1012 bool suppress = m_suppressNextKeypressEvent; | 984 bool suppress = m_suppressNextKeypressEvent; |
| 1013 m_suppressNextKeypressEvent = false; | 985 m_suppressNextKeypressEvent = false; |
| 1014 | 986 |
| 1015 // If there is a select popup, it should be the one processing the event, | 987 // If there is a popup, it should be the one processing the event, |
| 1016 // not the page. | 988 // not the page. |
| 1017 if (m_selectPopup) | |
| 1018 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)
); | |
| 1019 if (m_pagePopup) | 989 if (m_pagePopup) |
| 1020 return m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); | 990 return m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); |
| 1021 | 991 |
| 1022 LocalFrame* frame = toLocalFrame(focusedCoreFrame()); | 992 LocalFrame* frame = toLocalFrame(focusedCoreFrame()); |
| 1023 if (!frame) | 993 if (!frame) |
| 1024 return suppress; | 994 return suppress; |
| 1025 | 995 |
| 1026 EventHandler& handler = frame->eventHandler(); | 996 EventHandler& handler = frame->eventHandler(); |
| 1027 | 997 |
| 1028 PlatformKeyboardEventBuilder evt(event); | 998 PlatformKeyboardEventBuilder evt(event); |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1499 *scrollDirection = ScrollDown; | 1469 *scrollDirection = ScrollDown; |
| 1500 *scrollGranularity = ScrollByPage; | 1470 *scrollGranularity = ScrollByPage; |
| 1501 break; | 1471 break; |
| 1502 default: | 1472 default: |
| 1503 return false; | 1473 return false; |
| 1504 } | 1474 } |
| 1505 | 1475 |
| 1506 return true; | 1476 return true; |
| 1507 } | 1477 } |
| 1508 | 1478 |
| 1509 void WebViewImpl::hideSelectPopup() | |
| 1510 { | |
| 1511 if (m_selectPopup) | |
| 1512 m_selectPopup->hidePopup(); | |
| 1513 } | |
| 1514 | |
| 1515 void WebViewImpl::popupOpened(PopupContainer* popupContainer) | |
| 1516 { | |
| 1517 ASSERT(!m_selectPopup); | |
| 1518 m_selectPopup = popupContainer; | |
| 1519 ASSERT(mainFrameImpl()->frame()->document()); | |
| 1520 Document& document = *mainFrameImpl()->frame()->document(); | |
| 1521 page()->frameHost().eventHandlerRegistry().didAddEventHandler(document, Even
tHandlerRegistry::WheelEvent); | |
| 1522 } | |
| 1523 | |
| 1524 void WebViewImpl::popupClosed(PopupContainer* popupContainer) | |
| 1525 { | |
| 1526 ASSERT(m_selectPopup); | |
| 1527 m_selectPopup = nullptr; | |
| 1528 ASSERT(mainFrameImpl()->frame()->document()); | |
| 1529 Document& document = *mainFrameImpl()->frame()->document(); | |
| 1530 // Remove the handler we added in |popupOpened| conditionally, because the | |
| 1531 // Document may have already removed it, for instance, due to a navigation. | |
| 1532 EventHandlerRegistry* registry = &document.frameHost()->eventHandlerRegistry
(); | |
| 1533 if (registry->eventHandlerTargets(EventHandlerRegistry::WheelEvent)->contain
s(&document)) | |
| 1534 registry->didRemoveEventHandler(document, EventHandlerRegistry::WheelEve
nt); | |
| 1535 } | |
| 1536 | |
| 1537 PagePopup* WebViewImpl::openPagePopup(PagePopupClient* client, const IntRect& or
iginBoundsInRootView) | 1479 PagePopup* WebViewImpl::openPagePopup(PagePopupClient* client, const IntRect& or
iginBoundsInRootView) |
| 1538 { | 1480 { |
| 1539 ASSERT(client); | 1481 ASSERT(client); |
| 1540 if (hasOpenedPopup()) | 1482 if (hasOpenedPopup()) |
| 1541 hidePopups(); | 1483 hidePopups(); |
| 1542 ASSERT(!m_pagePopup); | 1484 ASSERT(!m_pagePopup); |
| 1543 | 1485 |
| 1544 WebWidget* popupWidget = m_client->createPopupMenu(WebPopupTypePage); | 1486 WebWidget* popupWidget = m_client->createPopupMenu(WebPopupTypePage); |
| 1545 ASSERT(popupWidget); | 1487 ASSERT(popupWidget); |
| 1546 m_pagePopup = toWebPagePopupImpl(popupWidget); | 1488 m_pagePopup = toWebPagePopupImpl(popupWidget); |
| (...skipping 2251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3798 | 3740 |
| 3799 RefPtrWillBeRawPtr<Range> range = Range::create(*startPosition.document(), s
tartPosition, endPosition); | 3741 RefPtrWillBeRawPtr<Range> range = Range::create(*startPosition.document(), s
tartPosition, endPosition); |
| 3800 if (!range) | 3742 if (!range) |
| 3801 return; | 3743 return; |
| 3802 | 3744 |
| 3803 clipHtml = createMarkup(range.get(), 0, AnnotateForInterchange, false, Resol
veNonLocalURLs); | 3745 clipHtml = createMarkup(range.get(), 0, AnnotateForInterchange, false, Resol
veNonLocalURLs); |
| 3804 } | 3746 } |
| 3805 | 3747 |
| 3806 void WebViewImpl::hidePopups() | 3748 void WebViewImpl::hidePopups() |
| 3807 { | 3749 { |
| 3808 hideSelectPopup(); | |
| 3809 if (m_pagePopup) | 3750 if (m_pagePopup) |
| 3810 closePagePopup(m_pagePopup.get()); | 3751 closePagePopup(m_pagePopup.get()); |
| 3811 } | 3752 } |
| 3812 | 3753 |
| 3813 void WebViewImpl::setIsTransparent(bool isTransparent) | 3754 void WebViewImpl::setIsTransparent(bool isTransparent) |
| 3814 { | 3755 { |
| 3815 // Set any existing frames to be transparent. | 3756 // Set any existing frames to be transparent. |
| 3816 Frame* frame = m_page->mainFrame(); | 3757 Frame* frame = m_page->mainFrame(); |
| 3817 while (frame) { | 3758 while (frame) { |
| 3818 if (frame->isLocalFrame()) | 3759 if (frame->isLocalFrame()) |
| (...skipping 706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4525 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 4466 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
| 4526 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4467 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
| 4527 } | 4468 } |
| 4528 | 4469 |
| 4529 void WebViewImpl::forceNextWebGLContextCreationToFail() | 4470 void WebViewImpl::forceNextWebGLContextCreationToFail() |
| 4530 { | 4471 { |
| 4531 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); | 4472 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); |
| 4532 } | 4473 } |
| 4533 | 4474 |
| 4534 } // namespace blink | 4475 } // namespace blink |
| OLD | NEW |