Changeset 69154 in webkit


Ignore:
Timestamp:
Oct 5, 2010 3:45:52 PM (14 years ago)
Author:
jam@chromium.org
Message:

2010-10-05 John Abd-El-Malek <jam@chromium.org>

Reviewed by Darin Fisher.

[chromium] Get the link from a plugin when creating a context menu
https://bugs.webkit.org/show_bug.cgi?id=47130

  • chromium/public/WebPlugin.h: (WebKit::WebPlugin::linkAtPosition):
  • chromium/public/WebView.h:
  • chromium/src/ChromeClientImpl.cpp: (WebKit::ChromeClientImpl::mouseDidMoveOverElement):
  • chromium/src/ContextMenuClientImpl.cpp: (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
Location:
trunk/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/ChangeLog

    r68044 r69154  
     12010-10-05  John Abd-El-Malek  <jam@chromium.org>
     2
     3        Reviewed by Darin Fisher.
     4
     5        [chromium] Get the link from a plugin when creating a context menu
     6        https://bugs.webkit.org/show_bug.cgi?id=47130
     7
     8        * chromium/public/WebPlugin.h:
     9        (WebKit::WebPlugin::linkAtPosition):
     10        * chromium/public/WebView.h:
     11        * chromium/src/ChromeClientImpl.cpp:
     12        (WebKit::ChromeClientImpl::mouseDidMoveOverElement):
     13        * chromium/src/ContextMenuClientImpl.cpp:
     14        (WebKit::ContextMenuClientImpl::getCustomMenuFromDefaultItems):
     15
    1162010-09-22  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
    217
  • trunk/WebKit/chromium/public/WebPlugin.h

    r68869 r69154  
    3434#include "WebCanvas.h"
    3535#include "WebString.h"
     36#include "WebURL.h"
    3637
    3738struct NPObject;
     
    4344class WebInputEvent;
    4445class WebPluginContainer;
    45 class WebURL;
    4646class WebURLResponse;
    4747struct WebCursorInfo;
    4848struct WebPluginParams;
     49struct WebPoint;
    4950struct WebRect;
    5051struct WebURLError;
     
    99100    virtual WebString selectionAsMarkup() const { return WebString(); }
    100101
     102    // If the given position is over a link, returns the absolute url.
     103    // Otherwise an empty url is returned.
     104    virtual WebURL linkAtPosition(const WebPoint& position) const { return WebURL(); }
     105
    101106    // Used for zooming of full page plugins.
    102107    virtual void setZoomLevel(double level, bool textOnly) { }
  • trunk/WebKit/chromium/public/WebView.h

    r68869 r69154  
    3737#include "WebWidget.h"
    3838
    39 // FIXME(jam): take this out after Chrome is updated
    40 #define ZOOM_LEVEL_IS_DOUBLE
    41 
    4239namespace WebKit {
    4340
  • trunk/WebKit/chromium/src/ChromeClientImpl.cpp

    r69053 r69154  
    5656#include "Page.h"
    5757#include "PopupMenuChromium.h"
     58#include "RenderWidget.h"
    5859#include "ScriptController.h"
    5960#include "SearchPopupMenuChromium.h"
     
    7273#include "WebKit.h"
    7374#include "WebNode.h"
     75#include "WebPlugin.h"
     76#include "WebPluginContainerImpl.h"
    7477#include "WebPopupMenuImpl.h"
    7578#include "WebPopupMenuInfo.h"
     
    604607    if (!m_webView->client())
    605608        return;
     609
     610    WebURL url;
    606611    // Find out if the mouse is over a link, and if so, let our UI know...
    607612    if (result.isLiveLink() && !result.absoluteLinkURL().string().isEmpty())
    608         m_webView->client()->setMouseOverURL(result.absoluteLinkURL());
    609     else
    610         m_webView->client()->setMouseOverURL(WebURL());
     613        url = result.absoluteLinkURL();
     614    else if (result.innerNonSharedNode()->hasTagName(HTMLNames::objectTag)
     615             || result.innerNonSharedNode()->hasTagName(HTMLNames::embedTag)) {
     616        RenderObject* object = result.innerNonSharedNode()->renderer();
     617        if (object && object->isWidget()) {
     618            Widget* widget = toRenderWidget(object)->widget();
     619            if (widget) {
     620                WebPluginContainerImpl* plugin = static_cast<WebPluginContainerImpl*>(widget);
     621                url = plugin->plugin()->linkAtPosition(result.point());
     622            }
     623        }
     624    }
     625
     626    m_webView->client()->setMouseOverURL(url);
    611627}
    612628
  • trunk/WebKit/chromium/src/ContextMenuClientImpl.cpp

    r67122 r69154  
    217217                }
    218218                data.editFlags &= ~WebContextMenuData::CanTranslate;
     219                data.linkURL = plugin->plugin()->linkAtPosition(data.mousePosition);
    219220            }
    220221        }
Note: See TracChangeset for help on using the changeset viewer.