Changeset 8585 in webkit for trunk/JavaScriptCore/bindings/runtime.cpp
- Timestamp:
- Feb 11, 2005, 4:58:13 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/bindings/runtime.cpp
r8384 r8585 30 30 #include <objc_instance.h> 31 31 #include <c_instance.h> 32 #include <NP_jsobject.h> 33 #include <jni_jsobject.h> 32 34 33 35 using namespace KJS; … … 98 100 } 99 101 100 Instance *Instance::createBindingForLanguageInstance (BindingLanguage language, void * instance)102 Instance *Instance::createBindingForLanguageInstance (BindingLanguage language, void *nativeInstance, const RootObject *executionContext) 101 103 { 102 if (language == Instance::JavaLanguage) 103 return new Bindings::JavaInstance ((jobject)instance, 0); 104 else if (language == Instance::ObjectiveCLanguage) 105 return new Bindings::ObjcInstance ((struct objc_object *)instance); 104 Instance *newInstance = 0; 105 106 switch (language) { 107 case Instance::JavaLanguage: { 108 newInstance = new Bindings::JavaInstance ((jobject)nativeInstance, executionContext); 109 break; 110 } 111 case Instance::ObjectiveCLanguage: { 112 newInstance = new Bindings::ObjcInstance ((struct objc_object *)nativeInstance); 113 break; 114 } 115 case Instance::CLanguage: { 116 newInstance = new Bindings::CInstance ((NPObject *)nativeInstance); 117 break; 118 } 119 default: 120 break; 121 } 106 122 107 else if (language == Instance::CLanguage)108 return new Bindings::CInstance ((NPObject *)instance);109 110 return 0;123 if (newInstance) 124 newInstance->setExecutionContext (executionContext); 125 126 return newInstance; 111 127 } 112 128 113 Object Instance::createRuntimeObject (BindingLanguage language, void * myInterface)129 Object Instance::createRuntimeObject (BindingLanguage language, void *nativeInstance, const RootObject *executionContext) 114 130 { 115 Instance *interfaceObject = Instance::createBindingForLanguageInstance (language, (void *) myInterface);131 Instance *interfaceObject = Instance::createBindingForLanguageInstance (language, (void *)nativeInstance, executionContext); 116 132 117 133 Interpreter::lock(); … … 120 136 121 137 return theObject; 138 } 139 140 void *Instance::createLanguageInstanceForValue (ExecState *exec, BindingLanguage language, const Object &value, const RootObject *origin, const RootObject *current) 141 { 142 void *result = 0; 143 144 if (value.type() != ObjectType) 145 return 0; 146 147 ObjectImp *imp = static_cast<ObjectImp*>(value.imp()); 148 149 switch (language) { 150 case Instance::ObjectiveCLanguage: { 151 result = createObjcInstanceForValue (value, origin, current); 152 break; 153 } 154 case Instance::CLanguage: { 155 result = _NPN_CreateScriptObject (0, imp, origin, current); 156 break; 157 } 158 case Instance::JavaLanguage: { 159 // FIXME: factor creation of jni_jsobjects, also remove unnecessary thread 160 // invocation code. 161 break; 162 } 163 default: 164 break; 165 } 166 167 return result; 122 168 } 123 169
Note:
See TracChangeset
for help on using the changeset viewer.