OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
11 * documentation and/or other materials provided with the distribution. | 11 * documentation and/or other materials provided with the distribution. |
12 * | 12 * |
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY | 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY |
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR | 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR |
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
24 */ | 24 */ |
25 | 25 |
26 #include "TestObject.h" | 26 #include "TestObject.h" |
27 #include "PluginObject.h" | 27 #include "PluginObject.h" |
28 | 28 |
29 #include <string.h> | 29 #include <string.h> |
30 #include <stdlib.h> | 30 #include <stdlib.h> |
31 | 31 |
32 static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count
); | 32 static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count
); |
33 static bool testHasMethod(NPObject*, NPIdentifier name); | 33 static bool testHasMethod(NPObject*, NPIdentifier name); |
34 static bool testInvoke(NPObject*, NPIdentifier name, const NPVariant* args, uint
32_t argCount, NPVariant* result); | 34 static bool testInvoke(NPObject*, NPIdentifier name, const NPVariant* args, uint
32_t argCount, NPVariant* result); |
35 static bool testHasProperty(NPObject*, NPIdentifier name); | 35 static bool testHasProperty(NPObject*, NPIdentifier name); |
36 static bool testGetProperty(NPObject*, NPIdentifier name, NPVariant*); | 36 static bool testGetProperty(NPObject*, NPIdentifier name, NPVariant*); |
37 static NPObject *testAllocate(NPP npp, NPClass *theClass); | 37 static NPObject *testAllocate(NPP npp, NPClass *theClass); |
38 static void testDeallocate(NPObject *obj); | 38 static void testDeallocate(NPObject *obj); |
39 static bool testConstruct(NPObject* obj, const NPVariant* args, uint32_t argCoun
t, NPVariant* result); | 39 static bool testConstruct(NPObject* obj, const NPVariant* args, uint32_t argCoun
t, NPVariant* result); |
40 | 40 |
41 static NPClass testClass = { | 41 static NPClass testClass = { |
42 NP_CLASS_STRUCT_VERSION, | 42 NP_CLASS_STRUCT_VERSION, |
43 testAllocate, | 43 testAllocate, |
44 testDeallocate, | 44 testDeallocate, |
45 0, | 45 0, |
46 testHasMethod, | 46 testHasMethod, |
47 testInvoke, | 47 testInvoke, |
48 0, | 48 0, |
49 testHasProperty, | 49 testHasProperty, |
50 testGetProperty, | 50 testGetProperty, |
51 0, | 51 0, |
52 0, | 52 0, |
53 testEnumerate, | 53 testEnumerate, |
54 testConstruct | 54 testConstruct |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
114 ++testObjectCount; | 114 ++testObjectCount; |
115 | 115 |
116 if (!identifiersInitialized) { | 116 if (!identifiersInitialized) { |
117 identifiersInitialized = true; | 117 identifiersInitialized = true; |
118 initializeIdentifiers(); | 118 initializeIdentifiers(); |
119 } | 119 } |
120 | 120 |
121 return reinterpret_cast<NPObject*>(newInstance); | 121 return reinterpret_cast<NPObject*>(newInstance); |
122 } | 122 } |
123 | 123 |
124 static void testDeallocate(NPObject *obj) | 124 static void testDeallocate(NPObject *obj) |
125 { | 125 { |
126 TestObject* testObject = reinterpret_cast<TestObject*>(obj); | 126 TestObject* testObject = reinterpret_cast<TestObject*>(obj); |
127 if (testObject->testObject) | 127 if (testObject->testObject) |
128 browser->releaseobject(testObject->testObject); | 128 browser->releaseobject(testObject->testObject); |
129 | 129 |
130 --testObjectCount; | 130 --testObjectCount; |
131 free(obj); | 131 free(obj); |
132 } | 132 } |
133 | 133 |
134 static bool testHasMethod(NPObject*, NPIdentifier name) | 134 static bool testHasMethod(NPObject*, NPIdentifier name) |
(...skipping 13 matching lines...) Expand all Loading... |
148 } | 148 } |
149 return false; | 149 return false; |
150 } | 150 } |
151 | 151 |
152 static bool testHasProperty(NPObject*, NPIdentifier name) | 152 static bool testHasProperty(NPObject*, NPIdentifier name) |
153 { | 153 { |
154 for (unsigned i = 0; i < NUM_TEST_IDENTIFIERS; i++) { | 154 for (unsigned i = 0; i < NUM_TEST_IDENTIFIERS; i++) { |
155 if (testIdentifiers[i] == name) | 155 if (testIdentifiers[i] == name) |
156 return true; | 156 return true; |
157 } | 157 } |
158 | 158 |
159 return false; | 159 return false; |
160 } | 160 } |
161 | 161 |
162 static bool testGetProperty(NPObject* npobj, NPIdentifier name, NPVariant* resul
t) | 162 static bool testGetProperty(NPObject* npobj, NPIdentifier name, NPVariant* resul
t) |
163 { | 163 { |
164 if (name == testIdentifiers[ID_PROPERTY_FOO]) { | 164 if (name == testIdentifiers[ID_PROPERTY_FOO]) { |
165 char* mem = static_cast<char*>(browser->memalloc(4)); | 165 char* mem = static_cast<char*>(browser->memalloc(4)); |
166 strcpy(mem, "foo"); | 166 strcpy(mem, "foo"); |
167 STRINGZ_TO_NPVARIANT(mem, *result); | 167 STRINGZ_TO_NPVARIANT(mem, *result); |
168 return true; | 168 return true; |
169 } | 169 } |
170 if (name == testIdentifiers[ID_PROPERTY_OBJECT_POINTER]) { | 170 if (name == testIdentifiers[ID_PROPERTY_OBJECT_POINTER]) { |
171 int32_t objectPointer = static_cast<int32_t>(reinterpret_cast<long long>
(npobj)); | 171 int32_t objectPointer = static_cast<int32_t>(reinterpret_cast<long long>
(npobj)); |
172 | 172 |
173 INT32_TO_NPVARIANT(objectPointer, *result); | 173 INT32_TO_NPVARIANT(objectPointer, *result); |
174 return true; | 174 return true; |
175 } | 175 } |
176 if (name == testIdentifiers[ID_PROPERTY_TEST_OBJECT]) { | 176 if (name == testIdentifiers[ID_PROPERTY_TEST_OBJECT]) { |
177 TestObject* testObject = reinterpret_cast<TestObject*>(npobj); | 177 TestObject* testObject = reinterpret_cast<TestObject*>(npobj); |
178 if (!testObject->testObject) | 178 if (!testObject->testObject) |
179 testObject->testObject = browser->createobject(0, &testClass); | 179 testObject->testObject = browser->createobject(0, &testClass); |
180 browser->retainobject(testObject->testObject); | 180 browser->retainobject(testObject->testObject); |
181 OBJECT_TO_NPVARIANT(testObject->testObject, *result); | 181 OBJECT_TO_NPVARIANT(testObject->testObject, *result); |
182 return true; | 182 return true; |
183 } | 183 } |
184 if (name == testIdentifiers[ID_PROPERTY_REF_COUNT]) { | 184 if (name == testIdentifiers[ID_PROPERTY_REF_COUNT]) { |
185 INT32_TO_NPVARIANT(npobj->referenceCount, *result); | 185 INT32_TO_NPVARIANT(npobj->referenceCount, *result); |
186 return true; | 186 return true; |
187 } | 187 } |
188 | 188 |
189 return false; | 189 return false; |
190 } | 190 } |
191 | 191 |
192 static bool testEnumerate(NPObject* /*npobj*/, NPIdentifier **value, uint32_t *c
ount) | 192 static bool testEnumerate(NPObject* /*npobj*/, NPIdentifier **value, uint32_t *c
ount) |
193 { | 193 { |
194 *count = NUM_ENUMERATABLE_TEST_IDENTIFIERS; | 194 *count = NUM_ENUMERATABLE_TEST_IDENTIFIERS; |
195 | 195 |
196 *value = (NPIdentifier*)browser->memalloc(NUM_ENUMERATABLE_TEST_IDENTIFIERS
* sizeof(NPIdentifier)); | 196 *value = (NPIdentifier*)browser->memalloc(NUM_ENUMERATABLE_TEST_IDENTIFIERS
* sizeof(NPIdentifier)); |
197 memcpy(*value, testIdentifiers, sizeof(NPIdentifier) * NUM_ENUMERATABLE_TEST
_IDENTIFIERS); | 197 memcpy(*value, testIdentifiers, sizeof(NPIdentifier) * NUM_ENUMERATABLE_TEST
_IDENTIFIERS); |
198 | 198 |
199 return true; | 199 return true; |
200 } | 200 } |
201 | 201 |
202 static bool testConstruct(NPObject* npobj, const NPVariant* /*args*/, uint32_t /
*argCount*/, NPVariant* result) | 202 static bool testConstruct(NPObject* npobj, const NPVariant* /*args*/, uint32_t /
*argCount*/, NPVariant* result) |
203 { | 203 { |
204 browser->retainobject(npobj); | 204 browser->retainobject(npobj); |
205 | 205 |
206 // Just return the same object. | 206 // Just return the same object. |
207 OBJECT_TO_NPVARIANT(npobj, *result); | 207 OBJECT_TO_NPVARIANT(npobj, *result); |
208 return true; | 208 return true; |
209 } | 209 } |
OLD | NEW |