Index: trunk/src/content/renderer/browser_plugin/browser_plugin_bindings.cc |
=================================================================== |
--- trunk/src/content/renderer/browser_plugin/browser_plugin_bindings.cc (revision 287745) |
+++ trunk/src/content/renderer/browser_plugin/browser_plugin_bindings.cc (working copy) |
@@ -320,6 +320,39 @@ |
DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingAllowTransparency); |
}; |
+class BrowserPluginPropertyBindingAutoSize |
+ : public BrowserPluginPropertyBinding { |
+ public: |
+ BrowserPluginPropertyBindingAutoSize() |
+ : BrowserPluginPropertyBinding(browser_plugin::kAttributeAutoSize) { |
+ } |
+ virtual bool GetProperty(BrowserPluginBindings* bindings, |
+ NPVariant* result) OVERRIDE { |
+ bool auto_size = bindings->instance()->GetAutoSizeAttribute(); |
+ BOOLEAN_TO_NPVARIANT(auto_size, *result); |
+ return true; |
+ } |
+ virtual bool SetProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj, |
+ const NPVariant* variant) OVERRIDE { |
+ std::string value = StringFromNPVariant(*variant); |
+ if (!bindings->instance()->HasDOMAttribute(name())) { |
+ UpdateDOMAttribute(bindings, value); |
+ bindings->instance()->ParseAutoSizeAttribute(); |
+ } else { |
+ UpdateDOMAttribute(bindings, value); |
+ } |
+ return true; |
+ } |
+ virtual void RemoveProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj) OVERRIDE { |
+ bindings->instance()->RemoveDOMAttribute(name()); |
+ bindings->instance()->ParseAutoSizeAttribute(); |
+ } |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingAutoSize); |
+}; |
+ |
class BrowserPluginPropertyBindingContentWindow |
: public BrowserPluginPropertyBinding { |
public: |
@@ -346,7 +379,131 @@ |
DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingContentWindow); |
}; |
+class BrowserPluginPropertyBindingMaxHeight |
+ : public BrowserPluginPropertyBinding { |
+ public: |
+ BrowserPluginPropertyBindingMaxHeight() |
+ : BrowserPluginPropertyBinding(browser_plugin::kAttributeMaxHeight) { |
+ } |
+ virtual bool GetProperty(BrowserPluginBindings* bindings, |
+ NPVariant* result) OVERRIDE { |
+ int max_height = bindings->instance()->GetMaxHeightAttribute(); |
+ INT32_TO_NPVARIANT(max_height, *result); |
+ return true; |
+ } |
+ virtual bool SetProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj, |
+ const NPVariant* variant) OVERRIDE { |
+ int new_value = IntFromNPVariant(*variant); |
+ if (bindings->instance()->GetMaxHeightAttribute() != new_value) { |
+ UpdateDOMAttribute(bindings, base::IntToString(new_value)); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ return true; |
+ } |
+ virtual void RemoveProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj) OVERRIDE { |
+ bindings->instance()->RemoveDOMAttribute(name()); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMaxHeight); |
+}; |
+class BrowserPluginPropertyBindingMaxWidth |
+ : public BrowserPluginPropertyBinding { |
+ public: |
+ BrowserPluginPropertyBindingMaxWidth() |
+ : BrowserPluginPropertyBinding(browser_plugin::kAttributeMaxWidth) { |
+ } |
+ virtual bool GetProperty(BrowserPluginBindings* bindings, |
+ NPVariant* result) OVERRIDE { |
+ int max_width = bindings->instance()->GetMaxWidthAttribute(); |
+ INT32_TO_NPVARIANT(max_width, *result); |
+ return true; |
+ } |
+ virtual bool SetProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj, |
+ const NPVariant* variant) OVERRIDE { |
+ int new_value = IntFromNPVariant(*variant); |
+ if (bindings->instance()->GetMaxWidthAttribute() != new_value) { |
+ UpdateDOMAttribute(bindings, base::IntToString(new_value)); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ return true; |
+ } |
+ virtual void RemoveProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj) OVERRIDE { |
+ bindings->instance()->RemoveDOMAttribute(name()); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMaxWidth); |
+}; |
+ |
+class BrowserPluginPropertyBindingMinHeight |
+ : public BrowserPluginPropertyBinding { |
+ public: |
+ BrowserPluginPropertyBindingMinHeight() |
+ : BrowserPluginPropertyBinding(browser_plugin::kAttributeMinHeight) { |
+ } |
+ virtual bool GetProperty(BrowserPluginBindings* bindings, |
+ NPVariant* result) OVERRIDE { |
+ int min_height = bindings->instance()->GetMinHeightAttribute(); |
+ INT32_TO_NPVARIANT(min_height, *result); |
+ return true; |
+ } |
+ virtual bool SetProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj, |
+ const NPVariant* variant) OVERRIDE { |
+ int new_value = IntFromNPVariant(*variant); |
+ if (bindings->instance()->GetMinHeightAttribute() != new_value) { |
+ UpdateDOMAttribute(bindings, base::IntToString(new_value)); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ return true; |
+ } |
+ virtual void RemoveProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj) OVERRIDE { |
+ bindings->instance()->RemoveDOMAttribute(name()); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMinHeight); |
+}; |
+ |
+class BrowserPluginPropertyBindingMinWidth |
+ : public BrowserPluginPropertyBinding { |
+ public: |
+ BrowserPluginPropertyBindingMinWidth() |
+ : BrowserPluginPropertyBinding(browser_plugin::kAttributeMinWidth) { |
+ } |
+ virtual bool GetProperty(BrowserPluginBindings* bindings, |
+ NPVariant* result) OVERRIDE { |
+ int min_width = bindings->instance()->GetMinWidthAttribute(); |
+ INT32_TO_NPVARIANT(min_width, *result); |
+ return true; |
+ } |
+ virtual bool SetProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj, |
+ const NPVariant* variant) OVERRIDE { |
+ int new_value = IntFromNPVariant(*variant); |
+ if (bindings->instance()->GetMinWidthAttribute() != new_value) { |
+ UpdateDOMAttribute(bindings, base::IntToString(new_value)); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ return true; |
+ } |
+ virtual void RemoveProperty(BrowserPluginBindings* bindings, |
+ NPObject* np_obj) OVERRIDE { |
+ bindings->instance()->RemoveDOMAttribute(name()); |
+ bindings->instance()->ParseSizeContraintsChanged(); |
+ } |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingMinWidth); |
+}; |
+ |
+ |
// BrowserPluginBindings ------------------------------------------------------ |
BrowserPluginBindings::BrowserPluginNPObject::BrowserPluginNPObject() { |
@@ -369,7 +526,12 @@ |
property_bindings_.push_back( |
new BrowserPluginPropertyBindingAllowTransparency); |
+ property_bindings_.push_back(new BrowserPluginPropertyBindingAutoSize); |
property_bindings_.push_back(new BrowserPluginPropertyBindingContentWindow); |
+ property_bindings_.push_back(new BrowserPluginPropertyBindingMaxHeight); |
+ property_bindings_.push_back(new BrowserPluginPropertyBindingMaxWidth); |
+ property_bindings_.push_back(new BrowserPluginPropertyBindingMinHeight); |
+ property_bindings_.push_back(new BrowserPluginPropertyBindingMinWidth); |
} |
BrowserPluginBindings::~BrowserPluginBindings() { |