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

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

Issue 584713002: Browser Plugin: Remove dependency on NPAPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_content_window
Patch Set: Updated histograms.xml Created 6 years, 3 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
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
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin_bindings.h ('k') | extensions/browser/api/web_view/web_view_internal_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698