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

Side by Side Diff: Source/WebKit/chromium/src/WebViewImpl.cpp

Issue 14735003: Remove compile time flag ENABLE_PAGE_POPUP . This is part of an overall effort to remove unneeded c… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 7 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) 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 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 m_client->setMouseOverURL(WebURL()); 533 m_client->setMouseOverURL(WebURL());
534 PageWidgetEventHandler::handleMouseLeave(mainFrame, event); 534 PageWidgetEventHandler::handleMouseLeave(mainFrame, event);
535 } 535 }
536 536
537 void WebViewImpl::handleMouseDown(Frame& mainFrame, const WebMouseEvent& event) 537 void WebViewImpl::handleMouseDown(Frame& mainFrame, const WebMouseEvent& event)
538 { 538 {
539 // If there is a popup open, close it as the user is clicking on the page (o utside of the 539 // If there is a popup open, close it as the user is clicking on the page (o utside of the
540 // popup). We also save it so we can prevent a click on an element from imme diately 540 // popup). We also save it so we can prevent a click on an element from imme diately
541 // reopening the same popup. 541 // reopening the same popup.
542 RefPtr<WebCore::PopupContainer> selectPopup; 542 RefPtr<WebCore::PopupContainer> selectPopup;
543 #if ENABLE(PAGE_POPUP)
544 RefPtr<WebPagePopupImpl> pagePopup; 543 RefPtr<WebPagePopupImpl> pagePopup;
545 #endif
546 if (event.button == WebMouseEvent::ButtonLeft) { 544 if (event.button == WebMouseEvent::ButtonLeft) {
547 selectPopup = m_selectPopup; 545 selectPopup = m_selectPopup;
548 #if ENABLE(PAGE_POPUP)
549 pagePopup = m_pagePopup; 546 pagePopup = m_pagePopup;
550 #endif
551 hidePopups(); 547 hidePopups();
552 ASSERT(!m_selectPopup); 548 ASSERT(!m_selectPopup);
553 #if ENABLE(PAGE_POPUP)
554 ASSERT(!m_pagePopup); 549 ASSERT(!m_pagePopup);
555 #endif
556 } 550 }
557 551
558 m_lastMouseDownPoint = WebPoint(event.x, event.y); 552 m_lastMouseDownPoint = WebPoint(event.x, event.y);
559 553
560 if (event.button == WebMouseEvent::ButtonLeft) { 554 if (event.button == WebMouseEvent::ButtonLeft) {
561 IntPoint point(event.x, event.y); 555 IntPoint point(event.x, event.y);
562 point = m_page->mainFrame()->view()->windowToContents(point); 556 point = m_page->mainFrame()->view()->windowToContents(point);
563 HitTestResult result(m_page->mainFrame()->eventHandler()->hitTestResultA tPoint(point)); 557 HitTestResult result(m_page->mainFrame()->eventHandler()->hitTestResultA tPoint(point));
564 Node* hitNode = result.innerNonSharedNode(); 558 Node* hitNode = result.innerNonSharedNode();
565 559
566 // Take capture on a mouse down on a plugin so we can send it mouse even ts. 560 // Take capture on a mouse down on a plugin so we can send it mouse even ts.
567 if (hitNode && hitNode->renderer() && hitNode->renderer()->isEmbeddedObj ect()) { 561 if (hitNode && hitNode->renderer() && hitNode->renderer()->isEmbeddedObj ect()) {
568 m_mouseCaptureNode = hitNode; 562 m_mouseCaptureNode = hitNode;
569 TRACE_EVENT_ASYNC_BEGIN0("webkit", "capturing mouse", this); 563 TRACE_EVENT_ASYNC_BEGIN0("webkit", "capturing mouse", this);
570 } 564 }
571 } 565 }
572 566
573 PageWidgetEventHandler::handleMouseDown(mainFrame, event); 567 PageWidgetEventHandler::handleMouseDown(mainFrame, event);
574 568
575 if (m_selectPopup && m_selectPopup == selectPopup) { 569 if (m_selectPopup && m_selectPopup == selectPopup) {
576 // That click triggered a select popup which is the same as the one that 570 // That click triggered a select popup which is the same as the one that
577 // was showing before the click. It means the user clicked the select 571 // was showing before the click. It means the user clicked the select
578 // while the popup was showing, and as a result we first closed then 572 // while the popup was showing, and as a result we first closed then
579 // immediately reopened the select popup. It needs to be closed. 573 // immediately reopened the select popup. It needs to be closed.
580 hideSelectPopup(); 574 hideSelectPopup();
581 } 575 }
582 576
583 #if ENABLE(PAGE_POPUP)
584 if (m_pagePopup && pagePopup && m_pagePopup->hasSamePopupClient(pagePopup.ge t())) { 577 if (m_pagePopup && pagePopup && m_pagePopup->hasSamePopupClient(pagePopup.ge t())) {
585 // That click triggered a page popup that is the same as the one we just closed. 578 // That click triggered a page popup that is the same as the one we just closed.
586 // It needs to be closed. 579 // It needs to be closed.
587 closePagePopup(m_pagePopup.get()); 580 closePagePopup(m_pagePopup.get());
588 } 581 }
589 #endif
590 582
591 // Dispatch the contextmenu event regardless of if the click was swallowed. 583 // Dispatch the contextmenu event regardless of if the click was swallowed.
592 // On Windows, we handle it on mouse up, not down. 584 // On Windows, we handle it on mouse up, not down.
593 #if OS(DARWIN) 585 #if OS(DARWIN)
594 if (event.button == WebMouseEvent::ButtonRight 586 if (event.button == WebMouseEvent::ButtonRight
595 || (event.button == WebMouseEvent::ButtonLeft 587 || (event.button == WebMouseEvent::ButtonLeft
596 && event.modifiers & WebMouseEvent::ControlKey)) 588 && event.modifiers & WebMouseEvent::ControlKey))
597 mouseContextMenu(event); 589 mouseContextMenu(event);
598 #elif OS(UNIX) 590 #elif OS(UNIX)
599 if (event.button == WebMouseEvent::ButtonRight) 591 if (event.button == WebMouseEvent::ButtonRight)
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 // The m_suppressNextKeypressEvent is set if the KeyDown is handled by 932 // The m_suppressNextKeypressEvent is set if the KeyDown is handled by
941 // Webkit. A keyDown event is typically associated with a keyPress(char) 933 // 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 934 // event and a keyUp event. We reset this flag here as this is a new keyDown
943 // event. 935 // event.
944 m_suppressNextKeypressEvent = false; 936 m_suppressNextKeypressEvent = false;
945 937
946 // If there is a select popup, it should be the one processing the event, 938 // If there is a select popup, it should be the one processing the event,
947 // not the page. 939 // not the page.
948 if (m_selectPopup) 940 if (m_selectPopup)
949 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event) ); 941 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event) );
950 #if ENABLE(PAGE_POPUP)
951 if (m_pagePopup) { 942 if (m_pagePopup) {
952 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); 943 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event));
953 // We need to ignore the next Char event after this otherwise pressing 944 // We need to ignore the next Char event after this otherwise pressing
954 // enter when selecting an item in the popup will go to the page. 945 // enter when selecting an item in the popup will go to the page.
955 if (WebInputEvent::RawKeyDown == event.type) 946 if (WebInputEvent::RawKeyDown == event.type)
956 m_suppressNextKeypressEvent = true; 947 m_suppressNextKeypressEvent = true;
957 return true; 948 return true;
958 } 949 }
959 #endif
960 950
961 // Give Autocomplete a chance to consume the key events it is interested in. 951 // Give Autocomplete a chance to consume the key events it is interested in.
962 if (autocompleteHandleKeyEvent(event)) 952 if (autocompleteHandleKeyEvent(event))
963 return true; 953 return true;
964 954
965 RefPtr<Frame> frame = focusedWebCoreFrame(); 955 RefPtr<Frame> frame = focusedWebCoreFrame();
966 if (!frame) 956 if (!frame)
967 return false; 957 return false;
968 958
969 EventHandler* handler = frame->eventHandler(); 959 EventHandler* handler = frame->eventHandler();
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 // handled by Webkit. A keyDown event is typically associated with a 1052 // handled by Webkit. A keyDown event is typically associated with a
1063 // keyPress(char) event and a keyUp event. We reset this flag here as it 1053 // keyPress(char) event and a keyUp event. We reset this flag here as it
1064 // only applies to the current keyPress event. 1054 // only applies to the current keyPress event.
1065 bool suppress = m_suppressNextKeypressEvent; 1055 bool suppress = m_suppressNextKeypressEvent;
1066 m_suppressNextKeypressEvent = false; 1056 m_suppressNextKeypressEvent = false;
1067 1057
1068 // If there is a select popup, it should be the one processing the event, 1058 // If there is a select popup, it should be the one processing the event,
1069 // not the page. 1059 // not the page.
1070 if (m_selectPopup) 1060 if (m_selectPopup)
1071 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event) ); 1061 return m_selectPopup->handleKeyEvent(PlatformKeyboardEventBuilder(event) );
1072 #if ENABLE(PAGE_POPUP)
1073 if (m_pagePopup) 1062 if (m_pagePopup)
1074 return m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); 1063 return m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event));
1075 #endif
1076 1064
1077 Frame* frame = focusedWebCoreFrame(); 1065 Frame* frame = focusedWebCoreFrame();
1078 if (!frame) 1066 if (!frame)
1079 return suppress; 1067 return suppress;
1080 1068
1081 EventHandler* handler = frame->eventHandler(); 1069 EventHandler* handler = frame->eventHandler();
1082 if (!handler) 1070 if (!handler)
1083 return suppress || keyEventDefault(event); 1071 return suppress || keyEventDefault(event);
1084 1072
1085 PlatformKeyboardEventBuilder evt(event); 1073 PlatformKeyboardEventBuilder evt(event);
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
1514 } 1502 }
1515 1503
1516 void WebViewImpl::popupClosed(WebCore::PopupContainer* popupContainer) 1504 void WebViewImpl::popupClosed(WebCore::PopupContainer* popupContainer)
1517 { 1505 {
1518 if (popupContainer->popupType() == WebCore::PopupContainer::Select) { 1506 if (popupContainer->popupType() == WebCore::PopupContainer::Select) {
1519 ASSERT(m_selectPopup); 1507 ASSERT(m_selectPopup);
1520 m_selectPopup = 0; 1508 m_selectPopup = 0;
1521 } 1509 }
1522 } 1510 }
1523 1511
1524 #if ENABLE(PAGE_POPUP)
1525 PagePopup* WebViewImpl::openPagePopup(PagePopupClient* client, const IntRect& or iginBoundsInRootView) 1512 PagePopup* WebViewImpl::openPagePopup(PagePopupClient* client, const IntRect& or iginBoundsInRootView)
1526 { 1513 {
1527 ASSERT(client); 1514 ASSERT(client);
1528 if (hasOpenedPopup()) 1515 if (hasOpenedPopup())
1529 hidePopups(); 1516 hidePopups();
1530 ASSERT(!m_pagePopup); 1517 ASSERT(!m_pagePopup);
1531 1518
1532 WebWidget* popupWidget = m_client->createPopupMenu(WebPopupTypePage); 1519 WebWidget* popupWidget = m_client->createPopupMenu(WebPopupTypePage);
1533 ASSERT(popupWidget); 1520 ASSERT(popupWidget);
1534 m_pagePopup = static_cast<WebPagePopupImpl*>(popupWidget); 1521 m_pagePopup = static_cast<WebPagePopupImpl*>(popupWidget);
1535 if (!m_pagePopup->initialize(this, client, originBoundsInRootView)) { 1522 if (!m_pagePopup->initialize(this, client, originBoundsInRootView)) {
1536 m_pagePopup->closePopup(); 1523 m_pagePopup->closePopup();
1537 m_pagePopup = 0; 1524 m_pagePopup = 0;
1538 } 1525 }
1539 return m_pagePopup.get(); 1526 return m_pagePopup.get();
1540 } 1527 }
1541 1528
1542 void WebViewImpl::closePagePopup(PagePopup* popup) 1529 void WebViewImpl::closePagePopup(PagePopup* popup)
1543 { 1530 {
1544 ASSERT(popup); 1531 ASSERT(popup);
1545 WebPagePopupImpl* popupImpl = static_cast<WebPagePopupImpl*>(popup); 1532 WebPagePopupImpl* popupImpl = static_cast<WebPagePopupImpl*>(popup);
1546 ASSERT(m_pagePopup.get() == popupImpl); 1533 ASSERT(m_pagePopup.get() == popupImpl);
1547 if (m_pagePopup.get() != popupImpl) 1534 if (m_pagePopup.get() != popupImpl)
1548 return; 1535 return;
1549 m_pagePopup->closePopup(); 1536 m_pagePopup->closePopup();
1550 m_pagePopup = 0; 1537 m_pagePopup = 0;
1551 } 1538 }
1552 #endif
1553 1539
1554 void WebViewImpl::hideAutofillPopup() 1540 void WebViewImpl::hideAutofillPopup()
1555 { 1541 {
1556 if (m_autofillPopupShowing) { 1542 if (m_autofillPopupShowing) {
1557 m_autofillPopup->hidePopup(); 1543 m_autofillPopup->hidePopup();
1558 m_autofillPopupShowing = false; 1544 m_autofillPopupShowing = false;
1559 } 1545 }
1560 } 1546 }
1561 1547
1562 WebHelperPluginImpl* WebViewImpl::createHelperPlugin(const String& pluginType, c onst WebDocument& hostDocument) 1548 WebHelperPluginImpl* WebViewImpl::createHelperPlugin(const String& pluginType, c onst WebDocument& hostDocument)
(...skipping 1943 matching lines...) Expand 10 before | Expand all | Expand 10 after
3506 } else { 3492 } else {
3507 m_autofillPopupShowing = true; 3493 m_autofillPopupShowing = true;
3508 m_autofillPopup->showInRect(focusedNode->pixelSnappedBoundingBox(), focu sedNode->ownerDocument()->view(), 0); 3494 m_autofillPopup->showInRect(focusedNode->pixelSnappedBoundingBox(), focu sedNode->ownerDocument()->view(), 0);
3509 } 3495 }
3510 } 3496 }
3511 3497
3512 void WebViewImpl::hidePopups() 3498 void WebViewImpl::hidePopups()
3513 { 3499 {
3514 hideSelectPopup(); 3500 hideSelectPopup();
3515 hideAutofillPopup(); 3501 hideAutofillPopup();
3516 #if ENABLE(PAGE_POPUP)
3517 if (m_pagePopup) 3502 if (m_pagePopup)
3518 closePagePopup(m_pagePopup.get()); 3503 closePagePopup(m_pagePopup.get());
3519 #endif
3520 } 3504 }
3521 3505
3522 void WebViewImpl::performCustomContextMenuAction(unsigned action) 3506 void WebViewImpl::performCustomContextMenuAction(unsigned action)
3523 { 3507 {
3524 if (!m_page) 3508 if (!m_page)
3525 return; 3509 return;
3526 ContextMenu* menu = m_page->contextMenuController()->contextMenu(); 3510 ContextMenu* menu = m_page->contextMenuController()->contextMenu();
3527 if (!menu) 3511 if (!menu)
3528 return; 3512 return;
3529 const ContextMenuItem* item = menu->itemWithAction(static_cast<ContextMenuAc tion>(ContextMenuItemBaseCustomTag + action)); 3513 const ContextMenuItem* item = menu->itemWithAction(static_cast<ContextMenuAc tion>(ContextMenuItemBaseCustomTag + action));
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
4210 } 4194 }
4211 4195
4212 bool WebViewImpl::shouldDisableDesktopWorkarounds() 4196 bool WebViewImpl::shouldDisableDesktopWorkarounds()
4213 { 4197 {
4214 ViewportArguments arguments = mainFrameImpl()->frame()->document()->viewport Arguments(); 4198 ViewportArguments arguments = mainFrameImpl()->frame()->document()->viewport Arguments();
4215 return arguments.width == ViewportArguments::ValueDeviceWidth || !arguments. userZoom 4199 return arguments.width == ViewportArguments::ValueDeviceWidth || !arguments. userZoom
4216 || (arguments.minZoom == arguments.maxZoom && arguments.minZoom != Viewp ortArguments::ValueAuto); 4200 || (arguments.minZoom == arguments.maxZoom && arguments.minZoom != Viewp ortArguments::ValueAuto);
4217 } 4201 }
4218 4202
4219 } // namespace WebKit 4203 } // namespace WebKit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698