Modified: trunk/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.h (159832 => 159833)
--- trunk/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.h 2013-11-28 03:23:48 UTC (rev 159832)
+++ trunk/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.h 2013-11-28 04:34:08 UTC (rev 159833)
@@ -57,6 +57,7 @@
virtual void pageClosed() OVERRIDE;
virtual void preferencesDidChange() OVERRIDE;
virtual void toolTipChanged(const String&, const String&) OVERRIDE;
+ virtual bool decidePolicyForGeolocationPermissionRequest(WebFrameProxy&, WebSecurityOrigin&, GeolocationPermissionRequestProxy&) OVERRIDE;
virtual void didChangeContentSize(const WebCore::IntSize&) OVERRIDE;
virtual void setCursor(const WebCore::Cursor&) OVERRIDE;
virtual void setCursorHiddenUntilMouseMoves(bool) OVERRIDE;
Modified: trunk/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.mm (159832 => 159833)
--- trunk/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.mm 2013-11-28 03:23:48 UTC (rev 159832)
+++ trunk/Source/WebKit2/UIProcess/API/ios/PageClientImplIOS.mm 2013-11-28 04:34:08 UTC (rev 159833)
@@ -144,6 +144,12 @@
notImplemented();
}
+bool PageClientImpl::decidePolicyForGeolocationPermissionRequest(WebFrameProxy& frame, WebSecurityOrigin& origin, GeolocationPermissionRequestProxy& request)
+{
+ [m_view _decidePolicyForGeolocationRequestFromOrigin:origin frame:frame request:request];
+ return true;
+}
+
void PageClientImpl::didChangeContentSize(const IntSize& contentsSize)
{
[m_view _didChangeContentSize:contentsSize];
Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm (159832 => 159833)
--- trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm 2013-11-28 03:23:48 UTC (rev 159832)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKContentView.mm 2013-11-28 04:34:08 UTC (rev 159833)
@@ -33,9 +33,10 @@
#import "WKBrowsingContextControllerInternal.h"
#import "WKBrowsingContextGroupPrivate.h"
#import "WKGeolocationProviderIOS.h"
-#import "WKProcessGroupPrivate.h"
#import "WKInteractionView.h"
+#import "WKProcessGroupPrivate.h"
#import "WebContext.h"
+#import "WebFrameProxy.h"
#import "WebPageGroup.h"
#import "WebSystemInterface.h"
#import <QuartzCore/CALayerHost.h>
@@ -147,12 +148,9 @@
_page->didFinishZooming(scale);
}
-static void decidePolicyForGeolocationPermissionRequest(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef origin, WKGeolocationPermissionRequestRef permissionRequest, const void* clientInfo)
+- (void)_decidePolicyForGeolocationRequestFromOrigin:(WebSecurityOrigin&)origin frame:(WebFrameProxy&)frame request:(GeolocationPermissionRequestProxy&)permissionRequest
{
- WKContentView *view = reinterpret_cast<WKContentView *>(const_cast<void*>(clientInfo));
- ASSERT([view isKindOfClass:[WKContentView class]]);
-
- [[view->_processGroup _geolocationProvider] decidePolicyForGeolocationRequestFromOrigin:origin frame:frame request:permissionRequest window:[view window]];
+ [[_processGroup _geolocationProvider] decidePolicyForGeolocationRequestFromOrigin:toAPI(&origin) frame:toAPI(&frame) request:toAPI(&permissionRequest) window:[self window]];
}
- (void)_commonInitWithProcessGroup:(WKProcessGroup *)processGroup browsingContextGroup:(WKBrowsingContextGroup *)browsingContextGroup
@@ -174,58 +172,6 @@
_page->setIntrinsicDeviceScaleFactor([UIScreen mainScreen].scale);
_page->setUseFixedLayout(true);
- WKPageUIClient pageUIClient = {
- kWKPageUIClientCurrentVersion,
- self,
- 0, // createNewPage_deprecatedForUseWithV0
- 0, // showPage
- 0, // closeOtherPage
- 0, // takeFocus
- 0, // focus
- 0, // unfocus
- 0, // runJavaScriptAlert
- 0, // runJavaScriptConfirm
- 0, // runJavaScriptPrompt
- 0, // setStatusText
- 0, // mouseDidMoveOverElement_deprecatedForUseWithV0
- 0, // missingPluginButtonClicked
- 0, // didNotHandleKeyEvent
- 0, // didNotHandleWheelEvent
- 0, // toolbarsAreVisible
- 0, // setToolbarsAreVisible
- 0, // menuBarIsVisible
- 0, // setMenuBarIsVisible
- 0, // statusBarIsVisible
- 0, // setStatusBarIsVisible
- 0, // isResizable
- 0, // setIsResizable
- 0, // getWindowFrameOtherPage
- 0, // setWindowFrameOtherPage
- 0, // runBeforeUnloadConfirmPanel
- 0, // didDraw
- 0, // pageDidScroll
- 0, // exceededDatabaseQuota
- 0, // runOpenPanel
- decidePolicyForGeolocationPermissionRequest,
- 0, // headerHeight
- 0, // footerHeight
- 0, // drawHeader
- 0, // drawFooter
- 0, // printFrame
- 0, // runModal
- 0, // didCompleteRubberBandForMainFrame
- 0, // saveDataToFileInDownloadsFolder
- 0, // shouldInterruptJavaScript
- 0, // createOtherPage
- 0, // mouseDidMoveOverElement
- 0, // decidePolicyForNotificationPermissionRequest
- 0, // unavailablePluginButtonClicked
- 0, // showColorPicker
- 0, // hideColorPicker
- 0, // unavailablePluginButtonClicked
- };
- WKPageSetPageUIClient(toAPI(_page.get()), &pageUIClient);
-
_browsingContextController = adoptNS([[WKBrowsingContextController alloc] _initWithPageRef:toAPI(_page.get())]);
[_browsingContextController setLoadDelegateInternal:self];
Modified: trunk/Source/WebKit2/UIProcess/API/ios/WKContentViewInternal.h (159832 => 159833)
--- trunk/Source/WebKit2/UIProcess/API/ios/WKContentViewInternal.h 2013-11-28 03:23:48 UTC (rev 159832)
+++ trunk/Source/WebKit2/UIProcess/API/ios/WKContentViewInternal.h 2013-11-28 04:34:08 UTC (rev 159833)
@@ -37,7 +37,10 @@
namespace WebKit {
class DrawingAreaProxy;
+class GeolocationPermissionRequestProxy;
class LayerTreeContext;
+class WebFrameProxy;
+class WebSecurityOrigin;
}
@class WebIOSEvent;
@@ -60,4 +63,6 @@
- (BOOL)_interpretKeyEvent:(WebIOSEvent *)theEvent isCharEvent:(BOOL)isCharEvent;
- (void)_didChangeViewportArguments:(const WebCore::ViewportArguments&)viewportArguments;
+- (void)_decidePolicyForGeolocationRequestFromOrigin:(WebKit::WebSecurityOrigin&)origin frame:(WebKit::WebFrameProxy&)frame request:(WebKit::GeolocationPermissionRequestProxy&)permissionRequest;
+
@end
Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (159832 => 159833)
--- trunk/Source/WebKit2/UIProcess/PageClient.h 2013-11-28 03:23:48 UTC (rev 159832)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h 2013-11-28 04:34:08 UTC (rev 159833)
@@ -120,6 +120,11 @@
virtual void toolTipChanged(const String&, const String&) = 0;
+ virtual bool decidePolicyForGeolocationPermissionRequest(WebFrameProxy&, WebSecurityOrigin&, GeolocationPermissionRequestProxy&)
+ {
+ return false;
+ }
+
#if USE(TILED_BACKING_STORE)
virtual void pageDidRequestScroll(const WebCore::IntPoint&) = 0;
virtual void didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect) = 0;
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (159832 => 159833)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-11-28 03:23:48 UTC (rev 159832)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2013-11-28 04:34:08 UTC (rev 159833)
@@ -3931,8 +3931,13 @@
RefPtr<WebSecurityOrigin> origin = WebSecurityOrigin::createFromDatabaseIdentifier(originIdentifier);
RefPtr<GeolocationPermissionRequestProxy> request = m_geolocationPermissionRequestManager.createRequest(geolocationID);
- if (!m_uiClient.decidePolicyForGeolocationPermissionRequest(this, frame, origin.get(), request.get()))
- request->deny();
+ if (m_uiClient.decidePolicyForGeolocationPermissionRequest(this, frame, origin.get(), request.get()))
+ return;
+
+ if (m_pageClient->decidePolicyForGeolocationPermissionRequest(*frame, *origin, *request))
+ return;
+
+ request->deny();
}
void WebPageProxy::requestNotificationPermission(uint64_t requestID, const String& originString)