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 |
deleted file mode 100644 |
index 46751d640b2288d2e6ca056c279f8ef07ec44675..0000000000000000000000000000000000000000 |
--- a/content/renderer/browser_plugin/browser_plugin_bindings.cc |
+++ /dev/null |
@@ -1,267 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "content/renderer/browser_plugin/browser_plugin_bindings.h" |
- |
-#include <string> |
- |
-#include "content/common/browser_plugin/browser_plugin_constants.h" |
-#include "content/renderer/browser_plugin/browser_plugin.h" |
-#include "third_party/WebKit/public/web/WebBindings.h" |
-#include "third_party/npapi/bindings/npapi.h" |
- |
-using blink::WebBindings; |
- |
-namespace content { |
- |
-namespace { |
- |
-BrowserPluginBindings* GetBindings(NPObject* object) { |
- return static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(object)-> |
- message_channel.get(); |
-} |
- |
-std::string StringFromNPVariant(const NPVariant& variant) { |
- if (!NPVARIANT_IS_STRING(variant)) |
- return std::string(); |
- const NPString& np_string = NPVARIANT_TO_STRING(variant); |
- return std::string(np_string.UTF8Characters, np_string.UTF8Length); |
-} |
- |
-//------------------------------------------------------------------------------ |
-// Implementations of NPClass functions. These are here to: |
-// - Implement src attribute. |
-//------------------------------------------------------------------------------ |
-NPObject* BrowserPluginBindingsAllocate(NPP npp, NPClass* the_class) { |
- return new BrowserPluginBindings::BrowserPluginNPObject; |
-} |
- |
-void BrowserPluginBindingsDeallocate(NPObject* object) { |
- BrowserPluginBindings::BrowserPluginNPObject* instance = |
- static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(object); |
- delete instance; |
-} |
- |
-bool BrowserPluginBindingsHasMethod(NPObject* np_obj, NPIdentifier name) { |
- return false; |
-} |
- |
-bool BrowserPluginBindingsInvokeDefault(NPObject* np_obj, |
- const NPVariant* args, |
- uint32 arg_count, |
- NPVariant* result) { |
- NOTIMPLEMENTED(); |
- return false; |
-} |
- |
-bool BrowserPluginBindingsHasProperty(NPObject* np_obj, NPIdentifier name) { |
- if (!np_obj) |
- return false; |
- |
- BrowserPluginBindings* bindings = GetBindings(np_obj); |
- if (!bindings) |
- return false; |
- |
- return bindings->HasProperty(name); |
-} |
- |
-bool BrowserPluginBindingsGetProperty(NPObject* np_obj, NPIdentifier name, |
- NPVariant* result) { |
- if (!np_obj) |
- return false; |
- |
- if (!result) |
- 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; |
- |
- return bindings->GetProperty(name, result); |
-} |
- |
-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 (variant->type == NPVariantType_Null) |
- return bindings->RemoveProperty(np_obj, name); |
- |
- return bindings->SetProperty(np_obj, name, variant); |
-} |
- |
-bool BrowserPluginBindingsEnumerate(NPObject *np_obj, NPIdentifier **value, |
- uint32_t *count) { |
- NOTIMPLEMENTED(); |
- return true; |
-} |
- |
-NPClass browser_plugin_message_class = { |
- NP_CLASS_STRUCT_VERSION, |
- &BrowserPluginBindingsAllocate, |
- &BrowserPluginBindingsDeallocate, |
- NULL, |
- &BrowserPluginBindingsHasMethod, |
- NULL, |
- &BrowserPluginBindingsInvokeDefault, |
- &BrowserPluginBindingsHasProperty, |
- &BrowserPluginBindingsGetProperty, |
- &BrowserPluginBindingsSetProperty, |
- NULL, |
- &BrowserPluginBindingsEnumerate, |
-}; |
- |
-} // namespace |
- |
-// BrowserPluginPropertyBinding ------------------------------------------------ |
- |
-class BrowserPluginPropertyBinding { |
- public: |
- 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; |
- } |
- virtual bool GetProperty(BrowserPluginBindings* bindings, |
- NPVariant* result) = 0; |
- virtual bool SetProperty(BrowserPluginBindings* bindings, |
- NPObject* np_obj, |
- const NPVariant* variant) = 0; |
- virtual void RemoveProperty(BrowserPluginBindings* bindings, |
- NPObject* np_obj) = 0; |
- // Updates the DOM Attribute value with the current property value. |
- void UpdateDOMAttribute(BrowserPluginBindings* bindings, |
- std::string new_value) { |
- bindings->instance()->UpdateDOMAttribute(name(), new_value); |
- } |
- private: |
- std::string name_; |
- |
- DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBinding); |
-}; |
- |
-class BrowserPluginPropertyBindingAllowTransparency |
- : public BrowserPluginPropertyBinding { |
- public: |
- BrowserPluginPropertyBindingAllowTransparency() |
- : BrowserPluginPropertyBinding( |
- browser_plugin::kAttributeAllowTransparency) { |
- } |
- virtual bool GetProperty(BrowserPluginBindings* bindings, |
- NPVariant* result) OVERRIDE { |
- bool allow_transparency = |
- bindings->instance()->GetAllowTransparencyAttribute(); |
- BOOLEAN_TO_NPVARIANT(allow_transparency, *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()->ParseAllowTransparencyAttribute(); |
- } else { |
- UpdateDOMAttribute(bindings, value); |
- } |
- return true; |
- } |
- virtual void RemoveProperty(BrowserPluginBindings* bindings, |
- NPObject* np_obj) OVERRIDE { |
- bindings->instance()->RemoveDOMAttribute(name()); |
- bindings->instance()->ParseAllowTransparencyAttribute(); |
- } |
- private: |
- DISALLOW_COPY_AND_ASSIGN(BrowserPluginPropertyBindingAllowTransparency); |
-}; |
- |
- |
-// BrowserPluginBindings ------------------------------------------------------ |
- |
-BrowserPluginBindings::BrowserPluginNPObject::BrowserPluginNPObject() { |
-} |
- |
-BrowserPluginBindings::BrowserPluginNPObject::~BrowserPluginNPObject() { |
-} |
- |
-BrowserPluginBindings::BrowserPluginBindings(BrowserPlugin* instance) |
- : instance_(instance), |
- np_object_(NULL), |
- weak_ptr_factory_(this) { |
- NPObject* obj = |
- WebBindings::createObject(instance->pluginNPP(), |
- &browser_plugin_message_class); |
- np_object_ = static_cast<BrowserPluginBindings::BrowserPluginNPObject*>(obj); |
- np_object_->message_channel = weak_ptr_factory_.GetWeakPtr(); |
- |
- property_bindings_.push_back( |
- new BrowserPluginPropertyBindingAllowTransparency); |
-} |
- |
-BrowserPluginBindings::~BrowserPluginBindings() { |
- WebBindings::releaseObject(np_object_); |
-} |
- |
-bool BrowserPluginBindings::HasProperty(NPIdentifier name) const { |
- for (PropertyBindingList::const_iterator iter = property_bindings_.begin(); |
- iter != property_bindings_.end(); |
- ++iter) { |
- if ((*iter)->MatchesName(name)) |
- return true; |
- } |
- return false; |
-} |
- |
-bool BrowserPluginBindings::SetProperty(NPObject* np_obj, |
- NPIdentifier name, |
- const NPVariant* variant) { |
- for (PropertyBindingList::iterator iter = property_bindings_.begin(); |
- iter != property_bindings_.end(); |
- ++iter) { |
- if ((*iter)->MatchesName(name)) { |
- if ((*iter)->SetProperty(this, np_obj, variant)) { |
- return true; |
- } |
- break; |
- } |
- } |
- return false; |
-} |
- |
-bool BrowserPluginBindings::RemoveProperty(NPObject* np_obj, |
- NPIdentifier name) { |
- for (PropertyBindingList::iterator iter = property_bindings_.begin(); |
- iter != property_bindings_.end(); |
- ++iter) { |
- if ((*iter)->MatchesName(name)) { |
- (*iter)->RemoveProperty(this, np_obj); |
- return true; |
- } |
- } |
- return false; |
-} |
- |
-bool BrowserPluginBindings::GetProperty(NPIdentifier name, NPVariant* result) { |
- for (PropertyBindingList::iterator iter = property_bindings_.begin(); |
- iter != property_bindings_.end(); |
- ++iter) { |
- if ((*iter)->MatchesName(name)) |
- return (*iter)->GetProperty(this, result); |
- } |
- return false; |
-} |
- |
-} // namespace content |