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

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

Issue 10912054: Adding parsing for partition and persistence attributes to the <browser> tag (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months 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_bindings.cc
diff --git a/content/renderer/browser_plugin/browser_plugin_bindings.cc b/content/renderer/browser_plugin/browser_plugin_bindings.cc
index d8c75ad5bece01eaafc258f690db6a230278023b..b6f353d1689847b7398c822d2de2d8add7d19aa8 100644
--- a/content/renderer/browser_plugin/browser_plugin_bindings.cc
+++ b/content/renderer/browser_plugin/browser_plugin_bindings.cc
@@ -41,6 +41,8 @@ namespace {
const char kAddEventListener[] = "addEventListener";
const char kRemoveEventListener[] = "removeEventListener";
const char kSrcAttribute[] = "src";
+const char kPartitionAttribute[] = "partition";
+const char kPersistAttribute[] = "persist";
BrowserPluginBindings* GetBindings(NPObject* object) {
return static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(object)->
@@ -59,6 +61,14 @@ bool IdentifierIsSrcAttribute(NPIdentifier identifier) {
return WebBindings::getStringIdentifier(kSrcAttribute) == identifier;
}
+bool IdentifierIsPartitionAttribute(NPIdentifier identifier) {
+ return WebBindings::getStringIdentifier(kPartitionAttribute) == identifier;
+}
+
+bool IdentifierIsPersistAttribute(NPIdentifier identifier) {
+ return WebBindings::getStringIdentifier(kPersistAttribute) == identifier;
+}
+
std::string StringFromNPVariant(const NPVariant& variant) {
if (!NPVARIANT_IS_STRING(variant))
return std::string();
@@ -166,26 +176,44 @@ bool BrowserPluginBindingsInvokeDefault(NPObject* np_obj,
}
bool BrowserPluginBindingsHasProperty(NPObject* np_obj, NPIdentifier name) {
- return IdentifierIsSrcAttribute(name);
+ return IdentifierIsSrcAttribute(name) ||
+ IdentifierIsPartitionAttribute(name) ||
+ IdentifierIsPersistAttribute(name);
}
bool BrowserPluginBindingsGetProperty(NPObject* np_obj, NPIdentifier name,
NPVariant* result) {
if (!np_obj)
return false;
+ if (!result)
+ return false;
if (IdentifierIsAddEventListener(name) ||
IdentifierIsRemoveEventListener(name))
return false;
+ // All attributes from here on rely on the bindings, so retrieve it once and
+ // return on failure.
+ BrowserPluginBindings* bindings = GetBindings(np_obj);
+ if (!bindings)
+ return false;
+
if (IdentifierIsSrcAttribute(name)) {
- BrowserPluginBindings* bindings = GetBindings(np_obj);
- if (!bindings)
- return false;
std::string src = bindings->instance()->GetSrcAttribute();
return StringToNPVariant(src, result);
}
+ if (IdentifierIsPartitionAttribute(name)) {
+ std::string partition_id = bindings->instance()->GetPartitionAttribute();
+ return StringToNPVariant(partition_id, result);
+ }
+
+ if (IdentifierIsPersistAttribute(name)) {
+ bool persist = bindings->instance()->GetPersistAttribute();
+ BOOLEAN_TO_NPVARIANT(persist, *result);
+ return true;
+ }
+
return false;
}
@@ -193,15 +221,31 @@ bool BrowserPluginBindingsSetProperty(NPObject* np_obj, NPIdentifier name,
const NPVariant* variant) {
if (!np_obj)
return false;
+ if (!variant)
+ return false;
+
+ // All attributes from here on rely on the bindings, so retrieve it once and
+ // return on failure.
+ BrowserPluginBindings* bindings = GetBindings(np_obj);
+ if (!bindings)
+ return false;
if (IdentifierIsSrcAttribute(name)) {
std::string src = StringFromNPVariant(*variant);
- BrowserPluginBindings* bindings = GetBindings(np_obj);
- if (!bindings)
- return false;
bindings->instance()->SetSrcAttribute(src);
return true;
}
+
+ if (IdentifierIsPartitionAttribute(name)) {
+ std::string partition_id = StringFromNPVariant(*variant);
+ return bindings->instance()->SetPartitionAttribute(partition_id);
+ }
+
+ if (IdentifierIsPersistAttribute(name)) {
+ bool persist = NPVARIANT_TO_BOOLEAN(*variant);
+ return bindings->instance()->SetPersistAttribute(persist);
+ }
+
return false;
}

Powered by Google App Engine
This is Rietveld 408576698