1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "remoting/host/plugin/host_plugin_utils.h"
9 NPNetscapeFuncs
* g_npnetscape_funcs
= NULL
;
11 std::string
StringFromNPIdentifier(NPIdentifier identifier
) {
12 if (!g_npnetscape_funcs
->identifierisstring(identifier
))
14 NPUTF8
* np_string
= g_npnetscape_funcs
->utf8fromidentifier(identifier
);
15 std::string
string(np_string
);
16 g_npnetscape_funcs
->memfree(np_string
);
20 std::string
StringFromNPVariant(const NPVariant
& variant
) {
21 if (!NPVARIANT_IS_STRING(variant
))
23 const NPString
& np_string
= NPVARIANT_TO_STRING(variant
);
24 return std::string(np_string
.UTF8Characters
, np_string
.UTF8Length
);
27 NPVariant
NPVariantFromString(const std::string
& val
) {
28 size_t len
= val
.length();
30 reinterpret_cast<NPUTF8
*>(g_npnetscape_funcs
->memalloc(len
+ 1));
31 strcpy(chars
, val
.c_str());
33 STRINGN_TO_NPVARIANT(chars
, len
, variant
);
37 NPObject
* ObjectFromNPVariant(const NPVariant
& variant
) {
38 if (!NPVARIANT_IS_OBJECT(variant
))
40 return NPVARIANT_TO_OBJECT(variant
);
43 ScopedRefNPObject::ScopedRefNPObject() : object_(NULL
) { }
45 ScopedRefNPObject::ScopedRefNPObject(NPObject
* object
)
50 ScopedRefNPObject::ScopedRefNPObject(const ScopedRefNPObject
& object
)
55 ScopedRefNPObject::~ScopedRefNPObject() {
59 ScopedRefNPObject
& ScopedRefNPObject::operator=(NPObject
* object
) {
61 g_npnetscape_funcs
->retainobject(object
);
64 g_npnetscape_funcs
->releaseobject(object_
);
70 ScopedRefNPObject
& ScopedRefNPObject::operator=(
71 const ScopedRefNPObject
& object
) {
72 return *this = object
.get();
75 } // namespace remoting