| 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 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 #include "PluginObject.h" | 27 #include "PluginObject.h" |
| 28 | 28 |
| 29 #include <stdlib.h> | 29 #include <stdlib.h> |
| 30 | 30 |
| 31 static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count
); | 31 static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count
); |
| 32 static bool testInvokeDefault(NPObject *obj, const NPVariant *args, uint32_t arg
Count, NPVariant *result); | 32 static bool testInvokeDefault(NPObject *obj, const NPVariant *args, uint32_t arg
Count, NPVariant *result); |
| 33 static bool testHasProperty(NPObject *obj, NPIdentifier name); | 33 static bool testHasProperty(NPObject *obj, NPIdentifier name); |
| 34 static bool testGetProperty(NPObject *obj, NPIdentifier name, NPVariant *variant
); | 34 static bool testGetProperty(NPObject *obj, NPIdentifier name, NPVariant *variant
); |
| 35 static NPObject *testAllocate(NPP npp, NPClass *theClass); | 35 static NPObject *testAllocate(NPP npp, NPClass *theClass); |
| 36 static void testDeallocate(NPObject *obj); | 36 static void testDeallocate(NPObject *obj); |
| 37 static bool testConstruct(NPObject* obj, const NPVariant* args, uint32_t argCoun
t, NPVariant* result); |
| 38 |
| 37 | 39 |
| 38 static NPClass testClass = { | 40 static NPClass testClass = { |
| 39 NP_CLASS_STRUCT_VERSION, | 41 NP_CLASS_STRUCT_VERSION, |
| 40 testAllocate, | 42 testAllocate, |
| 41 testDeallocate, | 43 testDeallocate, |
| 42 0, | 44 0, |
| 43 0, | 45 0, |
| 44 0, | 46 0, |
| 45 testInvokeDefault, | 47 testInvokeDefault, |
| 46 testHasProperty, | 48 testHasProperty, |
| 47 testGetProperty, | 49 testGetProperty, |
| 48 0, | 50 0, |
| 49 0, | 51 0, |
| 50 testEnumerate | 52 testEnumerate, |
| 53 testConstruct |
| 51 }; | 54 }; |
| 52 | 55 |
| 53 NPClass *getTestClass(void) | 56 NPClass *getTestClass(void) |
| 54 { | 57 { |
| 55 return &testClass; | 58 return &testClass; |
| 56 } | 59 } |
| 57 | 60 |
| 58 int testObjectCount = 0; | 61 int testObjectCount = 0; |
| 59 | 62 |
| 60 int getTestObjectCount(void) { | 63 int getTestObjectCount(void) { |
| 61 return testObjectCount; | 64 return testObjectCount; |
| 62 } | 65 } |
| 63 | 66 |
| 64 static bool identifiersInitialized = false; | 67 static bool identifiersInitialized = false; |
| 65 | 68 |
| 66 #define NUM_TEST_IDENTIFIERS 4 | 69 #define NUM_ENUMERABLE_TEST_IDENTIFIERS 4 |
| 67 #define ID_PROPERTY_FOO 0 | 70 #define NUM_TEST_IDENTIFIERS 5 |
| 68 #define ID_PROPERTY_BAR 1 | 71 |
| 69 #define ID_PROPERTY_TEST_OBJECT 2 | 72 #define ID_PROPERTY_FOO 0 |
| 70 #define ID_PROPERTY_REF_COUNT 3 | 73 #define ID_PROPERTY_BAR 1 |
| 74 #define ID_PROPERTY_TEST_OBJECT 2 |
| 75 #define ID_PROPERTY_REF_COUNT 3 |
| 76 #define ID_PROPERTY_OBJECT_POINTER 4 |
| 71 | 77 |
| 72 static NPIdentifier testIdentifiers[NUM_TEST_IDENTIFIERS]; | 78 static NPIdentifier testIdentifiers[NUM_TEST_IDENTIFIERS]; |
| 73 static const NPUTF8 *testIdentifierNames[NUM_TEST_IDENTIFIERS] = { | 79 static const NPUTF8 *testIdentifierNames[NUM_TEST_IDENTIFIERS] = { |
| 74 "foo", | 80 "foo", |
| 75 "bar", | 81 "bar", |
| 76 "testObject", | 82 "testObject", |
| 77 "refCount", | 83 "refCount", |
| 84 "objectPointer", |
| 78 }; | 85 }; |
| 79 | 86 |
| 80 static void initializeIdentifiers(void) | 87 static void initializeIdentifiers(void) |
| 81 { | 88 { |
| 82 browser->getstringidentifiers(testIdentifierNames, NUM_TEST_IDENTIFIERS, tes
tIdentifiers); | 89 browser->getstringidentifiers(testIdentifierNames, NUM_TEST_IDENTIFIERS, tes
tIdentifiers); |
| 83 } | 90 } |
| 84 | 91 |
| 85 static NPObject *testAllocate(NPP npp, NPClass *theClass) | 92 static NPObject *testAllocate(NPP npp, NPClass *theClass) |
| 86 { | 93 { |
| 87 TestObject *newInstance = | 94 TestObject *newInstance = |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 } else if (name == testIdentifiers[ID_PROPERTY_TEST_OBJECT]) { | 144 } else if (name == testIdentifiers[ID_PROPERTY_TEST_OBJECT]) { |
| 138 TestObject* testObject = reinterpret_cast<TestObject*>(obj); | 145 TestObject* testObject = reinterpret_cast<TestObject*>(obj); |
| 139 if (testObject->testObject == NULL) | 146 if (testObject->testObject == NULL) |
| 140 testObject->testObject = browser->createobject(NULL, &testClass); | 147 testObject->testObject = browser->createobject(NULL, &testClass); |
| 141 browser->retainobject(testObject->testObject); | 148 browser->retainobject(testObject->testObject); |
| 142 OBJECT_TO_NPVARIANT(testObject->testObject, *variant); | 149 OBJECT_TO_NPVARIANT(testObject->testObject, *variant); |
| 143 return true; | 150 return true; |
| 144 } else if (name == testIdentifiers[ID_PROPERTY_REF_COUNT]) { | 151 } else if (name == testIdentifiers[ID_PROPERTY_REF_COUNT]) { |
| 145 INT32_TO_NPVARIANT(obj->referenceCount, *variant); | 152 INT32_TO_NPVARIANT(obj->referenceCount, *variant); |
| 146 return true; | 153 return true; |
| 154 } else if (name == testIdentifiers[ID_PROPERTY_OBJECT_POINTER]) { |
| 155 int32_t objectPointer = static_cast<int32_t>(reinterpret_cast<long long>
(obj)); |
| 156 INT32_TO_NPVARIANT(objectPointer, *variant); |
| 157 return true; |
| 147 } | 158 } |
| 148 return false; | 159 return false; |
| 149 } | 160 } |
| 150 | 161 |
| 151 static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count
) | 162 static bool testEnumerate(NPObject *npobj, NPIdentifier **value, uint32_t *count
) |
| 152 { | 163 { |
| 153 *count = NUM_TEST_IDENTIFIERS; | 164 *count = NUM_ENUMERABLE_TEST_IDENTIFIERS; |
| 154 | 165 |
| 155 *value = (NPIdentifier*)browser->memalloc(NUM_TEST_IDENTIFIERS * sizeof(NPId
entifier)); | 166 *value = (NPIdentifier*)browser->memalloc(NUM_ENUMERABLE_TEST_IDENTIFIERS *
sizeof(NPIdentifier)); |
| 156 memcpy(*value, testIdentifiers, sizeof(NPIdentifier) * NUM_TEST_IDENTIFIERS)
; | 167 memcpy(*value, testIdentifiers, sizeof(NPIdentifier) * NUM_ENUMERABLE_TEST_I
DENTIFIERS); |
| 157 | 168 |
| 158 return true; | 169 return true; |
| 159 } | 170 } |
| 160 | 171 |
| 172 static bool testConstruct(NPObject* npobj, const NPVariant* args, uint32_t argCo
unt, NPVariant* result) |
| 173 { |
| 174 browser->retainobject(npobj); |
| 161 | 175 |
| 176 // Just return the same object. |
| 177 OBJECT_TO_NPVARIANT(npobj, *result); |
| 178 return true; |
| 179 } |
| 180 |
| 181 |
| OLD | NEW |