[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

jam at chromium.org jam at chromium.org
Wed Dec 22 14:14:59 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 9ec2405733c12ce1069365547237b9c85518387f
Author: jam at chromium.org <jam at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Oct 5 22:45:52 2010 +0000

    2010-10-05  John Abd-El-Malek  <jam at 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):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69154 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 0126336..01ccbd6 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,18 @@
+2010-10-05  John Abd-El-Malek  <jam at 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):
+
 2010-09-22  Lucas De Marchi  <lucas.demarchi at profusion.mobi>
 
         Unreviewed, EFL build fix.
diff --git a/WebKit/chromium/public/WebPlugin.h b/WebKit/chromium/public/WebPlugin.h
index b9f0e11..17e29e2 100644
--- a/WebKit/chromium/public/WebPlugin.h
+++ b/WebKit/chromium/public/WebPlugin.h
@@ -33,6 +33,7 @@
 
 #include "WebCanvas.h"
 #include "WebString.h"
+#include "WebURL.h"
 
 struct NPObject;
 
@@ -42,10 +43,10 @@ class WebDataSource;
 class WebFrame;
 class WebInputEvent;
 class WebPluginContainer;
-class WebURL;
 class WebURLResponse;
 struct WebCursorInfo;
 struct WebPluginParams;
+struct WebPoint;
 struct WebRect;
 struct WebURLError;
 template <typename T> class WebVector;
@@ -98,6 +99,10 @@ public:
     virtual WebString selectionAsText() const { return WebString(); }
     virtual WebString selectionAsMarkup() const { return WebString(); }
 
+    // If the given position is over a link, returns the absolute url.
+    // Otherwise an empty url is returned.
+    virtual WebURL linkAtPosition(const WebPoint& position) const { return WebURL(); }
+
     // Used for zooming of full page plugins.
     virtual void setZoomLevel(double level, bool textOnly) { }
 
diff --git a/WebKit/chromium/public/WebView.h b/WebKit/chromium/public/WebView.h
index c3192e9..fdd4729 100644
--- a/WebKit/chromium/public/WebView.h
+++ b/WebKit/chromium/public/WebView.h
@@ -36,9 +36,6 @@
 #include "WebVector.h"
 #include "WebWidget.h"
 
-// FIXME(jam): take this out after Chrome is updated
-#define ZOOM_LEVEL_IS_DOUBLE
-
 namespace WebKit {
 
 class WebAccessibilityObject;
diff --git a/WebKit/chromium/src/ChromeClientImpl.cpp b/WebKit/chromium/src/ChromeClientImpl.cpp
index db7788d..fa169a9 100644
--- a/WebKit/chromium/src/ChromeClientImpl.cpp
+++ b/WebKit/chromium/src/ChromeClientImpl.cpp
@@ -55,6 +55,7 @@
 #include "NotificationPresenterImpl.h"
 #include "Page.h"
 #include "PopupMenuChromium.h"
+#include "RenderWidget.h"
 #include "ScriptController.h"
 #include "SearchPopupMenuChromium.h"
 #include "SecurityOrigin.h"
@@ -71,6 +72,8 @@
 #include "WebInputEvent.h"
 #include "WebKit.h"
 #include "WebNode.h"
+#include "WebPlugin.h"
+#include "WebPluginContainerImpl.h"
 #include "WebPopupMenuImpl.h"
 #include "WebPopupMenuInfo.h"
 #include "WebPopupType.h"
@@ -603,11 +606,24 @@ void ChromeClientImpl::mouseDidMoveOverElement(
 {
     if (!m_webView->client())
         return;
+
+    WebURL url;
     // Find out if the mouse is over a link, and if so, let our UI know...
     if (result.isLiveLink() && !result.absoluteLinkURL().string().isEmpty())
-        m_webView->client()->setMouseOverURL(result.absoluteLinkURL());
-    else
-        m_webView->client()->setMouseOverURL(WebURL());
+        url = result.absoluteLinkURL();
+    else if (result.innerNonSharedNode()->hasTagName(HTMLNames::objectTag)
+             || result.innerNonSharedNode()->hasTagName(HTMLNames::embedTag)) {
+        RenderObject* object = result.innerNonSharedNode()->renderer();
+        if (object && object->isWidget()) {
+            Widget* widget = toRenderWidget(object)->widget();
+            if (widget) {
+                WebPluginContainerImpl* plugin = static_cast<WebPluginContainerImpl*>(widget);
+                url = plugin->plugin()->linkAtPosition(result.point());
+            }
+        }
+    }
+
+    m_webView->client()->setMouseOverURL(url);
 }
 
 void ChromeClientImpl::setToolTip(const String& tooltipText, TextDirection dir)
diff --git a/WebKit/chromium/src/ContextMenuClientImpl.cpp b/WebKit/chromium/src/ContextMenuClientImpl.cpp
index ef611e1..aa63d6a 100644
--- a/WebKit/chromium/src/ContextMenuClientImpl.cpp
+++ b/WebKit/chromium/src/ContextMenuClientImpl.cpp
@@ -216,6 +216,7 @@ PlatformMenuDescription ContextMenuClientImpl::getCustomMenuFromDefaultItems(
                     data.editFlags |= WebContextMenuData::CanCopy;
                 }
                 data.editFlags &= ~WebContextMenuData::CanTranslate;
+                data.linkURL = plugin->plugin()->linkAtPosition(data.mousePosition);
             }
         }
     }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list