WebKit/mac: Add an API to obtain the WebScriptWorld for a given JSGlobalContextRef.
authorhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Jan 2010 17:53:23 +0000 (17:53 +0000)
committerhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Jan 2010 17:53:23 +0000 (17:53 +0000)
Reviewed by Adam Roben.

* WebView/WebScriptWorld.h:
* WebView/WebScriptWorld.mm:
(+[WebScriptWorld scriptWorldForGlobalContext:]):

WebKit/win: Add an API to obtain a WebScriptWorld from a JSGlobalContextRef.

Reviewed by Adam Roben.

* Interfaces/IWebScriptWorld.idl:
* WebScriptWorld.cpp:
(WebScriptWorld::scriptWorldForGlobalContext):
* WebScriptWorld.h:

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

WebKit/mac/ChangeLog
WebKit/mac/WebView/WebScriptWorld.h
WebKit/mac/WebView/WebScriptWorld.mm
WebKit/win/ChangeLog
WebKit/win/Interfaces/IWebScriptWorld.idl
WebKit/win/WebScriptWorld.cpp
WebKit/win/WebScriptWorld.h

index e1065bb..65bc486 100644 (file)
@@ -1,3 +1,13 @@
+2010-01-19  Dave Hyatt  <hyatt@apple.com>
+
+        Reviewed by Adam Roben.
+
+        Add an API to obtain the WebScriptWorld for a given JSGlobalContextRef.
+
+        * WebView/WebScriptWorld.h:
+        * WebView/WebScriptWorld.mm:
+        (+[WebScriptWorld scriptWorldForGlobalContext:]):
+
 2010-01-19  Steve Block  <steveblock@google.com>
 
         Unreviewed build fix.
 2010-01-19  Steve Block  <steveblock@google.com>
 
         Unreviewed build fix.
index 9204975..7059b76 100644 (file)
@@ -22,6 +22,8 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+typedef struct OpaqueJSContext* JSGlobalContextRef;
+
 @class WebScriptWorldPrivate;
 
 @interface WebScriptWorld : NSObject {
 @class WebScriptWorldPrivate;
 
 @interface WebScriptWorld : NSObject {
@@ -31,4 +33,7 @@
 
 + (WebScriptWorld *)standardWorld;
 + (WebScriptWorld *)world;
 
 + (WebScriptWorld *)standardWorld;
 + (WebScriptWorld *)world;
+
++ (WebScriptWorld *)scriptWorldForGlobalContext:(JSGlobalContextRef)globalContext;
+
 @end
 @end
index 0310701..7dab1b3 100644 (file)
@@ -27,6 +27,8 @@
 #import "WebScriptWorldInternal.h"
 #import <WebCore/JSDOMBinding.h>
 #import <WebCore/ScriptController.h>
 #import "WebScriptWorldInternal.h"
 #import <WebCore/JSDOMBinding.h>
 #import <WebCore/ScriptController.h>
+#import <JavaScriptCore/APICast.h>
+
 #import <wtf/RefPtr.h>
 
 using namespace WebCore;
 #import <wtf/RefPtr.h>
 
 using namespace WebCore;
@@ -94,6 +96,11 @@ static WorldMap& allWorlds()
     return [[[self alloc] init] autorelease];
 }
 
     return [[[self alloc] init] autorelease];
 }
 
++ (WebScriptWorld *)scriptWorldForGlobalContext:(JSGlobalContextRef)context
+{
+    return [self findOrCreateWorld:currentWorld(toJS(context))];
+}
+
 @end
 
 @implementation WebScriptWorld (WebInternal)
 @end
 
 @implementation WebScriptWorld (WebInternal)
index e6636ac..96cc7d8 100644 (file)
@@ -1,3 +1,14 @@
+2010-01-19  Dave Hyatt  <hyatt@apple.com>
+
+        Reviewed by Adam Roben.
+
+        Add an API to obtain a WebScriptWorld from a JSGlobalContextRef.
+
+        * Interfaces/IWebScriptWorld.idl:
+        * WebScriptWorld.cpp:
+        (WebScriptWorld::scriptWorldForGlobalContext):
+        * WebScriptWorld.h:
+
 2010-01-18  Adam Roben  <aroben@apple.com>
 
         Add IWebViewPrivate::setDomainRelaxationForbiddenForURLScheme
 2010-01-18  Adam Roben  <aroben@apple.com>
 
         Add IWebViewPrivate::setDomainRelaxationForbiddenForURLScheme
index 255255c..1c79199 100644 (file)
@@ -25,6 +25,7 @@
 #ifndef DO_NO_IMPORTS
 import "oaidl.idl";
 import "ocidl.idl";
 #ifndef DO_NO_IMPORTS
 import "oaidl.idl";
 import "ocidl.idl";
+import "JavaScriptCoreAPITypes.idl";
 #endif
 
 [
 #endif
 
 [
@@ -35,4 +36,5 @@ import "ocidl.idl";
 ]
 interface IWebScriptWorld : IUnknown {
     HRESULT standardWorld([out, retval] IWebScriptWorld**);
 ]
 interface IWebScriptWorld : IUnknown {
     HRESULT standardWorld([out, retval] IWebScriptWorld**);
+    HRESULT scriptWorldForGlobalContext([in] JSGlobalContextRef, [out, retval] IWebScriptWorld**);
 }
 }
index 03eede7..17e2ea2 100644 (file)
@@ -128,3 +128,10 @@ HRESULT WebScriptWorld::standardWorld(IWebScriptWorld** outWorld)
     (*outWorld)->AddRef();
     return S_OK;
 }
     (*outWorld)->AddRef();
     return S_OK;
 }
+
+HRESULT WebScriptWorld::scriptWorldForGlobalContext(JSGlobalContextRef context, IWebScriptWorld** outWorld)
+{
+    if (!outWorld)
+        return E_POINTER;
+    return findOrCreateWorld(currentWorld(toJS(context))).copyRefTo(outWorld);
+}
index b800225..dc7e9db 100644 (file)
@@ -51,6 +51,7 @@ private:
 
     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, void** ppvObject);
     virtual HRESULT STDMETHODCALLTYPE standardWorld(IWebScriptWorld**);
 
     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, void** ppvObject);
     virtual HRESULT STDMETHODCALLTYPE standardWorld(IWebScriptWorld**);
+    virtual HRESULT STDMETHODCALLTYPE scriptWorldForGlobalContext(JSGlobalContextRef, IWebScriptWorld**);
 
     ULONG m_refCount;
     RefPtr<WebCore::DOMWrapperWorld> m_world;
 
     ULONG m_refCount;
     RefPtr<WebCore::DOMWrapperWorld> m_world;