| Index: experimental/c_salt/npapi/variant_converter.cc
|
| diff --git a/experimental/c_salt/npapi/variant_converter.cc b/experimental/c_salt/npapi/variant_converter.cc
|
| deleted file mode 100644
|
| index 12a05eded1fc045a5a611a4d2e206c003df66912..0000000000000000000000000000000000000000
|
| --- a/experimental/c_salt/npapi/variant_converter.cc
|
| +++ /dev/null
|
| @@ -1,141 +0,0 @@
|
| -// Copyright 2010 The Ginsu 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 "c_salt/npapi/variant_converter.h"
|
| -
|
| -#include <cassert>
|
| -#include <cstring>
|
| -#include <sstream>
|
| -#include <string>
|
| -
|
| -#include "c_salt/npapi/browser_binding.h"
|
| -#include "c_salt/npapi/javascript_object_proxy.h"
|
| -#include "c_salt/scripting_interface.h"
|
| -#include "c_salt/scripting_interface_ptrs.h"
|
| -#include "c_salt/variant.h"
|
| -
|
| -namespace c_salt {
|
| -namespace npapi {
|
| -
|
| -VariantConverter::VariantConverter(NPP instance) : instance_(instance) {}
|
| -
|
| -SharedVariant
|
| -VariantConverter::CreateVariantFromNPVariant(const NPVariant& np_var) const {
|
| - SharedVariant retval;
|
| - switch (np_var.type) {
|
| - case NPVariantType_Void:
|
| - case NPVariantType_Null: {
|
| - retval.reset(new c_salt::Variant);
|
| - break;
|
| - }
|
| - case NPVariantType_Object: {
|
| - // TODO(c_salt authors): Currently, this will always turn NPObject in to
|
| - // a Proxy object, treating it like a JavaScript object as far as c_salt
|
| - // is concerned. This should work even for native objects, just adding
|
| - // some work by doing extra conversions to/from NPAPI types. Is there
|
| - // any nice way to see if an NPObject* represents a native-side object?
|
| - // Nothing is apparent in NPObject or NPClass. We could hold a set of all
|
| - // NPObjects that are native-side (i.e., all BrowserBindings) per
|
| - // Instance, but it would have to be shared across threads and would
|
| - // therefore need synchronization. D'oh!
|
| - SharedScriptingInterface scripting_if_ptr(
|
| - new JavaScriptObjectProxy(NPVARIANT_TO_OBJECT(np_var), instance_));
|
| - retval.reset(new c_salt::Variant(scripting_if_ptr));
|
| - assert(Variant::kObjectVariantType == retval->variant_type());
|
| - break;
|
| - }
|
| - case NPVariantType_String: {
|
| - NPString np_string(NPVARIANT_TO_STRING(np_var));
|
| - retval.reset(new c_salt::Variant(std::string(np_string.UTF8Characters,
|
| - np_string.UTF8Length)));
|
| - break;
|
| - }
|
| - case NPVariantType_Bool: {
|
| - retval.reset(new c_salt::Variant(NPVARIANT_TO_BOOLEAN(np_var)));
|
| - break;
|
| - }
|
| - case NPVariantType_Int32: {
|
| - retval.reset(new c_salt::Variant(NPVARIANT_TO_INT32(np_var)));
|
| - break;
|
| - }
|
| - case NPVariantType_Double: {
|
| - retval.reset(new c_salt::Variant(NPVARIANT_TO_DOUBLE(np_var)));
|
| - break;
|
| - }
|
| - default: {
|
| - assert(false);
|
| - }
|
| - }
|
| - return retval;
|
| -}
|
| -
|
| -void
|
| -VariantConverter::ConvertVariantToNPVariant(const c_salt::Variant& c_salt_var,
|
| - NPVariant* np_var) const {
|
| - assert(np_var);
|
| - switch (c_salt_var.variant_type()) {
|
| - case c_salt::Variant::kNullVariantType: {
|
| - NULL_TO_NPVARIANT(*np_var);
|
| - break;
|
| - }
|
| - case c_salt::Variant::kBoolVariantType: {
|
| - BOOLEAN_TO_NPVARIANT(c_salt_var.BoolValue(), *np_var);
|
| - break;
|
| - }
|
| - case c_salt::Variant::kInt32VariantType: {
|
| - INT32_TO_NPVARIANT(c_salt_var.Int32Value(), *np_var);
|
| - break;
|
| - }
|
| - case c_salt::Variant::kDoubleVariantType: {
|
| - DOUBLE_TO_NPVARIANT(c_salt_var.DoubleValue(), *np_var);
|
| - break;
|
| - }
|
| - case c_salt::Variant::kStringVariantType: {
|
| - // TODO(dmichael, dspringer): We could provide a method that means:
|
| - // "I know for sure it's a string; return it to me by const-reference.
|
| - // If I'm wrong, I take full responsibility." Name it something like:
|
| - // NoReallyImSureItsAStringJustGiveItToMePleaseWithoutCopying()
|
| - // As it is, here's what's happening:
|
| - // Get the string_value which makes a temporary copy in this scope. Bind
|
| - // the const-reference string_value to it.
|
| - const std::string& string_value = c_salt_var.StringValue();
|
| - const std::string::size_type str_length(string_value.length()+1);
|
| - // Ask the browser to allocate memory; it will take ownership of
|
| - // string_copy.
|
| - NPUTF8* utf8_string = reinterpret_cast<NPUTF8*>(NPN_MemAlloc(str_length));
|
| - std::strncpy(utf8_string, string_value.c_str(), str_length);
|
| - STRINGN_TO_NPVARIANT(utf8_string, str_length-1, *np_var);
|
| - break;
|
| - }
|
| - case c_salt::Variant::kObjectVariantType: {
|
| - SharedScriptingInterface scriptable = c_salt_var.ObjectValue();
|
| - if (scriptable->IsNative()) {
|
| - // This must be implemented with ScriptingBridge; we support no other
|
| - // form of native-backed scripting object.
|
| - ScriptingBridge* bridge =
|
| - static_cast<ScriptingBridge*>(scriptable.get());
|
| - const NPObject* const_np_obj = bridge->browser_binding();
|
| - NPObject* np_obj = const_cast<NPObject*>(const_np_obj);
|
| - // TODO(c_salt authors): Should we bump ref count? This doesn't.
|
| - OBJECT_TO_NPVARIANT(np_obj, *np_var);
|
| - } else {
|
| - // It's a JavaScript object, and we're using NPAPI, so it must be a
|
| - // npapi::JavaScriptObjectProxy.
|
| - npapi::JavaScriptObjectProxy* proxy =
|
| - static_cast<JavaScriptObjectProxy*>(scriptable.get());
|
| - // TODO(c_salt authors): Same question... bump ref count? I think not;
|
| - // the browser should take over, but we should check.
|
| - OBJECT_TO_NPVARIANT(proxy->np_object(), *np_var);
|
| - }
|
| - break;
|
| - }
|
| - default: {
|
| - assert(false);
|
| - }
|
| - }
|
| - return;
|
| -}
|
| -
|
| -} // namespace npapi
|
| -} // namespace c_salt
|
|
|