Index: webkit/glue/webplugin_impl.cc |
=================================================================== |
--- webkit/glue/webplugin_impl.cc (revision 2527) |
+++ webkit/glue/webplugin_impl.cc (working copy) |
@@ -237,7 +237,7 @@ |
WebFrameImpl *frame, |
WebPluginDelegate* delegate, |
bool load_manually) { |
- WebPluginImpl* webplugin = new WebPluginImpl(element, frame, delegate); |
+ WebPluginImpl* webplugin = new WebPluginImpl(element, frame, delegate, url); |
if (!delegate->Initialize(url, argn, argv, argc, webplugin, load_manually)) { |
delegate->PluginDestroyed(); |
@@ -253,7 +253,8 @@ |
WebPluginImpl::WebPluginImpl(WebCore::Element* element, |
WebFrameImpl* webframe, |
- WebPluginDelegate* delegate) |
+ WebPluginDelegate* delegate, |
+ const GURL& plugin_url) |
: element_(element), |
webframe_(webframe), |
delegate_(delegate), |
@@ -262,7 +263,8 @@ |
force_geometry_update_(false), |
visible_(false), |
widget_(NULL), |
- received_first_paint_notification_(false) { |
+ received_first_paint_notification_(false), |
+ plugin_url_(plugin_url) { |
} |
WebPluginImpl::~WebPluginImpl() { |
@@ -1094,7 +1096,15 @@ |
if (range_info) |
info.request.addHTTPHeaderField("Range", range_info); |
- const WebCore::String& referrer = frame()->loader()->outgoingReferrer(); |
+ WebCore::String referrer; |
+ // If the plugin is instantiated without a SRC URL, then use the |
+ // containing frame URL as the referrer. |
+ if (plugin_url_.spec().empty()) { |
+ referrer = frame()->loader()->outgoingReferrer(); |
+ } else { |
+ referrer = webkit_glue::StdStringToString(plugin_url_.spec()); |
+ } |
+ |
if (!WebCore::FrameLoader::shouldHideReferrer( |
complete_url_string.spec().c_str(), referrer)) { |
info.request.setHTTPReferrer(referrer); |