diff options
Diffstat (limited to 'webkit/glue')
-rw-r--r-- | webkit/glue/chrome_client_impl.cc | 9 | ||||
-rw-r--r-- | webkit/glue/inspector_client_impl.cc | 2 | ||||
-rw-r--r-- | webkit/glue/webview_delegate.h | 8 |
3 files changed, 15 insertions, 4 deletions
diff --git a/webkit/glue/chrome_client_impl.cc b/webkit/glue/chrome_client_impl.cc index 9a823a9..e410805 100644 --- a/webkit/glue/chrome_client_impl.cc +++ b/webkit/glue/chrome_client_impl.cc @@ -9,6 +9,7 @@ MSVC_PUSH_WARNING_LEVEL(0); #include "Console.h" #include "Cursor.h" +#include "DocumentLoader.h" #include "FloatRect.h" #include "FileChooser.h" #include "FrameLoadRequest.h" @@ -170,8 +171,14 @@ WebCore::Page* ChromeClientImpl::createWindow( return NULL; bool user_gesture = frame->script()->processingUserGesture(); + + const std::string security_origin(webkit_glue::StringToStdString( + frame->document()->securityOrigin()->toString())); + GURL creator_url(security_origin); WebViewImpl* new_view = static_cast<WebViewImpl*>( - delegate->CreateWebView(webview_, user_gesture)); + delegate->CreateWebView(webview_, user_gesture, + (creator_url.is_valid() && creator_url.IsStandard()) ? + creator_url : GURL())); if (!new_view) return NULL; diff --git a/webkit/glue/inspector_client_impl.cc b/webkit/glue/inspector_client_impl.cc index ae6a57e..1ddae85 100644 --- a/webkit/glue/inspector_client_impl.cc +++ b/webkit/glue/inspector_client_impl.cc @@ -62,7 +62,7 @@ Page* WebInspectorClient::createPage() { if (!delegate) return NULL; inspector_web_view_ = static_cast<WebViewImpl*>( - delegate->CreateWebView(inspected_web_view_, true)); + delegate->CreateWebView(inspected_web_view_, true, GURL())); if (!inspector_web_view_) return NULL; diff --git a/webkit/glue/webview_delegate.h b/webkit/glue/webview_delegate.h index 29c31be..dbaf3b8 100644 --- a/webkit/glue/webview_delegate.h +++ b/webkit/glue/webview_delegate.h @@ -99,8 +99,12 @@ class WebViewDelegate : virtual public WebWidgetDelegate { // made visible until the new WebView's Delegate has its Show method called. // The returned WebView pointer is assumed to be owned by the host window, // and the caller of CreateWebView should not release the given WebView. - // user_gesture is true if a user action initiated this call. - virtual WebView* CreateWebView(WebView* webview, bool user_gesture) { + // |user_gesture| is true if a user action initiated this call. + // |creator_url|, if nonempty, holds the security origin of the page creating + // this WebView. + virtual WebView* CreateWebView(WebView* webview, + bool user_gesture, + const GURL& creator_url) { return NULL; } |