[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