diff options
| author | Steve Block <steveblock@google.com> | 2010-01-21 11:40:34 +0000 |
|---|---|---|
| committer | Steve Block <steveblock@google.com> | 2010-01-21 11:40:34 +0000 |
| commit | bd0a8b8ddfa1230848d33782c0e0f04f739dd550 (patch) | |
| tree | a06dbe1c66f5d8a3d7bab5dfe4c0d6889d814796 | |
| parent | 4e226d42cbe1a5d3bd6b7e92663df661fc14adc3 (diff) | |
| download | external_webkit-bd0a8b8ddfa1230848d33782c0e0f04f739dd550.zip external_webkit-bd0a8b8ddfa1230848d33782c0e0f04f739dd550.tar.gz external_webkit-bd0a8b8ddfa1230848d33782c0e0f04f739dd550.tar.bz2 | |
Cherry-pick WebKit change 53620 to move bridge interfaces Field, Class, Instance and Array from Bridge to BridgeJSC
See http://trac.webkit.org/changeset/53620
This is required to sync the Android tree with webkit.org to allow unforking in WebCore/bridge.
Note that changes to WebCore.xcodeproj were not pulled, as they introduced merge conflicts.
Change-Id: I63f3c4ed101badaea3207d53784de04aee49c2ab
| -rw-r--r-- | WebCore/Android.jscbindings.mk | 3 | ||||
| -rw-r--r-- | WebCore/ChangeLog | 23 | ||||
| -rw-r--r-- | WebCore/GNUmakefile.am | 3 | ||||
| -rw-r--r-- | WebCore/WebCore.pro | 3 | ||||
| -rw-r--r-- | WebCore/WebCoreSources.bkl | 2 | ||||
| -rw-r--r-- | WebCore/bridge/Bridge.h | 110 | ||||
| -rw-r--r-- | WebCore/bridge/jsc/BridgeJSC.cpp (renamed from WebCore/bridge/Bridge.cpp) | 3 | ||||
| -rw-r--r-- | WebCore/bridge/jsc/BridgeJSC.h | 151 |
8 files changed, 185 insertions, 113 deletions
diff --git a/WebCore/Android.jscbindings.mk b/WebCore/Android.jscbindings.mk index 2ceb268..428f99a 100644 --- a/WebCore/Android.jscbindings.mk +++ b/WebCore/Android.jscbindings.mk @@ -29,6 +29,7 @@ BINDING_C_INCLUDES := \ $(LOCAL_PATH)/bridge/c \ $(LOCAL_PATH)/bridge/jni \ $(LOCAL_PATH)/bridge/jni/jsc \ + $(LOCAL_PATH)/bridge/jsc \ \ $(JAVASCRIPTCORE_PATH)/API \ $(JAVASCRIPTCORE_PATH)/assembler \ @@ -181,7 +182,6 @@ LOCAL_SRC_FILES += \ \ bindings/ScriptControllerBase.cpp \ \ - bridge/Bridge.cpp \ bridge/IdentifierRep.cpp \ bridge/NP_jsobject.cpp \ bridge/c/c_class.cpp \ @@ -193,6 +193,7 @@ LOCAL_SRC_FILES += \ bridge/jni/jsc/JNIUtilityPrivate.cpp \ bridge/jni/jsc/JavaClassJSC.cpp \ bridge/jni/jsc/JavaInstanceJSC.cpp \ + bridge/jsc/BridgeJSC.cpp \ bridge/npruntime.cpp \ bridge/runtime_array.cpp \ bridge/runtime_method.cpp \ diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog index bd21b51..777f32b 100644 --- a/WebCore/ChangeLog +++ b/WebCore/ChangeLog @@ -2,6 +2,29 @@ Reviewed by David Levin. + Move bridge interfaces Field, Class, Instance and Array from Bridge to BridgeJSC + https://bugs.webkit.org/show_bug.cgi?id=33589 + + These interfaces use JSC-specific types, so are moved out of Bridge.h to allow the file to + be used with both JSC and V8. + + No new tests, refactoring only. + + * Android.jscbindings.mk: Modified. Removed Bridge.cpp and added BridgeJSC.cpp + * GNUmakefile.am: Modified. Removed Bridge.cpp and added BridgeJSC.[cpp|h] + * WebCore.pro: Modified. Removed Bridge.cpp and added BridgeJSC.[cpp|h] + * WebCore.xcodeproj/project.pbxproj: Modified. Removed Bridge.cpp and added BridgeJSC.[cpp|h] + * WebCoreSources.bkl: Modified. Removed Bridge.cpp and added BridgeJSC.cpp + * bridge/Bridge.cpp: Removed. + * bridge/Bridge.h: Modfied. Moved Field, Class, Instance and Array interfaces to BridgeJSC.h + * bridge/jsc: Added. + * bridge/jsc/BridgeJSC.cpp: Copied from WebCore/bridge/Bridge.cpp. + * bridge/jsc/BridgeJSC.h: Copied from WebCore/bridge/Bridge.h. + +2010-01-21 Steve Block <steveblock@google.com> + + Reviewed by David Levin. + Fixes style in WebCore/bridge/jni/JNIBridge https://bugs.webkit.org/show_bug.cgi?id=33914 diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am index 744c754..9c5f000 100644 --- a/WebCore/GNUmakefile.am +++ b/WebCore/GNUmakefile.am @@ -484,7 +484,6 @@ webcore_sources += \ WebCore/bindings/js/SerializedScriptValue.h \ WebCore/bindings/js/StringSourceProvider.h \ WebCore/bindings/ScriptControllerBase.cpp \ - WebCore/bridge/Bridge.cpp \ WebCore/bridge/Bridge.h \ WebCore/bridge/IdentifierRep.cpp \ WebCore/bridge/IdentifierRep.h \ @@ -503,6 +502,8 @@ webcore_sources += \ WebCore/bridge/jni/jni_jsobject.h \ WebCore/bridge/jni/jsc/JavaClassJSC.h \ WebCore/bridge/jni/jsc/JavaInstanceJSC.h \ + WebCore/bridge/jsc/BridgeJSC.h \ + WebCore/bridge/jsc/BridgeJSC.cpp \ WebCore/bridge/npapi.h \ WebCore/bridge/npruntime.cpp \ WebCore/bridge/npruntime.h \ diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro index b05a972..4dc1294 100644 --- a/WebCore/WebCore.pro +++ b/WebCore/WebCore.pro @@ -775,7 +775,6 @@ SOURCES += \ bindings/js/ScheduledAction.cpp \ bindings/js/SerializedScriptValue.cpp \ bindings/ScriptControllerBase.cpp \ - bridge/Bridge.cpp \ bridge/IdentifierRep.cpp \ bridge/NP_jsobject.cpp \ bridge/npruntime.cpp \ @@ -787,6 +786,7 @@ SOURCES += \ bridge/c/c_instance.cpp \ bridge/c/c_runtime.cpp \ bridge/c/c_utility.cpp \ + bridge/jsc/BridgeJSC.cpp \ css/CSSBorderImageValue.cpp \ css/CSSCanvasValue.cpp \ css/CSSCharsetRule.cpp \ @@ -1464,6 +1464,7 @@ HEADERS += \ bridge/c/c_instance.h \ bridge/c/c_runtime.h \ bridge/c/c_utility.h \ + bridge/jsc/BridgeJSC.h \ bridge/IdentifierRep.h \ bridge/NP_jsobject.h \ bridge/npruntime.h \ diff --git a/WebCore/WebCoreSources.bkl b/WebCore/WebCoreSources.bkl index 1254b06..50e6b94 100644 --- a/WebCore/WebCoreSources.bkl +++ b/WebCore/WebCoreSources.bkl @@ -165,13 +165,13 @@ This file contains the list of files needed to build WebCore. </set> <set append="1" var="WEBCORE_SOURCES_BRIDGE"> - bridge/Bridge.cpp bridge/IdentifierRep.cpp bridge/NP_jsobject.cpp bridge/c/c_class.cpp bridge/c/c_instance.cpp bridge/c/c_runtime.cpp bridge/c/c_utility.cpp + bridge/jsc/BridgeJSC.cpp bridge/npruntime.cpp bridge/runtime_array.cpp bridge/runtime_method.cpp diff --git a/WebCore/bridge/Bridge.h b/WebCore/bridge/Bridge.h index 71c72c3..d92cd15 100644 --- a/WebCore/bridge/Bridge.h +++ b/WebCore/bridge/Bridge.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2003, 2008, 2009 Apple Inc. All rights reserved. + * Copyright 2010, The Android Open Source Project * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,35 +27,12 @@ #ifndef Bridge_h #define Bridge_h -#include <runtime/JSString.h> -#include <wtf/HashMap.h> -#include <wtf/RefCounted.h> -#include <wtf/Vector.h> +#include "BridgeJSC.h" namespace JSC { -class ArgList; -class Identifier; -class JSGlobalObject; -class PropertyNameArray; -class RuntimeObjectImp; - namespace Bindings { -class Instance; -class Method; -class RootObject; - -typedef Vector<Method*> MethodList; - -class Field { -public: - virtual JSValue valueFromInstance(ExecState*, const Instance*) const = 0; - virtual void setValueToInstance(ExecState*, const Instance*, JSValue) const = 0; - - virtual ~Field() { } -}; - class Method : public Noncopyable { public: virtual int numParameters() const = 0; @@ -62,90 +40,6 @@ public: virtual ~Method() { } }; -class Class : public Noncopyable { -public: - virtual MethodList methodsNamed(const Identifier&, Instance*) const = 0; - virtual Field* fieldNamed(const Identifier&, Instance*) const = 0; - virtual JSValue fallbackObject(ExecState*, Instance*, const Identifier&) { return jsUndefined(); } - - virtual ~Class() { } -}; - -typedef void (*KJSDidExecuteFunctionPtr)(ExecState*, JSObject* rootObject); - -class Instance : public RefCounted<Instance> { -public: - Instance(PassRefPtr<RootObject>); - - static void setDidExecuteFunction(KJSDidExecuteFunctionPtr func); - static KJSDidExecuteFunctionPtr didExecuteFunction(); - - // These functions are called before and after the main entry points into - // the native implementations. They can be used to establish and cleanup - // any needed state. - void begin(); - void end(); - - virtual Class* getClass() const = 0; - RuntimeObjectImp* createRuntimeObject(ExecState*); - void willInvalidateRuntimeObject(); - void willDestroyRuntimeObject(); - - // Returns false if the value was not set successfully. - virtual bool setValueOfUndefinedField(ExecState*, const Identifier&, JSValue) { return false; } - - virtual JSValue invokeMethod(ExecState*, const MethodList&, const ArgList& args) = 0; - - virtual bool supportsInvokeDefaultMethod() const { return false; } - virtual JSValue invokeDefaultMethod(ExecState*, const ArgList&) { return jsUndefined(); } - - virtual bool supportsConstruct() const { return false; } - virtual JSValue invokeConstruct(ExecState*, const ArgList&) { return JSValue(); } - - virtual void getPropertyNames(ExecState*, PropertyNameArray&) { } - - virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const = 0; - - virtual JSValue valueOf(ExecState* exec) const = 0; - - RootObject* rootObject() const; - - virtual ~Instance(); - - virtual bool getOwnPropertySlot(JSObject*, ExecState*, const Identifier&, PropertySlot&) { return false; } - virtual bool getOwnPropertyDescriptor(JSObject*, ExecState*, const Identifier&, PropertyDescriptor&) { return false; } - virtual void put(JSObject*, ExecState*, const Identifier&, JSValue, PutPropertySlot&) { } - -protected: - virtual void virtualBegin() { } - virtual void virtualEnd() { } - virtual RuntimeObjectImp* newRuntimeObject(ExecState*); - - RefPtr<RootObject> m_rootObject; - -private: - RuntimeObjectImp* m_runtimeObject; -}; - -class Array : public Noncopyable { -public: - Array(PassRefPtr<RootObject>); - virtual ~Array(); - - virtual void setValueAt(ExecState*, unsigned index, JSValue) const = 0; - virtual JSValue valueAt(ExecState*, unsigned index) const = 0; - virtual unsigned int getLength() const = 0; - -protected: - RefPtr<RootObject> m_rootObject; -}; - -const char* signatureForParameters(const ArgList&); - -typedef HashMap<RefPtr<UString::Rep>, MethodList*> MethodListMap; -typedef HashMap<RefPtr<UString::Rep>, Method*> MethodMap; -typedef HashMap<RefPtr<UString::Rep>, Field*> FieldMap; - } // namespace Bindings } // namespace JSC diff --git a/WebCore/bridge/Bridge.cpp b/WebCore/bridge/jsc/BridgeJSC.cpp index 2daf3eb..ed582d3 100644 --- a/WebCore/bridge/Bridge.cpp +++ b/WebCore/bridge/jsc/BridgeJSC.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved. + * Copyright 2010, The Android Open Source Project * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -24,7 +25,7 @@ */ #include "config.h" -#include "Bridge.h" +#include "BridgeJSC.h" #include "runtime_object.h" #include "runtime_root.h" diff --git a/WebCore/bridge/jsc/BridgeJSC.h b/WebCore/bridge/jsc/BridgeJSC.h new file mode 100644 index 0000000..8e2cb2b --- /dev/null +++ b/WebCore/bridge/jsc/BridgeJSC.h @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2003, 2008, 2009 Apple Inc. All rights reserved. + * Copyright 2010, The Android Open Source Project + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef BridgeJSC_h +#define BridgeJSC_h + +#if USE(JSC) + +#include <runtime/JSString.h> +#include <wtf/HashMap.h> +#include <wtf/RefCounted.h> +#include <wtf/Vector.h> + +namespace JSC { + +class ArgList; +class Identifier; +class JSGlobalObject; +class PropertyNameArray; +class RuntimeObjectImp; + +namespace Bindings { + +class Instance; +class Method; +class RootObject; + +typedef Vector<Method*> MethodList; + +class Field { +public: + virtual JSValue valueFromInstance(ExecState*, const Instance*) const = 0; + virtual void setValueToInstance(ExecState*, const Instance*, JSValue) const = 0; + + virtual ~Field() { } +}; + +class Class : public Noncopyable { +public: + virtual MethodList methodsNamed(const Identifier&, Instance*) const = 0; + virtual Field* fieldNamed(const Identifier&, Instance*) const = 0; + virtual JSValue fallbackObject(ExecState*, Instance*, const Identifier&) { return jsUndefined(); } + + virtual ~Class() { } +}; + +typedef void (*KJSDidExecuteFunctionPtr)(ExecState*, JSObject* rootObject); + +class Instance : public RefCounted<Instance> { +public: + Instance(PassRefPtr<RootObject>); + + static void setDidExecuteFunction(KJSDidExecuteFunctionPtr func); + static KJSDidExecuteFunctionPtr didExecuteFunction(); + + // These functions are called before and after the main entry points into + // the native implementations. They can be used to establish and cleanup + // any needed state. + void begin(); + void end(); + + virtual Class* getClass() const = 0; + RuntimeObjectImp* createRuntimeObject(ExecState*); + void willInvalidateRuntimeObject(); + void willDestroyRuntimeObject(); + + // Returns false if the value was not set successfully. + virtual bool setValueOfUndefinedField(ExecState*, const Identifier&, JSValue) { return false; } + + virtual JSValue invokeMethod(ExecState*, const MethodList&, const ArgList& args) = 0; + + virtual bool supportsInvokeDefaultMethod() const { return false; } + virtual JSValue invokeDefaultMethod(ExecState*, const ArgList&) { return jsUndefined(); } + + virtual bool supportsConstruct() const { return false; } + virtual JSValue invokeConstruct(ExecState*, const ArgList&) { return JSValue(); } + + virtual void getPropertyNames(ExecState*, PropertyNameArray&) { } + + virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const = 0; + + virtual JSValue valueOf(ExecState* exec) const = 0; + + RootObject* rootObject() const; + + virtual ~Instance(); + + virtual bool getOwnPropertySlot(JSObject*, ExecState*, const Identifier&, PropertySlot&) { return false; } + virtual bool getOwnPropertyDescriptor(JSObject*, ExecState*, const Identifier&, PropertyDescriptor&) { return false; } + virtual void put(JSObject*, ExecState*, const Identifier&, JSValue, PutPropertySlot&) { } + +protected: + virtual void virtualBegin() { } + virtual void virtualEnd() { } + virtual RuntimeObjectImp* newRuntimeObject(ExecState*); + + RefPtr<RootObject> m_rootObject; + +private: + RuntimeObjectImp* m_runtimeObject; +}; + +class Array : public Noncopyable { +public: + Array(PassRefPtr<RootObject>); + virtual ~Array(); + + virtual void setValueAt(ExecState*, unsigned index, JSValue) const = 0; + virtual JSValue valueAt(ExecState*, unsigned index) const = 0; + virtual unsigned int getLength() const = 0; + +protected: + RefPtr<RootObject> m_rootObject; +}; + +const char* signatureForParameters(const ArgList&); + +typedef HashMap<RefPtr<UString::Rep>, MethodList*> MethodListMap; +typedef HashMap<RefPtr<UString::Rep>, Method*> MethodMap; +typedef HashMap<RefPtr<UString::Rep>, Field*> FieldMap; + +} // namespace Bindings + +} // namespace JSC + +#endif // USE(JSC) + +#endif |
