[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
beidson at apple.com
beidson at apple.com
Wed Dec 22 16:14:21 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit a02a1b15db1017444fca6f519c61611b46bcf5f2
Author: beidson at apple.com <beidson at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Nov 19 23:41:02 2010 +0000
<rdar://problem/8613727> and https://bugs.webkit.org/show_bug.cgi?id=49836
Add WebKit2 API relevant to customization of context menus
Reviewed by Darin Adler.
WebCore:
* WebCore.exp.in:
WebKit2:
Most of this is just exposing already-existing concepts in API.
* Shared/API/c/WKURLRequest.cpp:
(WKURLRequestCreateWithWKURL):
* Shared/API/c/WKURLRequest.h:
* Shared/WebURLRequest.cpp:
(WebKit::WebURLRequest::create):
* Shared/WebURLRequest.h:
* WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:
(WKBundleHitTestResultCopyAbsoluteImageURL):
(WKBundleHitTestResultCopyAbsoluteMediaURL):
(WKBundleHitTestResultGetImageRect):
(WKBundleHitTestResultGetIsSelected):
* WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h:
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageHasLocalDataForURL):
(WKBundlePageCanHandleRequest):
* WebProcess/InjectedBundle/API/c/WKBundlePage.h:
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
(WebKit::InjectedBundleHitTestResult::absoluteImageURL):
(WebKit::InjectedBundleHitTestResult::absoluteMediaURL):
(WebKit::InjectedBundleHitTestResult::imageRect):
(WebKit::InjectedBundleHitTestResult::isSelected):
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
* WebProcess/WebPage/WebContextMenu.cpp:
(WebKit::WebContextMenu::show):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::hasLocalDataForURL):
(WebKit::WebPage::canHandleRequest):
* WebProcess/WebPage/qt/WebPageQt.cpp:
(WebKit::WebPage::hasLocalDataForURL): Stubbed for now.
(WebKit::WebPage::canHandleRequest): Ditto.
* WebProcess/WebPage/win/WebPageWin.cpp:
(WebKit::WebPage::hasLocalDataForURL): Ditto.
(WebKit::WebPage::canHandleRequest): Ditto.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 15d4c2c..9c7a55c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,12 @@
+2010-11-19 Brady Eidson <beidson at apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/8613727> and https://bugs.webkit.org/show_bug.cgi?id=49836
+ Add WebKit2 API relevant to customization of context menus
+
+ * WebCore.exp.in:
+
2010-11-19 Michael Saboff <msaboff at apple.com>
Reviewed by Sam Weinig.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index e418ede..3246e0a 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -1362,6 +1362,7 @@ __ZN7WebCore16ScriptController29cleanupScriptObjectsForPluginEPv
__ZN7WebCore17HTMLPlugInElement11getNPObjectEv
__ZNK7WebCore12RenderObject4viewEv
__ZNK7WebCore14SecurityOrigin9canAccessEPKS0_
+__ZNK7WebCore4KURL10protocolIsEPKc
__ZNK7WebCore4KURL7hasPathEv
__ZNK7WebCore4KURL9prettyURLEv
#endif
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index d68cea5..06b956e 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,53 @@
+2010-11-19 Brady Eidson <beidson at apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/8613727> and https://bugs.webkit.org/show_bug.cgi?id=49836
+ Add WebKit2 API relevant to customization of context menus
+
+ Most of this is just exposing already-existing concepts in API.
+
+ * Shared/API/c/WKURLRequest.cpp:
+ (WKURLRequestCreateWithWKURL):
+ * Shared/API/c/WKURLRequest.h:
+
+ * Shared/WebURLRequest.cpp:
+ (WebKit::WebURLRequest::create):
+ * Shared/WebURLRequest.h:
+
+ * WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:
+ (WKBundleHitTestResultCopyAbsoluteImageURL):
+ (WKBundleHitTestResultCopyAbsoluteMediaURL):
+ (WKBundleHitTestResultGetImageRect):
+ (WKBundleHitTestResultGetIsSelected):
+ * WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h:
+
+ * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
+ (WKBundlePageHasLocalDataForURL):
+ (WKBundlePageCanHandleRequest):
+ * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
+
+ * WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
+ (WebKit::InjectedBundleHitTestResult::absoluteImageURL):
+ (WebKit::InjectedBundleHitTestResult::absoluteMediaURL):
+ (WebKit::InjectedBundleHitTestResult::imageRect):
+ (WebKit::InjectedBundleHitTestResult::isSelected):
+ * WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:
+
+ * WebProcess/WebPage/WebContextMenu.cpp:
+ (WebKit::WebContextMenu::show):
+
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/mac/WebPageMac.mm:
+ (WebKit::WebPage::hasLocalDataForURL):
+ (WebKit::WebPage::canHandleRequest):
+ * WebProcess/WebPage/qt/WebPageQt.cpp:
+ (WebKit::WebPage::hasLocalDataForURL): Stubbed for now.
+ (WebKit::WebPage::canHandleRequest): Ditto.
+ * WebProcess/WebPage/win/WebPageWin.cpp:
+ (WebKit::WebPage::hasLocalDataForURL): Ditto.
+ (WebKit::WebPage::canHandleRequest): Ditto.
+
2010-11-19 Darin Adler <darin at apple.com>
Reviewed by Sam Weinig.
diff --git a/WebKit2/Shared/API/c/WKURLRequest.cpp b/WebKit2/Shared/API/c/WKURLRequest.cpp
index 060627b..27d45b1 100644
--- a/WebKit2/Shared/API/c/WKURLRequest.cpp
+++ b/WebKit2/Shared/API/c/WKURLRequest.cpp
@@ -34,3 +34,8 @@ WKTypeID WKURLRequestGetTypeID()
{
return toAPI(WebURLRequest::APIType);
}
+
+WKURLRequestRef WKURLRequestCreateWithWKURL(WKURLRef url)
+{
+ return toAPI(WebURLRequest::create(toImpl(url)->string()).leakRef());
+}
diff --git a/WebKit2/Shared/API/c/WKURLRequest.h b/WebKit2/Shared/API/c/WKURLRequest.h
index cb9d003..d78968d 100644
--- a/WebKit2/Shared/API/c/WKURLRequest.h
+++ b/WebKit2/Shared/API/c/WKURLRequest.h
@@ -34,6 +34,8 @@ extern "C" {
WK_EXPORT WKTypeID WKURLRequestGetTypeID();
+WK_EXPORT WKURLRequestRef WKURLRequestCreateWithWKURL(WKURLRef);
+
#ifdef __cplusplus
}
#endif
diff --git a/WebKit2/Shared/WebURLRequest.cpp b/WebKit2/Shared/WebURLRequest.cpp
index c0e3433..1e255c2 100644
--- a/WebKit2/Shared/WebURLRequest.cpp
+++ b/WebKit2/Shared/WebURLRequest.cpp
@@ -13,6 +13,11 @@ using namespace WebCore;
namespace WebKit {
+PassRefPtr<WebURLRequest> WebURLRequest::create(const KURL& url)
+{
+ return adoptRef(new WebURLRequest(ResourceRequest(url)));
+}
+
WebURLRequest::WebURLRequest(const ResourceRequest& request)
: m_request(request)
{
diff --git a/WebKit2/Shared/WebURLRequest.h b/WebKit2/Shared/WebURLRequest.h
index b21bca1..6cb5ba8 100644
--- a/WebKit2/Shared/WebURLRequest.h
+++ b/WebKit2/Shared/WebURLRequest.h
@@ -44,6 +44,8 @@ class WebURLRequest : public APIObject {
public:
static const Type APIType = TypeURLRequest;
+ static PassRefPtr<WebURLRequest> create(const WebCore::KURL&);
+
static PassRefPtr<WebURLRequest> create(const WebCore::ResourceRequest& request)
{
return adoptRef(new WebURLRequest(request));
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp
index 78544e5..ca55fa9 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp
@@ -53,7 +53,28 @@ WKBundleFrameRef WKBundleHitTestResultGetTargetFrame(WKBundleHitTestResultRef hi
return toAPI(toImpl(hitTestResultRef)->targetFrame());
}
+WKURLRef WKBundleHitTestResultCopyAbsoluteImageURL(WKBundleHitTestResultRef hitTestResultRef)
+{
+ return toCopiedURLAPI(toImpl(hitTestResultRef)->absoluteImageURL());
+}
+
WKURLRef WKBundleHitTestResultCopyAbsoluteLinkURL(WKBundleHitTestResultRef hitTestResultRef)
{
return toCopiedURLAPI(toImpl(hitTestResultRef)->absoluteLinkURL());
}
+
+WKURLRef WKBundleHitTestResultCopyAbsoluteMediaURL(WKBundleHitTestResultRef hitTestResultRef)
+{
+ return toCopiedURLAPI(toImpl(hitTestResultRef)->absoluteMediaURL());
+}
+
+WKRect WKBundleHitTestResultGetImageRect(WKBundleHitTestResultRef hitTestResultRef)
+{
+ return toAPI(toImpl(hitTestResultRef)->imageRect());
+}
+
+bool WKBundleHitTestResultGetIsSelected(WKBundleHitTestResultRef hitTestResultRef)
+{
+ return toImpl(hitTestResultRef)->isSelected();
+
+}
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h
index 88da5f5..f22da68 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h
@@ -27,6 +27,7 @@
#define WKBundleHitTestResult_h
#include <WebKit2/WKBase.h>
+#include <WebKit2/WKGeometry.h>
#ifdef __cplusplus
extern "C" {
@@ -35,9 +36,16 @@ extern "C" {
WK_EXPORT WKTypeID WKBundleHitTestResultGetTypeID();
WK_EXPORT WKBundleNodeHandleRef WKBundleHitTestResultGetNodeHandle(WKBundleHitTestResultRef hitTestResult);
+
WK_EXPORT WKBundleFrameRef WKBundleHitTestResultGetFrame(WKBundleHitTestResultRef hitTestResult);
WK_EXPORT WKBundleFrameRef WKBundleHitTestResultGetTargetFrame(WKBundleHitTestResultRef hitTestResult);
+
+WK_EXPORT WKURLRef WKBundleHitTestResultCopyAbsoluteImageURL(WKBundleHitTestResultRef hitTestResult);
WK_EXPORT WKURLRef WKBundleHitTestResultCopyAbsoluteLinkURL(WKBundleHitTestResultRef hitTestResult);
+WK_EXPORT WKURLRef WKBundleHitTestResultCopyAbsoluteMediaURL(WKBundleHitTestResultRef hitTestResult);
+
+WK_EXPORT WKRect WKBundleHitTestResultGetImageRect(WKBundleHitTestResultRef hitTestResult);
+WK_EXPORT bool WKBundleHitTestResultGetIsSelected(WKBundleHitTestResultRef hitTestResult);
#ifdef __cplusplus
}
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
index 13fb09f..cd8f158 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
@@ -27,9 +27,13 @@
#include "WKBundlePagePrivate.h"
#include "InjectedBundleBackForwardList.h"
+#include "WebPage.h"
+#include "WebURL.h"
+#include "WebURLRequest.h"
#include "WKAPICast.h"
#include "WKBundleAPICast.h"
-#include "WebPage.h"
+
+#include <WebCore/KURL.h>
using namespace WebKit;
@@ -142,3 +146,13 @@ void WKBundlePageUninstallPageOverlay(WKBundlePageRef pageRef, WKBundlePageOverl
{
toImpl(pageRef)->uninstallPageOverlay(toImpl(pageOverlayRef));
}
+
+bool WKBundlePageHasLocalDataForURL(WKBundlePageRef pageRef, WKURLRef urlRef)
+{
+ return toImpl(pageRef)->hasLocalDataForURL(WebCore::KURL(WebCore::KURL(), toImpl(urlRef)->string()));
+}
+
+bool WKBundlePageCanHandleRequest(WKURLRequestRef requestRef)
+{
+ return WebPage::canHandleRequest(toImpl(requestRef)->resourceRequest());
+}
diff --git a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
index aa58930..d507df2 100644
--- a/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
+++ b/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
@@ -206,6 +206,9 @@ WK_EXPORT WKBundleBackForwardListRef WKBundlePageGetBackForwardList(WKBundlePage
WK_EXPORT void WKBundlePageInstallPageOverlay(WKBundlePageRef page, WKBundlePageOverlayRef pageOverlay);
WK_EXPORT void WKBundlePageUninstallPageOverlay(WKBundlePageRef page, WKBundlePageOverlayRef pageOverlay);
+WK_EXPORT bool WKBundlePageHasLocalDataForURL(WKBundlePageRef page, WKURLRef url);
+WK_EXPORT bool WKBundlePageCanHandleRequest(WKURLRequestRef request);
+
#ifdef __cplusplus
}
#endif
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp b/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp
index 98629cd..d60fff9 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp
@@ -74,9 +74,29 @@ WebFrame* InjectedBundleHitTestResult::targetFrame() const
return static_cast<WebFrameLoaderClient*>(frame->loader()->client())->webFrame();
}
+String InjectedBundleHitTestResult::absoluteImageURL() const
+{
+ return m_hitTestResult.absoluteImageURL().string();
+}
+
String InjectedBundleHitTestResult::absoluteLinkURL() const
{
return m_hitTestResult.absoluteLinkURL().string();
}
+String InjectedBundleHitTestResult::absoluteMediaURL() const
+{
+ return m_hitTestResult.absoluteMediaURL().string();
+}
+
+WebCore::IntRect InjectedBundleHitTestResult::imageRect() const
+{
+ return m_hitTestResult.imageRect();
+}
+
+bool InjectedBundleHitTestResult::isSelected() const
+{
+ return m_hitTestResult.isSelected();
+}
+
} // WebKit
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h b/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h
index eac9e78..8b82ce7 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundleHitTestResult.h
@@ -48,7 +48,14 @@ public:
PassRefPtr<InjectedBundleNodeHandle> nodeHandle() const;
WebFrame* frame() const;
WebFrame* targetFrame() const;
+
+ String absoluteImageURL() const;
String absoluteLinkURL() const;
+ String absoluteMediaURL() const;
+
+ WebCore::IntRect imageRect() const;
+
+ bool isSelected() const;
private:
explicit InjectedBundleHitTestResult(const WebCore::HitTestResult& hitTestResult)
diff --git a/WebKit2/WebProcess/WebPage/WebContextMenu.cpp b/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
index 6ce928e..8418905 100644
--- a/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
+++ b/WebKit2/WebProcess/WebPage/WebContextMenu.cpp
@@ -21,6 +21,7 @@
#include "WebContextMenu.h"
+#include "InjectedBundleHitTestResult.h"
#include "InjectedBundleUserMessageCoders.h"
#include "WebCoreArgumentCoders.h"
#include "WebPage.h"
@@ -64,7 +65,8 @@ void WebContextMenu::show()
Vector<WebContextMenuItemData> proposedMenu = kitItems(coreItems, menu);
Vector<WebContextMenuItemData> newMenu;
RefPtr<APIObject> userData;
- if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, 0, proposedMenu, newMenu, userData))
+ RefPtr<InjectedBundleHitTestResult> hitTestResult = InjectedBundleHitTestResult::create(menu->hitTestResult());
+ if (m_page->injectedBundleContextMenuClient().getCustomMenuFromDefaultItems(m_page, hitTestResult.get(), proposedMenu, newMenu, userData))
proposedMenu = newMenu;
// Notify the UIProcess.
diff --git a/WebKit2/WebProcess/WebPage/WebPage.h b/WebKit2/WebProcess/WebPage/WebPage.h
index fb05ebf..2ec1d42 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.h
+++ b/WebKit2/WebProcess/WebPage/WebPage.h
@@ -203,6 +203,10 @@ public:
#endif
WebContextMenu* contextMenu();
+
+ bool hasLocalDataForURL(const WebCore::KURL&);
+
+ static bool canHandleRequest(const WebCore::ResourceRequest&);
class SandboxExtensionTracker {
public:
diff --git a/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm b/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm
index 90c088b..2460266 100644
--- a/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm
+++ b/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm
@@ -29,6 +29,8 @@
#include "WebEvent.h"
#include "WebPageProxyMessages.h"
#include "WebProcess.h"
+#include <WebCore/ArchiveResource.h>
+#include <WebCore/DocumentLoader.h>
#include <WebCore/FocusController.h>
#include <WebCore/Frame.h>
#include <WebCore/KeyboardEvent.h>
@@ -191,4 +193,31 @@ bool WebPage::performDefaultBehaviorForKeyEvent(const WebKeyboardEvent& keyboard
return true;
}
+bool WebPage::hasLocalDataForURL(const WebCore::KURL& url)
+{
+ if (url.isLocalFile())
+ return true;
+
+ FrameLoader* frameLoader = m_page->mainFrame()->loader();
+ DocumentLoader* documentLoader = frameLoader ? frameLoader->documentLoader() : 0;
+ if (documentLoader && documentLoader->subresource(url))
+ return true;
+
+ NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:url];
+ [request setValue:(NSString*)userAgent() forHTTPHeaderField:@"User-Agent"];
+ NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
+ [request release];
+
+ return cachedResponse;
+}
+
+bool WebPage::canHandleRequest(const WebCore::ResourceRequest& request)
+{
+ if ([NSURLConnection canHandleRequest:request.nsURLRequest()])
+ return YES;
+
+ // FIXME: Return true if this scheme is any one WebKit2 knows how to handle.
+ return request.url().protocolIs("applewebdata");
+}
+
} // namespace WebKit
diff --git a/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp b/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp
index 4d3bbe5..2562583 100644
--- a/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp
+++ b/WebKit2/WebProcess/WebPage/qt/WebPageQt.cpp
@@ -259,4 +259,16 @@ bool WebPage::performDefaultBehaviorForKeyEvent(const WebKeyboardEvent& keyboard
return true;
}
+bool WebPage::hasLocalDataForURL(const WebCore::KURL&)
+{
+ // FIXME: Implement
+ return false;
+}
+
+bool WebPage::canHandleRequest(const WebCore::ResourceRequest&)
+{
+ // FIXME: Implement
+ return true;
+}
+
} // namespace WebKit
diff --git a/WebKit2/WebProcess/WebPage/win/WebPageWin.cpp b/WebKit2/WebProcess/WebPage/win/WebPageWin.cpp
index 526474a..d0c9935 100644
--- a/WebKit2/WebProcess/WebPage/win/WebPageWin.cpp
+++ b/WebKit2/WebProcess/WebPage/win/WebPageWin.cpp
@@ -229,4 +229,16 @@ bool WebPage::performDefaultBehaviorForKeyEvent(const WebKeyboardEvent& keyboard
return true;
}
+bool WebPage::hasLocalDataForURL(const WebCore::KURL&)
+{
+ // FIXME <rdar://problem/8608754>: Implement
+ return false;
+}
+
+bool WebPage::canHandleRequest(const WebCore::ResourceRequest&)
+{
+ // FIXME <rdar://problem/8608754>: Implement
+ return true;
+}
+
} // namespace WebKit
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list