| 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 77c3746dd738074821a021e4788a2fb18a744e6c..52bc7087832738d496f181ee84170bddded56e14 100644
|
| --- a/content/renderer/browser_plugin/browser_plugin.cc
|
| +++ b/content/renderer/browser_plugin/browser_plugin.cc
|
| @@ -60,6 +60,7 @@ const char kEventUnresponsive[] = "unresponsive";
|
|
|
| // Parameters/properties on events.
|
| const char kIsTopLevel[] = "isTopLevel";
|
| +const char kName[] = "name";
|
| const char kNewURL[] = "newUrl";
|
| const char kNewHeight[] = "newHeight";
|
| const char kNewWidth[] = "newWidth";
|
| @@ -152,6 +153,42 @@ void BrowserPlugin::Cleanup() {
|
| FreeDamageBuffer(&pending_damage_buffer_);
|
| }
|
|
|
| +void BrowserPlugin::UpdateDOMAttribute(
|
| + const std::string& attribute_name,
|
| + const std::string& attribute_value) {
|
| + if (!container())
|
| + return;
|
| +
|
| + WebKit::WebElement element = container()->element();
|
| + WebKit::WebString web_attribute_name =
|
| + WebKit::WebString::fromUTF8(attribute_name);
|
| + std::string current_value(element.getAttribute(web_attribute_name).utf8());
|
| + if (current_value == attribute_value)
|
| + return;
|
| +
|
| + if (attribute_value.empty()) {
|
| + element.removeAttribute(web_attribute_name);
|
| + } else {
|
| + element.setAttribute(web_attribute_name,
|
| + WebKit::WebString::fromUTF8(attribute_value));
|
| + }
|
| +}
|
| +
|
| +void BrowserPlugin::SetNameAttribute(const std::string& name) {
|
| + if (name_ == name)
|
| + return;
|
| +
|
| + name_ = name;
|
| + if (!navigate_src_sent_)
|
| + return;
|
| +
|
| + browser_plugin_manager()->Send(
|
| + new BrowserPluginHostMsg_SetName(
|
| + render_view_routing_id_,
|
| + instance_id_,
|
| + name));
|
| +}
|
| +
|
| bool BrowserPlugin::SetSrcAttribute(const std::string& src,
|
| std::string* error_message) {
|
| if (!valid_partition_id_) {
|
| @@ -171,6 +208,7 @@ bool BrowserPlugin::SetSrcAttribute(const std::string& src,
|
| create_guest_params.persist_storage = persist_storage_;
|
| create_guest_params.focused = ShouldGuestBeFocused();
|
| create_guest_params.visible = visible_;
|
| + create_guest_params.name = name_;
|
| pending_damage_buffer_ =
|
| GetDamageBufferWithSizeParams(&create_guest_params.auto_size_params,
|
| &create_guest_params.resize_guest_params);
|
| @@ -262,27 +300,6 @@ bool BrowserPlugin::DamageBufferMatches(
|
| }
|
| #endif
|
|
|
| -void BrowserPlugin::UpdateDOMAttribute(
|
| - const std::string& attribute_name,
|
| - const std::string& attribute_value) {
|
| - if (!container())
|
| - return;
|
| -
|
| - WebKit::WebElement element = container()->element();
|
| - WebKit::WebString web_attribute_name =
|
| - WebKit::WebString::fromUTF8(attribute_name);
|
| - std::string current_value(element.getAttribute(web_attribute_name).utf8());
|
| - if (current_value == attribute_value)
|
| - return;
|
| -
|
| - if (attribute_value.empty()) {
|
| - element.removeAttribute(web_attribute_name);
|
| - } else {
|
| - element.setAttribute(web_attribute_name,
|
| - WebKit::WebString::fromUTF8(attribute_value));
|
| - }
|
| -}
|
| -
|
| void BrowserPlugin::SetMaxHeightAttribute(int max_height) {
|
| if (max_height_ == max_height)
|
| return;
|
| @@ -396,6 +413,8 @@ void BrowserPlugin::ParseAttributes(const WebKit::WebPluginParams& params) {
|
| } else if (LowerCaseEqualsASCII(attributeName, kPartition)) {
|
| std::string error;
|
| SetPartitionAttribute(params.attributeValues[i].utf8(), &error);
|
| + } else if (LowerCaseEqualsASCII(attributeName, kName)) {
|
| + SetNameAttribute(params.attributeValues[i].utf8());
|
| }
|
| }
|
|
|
| @@ -688,6 +707,11 @@ void BrowserPlugin::LoadRedirect(const GURL& old_url,
|
| TriggerEvent(kEventLoadRedirect, &props);
|
| }
|
|
|
| +void BrowserPlugin::UpdatedName(const std::string& name) {
|
| + name_ = name;
|
| + UpdateDOMAttribute(kName, name);
|
| +}
|
| +
|
| void BrowserPlugin::AdvanceFocus(bool reverse) {
|
| DCHECK(render_view_);
|
| render_view_->GetWebView()->advanceFocus(reverse);
|
|
|