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

Side by Side Diff: experimental/c_salt/npapi/browser_binding.cc

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2010 The Ginsu Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can
3 // be found in the LICENSE file.
4
5 #include "c_salt/npapi/browser_binding.h"
6
7 #include <vector>
8
9 #include "c_salt/instance.h"
10 #include "c_salt/npapi/variant_converter.h"
11 #include "c_salt/variant.h"
12
13 namespace c_salt {
14 namespace npapi {
15
16 bool BrowserBinding::HasMethod(NPIdentifier name) const {
17 ScopedNPIdToStringConverter np_str(name);
18 return scripting_bridge_->HasScriptMethod(np_str.string_value());
19 }
20
21 void BrowserBinding::Invalidate() {
22 return scripting_bridge_->Invalidate();
23 }
24
25 bool BrowserBinding::Invoke(NPIdentifier name,
26 const NPVariant* args,
27 uint32_t arg_count,
28 NPVariant* return_value) {
29 ScopedNPIdToStringConverter np_str(name);
30 // Make a vector of c_salt::Variants that's the same size as |args|
31 // and fill it in. This will take care of cleaning up when we're done,
32 // and vectors are guaranteed to be stored contiguously, so we can pass it
33 // like an array.
34 std::vector< SharedVariant > c_salt_var_vec;
35 c_salt_var_vec.reserve(arg_count);
36 for (uint32_t i = 0; i < arg_count; ++i) {
37 c_salt_var_vec.push_back(
38 variant_converter_.CreateVariantFromNPVariant(args[i]));
39 }
40 SharedVariant c_salt_return_var;
41 bool success = scripting_bridge_->
42 InvokeScriptMethod(np_str.string_value(),
43 &(*c_salt_var_vec.begin()),
44 &(*c_salt_var_vec.end()),
45 &c_salt_return_var);
46 if (success) {
47 variant_converter_.ConvertVariantToNPVariant(*c_salt_return_var,
48 return_value);
49 }
50 return success;
51 }
52
53 bool BrowserBinding::HasProperty(NPIdentifier name) const {
54 ScopedNPIdToStringConverter np_str(name);
55 return scripting_bridge_->HasScriptProperty(np_str.string_value());
56 }
57
58 bool BrowserBinding::GetProperty(NPIdentifier name, NPVariant* return_value)
59 const {
60 ScopedNPIdToStringConverter np_str(name);
61 SharedVariant value(new Variant());
62 bool success = scripting_bridge_->GetScriptProperty(np_str.string_value(),
63 &value);
64 variant_converter_.ConvertVariantToNPVariant(*value, return_value);
65 return success;
66 }
67
68 bool BrowserBinding::SetProperty(NPIdentifier name,
69 const NPVariant& np_value) {
70 ScopedNPIdToStringConverter np_str(name);
71 SharedVariant value(variant_converter_.CreateVariantFromNPVariant(np_value));
72 return scripting_bridge_->SetScriptProperty(np_str.string_value(), value);
73 }
74
75 bool BrowserBinding::RemoveProperty(NPIdentifier name) {
76 ScopedNPIdToStringConverter np_str(name);
77 return scripting_bridge_->RemoveScriptProperty(np_str.string_value());
78 }
79
80 // Helper functions for dereferencing the bridging object.
81 static inline BrowserBinding* cast_browser_binding(NPObject* np_object) {
82 assert(np_object);
83 return static_cast<BrowserBinding*>(np_object);
84 }
85
86 // The browser-facing entry points that represent the bridge's class methods.
87 // These are the function wrappers that the browser actually calls.
88 NPObject* Allocate(NPP npp, NPClass* npclass) {
89 return new BrowserBinding(npp);
90 }
91
92 void Deallocate(NPObject* object) {
93 delete cast_browser_binding(object);
94 }
95
96 void Invalidate(NPObject* object) {
97 cast_browser_binding(object)->Invalidate();
98 }
99
100 bool HasMethod(NPObject* object, NPIdentifier name) {
101 return cast_browser_binding(object)->HasMethod(name);
102 }
103
104 bool Invoke(NPObject* object, NPIdentifier name,
105 const NPVariant* args,
106 uint32_t arg_count,
107 NPVariant* return_value) {
108 return cast_browser_binding(object)->Invoke(
109 name, args, arg_count, return_value);
110 }
111
112 bool HasProperty(NPObject* object, NPIdentifier name) {
113 return cast_browser_binding(object)->HasProperty(name);
114 }
115
116 bool GetProperty(NPObject* object, NPIdentifier name, NPVariant* result) {
117 return cast_browser_binding(object)->GetProperty(name, result);
118 }
119
120 bool SetProperty(NPObject* object, NPIdentifier name, const NPVariant* value) {
121 return cast_browser_binding(object)->SetProperty(name, *value);
122 }
123
124 bool RemoveProperty(NPObject* object, NPIdentifier name) {
125 return cast_browser_binding(object)->RemoveProperty(name);
126 }
127
128 void BrowserBinding::Retain() {
129 NPN_RetainObject(this);
130 }
131
132 static NPClass bridge_class = {
133 NP_CLASS_STRUCT_VERSION,
134 c_salt::npapi::Allocate,
135 c_salt::npapi::Deallocate,
136 c_salt::npapi::Invalidate,
137 c_salt::npapi::HasMethod,
138 c_salt::npapi::Invoke,
139 NULL, // InvokeDefault is not implemented
140 c_salt::npapi::HasProperty,
141 c_salt::npapi::GetProperty,
142 c_salt::npapi::SetProperty,
143 c_salt::npapi::RemoveProperty
144 };
145
146 BrowserBinding* BrowserBinding::CreateBrowserBinding(
147 const c_salt::Instance& instance) {
148 return static_cast<BrowserBinding*>(
149 NPN_CreateObject(instance.npp_instance(), &bridge_class));
150 }
151
152 } // namespace npapi
153 } // namespace c_salt
OLDNEW
« no previous file with comments | « experimental/c_salt/npapi/browser_binding.h ('k') | experimental/c_salt/npapi/javascript_object_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698