JavaScriptCore:
authorkmccullo <kmccullo@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 31 Oct 2007 01:01:37 +0000 (01:01 +0000)
committerkmccullo <kmccullo@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 31 Oct 2007 01:01:37 +0000 (01:01 +0000)
        Reviewed by Adam and Geoff.

        - Added a new cast so all the casts are in the same place.

        * API/APICast.h:
        (toGlobalRef):

win:

        Reviewed by Adam and Geoff.

        - Added the globalContext method so Drosera can ask a WebFrame for its
        context.

        * Interfaces/IWebFrame.idl:
        * WebFrame.cpp:
        * WebFrame.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@27275 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/API/APICast.h
JavaScriptCore/ChangeLog
WebKit/win/ChangeLog
WebKit/win/Interfaces/IWebFrame.idl
WebKit/win/WebFrame.cpp
WebKit/win/WebFrame.h

index 352f598689d1f4c77fd5bad99ef57bb729692e72..d8c7c184114333815095ad7d00de696ce94d66e6 100644 (file)
@@ -28,6 +28,7 @@
 #define APICast_h
 
 #include "ustring.h"
+#include "ExecState.h"
 
 namespace KJS {
     class ExecState;
@@ -105,6 +106,12 @@ inline JSContextRef toRef(KJS::ExecState* e)
     return reinterpret_cast<JSContextRef>(e);
 }
 
+inline JSGlobalContextRef toGlobalRef(KJS::ExecState* e)
+{
+    ASSERT(!e->callingExecState());
+    return reinterpret_cast<JSGlobalContextRef>(e);
+}
+
 inline JSPropertyNameAccumulatorRef toRef(KJS::PropertyNameArray* l)
 {
     return reinterpret_cast<JSPropertyNameAccumulatorRef>(l);
index 3858d1f7e64a954cda4ec58d77e2038f001211cd..d775a15f45ba8d2d927a166047e586d356e79468 100644 (file)
@@ -1,3 +1,12 @@
+2007-10-30  Kevin McCullough  <kmccullough@apple.com>
+
+        Reviewed by Adam and Geoff.
+
+        - Added a new cast so all the casts are in the same place.
+
+        * API/APICast.h:
+        (toGlobalRef):
+
 2007-10-30  Geoffrey Garen  <ggaren@apple.com>
 
         Reviewed by Darin Adler.
index 030e5d30b9cb49801f4ef719453598dd9717af12..8007fc7220f278fad2b2512e2294bc9a8901cf5c 100644 (file)
@@ -1,3 +1,14 @@
+2007-10-30  Kevin McCullough  <kmccullough@apple.com>
+
+        Reviewed by Adam and Geoff.
+
+        - Added the globalContext method so Drosera can ask a WebFrame for its
+        context.
+
+        * Interfaces/IWebFrame.idl:
+        * WebFrame.cpp:
+        * WebFrame.h:
+
 2007-10-30  Adele Peterson  <adele@apple.com>
 
         Reviewed by Darin.
index 600a668c1567145f692ec5dccb1cf0b7924bacfe..0d5fc5fafcf9fe9533556b7f8d79b3c810a0f95a 100644 (file)
@@ -57,6 +57,13 @@ import "IWebView.idl";
 import "IWebURLRequest.idl";
 import "DOMCore.idl";
 
+cpp_quote("// this is done to get midl to treat the JavaScriptCore API types as pointer types")
+cpp_quote("#if 0")
+typedef void* JSGlobalContextRef;
+cpp_quote("#else")
+cpp_quote("typedef struct OpaqueJSContext* JSGlobalContextRef;")
+cpp_quote("#endif")
+
 interface IDOMDocument;
 interface IDOMHTMLElement;
 interface IWebURLRequest;
@@ -248,4 +255,11 @@ interface IWebFrame : IUnknown
         - (BOOL)allowsScrolling;
     */
    HRESULT allowsScrolling([out, retval] BOOL* flag);
+
+    /*!
+        @method globalContext
+        @result The frame's global JavaScript execution context.  Use this method to
+        bridge between the WebKit and JavaScriptCore APIs.
+    */
+   [local] HRESULT globalContext([out, retval] JSGlobalContextRef* context);
 }
index 5368c5c16ee40d11b6299f63f6adc2d06e5c9307..a5f9438c1f9f87ac11b27601b7b59b06491559db 100644 (file)
@@ -592,6 +592,22 @@ HRESULT STDMETHODCALLTYPE WebFrame::currentForm(
     return *currentForm ? S_OK : E_FAIL;
 }
 
+HRESULT STDMETHODCALLTYPE WebFrame::globalContext(
+    /* [retval][out] */ JSGlobalContextRef* context)
+{
+    if (!context)
+        return E_POINTER;
+
+    *context = 0;
+
+    Frame* coreFrame = core(this);
+    if (!coreFrame)
+        return E_FAIL;
+
+    *context = toGlobalRef(coreFrame->scriptProxy()->interpreter()->globalExec());
+    return S_OK;
+}
+
 HRESULT STDMETHODCALLTYPE WebFrame::loadRequest( 
     /* [in] */ IWebURLRequest* request)
 {
index 64b3436a9fd2ea5f146f1d111010a15b2e43f947..602426ea4e70e018e0464fb0c1bee05e35a6c2c8 100644 (file)
@@ -145,6 +145,9 @@ public:
     virtual HRESULT STDMETHODCALLTYPE currentForm( 
         /* [retval][out] */ IDOMElement **formElement);
 
+    virtual HRESULT STDMETHODCALLTYPE globalContext( 
+        /* [retval][out] */ JSGlobalContextRef* context);
+
     // IWebFramePrivate
     virtual HRESULT STDMETHODCALLTYPE renderTreeAsExternalRepresentation(
         /* [retval][out] */ BSTR *result);