Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2174)

Unified Diff: content/renderer/browser_plugin/browser_plugin.cc

Issue 11554030: <webview>: Add name attribute (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added tests Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698