Index: content/renderer/browser_plugin/browser_plugin.cc |
diff --git a/content/renderer/browser_plugin/browser_plugin.cc b/content/renderer/browser_plugin/browser_plugin.cc |
index 9e4b961fab575f9c315e6383da1c0533ac49a027..62f1e46cce70f13d09d5939098cf7b2bec3d5576 100644 |
--- a/content/renderer/browser_plugin/browser_plugin.cc |
+++ b/content/renderer/browser_plugin/browser_plugin.cc |
@@ -102,13 +102,13 @@ std::string BrowserPlugin::GetSrcAttribute() const { |
} |
void BrowserPlugin::SetSrcAttribute(const std::string& src) { |
- if (src == src_ && !guest_crashed_) |
+ if (src.empty() || (src == src_ && !guest_crashed_)) |
return; |
- // If we haven't created the guest yet, do so now, if |src| is not empty and |
- // we will navigate it right after creation. If |src| is empty, we can delay |
- // the creation until we acutally need it. |
- if (!navigate_src_sent_ && !src.empty()) { |
+ // If we haven't created the guest yet, do so now. We will navigate it right |
+ // after creation. If |src| is empty, we can delay the creation until we |
+ // acutally need it. |
+ if (!navigate_src_sent_) { |
BrowserPluginManager::Get()->Send( |
new BrowserPluginHostMsg_CreateGuest( |
render_view_->GetRoutingID(), |
@@ -117,27 +117,20 @@ void BrowserPlugin::SetSrcAttribute(const std::string& src) { |
persist_storage_)); |
} |
- if (navigate_src_sent_ || !src.empty()) { |
- scoped_ptr<BrowserPluginHostMsg_ResizeGuest_Params> params( |
- GetPendingResizeParams()); |
- DCHECK(!params->resize_pending); |
+ scoped_ptr<BrowserPluginHostMsg_ResizeGuest_Params> params( |
+ GetPendingResizeParams()); |
+ DCHECK(!params->resize_pending); |
- BrowserPluginManager::Get()->Send( |
- new BrowserPluginHostMsg_NavigateGuest( |
- render_view_->GetRoutingID(), |
- instance_id_, |
- src, |
- *params)); |
- // Record that we sent a NavigateGuest message to embedder. Once we send |
- // such a message, subsequent SetSrcAttribute() calls must always send |
- // NavigateGuest messages to the embedder (even if |src| is empty), so |
- // resize works correctly for all cases (e.g. The embedder can reset the |
- // guest's |src| to empty value, resize and then set the |src| to a |
- // non-empty value). |
- // Additionally, once this instance has navigated, the storage partition |
- // cannot be changed, so this value is used for enforcing this. |
- navigate_src_sent_ = true; |
- } |
+ BrowserPluginManager::Get()->Send( |
+ new BrowserPluginHostMsg_NavigateGuest( |
+ render_view_->GetRoutingID(), |
+ instance_id_, |
+ src, |
+ *params)); |
+ // Record that we sent a NavigateGuest message to embedder. |
+ // Once this instance has navigated, the storage partition cannot be changed, |
+ // so this value is used for enforcing this. |
+ navigate_src_sent_ = true; |
src_ = src; |
guest_crashed_ = false; |
} |
@@ -208,8 +201,7 @@ void BrowserPlugin::ParseAttributes(const WebKit::WebPluginParams& params) { |
// Set the 'src' attribute last, as it will set the has_navigated_ flag to |
// true, which prevents changing the 'partition' attribute. |
- if (!src.empty()) |
- SetSrcAttribute(src); |
+ SetSrcAttribute(src); |
} |
float BrowserPlugin::GetDeviceScaleFactor() const { |