Chromium Code Reviews| 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 306c489243dd8e42fa9d43b91cf57d39d0c69d0e..796945e5df000f487f398d4270f49924505f0a1a 100644 |
| --- a/content/renderer/browser_plugin/browser_plugin_bindings.cc |
| +++ b/content/renderer/browser_plugin/browser_plugin_bindings.cc |
| @@ -10,6 +10,7 @@ |
| #include "base/bind.h" |
| #include "base/message_loop.h" |
| #include "base/string16.h" |
| +#include "base/string_number_conversions.h" |
| #include "base/string_split.h" |
| #include "base/utf_string_conversions.h" |
| #include "content/renderer/browser_plugin/browser_plugin.h" |
| @@ -392,6 +393,7 @@ class BrowserPluginPropertyBinding { |
| explicit BrowserPluginPropertyBinding(const char name[]) : name_(name) { |
| } |
| virtual ~BrowserPluginPropertyBinding() {} |
| + const std::string& name() const { return name_; } |
| bool MatchesName(NPIdentifier name) const { |
| return WebBindings::getStringIdentifier(name_.c_str()) == name; |
| } |
| @@ -400,6 +402,8 @@ class BrowserPluginPropertyBinding { |
| virtual bool SetProperty(BrowserPluginBindings* bindings, |
| NPObject* np_obj, |
| const NPVariant* variant) = 0; |
| + // Updates the DOM Attribute value with the current property value. |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) {} |
|
sadrul
2012/12/03 21:58:44
This could be a non-virtual function, that does:
Fady Samuel
2012/12/04 00:06:01
I like this! Doing so.
|
| private: |
| std::string name_; |
| @@ -414,17 +418,22 @@ class BrowserPluginPropertyBindingAutoSize |
| } |
| virtual bool GetProperty(BrowserPluginBindings* bindings, |
| NPVariant* result) OVERRIDE { |
| - bool autosize = bindings->instance()->auto_size_attribute(); |
| - BOOLEAN_TO_NPVARIANT(autosize, *result); |
| + bool auto_size = bindings->instance()->auto_size_attribute(); |
| + BOOLEAN_TO_NPVARIANT(auto_size, *result); |
| return true; |
| } |
| virtual bool SetProperty(BrowserPluginBindings* bindings, |
| NPObject* np_obj, |
| const NPVariant* variant) OVERRIDE { |
| - bool autosize = NPVARIANT_TO_BOOLEAN(*variant); |
| - bindings->instance()->SetAutoSizeAttribute(autosize); |
| + bool auto_size = NPVARIANT_TO_BOOLEAN(*variant); |
| + bindings->instance()->SetAutoSizeAttribute(auto_size); |
| return true; |
| } |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) OVERRIDE { |
| + bool auto_size = bindings->instance()->auto_size_attribute(); |
| + bindings->instance()->UpdateDOMAttribute( |
| + name(), auto_size ? "true" : "false"); |
| + } |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingAutoSize); |
| }; |
| @@ -472,6 +481,11 @@ class BrowserPluginPropertyBindingMaxHeight |
| bindings->instance()->SetMaxHeightAttribute(max_height); |
| return true; |
| } |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) OVERRIDE { |
| + int max_height = bindings->instance()->max_height_attribute(); |
| + bindings->instance()->UpdateDOMAttribute( |
| + name(), base::IntToString(max_height)); |
| + } |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMaxHeight); |
| }; |
| @@ -495,6 +509,11 @@ class BrowserPluginPropertyBindingMaxWidth |
| bindings->instance()->SetMaxWidthAttribute(max_width); |
| return true; |
| } |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) OVERRIDE { |
| + int max_width = bindings->instance()->max_width_attribute(); |
| + bindings->instance()->UpdateDOMAttribute( |
| + name(), base::IntToString(max_width)); |
| + } |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMaxWidth); |
| }; |
| @@ -518,6 +537,11 @@ class BrowserPluginPropertyBindingMinHeight |
| bindings->instance()->SetMinHeightAttribute(min_height); |
| return true; |
| } |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) OVERRIDE { |
| + int min_height = bindings->instance()->min_height_attribute(); |
| + bindings->instance()->UpdateDOMAttribute( |
| + name(), base::IntToString(min_height)); |
| + } |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMinHeight); |
| }; |
| @@ -541,6 +565,11 @@ class BrowserPluginPropertyBindingMinWidth |
| bindings->instance()->SetMinWidthAttribute(min_width); |
| return true; |
| } |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) OVERRIDE { |
| + int min_width = bindings->instance()->min_width_attribute(); |
| + bindings->instance()->UpdateDOMAttribute( |
| + name(), base::IntToString(min_width)); |
| + } |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMinWidth); |
| }; |
| @@ -569,6 +598,10 @@ class BrowserPluginPropertyBindingPartition |
| } |
| return true; |
| } |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) OVERRIDE { |
| + std::string partition_id = bindings->instance()->GetPartitionAttribute(); |
| + bindings->instance()->UpdateDOMAttribute(name(), partition_id); |
| + } |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingPartition); |
| }; |
| @@ -595,6 +628,10 @@ class BrowserPluginPropertyBindingSrc : public BrowserPluginPropertyBinding { |
| } |
| return true; |
| } |
| + virtual void UpdateDOMAttribute(BrowserPluginBindings* bindings) OVERRIDE { |
| + std::string src = bindings->instance()->src_attribute(); |
| + bindings->instance()->UpdateDOMAttribute(name(), src); |
| + } |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingSrc); |
| }; |
| @@ -680,8 +717,13 @@ bool BrowserPluginBindings::SetProperty(NPObject* np_obj, |
| for (PropertyBindingList::iterator iter = property_bindings_.begin(); |
| iter != property_bindings_.end(); |
| ++iter) { |
| - if ((*iter)->MatchesName(name)) |
| - return (*iter)->SetProperty(this, np_obj, variant); |
| + if ((*iter)->MatchesName(name)) { |
| + if ((*iter)->SetProperty(this, np_obj, variant)) { |
| + (*iter)->UpdateDOMAttribute(this); |
| + return true; |
| + } |
| + break; |
| + } |
| } |
| return false; |
| } |