Changeset 80367 in webkit
- Timestamp:
- Mar 4, 2011 11:17:28 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 10 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/Android.jscbindings.mk
r79223 r80367 201 201 bridge/jni/JNIBridge.cpp \ 202 202 bridge/jni/JNIUtility.cpp \ 203 bridge/jni/JobjectWrapper.cpp \ 203 204 bridge/jni/jsc/JNIBridgeJSC.cpp \ 204 205 bridge/jni/jsc/JNIUtilityPrivate.cpp \ -
trunk/Source/WebCore/Android.v8bindings.mk
r80103 r80367 175 175 bridge/jni/JNIBridge.cpp \ 176 176 bridge/jni/JNIUtility.cpp \ 177 bridge/jni/JobjectWrapper.cpp \ 177 178 bridge/jni/v8/JNIBridgeV8.cpp \ 178 179 bridge/jni/v8/JNIUtilityPrivate.cpp \ -
trunk/Source/WebCore/ChangeLog
r80362 r80367 1 2011-03-04 Steve Block <steveblock@google.com> 2 3 Reviewed by Jeremy Orlow. 4 5 JSC and V8 versions of Java bridge should share JobjectWrapper 6 https://bugs.webkit.org/show_bug.cgi?id=55763 7 8 No new tests, refactoring only. 9 10 * Android.jscbindings.mk: 11 * Android.v8bindings.mk: 12 * WebCore.gypi: 13 * WebCore.order: 14 * WebCore.xcodeproj/project.pbxproj: 15 * bridge/jni/JobjectWrapper.cpp: 16 (JobjectWrapper::JobjectWrapper): 17 (JobjectWrapper::~JobjectWrapper): 18 * bridge/jni/JobjectWrapper.h: 19 (JSC::Bindings::JobjectWrapper::instance): 20 (JSC::Bindings::JobjectWrapper::setInstance): 21 (JSC::Bindings::JobjectWrapper::ref): 22 (JSC::Bindings::JobjectWrapper::deref): 23 * bridge/jni/jsc/JNIBridgeJSC.cpp: 24 (JavaField::JavaField): 25 (JavaArray::JavaArray): 26 * bridge/jni/jsc/JNIBridgeJSC.h: 27 * bridge/jni/jsc/JavaInstanceJSC.cpp: 28 (JavaInstance::JavaInstance): 29 * bridge/jni/jsc/JavaInstanceJSC.h: 30 1 31 2011-03-04 Patrick Gansterer <paroga@webkit.org> 2 32 -
trunk/Source/WebCore/WebCore.gypi
r80336 r80367 1012 1012 'bridge/jni/JNIUtility.cpp', 1013 1013 'bridge/jni/JNIUtility.h', 1014 'bridge/jni/JobjectWrapper.cpp', 1015 'bridge/jni/JobjectWrapper.h', 1014 1016 'bridge/jni/v8/JNIBridgeV8.cpp', 1015 1017 'bridge/jni/v8/JNIBridgeV8.h', … … 1023 1025 'bridge/jni/v8/JavaNPObjectV8.h', 1024 1026 'bridge/jni/v8/JavaStringV8.h', 1025 'bridge/jni/v8/JobjectWrapper.cpp',1026 'bridge/jni/v8/JobjectWrapper.h',1027 1027 'css/CSSBorderImageValue.cpp', 1028 1028 'css/CSSBorderImageValue.h', -
trunk/Source/WebCore/WebCore.order
r79825 r80367 11540 11540 __ZN3JSC8Bindings12JavaInstanceC1EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE 11541 11541 __ZN3JSC8Bindings12JavaInstanceC2EP8_jobjectN3WTF10PassRefPtrINS0_10RootObjectEEE 11542 __ZN3JSC8Bindings14J ObjectWrapperC1EP8_jobject11543 __ZN3JSC8Bindings14J ObjectWrapperC2EP8_jobject11542 __ZN3JSC8Bindings14JobjectWrapperC1EP8_jobject 11543 __ZN3JSC8Bindings14JobjectWrapperC2EP8_jobject 11544 11544 __ZN3JSC8Bindings9getJNIEnvEv 11545 11545 __ZN3JSC8Bindings9getJavaVMEv … … 11589 11589 __ZN3WTF20deleteAllPairSecondsIPN3JSC8Bindings5FieldEKNS_7HashMapINS_6RefPtrIN7WebCore10StringImplEEES4_NS7_10StringHashENS_10H 11590 11590 __ZN3JSC8Bindings9JavaFieldD0Ev 11591 __ZN3JSC8Bindings14J ObjectWrapperD1Ev11592 __ZN3JSC8Bindings14J ObjectWrapperD2Ev11591 __ZN3JSC8Bindings14JobjectWrapperD1Ev 11592 __ZN3JSC8Bindings14JobjectWrapperD2Ev 11593 11593 __ZN3WTF15deleteAllValuesIPN3JSC8Bindings6MethodELm0EEEvRKNS_6VectorIT_XT0_EEE 11594 11594 __ZN3JSC8Bindings10JavaMethodD0Ev -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r80328 r80367 1382 1382 596229781133EFD700DC4CBB /* GeolocationPositionCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 596229771133EFD700DC4CBB /* GeolocationPositionCache.cpp */; }; 1383 1383 5962297A1133EFE200DC4CBB /* GeolocationPositionCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 596229791133EFE200DC4CBB /* GeolocationPositionCache.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1384 596950821321059900C3ED18 /* JobjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 596950811321059900C3ED18 /* JobjectWrapper.h */; }; 1385 59695084132105A500C3ED18 /* JobjectWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59695083132105A500C3ED18 /* JobjectWrapper.cpp */; }; 1384 1386 599E759011055A1F00D904FA /* Bridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 599E758F11055A1F00D904FA /* Bridge.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1385 1387 59A85EA2119D68D900DEF1EF /* DeviceOrientationEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59A85EA1119D68D900DEF1EF /* DeviceOrientationEvent.cpp */; }; … … 7845 7847 596229771133EFD700DC4CBB /* GeolocationPositionCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeolocationPositionCache.cpp; sourceTree = "<group>"; }; 7846 7848 596229791133EFE200DC4CBB /* GeolocationPositionCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeolocationPositionCache.h; sourceTree = "<group>"; }; 7849 596950811321059900C3ED18 /* JobjectWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JobjectWrapper.h; sourceTree = "<group>"; }; 7850 59695083132105A500C3ED18 /* JobjectWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JobjectWrapper.cpp; sourceTree = "<group>"; }; 7847 7851 5980B03312EF3D8400DF5F85 /* XMLViewer.xsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = XMLViewer.xsl; sourceTree = "<group>"; }; 7848 7852 599E758F11055A1F00D904FA /* Bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bridge.h; path = bridge/Bridge.h; sourceTree = "<group>"; }; … … 12732 12736 isa = PBXGroup; 12733 12737 children = ( 12738 59695083132105A500C3ED18 /* JobjectWrapper.cpp */, 12739 596950811321059900C3ED18 /* JobjectWrapper.h */, 12734 12740 1A569CD40D7E2B82007C3983 /* jni_jsobject.h */, 12735 12741 1A569CD30D7E2B82007C3983 /* jni_jsobject.mm */, … … 22520 22526 339B5B63131DAA3200F48D02 /* CookiesStrategy.h in Headers */, 22521 22527 33D0212D131DB37B004091A8 /* CookieStorage.h in Headers */, 22528 596950821321059900C3ED18 /* JobjectWrapper.h in Headers */, 22522 22529 ); 22523 22530 runOnlyForDeploymentPostprocessing = 0; … … 25169 25176 5A574F24131DB93900471B88 /* RenderQuote.cpp in Sources */, 25170 25177 5A574F28131DB96D00471B88 /* QuotesData.cpp in Sources */, 25178 59695084132105A500C3ED18 /* JobjectWrapper.cpp in Sources */, 25171 25179 ); 25172 25180 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/WebCore/bridge/jni/JobjectWrapper.cpp
r80366 r80367 1 1 /* 2 * Copyright (C) 2003, 2008, 2010 Apple Inc. All rights reserved. 2 3 * Copyright 2011, The Android Open Source Project 3 4 * … … 45 46 46 47 if (!m_instance) 47 fprintf(stderr, "%s: could not get GlobalRef for %p\n", __PRETTY_FUNCTION__, instance);48 LOG_ERROR("Could not get GlobalRef for %p", instance); 48 49 } 49 50 -
trunk/Source/WebCore/bridge/jni/JobjectWrapper.h
r80366 r80367 1 1 /* 2 * Copyright (C) 2003 Apple Computer, Inc. All rights reserved. 2 3 * Copyright 2011, The Android Open Source Project 3 4 * … … 36 37 37 38 class JobjectWrapper { 39 friend class JavaArray; 38 40 friend class JavaField; 39 41 friend class JavaInstance; … … 46 48 void deref() 47 49 { 48 if (! (--m_refCount))50 if (!--m_refCount) 49 51 delete this; 50 52 } … … 66 68 67 69 #endif // ENABLE(JAVA_BRIDGE) 70 68 71 #endif // JobjectWrapper_h -
trunk/Source/WebCore/bridge/jni/jsc/JNIBridgeJSC.cpp
r80222 r80367 31 31 32 32 #include "JNIUtilityPrivate.h" 33 #include "JobjectWrapper.h" 33 34 #include "Logging.h" 34 35 #include "runtime_array.h" … … 58 59 m_name = JavaString(env, fieldName); 59 60 60 m_field = new J ObjectWrapper(aField);61 m_field = new JobjectWrapper(aField); 61 62 } 62 63 … … 252 253 : Array(rootObject) 253 254 { 254 m_array = new J ObjectWrapper(array);255 m_array = new JobjectWrapper(array); 255 256 // Java array are fixed length, so we can cache length. 256 257 JNIEnv* env = getJNIEnv(); -
trunk/Source/WebCore/bridge/jni/jsc/JNIBridgeJSC.h
r79988 r80367 33 33 #include "JNIBridge.h" 34 34 #include "JNIUtility.h" 35 #include "JobjectWrapper.h" 35 36 36 37 namespace JSC { … … 57 58 JavaString m_type; 58 59 JNIType m_JNIType; 59 RefPtr<J ObjectWrapper> m_field;60 RefPtr<JobjectWrapper> m_field; 60 61 }; 61 62 … … 76 77 77 78 private: 78 RefPtr<J ObjectWrapper> m_array;79 RefPtr<JobjectWrapper> m_array; 79 80 unsigned int m_length; 80 81 const char* m_type; -
trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp
r80222 r80367 52 52 : Instance(rootObject) 53 53 { 54 m_instance = new J ObjectWrapper(instance);54 m_instance = new JobjectWrapper(instance); 55 55 m_class = 0; 56 56 } … … 367 367 } 368 368 369 JObjectWrapper::JObjectWrapper(jobject instance)370 : m_refCount(0)371 {372 ASSERT(instance);373 374 // Cache the JNIEnv used to get the global ref for this java instance.375 // It'll be used to delete the reference.376 m_env = getJNIEnv();377 378 m_instance = m_env->NewGlobalRef(instance);379 380 LOG(LiveConnect, "JObjectWrapper ctor new global ref %p for %p", m_instance, instance);381 382 if (!m_instance)383 LOG_ERROR("Could not get GlobalRef for %p", instance);384 }385 386 JObjectWrapper::~JObjectWrapper()387 {388 LOG(LiveConnect, "JObjectWrapper dtor deleting global ref %p", m_instance);389 m_env->DeleteGlobalRef(m_instance);390 }391 392 369 #endif // ENABLE(JAVA_BRIDGE) -
trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.h
r79988 r80367 31 31 #include "BridgeJSC.h" 32 32 #include "JNIUtility.h" 33 #include "JobjectWrapper.h" 33 34 #include "runtime_root.h" 34 35 … … 38 39 39 40 class JavaClass; 40 41 class JObjectWrapper {42 friend class RefPtr<JObjectWrapper>;43 friend class JavaArray;44 friend class JavaField;45 friend class JavaInstance;46 friend class JavaMethod;47 48 public:49 jobject instance() const { return m_instance; }50 void setInstance(jobject instance) { m_instance = instance; }51 52 void ref() { m_refCount++; }53 void deref()54 {55 if (!(--m_refCount))56 delete this;57 }58 59 protected:60 JObjectWrapper(jobject instance);61 ~JObjectWrapper();62 63 jobject m_instance;64 65 private:66 JNIEnv* m_env;67 unsigned int m_refCount;68 };69 41 70 42 class JavaInstance : public Instance { … … 99 71 virtual void virtualEnd(); 100 72 101 RefPtr<J ObjectWrapper> m_instance;73 RefPtr<JobjectWrapper> m_instance; 102 74 mutable JavaClass* m_class; 103 75 };
Note: See TracChangeset
for help on using the changeset viewer.