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 192f64c76d261a81d50df4d6b3e540989c1ca68e..178f96d70aef03dedef3df2c3b25caf5bc839201 100644 |
--- a/content/renderer/browser_plugin/browser_plugin.cc |
+++ b/content/renderer/browser_plugin/browser_plugin.cc |
@@ -86,7 +86,6 @@ BrowserPlugin::BrowserPlugin( |
content_window_routing_id_(MSG_ROUTING_NONE), |
plugin_focused_(false), |
visible_(true), |
- opaque_(true), |
before_first_navigation_(true), |
mouse_locked_(false), |
browser_plugin_manager_(render_view->GetBrowserPluginManager()), |
@@ -182,6 +181,10 @@ std::string BrowserPlugin::GetNameAttribute() const { |
return GetDOMAttributeValue(browser_plugin::kAttributeName); |
} |
+bool BrowserPlugin::GetAllowTransparencyAttribute() const { |
+ return HasDOMAttribute(browser_plugin::kAttributeAllowTransparency); |
+} |
+ |
std::string BrowserPlugin::GetSrcAttribute() const { |
return GetDOMAttributeValue(browser_plugin::kAttributeSrc); |
} |
@@ -259,6 +262,21 @@ void BrowserPlugin::ParseNameAttribute() { |
GetNameAttribute())); |
} |
+void BrowserPlugin::ParseAllowTransparencyAttribute() { |
+ if (!HasGuestInstanceID()) |
+ return; |
+ |
+ bool opaque = !GetAllowTransparencyAttribute(); |
+ |
+ if (compositing_helper_) |
+ compositing_helper_->SetContentsOpaque(opaque); |
+ |
+ browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetContentsOpaque( |
+ render_view_routing_id_, |
+ guest_instance_id_, |
+ opaque)); |
+} |
+ |
bool BrowserPlugin::ParseSrcAttribute(std::string* error_message) { |
if (!valid_partition_id_) { |
*error_message = browser_plugin::kErrorInvalidPartition; |
@@ -372,7 +390,7 @@ void BrowserPlugin::Attach(scoped_ptr<base::DictionaryValue> extra_params) { |
BrowserPluginHostMsg_Attach_Params attach_params; |
attach_params.focused = ShouldGuestBeFocused(); |
attach_params.visible = visible_; |
- attach_params.opaque = opaque_; |
+ attach_params.opaque = !GetAllowTransparencyAttribute(); |
attach_params.name = GetNameAttribute(); |
attach_params.storage_partition_id = storage_partition_id_; |
attach_params.persist_storage = persist_storage_; |
@@ -393,23 +411,6 @@ void BrowserPlugin::DidCommitCompositorFrame() { |
compositing_helper_->DidCommitCompositorFrame(); |
} |
-void BrowserPlugin::SetContentsOpaque(bool opaque) { |
- if (opaque_ == opaque) |
- return; |
- |
- opaque_ = opaque; |
- if (!HasGuestInstanceID()) |
- return; |
- |
- if (compositing_helper_) |
- compositing_helper_->SetContentsOpaque(opaque_); |
- |
- browser_plugin_manager()->Send(new BrowserPluginHostMsg_SetContentsOpaque( |
- render_view_routing_id_, |
- guest_instance_id_, |
- opaque_)); |
-} |
- |
void BrowserPlugin::OnAdvanceFocus(int guest_instance_id, bool reverse) { |
DCHECK(render_view_.get()); |
render_view_->GetWebView()->advanceFocus(reverse); |
@@ -922,7 +923,7 @@ void BrowserPlugin::EnableCompositing(bool enable) { |
} |
} |
compositing_helper_->EnableCompositing(enable); |
- compositing_helper_->SetContentsOpaque(opaque_); |
+ compositing_helper_->SetContentsOpaque(!GetAllowTransparencyAttribute()); |
} |
void BrowserPlugin::destroy() { |