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

Side by Side Diff: plugins/update/npapi/dispatch_host_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « plugins/update/npapi/dispatch_host.cc ('k') | plugins/update/npapi/np_update.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2009 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 #include "omaha/plugins/update/npapi/dispatch_host.h"
17 #include <atlbase.h>
18 #include <atlcom.h>
19 #include <string.h>
20 #include <vector>
21 #include "omaha/plugins/update/npapi/testing/dispatch_host_test_interface.h"
22 #include "omaha/plugins/update/npapi/testing/stubs.h"
23 #include "omaha/testing/unit_test.h"
24
25 namespace omaha {
26
27 class DispatchHostTest : public testing::Test {
28 protected:
29 virtual void SetUp() {
30 CComPtr<IDispatch> dispatch;
31 ASSERT_SUCCEEDED(
32 CComCoClass<DispatchHostTestInterface>::CreateInstance(&dispatch));
33 dispatch_host_ = NPN_CreateObject(NULL, &DispatchHost::kNPClass_);
34 static_cast<DispatchHost*>(dispatch_host_)->dispatch_ = dispatch.Detach();
35 VOID_TO_NPVARIANT(result_);
36 }
37
38 virtual void TearDown() {
39 NPN_ReleaseObject(dispatch_host_);
40 for (std::vector<NPVariant>::iterator it = args_.begin();
41 it != args_.end(); ++it) {
42 NPN_ReleaseVariantValue(&*it);
43 }
44 NPN_ReleaseVariantValue(&result_);
45 }
46
47 void UseTestInterface2() {
48 NPN_ReleaseObject(dispatch_host_);
49 CComPtr<IDispatch> dispatch;
50 ASSERT_SUCCEEDED(
51 CComCoClass<DispatchHostTestInterface2>::CreateInstance(&dispatch));
52 dispatch_host_ = NPN_CreateObject(NULL, &DispatchHost::kNPClass_);
53 static_cast<DispatchHost*>(dispatch_host_)->dispatch_ = dispatch.Detach();
54 }
55
56 void PushArg(bool value) {
57 args_.push_back(NPVariant());
58 BOOLEAN_TO_NPVARIANT(value, args_.back());
59 }
60
61 void PushArg(int32 value) {
62 args_.push_back(NPVariant());
63 INT32_TO_NPVARIANT(value, args_.back());
64 }
65
66 void PushArg(double value) {
67 args_.push_back(NPVariant());
68 DOUBLE_TO_NPVARIANT(value, args_.back());
69 }
70
71 void PushArg(const char* value) {
72 args_.push_back(NPVariant());
73 // TODO(omaha): _strdup is an implementation detail of the stubs.
74 STRINGZ_TO_NPVARIANT(_strdup(value), args_.back());
75 }
76
77 NPObject* dispatch_host_;
78 NPIdentifierFactory id_factory_;
79
80 std::vector<NPVariant> args_;
81 NPVariant result_;
82 };
83
84 TEST_F(DispatchHostTest, HasMethod) {
85 EXPECT_TRUE(NPN_HasMethod(NULL, dispatch_host_,
86 id_factory_.Create("Random")));
87 EXPECT_TRUE(NPN_HasMethod(NULL, dispatch_host_,
88 id_factory_.Create("AddAsMethod")));
89
90 // Property getters with input arguments should be treated as methods.
91 EXPECT_TRUE(NPN_HasMethod(NULL, dispatch_host_,
92 id_factory_.Create("AddAsProperty")));
93
94 // Properties and non-existent members are not methods.
95 EXPECT_FALSE(NPN_HasMethod(NULL, dispatch_host_,
96 id_factory_.Create("Property")));
97 EXPECT_FALSE(NPN_HasMethod(NULL, dispatch_host_,
98 id_factory_.Create("ReadOnlyProperty")));
99 EXPECT_FALSE(NPN_HasMethod(NULL, dispatch_host_,
100 id_factory_.Create("WriteOnlyProperty")));
101 EXPECT_FALSE(NPN_HasMethod(NULL, dispatch_host_,
102 id_factory_.Create("DoesNotExist")));
103 }
104
105 TEST_F(DispatchHostTest, InvokeNoArgs) {
106 EXPECT_TRUE(NPN_Invoke(NULL, dispatch_host_, id_factory_.Create("Random"),
107 NULL, 0, &result_));
108 EXPECT_TRUE(NPVARIANT_IS_INT32(result_));
109 EXPECT_EQ(42, result_.value.intValue);
110 }
111
112 TEST_F(DispatchHostTest, InvokeWithArgs) {
113 PushArg(7);
114 PushArg(27);
115 EXPECT_TRUE(NPN_Invoke(NULL, dispatch_host_,
116 id_factory_.Create("AddAsMethod"), &args_.front(),
117 args_.size(), &result_));
118 EXPECT_TRUE(NPVARIANT_IS_INT32(result_));
119 EXPECT_EQ(34, result_.value.intValue);
120 }
121
122 TEST_F(DispatchHostTest, InvokePropertyWithArgs) {
123 // Property getters that have input args should be handle by Invoke
124 PushArg(8);
125 PushArg(15);
126 EXPECT_TRUE(NPN_Invoke(NULL, dispatch_host_,
127 id_factory_.Create("AddAsProperty"), &args_.front(),
128 args_.size(), &result_));
129 EXPECT_TRUE(NPVARIANT_IS_INT32(result_));
130 EXPECT_EQ(23, result_.value.intValue);
131 }
132
133 TEST_F(DispatchHostTest, InvokeNonexistentMethod) {
134 // Non-existent method, should fail.
135 INT32_TO_NPVARIANT(0x19821982, result_);
136 EXPECT_FALSE(NPN_Invoke(NULL, dispatch_host_,
137 id_factory_.Create("NonExistent"), NULL, 0,
138 &result_));
139 EXPECT_TRUE(NPVARIANT_IS_VOID(result_));
140 }
141
142 TEST_F(DispatchHostTest, InvokeWithIncompatibleArgs) {
143 PushArg("Hello World!");
144 PushArg(0x19851985);
145 INT32_TO_NPVARIANT(0x19881988, result_);
146 EXPECT_FALSE(NPN_Invoke(NULL, dispatch_host_,
147 id_factory_.Create("AddAsMethod"), &args_.front(),
148 args_.size(), &result_));
149 EXPECT_TRUE(NPVARIANT_IS_VOID(result_));
150 }
151
152 TEST_F(DispatchHostTest, InvokeWithIncorrectNumberOfArgs) {
153 PushArg("Don't panic.");
154 INT32_TO_NPVARIANT(0x77777777, result_);
155 EXPECT_FALSE(NPN_Invoke(NULL, dispatch_host_, id_factory_.Create("Random"),
156 &args_.front(), args_.size(), &result_));
157 EXPECT_TRUE(NPVARIANT_IS_VOID(result_));
158 }
159
160 TEST_F(DispatchHostTest, InvokeDefault) {
161 EXPECT_TRUE(NPN_InvokeDefault(NULL, dispatch_host_, NULL, 0, &result_));
162 EXPECT_TRUE(NPVARIANT_IS_OBJECT(result_));
163 }
164
165 TEST_F(DispatchHostTest, InvokeDefaultPropertyWithArgs) {
166 UseTestInterface2();
167 PushArg(1048576);
168 EXPECT_TRUE(NPN_InvokeDefault(NULL, dispatch_host_, &args_.front(),
169 args_.size(), &result_));
170 EXPECT_TRUE(NPVARIANT_IS_INT32(result_));
171 EXPECT_EQ(1048576 * 2, result_.value.intValue);
172 }
173
174 // TODO(omaha): implement negative test
175
176 TEST_F(DispatchHostTest, HasProperty) {
177 EXPECT_TRUE(NPN_HasProperty(NULL, dispatch_host_,
178 id_factory_.Create("Property")));
179 EXPECT_TRUE(NPN_HasProperty(NULL, dispatch_host_,
180 id_factory_.Create("ReadOnlyProperty")));
181 EXPECT_TRUE(NPN_HasProperty(NULL, dispatch_host_,
182 id_factory_.Create("WriteOnlyProperty")));
183
184 // Property getters with input arguments should not be treated as properties.
185 EXPECT_FALSE(NPN_HasProperty(NULL, dispatch_host_,
186 id_factory_.Create("AddAsProperty")));
187
188 // Methods and non-existent members are not properties.
189 EXPECT_FALSE(NPN_HasProperty(NULL, dispatch_host_,
190 id_factory_.Create("Random")));
191 EXPECT_FALSE(NPN_HasProperty(NULL, dispatch_host_,
192 id_factory_.Create("DoesNotExist")));
193 }
194
195 TEST_F(DispatchHostTest, GetProperty) {
196 EXPECT_TRUE(NPN_GetProperty(NULL, dispatch_host_,
197 id_factory_.Create("Property"), &result_));
198 EXPECT_TRUE(NPVARIANT_IS_INT32(result_));
199 EXPECT_EQ(0xdeadbeef, result_.value.intValue);
200 }
201
202 TEST_F(DispatchHostTest, GetPropertyReadOnly) {
203 EXPECT_TRUE(NPN_GetProperty(NULL, dispatch_host_,
204 id_factory_.Create("ReadOnlyProperty"),
205 &result_));
206 EXPECT_TRUE(NPVARIANT_IS_INT32(result_));
207 EXPECT_EQ(19700101, result_.value.intValue);
208 }
209
210 TEST_F(DispatchHostTest, SetProperty) {
211 PushArg(20002000);
212 EXPECT_TRUE(NPN_SetProperty(NULL, dispatch_host_,
213 id_factory_.Create("Property"), &args_.front()));
214 }
215
216 TEST_F(DispatchHostTest, SetPropertyWriteOnly) {
217 PushArg(20612061);
218 EXPECT_TRUE(NPN_SetProperty(NULL, dispatch_host_,
219 id_factory_.Create("WriteOnlyProperty"),
220 &args_.front()));
221 }
222
223 TEST_F(DispatchHostTest, Unsupported) {
224 EXPECT_FALSE(NPN_RemoveProperty(NULL, dispatch_host_, NULL));
225 EXPECT_FALSE(NPN_Enumerate(NULL, dispatch_host_, NULL, NULL));
226 EXPECT_FALSE(NPN_Construct(NULL, dispatch_host_, NULL, 0, NULL));
227 }
228
229 } // namespace omaha
OLDNEW
« no previous file with comments | « plugins/update/npapi/dispatch_host.cc ('k') | plugins/update/npapi/np_update.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698