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

Unified Diff: webkit/activex_shim/npn_scripting.cc

Issue 200031: Take out the activex control. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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
« no previous file with comments | « webkit/activex_shim/npn_scripting.h ('k') | webkit/activex_shim/npp_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/activex_shim/npn_scripting.cc
===================================================================
--- webkit/activex_shim/npn_scripting.cc (revision 25626)
+++ webkit/activex_shim/npn_scripting.cc (working copy)
@@ -1,270 +0,0 @@
-// Copyright (c) 2006-2008 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 "webkit/activex_shim/npn_scripting.h"
-
-#include "base/logging.h"
-#include "base/string_util.h"
-#include "webkit/activex_shim/npp_impl.h"
-
-namespace activex_shim {
-
-NPNScriptableObject::NPNScriptableObject() : npp_(NULL), object_(NULL) {
-}
-
-NPNScriptableObject::NPNScriptableObject(NPP npp, NPObject* object)
- : npp_(npp),
- object_(object) {
-}
-
-NPNScriptableObject::NPNScriptableObject(NPNScriptableObject& object)
- : npp_(object.npp_),
- object_(object.object_) {
- if (object_)
- g_browser->retainobject(object_);
-}
-
-NPNScriptableObject::~NPNScriptableObject() {
- Release();
-}
-
-NPNScriptableObject& NPNScriptableObject::operator=(
- NPNScriptableObject& object) {
- if (this == &object)
- return *this;
- if (object_)
- g_browser->releaseobject(object_);
- npp_ = object.npp_;
- object_ = object.object_;
- if (object_)
- g_browser->retainobject(object_);
- return *this;
-}
-
-void NPNScriptableObject::Init(NPP npp, NPObject* object) {
- Release();
- npp_ = npp;
- object_ = object;
-}
-
-void NPNScriptableObject::Release() {
- if (object_) {
- g_browser->releaseobject(object_);
- object_ = NULL;
- }
- npp_ = NULL;
-}
-
-bool NPNScriptableObject::HasProperty(const std::string& name) {
- if (!IsValid())
- return false;
- NPIdentifier id = g_browser->getstringidentifier(name.c_str());
- bool res = g_browser->hasproperty(npp_, object_, id);
- // How do we release id since it's coming from the browser? the answer is
- // we never release them. See implementation of NPN_GetStringIdentifier
- // in npruntime.cpp.
- return res;
-}
-
-bool NPNScriptableObject::GetProperty(const std::string& name, NPVariant* ret) {
- if (!IsValid())
- return false;
- NPIdentifier id = g_browser->getstringidentifier(name.c_str());
- return g_browser->getproperty(npp_, object_, id, ret);
-}
-
-bool NPNScriptableObject::SetProperty(const std::string& name,
- const NPVariant& val) {
- if (!IsValid())
- return false;
- NPIdentifier id = g_browser->getstringidentifier(name.c_str());
- return g_browser->setproperty(npp_, object_, id, &val);
-}
-
-NPNScriptableObject NPNScriptableObject::GetObjectProperty(
- const std::string& name,
- bool* succeeded) {
- NPNScriptableObject res;
- if (succeeded)
- *succeeded = false;
- NPVariant var;
- if (!GetProperty(name, &var))
- return res;
- if (var.type == NPVariantType_Object) {
- res.Init(npp_, var.value.objectValue);
- // From now, the object should have reference count as 1. We shall not
- // release the variant cause it will release the object.
- if (succeeded)
- *succeeded = true;
- } else {
- g_browser->releasevariantvalue(&var);
- }
- return res;
-}
-
-std::wstring NPNScriptableObject::GetStringProperty(const std::string& name,
- bool* succeeded) {
- std::wstring res;
- if (succeeded)
- *succeeded = false;
- NPVariant var;
- if (!GetProperty(name, &var))
- return res;
- if (var.type == NPVariantType_String) {
- std::string tmp(var.value.stringValue.UTF8Characters,
- var.value.stringValue.UTF8Length);
- res = UTF8ToWide(tmp.c_str());
- if (succeeded)
- *succeeded = true;
- }
- // We've made a copy of the string. Thus we should release the variant in
- // any case.
- g_browser->releasevariantvalue(&var);
- return res;
-}
-
-bool NPNScriptableObject::SetStringProperty(const std::string& name,
- const std::wstring& val) {
- NPVariantWrap var;
- var.SetString(val);
- return SetProperty(name, var);
-}
-
-bool NPNScriptableObject::Invoke(const std::string& name,
- const char* format, ...) {
- if (!IsValid())
- return false;
- NPIdentifier id = g_browser->getstringidentifier(name.c_str());
- std::vector<NPVariantWrap> args;
- va_list argptr;
- va_start(argptr, format);
- for (const char* p = format; *p; ++p) {
- char c = *p;
- DCHECK(c == '%' && *(p + 1) != 0);
- if (c != '%' || *(p + 1) == 0)
- continue;
- ++p;
- c = *p;
- NPVariantWrap var;
- switch(c) {
- case 's': {
- // String
- wchar_t *s = va_arg(argptr, wchar_t*);
- var.SetString(s);
- break;
- }
- case 'd': {
- // String
- int n = va_arg(argptr, int);
- var.SetInt(n);
- break;
- }
- default: {
- DCHECK(false);
- break;
- }
- }
- args.push_back(var);
- }
- NPVariant ret;
- ret.type = NPVariantType_Void;
- bool res = false;
- if (args.size())
- res = g_browser->invoke(npp_, object_, id, &args[0],
- static_cast<unsigned int>(args.size()), &ret);
- else
- res = g_browser->invoke(npp_, object_, id, NULL, 0, &ret);
-
- g_browser->releasevariantvalue(&ret);
- return res;
-}
-
-NPVariantWrap::NPVariantWrap() {
- type = NPVariantType_Void;
-}
-
-NPVariantWrap::NPVariantWrap(const NPVariantWrap& v) {
- type = NPVariantType_Void;
- Copy(v);
-}
-
-NPVariantWrap::~NPVariantWrap() {
- Release();
-}
-
-NPVariantWrap& NPVariantWrap::operator=(const NPVariantWrap& v) {
- if (this != &v)
- Copy(v);
- return *this;
-}
-
-void NPVariantWrap::Copy(const NPVariant& v) {
- if (this == &v)
- return;
- Release();
- switch(v.type) {
- case NPVariantType_Void:
- break;
- case NPVariantType_Null:
- break;
- case NPVariantType_Bool:
- value.boolValue = v.value.boolValue;
- break;
- case NPVariantType_Int32:
- value.intValue = v.value.intValue;
- break;
- case NPVariantType_Double:
- value.doubleValue = v.value.doubleValue;
- break;
- case NPVariantType_String:
- SetUTF8String(v.value.stringValue.UTF8Characters,
- v.value.stringValue.UTF8Length);
- break;
- case NPVariantType_Object:
- g_browser->retainobject(v.value.objectValue);
- value.objectValue = v.value.objectValue;
- break;
- default:
- DCHECK(false);
- break;
- }
- type = v.type;
-}
-
-void NPVariantWrap::Release() {
- if (type == NPVariantType_String) {
- delete[] value.stringValue.UTF8Characters;
- } else if (type == NPVariantType_Object) {
- g_browser->releaseobject(value.objectValue);
- }
- type = NPVariantType_Void;
-}
-
-void NPVariantWrap::SetBool(bool val) {
- Release();
- value.boolValue = val;
- type = NPVariantType_Bool;
-}
-
-void NPVariantWrap::SetInt(int val) {
- Release();
- value.intValue = val;
- type = NPVariantType_Int32;
-}
-
-void NPVariantWrap::SetUTF8String(const NPUTF8* p, unsigned int size) {
- Release();
- value.stringValue.UTF8Characters = new char[size + 1];
- memcpy(const_cast<NPUTF8*>(value.stringValue.UTF8Characters),
- p, size + 1);
- value.stringValue.UTF8Length = size;
- type = NPVariantType_String;
-}
-
-void NPVariantWrap::SetString(const std::wstring& val) {
- std::string s = WideToUTF8(val);
- SetUTF8String(s.c_str(), static_cast<unsigned int>(s.size()));
-}
-
-} // namespace activex_shim
« no previous file with comments | « webkit/activex_shim/npn_scripting.h ('k') | webkit/activex_shim/npp_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698