Title: [87000] trunk/Source/WebKit/win
Revision
87000
Author
[email protected]
Date
2011-05-20 16:38:11 -0700 (Fri, 20 May 2011)

Log Message

Implement the ability to add C++ event listeners to html dom
elements and dom window. 
https://bugs.webkit.org/show_bug.cgi?id=60269

Patch by Anthony Johnson <[email protected]> on 2011-05-18
Reviewed by Brent Fulgham.

* DOMCoreClasses.cpp: Add new DOMWindow class and implementations.
(DOMNode::QueryInterface): Report that the DOMNode implements
 the IDomEventTarget interface.
(DOMNode::addEventListener): Add implementation of a COM-based
 event listener.
(DOMNode::removeEventListener):
(DOMNode::dispatchEvent): 
(DOMDocument::createInstance):
(DOMWindow::QueryInterface): New implementation.
(DOMWindow::document): New implementation.
(DOMWindow::getComputedStyle): Stub.
(DOMWindow::getMatchedCSSRules): Stub.
(DOMWindow::devicePixelRatio): Stub.
(DOMWindow::addEventListener): New implementation.
(DOMWindow::removeEventListener): New implementation.
(DOMWindow::dispatchEvent): New implementation.
(DOMWindow::DOMWindow): New implementation.
(DOMWindow::~DOMWindow): New implementation.
(DOMWindow::createInstance): New implementation.
* DOMCoreClasses.h: Add new DOMWindow class and declarations.
(DOMWindow::AddRef): New declaration.
(DOMWindow::Release): New declaration.
(DOMWindow::throwException): New declaration.
(DOMWindow::callWebScriptMethod): New declaration.
(DOMWindow::evaluateWebScript): New declaration.
(DOMWindow::removeWebScriptKey): New declaration.
(DOMWindow::stringRepresentation): New declaration.
(DOMWindow::webScriptValueAtIndex): New declaration.
(DOMWindow::setWebScriptValueAtIndex): New declaration.
(DOMWindow::setException): New declaration.
(DOMWindow::window): New declaration.
* DOMEventsClasses.cpp: Add new WebEventListener and implementation.
(DOMEventListener::handleEvent): New implementation.
(WebEventListener::WebEventListener): New implementation.
(WebEventListener::~WebEventListener): New implementation.
(WebEventListener::operator==): New implementation.
(WebEventListener::handleEvent): New implementation.
(WebEventListener::create): New implementation.
* DOMEventsClasses.h: Add new WebEventListener class declaration.
* Interfaces/IWebFrame.idl: Add new DOMWindow accessor to the
 main Web Frame interface.
* WebFrame.cpp: Add implementation of new DOMWindow creation method.
(WebFrame::DOMWindow):
* WebFrame.h: Add DOMWindow declaration.

Modified Paths

Diff

Modified: trunk/Source/WebKit/win/ChangeLog (86999 => 87000)


--- trunk/Source/WebKit/win/ChangeLog	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/ChangeLog	2011-05-20 23:38:11 UTC (rev 87000)
@@ -1,3 +1,56 @@
+2011-05-18  Anthony Johnson <[email protected]>
+
+        Reviewed by Brent Fulgham.
+
+        Implement the ability to add C++ event listeners to html dom
+        elements and dom window. 
+        https://bugs.webkit.org/show_bug.cgi?id=60269
+
+        * DOMCoreClasses.cpp: Add new DOMWindow class and implementations.
+        (DOMNode::QueryInterface): Report that the DOMNode implements
+         the IDomEventTarget interface.
+        (DOMNode::addEventListener): Add implementation of a COM-based
+         event listener.
+        (DOMNode::removeEventListener):
+        (DOMNode::dispatchEvent): 
+        (DOMDocument::createInstance):
+        (DOMWindow::QueryInterface): New implementation.
+        (DOMWindow::document): New implementation.
+        (DOMWindow::getComputedStyle): Stub.
+        (DOMWindow::getMatchedCSSRules): Stub.
+        (DOMWindow::devicePixelRatio): Stub.
+        (DOMWindow::addEventListener): New implementation.
+        (DOMWindow::removeEventListener): New implementation.
+        (DOMWindow::dispatchEvent): New implementation.
+        (DOMWindow::DOMWindow): New implementation.
+        (DOMWindow::~DOMWindow): New implementation.
+        (DOMWindow::createInstance): New implementation.
+        * DOMCoreClasses.h: Add new DOMWindow class and declarations.
+        (DOMWindow::AddRef): New declaration.
+        (DOMWindow::Release): New declaration.
+        (DOMWindow::throwException): New declaration.
+        (DOMWindow::callWebScriptMethod): New declaration.
+        (DOMWindow::evaluateWebScript): New declaration.
+        (DOMWindow::removeWebScriptKey): New declaration.
+        (DOMWindow::stringRepresentation): New declaration.
+        (DOMWindow::webScriptValueAtIndex): New declaration.
+        (DOMWindow::setWebScriptValueAtIndex): New declaration.
+        (DOMWindow::setException): New declaration.
+        (DOMWindow::window): New declaration.
+        * DOMEventsClasses.cpp: Add new WebEventListener and implementation.
+        (DOMEventListener::handleEvent): New implementation.
+        (WebEventListener::WebEventListener): New implementation.
+        (WebEventListener::~WebEventListener): New implementation.
+        (WebEventListener::operator==): New implementation.
+        (WebEventListener::handleEvent): New implementation.
+        (WebEventListener::create): New implementation.
+        * DOMEventsClasses.h: Add new WebEventListener class declaration.
+        * Interfaces/IWebFrame.idl: Add new DOMWindow accessor to the
+         main Web Frame interface.
+        * WebFrame.cpp: Add implementation of new DOMWindow creation method.
+        (WebFrame::DOMWindow):
+        * WebFrame.h: Add DOMWindow declaration.
+
 2011-05-20  Simon Fraser  <[email protected]>
 
         Reviewed by Sam Weinig.

Modified: trunk/Source/WebKit/win/DOMCoreClasses.cpp (86999 => 87000)


--- trunk/Source/WebKit/win/DOMCoreClasses.cpp	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/DOMCoreClasses.cpp	2011-05-20 23:38:11 UTC (rev 87000)
@@ -90,6 +90,8 @@
         *ppvObject = static_cast<IDOMNode*>(this);
     else if (IsEqualGUID(riid, __uuidof(DOMNode)))
         *ppvObject = static_cast<DOMNode*>(this);
+    else if (IsEqualGUID(riid, __uuidof(IDOMEventTarget)))
+        *ppvObject = static_cast<IDOMEventTarget*>(this);
     else
         return DOMObject::QueryInterface(riid, ppvObject);
 
@@ -399,34 +401,40 @@
 
 // DOMNode - IDOMEventTarget --------------------------------------------------
 
-HRESULT STDMETHODCALLTYPE DOMNode::addEventListener( 
-    /* [in] */ BSTR /*type*/,
-    /* [in] */ IDOMEventListener* /*listener*/,
-    /* [in] */ BOOL /*useCapture*/)
+HRESULT DOMNode::addEventListener(
+    /* [in] */ BSTR type,
+    /* [in] */ IDOMEventListener* listener,
+    /* [in] */ BOOL useCapture)
 {
-    return E_NOTIMPL;
+    RefPtr<WebEventListener> webListener = WebEventListener::create(listener);
+    m_node->addEventListener(type, webListener, useCapture);
+
+    return S_OK;
 }
 
-HRESULT STDMETHODCALLTYPE DOMNode::removeEventListener( 
-    /* [in] */ BSTR /*type*/,
-    /* [in] */ IDOMEventListener* /*listener*/,
-    /* [in] */ BOOL /*useCapture*/)
+HRESULT DOMNode::removeEventListener(
+    /* [in] */ BSTR type,
+    /* [in] */ IDOMEventListener* listener,
+    /* [in] */ BOOL useCapture)
 {
-    return E_NOTIMPL;
+    if (!listener || !type)
+        return E_POINTER;
+    if (!m_node)
+        return E_FAIL;
+    RefPtr<WebEventListener> webListener = WebEventListener::create(listener);
+    m_node->removeEventListener(type, webListener.get(), useCapture);
+    return S_OK;
 }
 
-HRESULT STDMETHODCALLTYPE DOMNode::dispatchEvent( 
+HRESULT DOMNode::dispatchEvent(
     /* [in] */ IDOMEvent* evt,
     /* [retval][out] */ BOOL* result)
 {
-    if (!m_node || !evt)
+    if (!evt || !result)
+        return E_POINTER;
+    if (!m_node)
         return E_FAIL;
 
-#if 0   // FIXME - raise dom exceptions
-    if (![self _node]->isEventTargetNode())
-        WebCore::raiseDOMException(DOM_NOT_SUPPORTED_ERR);
-#endif
-
     COMPtr<DOMEvent> domEvent;
     HRESULT hr = evt->QueryInterface(IID_DOMEvent, (void**) &domEvent);
     if (FAILED(hr))
@@ -434,10 +442,7 @@
 
     WebCore::ExceptionCode ec = 0;
     *result = m_node->dispatchEvent(domEvent->coreEvent(), ec) ? TRUE : FALSE;
-#if 0   // FIXME - raise dom exceptions
-    WebCore::raiseOnDOMError(ec);
-#endif
-    return S_OK;
+    return ec ? E_FAIL : S_OK;
 }
 
 // DOMNode - DOMNode ----------------------------------------------------------
@@ -818,6 +823,138 @@
     return domDocument;
 }
 
+// DOMWindow - IUnknown ------------------------------------------------------
+
+HRESULT DOMWindow::QueryInterface(REFIID riid, void** ppvObject)
+{
+    *ppvObject = 0;
+    if (IsEqualGUID(riid, IID_IDOMWindow))
+        *ppvObject = static_cast<IDOMWindow*>(this);
+    else if (IsEqualGUID(riid, IID_IDOMEventTarget))
+        *ppvObject = static_cast<IDOMEventTarget*>(this);
+    else
+        return DOMObject::QueryInterface(riid, ppvObject);
+
+    AddRef();
+    return S_OK;
+}
+
+// DOMWindow - IDOMWindow ------------------------------------------------------
+
+HRESULT DOMWindow::document(
+    /* [out, retval] */ IDOMDocument** result)
+{
+    if (!result) {
+        ASSERT_NOT_REACHED();
+        return E_POINTER;
+    }
+
+    *result = DOMDocument::createInstance(m_window->document());
+    return *result ? S_OK : E_FAIL;
+}
+
+HRESULT DOMWindow::getComputedStyle(
+    /* [in] */ IDOMElement* element, 
+    /* [in] */ BSTR pseudoElement)
+{
+    ASSERT_NOT_REACHED();
+    return E_NOTIMPL;
+}
+
+HRESULT DOMWindow::getMatchedCSSRules(
+    /* [in] */ IDOMElement* element, 
+    /* [in] */ BSTR pseudoElement, 
+    /* [in] */ BOOL authorOnly, 
+    /* [out, retval] */ IDOMCSSRuleList** result)
+{
+    ASSERT_NOT_REACHED();
+    return E_NOTIMPL;
+}
+
+HRESULT DOMWindow::devicePixelRatio(
+    /* [out, retval] */ double* result)
+{
+    ASSERT_NOT_REACHED();
+    return E_NOTIMPL;
+}
+
+// DOMWindow - IDOMEventTarget ------------------------------------------------------
+
+HRESULT DOMWindow::addEventListener(
+    /* [in] */ BSTR type,
+    /* [in] */ IDOMEventListener* listener,
+    /* [in] */ BOOL useCapture)
+{
+    if (!type || !listener)
+        return E_POINTER;
+    if (!m_window)
+        return E_FAIL;
+    RefPtr<WebEventListener> webListener = WebEventListener::create(listener);
+    m_window->addEventListener(type, webListener, useCapture);
+    return S_OK;
+}
+
+HRESULT DOMWindow::removeEventListener(
+    /* [in] */ BSTR type,
+    /* [in] */ IDOMEventListener* listener,
+    /* [in] */ BOOL useCapture)
+{
+    if (!type || !listener)
+        return E_POINTER;
+    if (!m_window)
+        return E_FAIL;
+    RefPtr<WebEventListener> webListener = WebEventListener::create(listener);
+    m_window->removeEventListener(type, webListener.get(), useCapture);
+    return S_OK;
+}
+
+HRESULT DOMWindow::dispatchEvent(
+    /* [in] */ IDOMEvent* evt,
+    /* [retval][out] */ BOOL* result)
+{
+    if (!result || !evt)
+        return E_POINTER;
+    if (!m_window)
+        return E_FAIL;
+
+    COMPtr<DOMEvent> domEvent;
+    HRESULT hr = evt->QueryInterface(IID_DOMEvent, (void**) &domEvent);
+    if (FAILED(hr))
+        return hr;
+
+    WebCore::ExceptionCode ec = 0;
+    *result = m_window->dispatchEvent(domEvent->coreEvent(), ec) ? TRUE : FALSE;
+    return ec ? E_FAIL : S_OK;
+}
+
+
+// DOMWindow - DOMWindow --------------------------------------------------
+
+DOMWindow::DOMWindow(WebCore::DOMWindow* w)
+: m_window(w)
+{
+}
+
+DOMWindow::~DOMWindow()
+{
+}
+
+IDOMWindow* DOMWindow::createInstance(WebCore::DOMWindow* w)
+{
+    if (!w)
+        return 0;
+
+    DOMWindow* newWindow = new DOMWindow(w);
+
+    IDOMWindow* domWindow = 0;
+    HRESULT hr = newWindow->QueryInterface(IID_IDOMWindow, reinterpret_cast<void**>(&domWindow));
+
+    if (FAILED(hr))
+        return 0;
+
+    return domWindow;
+}
+
 // DOMElement - IUnknown ------------------------------------------------------
 
 HRESULT STDMETHODCALLTYPE DOMElement::QueryInterface(REFIID riid, void** ppvObject)

Modified: trunk/Source/WebKit/win/DOMCoreClasses.h (86999 => 87000)


--- trunk/Source/WebKit/win/DOMCoreClasses.h	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/DOMCoreClasses.h	2011-05-20 23:38:11 UTC (rev 87000)
@@ -32,6 +32,7 @@
 namespace WebCore {
 class Element;
 class Document;
+class DOMWindow;
 class Node;
 class NodeList;
 }
@@ -533,6 +534,91 @@
     WebCore::Document* m_document;
 };
 
+class DOMWindow : public DOMObject, public IDOMWindow, public IDOMEventTarget {
+protected:
+    DOMWindow(WebCore::DOMWindow*);
+    ~DOMWindow();
+
+public:
+    static IDOMWindow* createInstance(WebCore::DOMWindow*);
+
+public:
+    // IUnknown
+    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
+    virtual ULONG STDMETHODCALLTYPE AddRef(void) { return DOMObject::AddRef(); }
+    virtual ULONG STDMETHODCALLTYPE Release(void) { return DOMObject::Release(); }
+
+    // IWebScriptObject
+    virtual HRESULT STDMETHODCALLTYPE throwException(
+        /* [in] */ BSTR exceptionMessage,
+        /* [retval][out] */ BOOL* result) { return DOMObject::throwException(exceptionMessage, result); }
+    
+    virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(
+        /* [in] */ BSTR name,
+        /* [size_is][in] */ const VARIANT args[  ],
+        /* [in] */ int cArgs,
+        /* [retval][out] */ VARIANT* result) { return DOMObject::callWebScriptMethod(name, args, cArgs, result); }
+    
+    virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(
+        /* [in] */ BSTR script,
+        /* [retval][out] */ VARIANT* result) { return DOMObject::evaluateWebScript(script, result); }
+    
+    virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(
+        /* [in] */ BSTR name) { return DOMObject::removeWebScriptKey(name); }
+    
+    virtual HRESULT STDMETHODCALLTYPE stringRepresentation(
+        /* [retval][out] */ BSTR* stringRepresentation) { return DOMObject::stringRepresentation(stringRepresentation); }
+    
+    virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(
+        /* [in] */ unsigned int index,
+        /* [retval][out] */ VARIANT* result) { return DOMObject::webScriptValueAtIndex(index, result); }
+    
+    virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(
+        /* [in] */ unsigned int index,
+        /* [in] */ VARIANT val) { return DOMObject::setWebScriptValueAtIndex(index, val); }
+    
+    virtual HRESULT STDMETHODCALLTYPE setException(
+        /* [in] */ BSTR description) { return DOMObject::setException(description); }
+
+    virtual HRESULT STDMETHODCALLTYPE document(
+        /* [out, retval] */ IDOMDocument**);
+
+    virtual HRESULT STDMETHODCALLTYPE getComputedStyle(
+        /* [in] */ IDOMElement*, 
+        /* [in] */ BSTR);
+
+    virtual HRESULT STDMETHODCALLTYPE getMatchedCSSRules(
+        /* [in] */ IDOMElement*, 
+        /* [in] */ BSTR, 
+        /* [in] */ BOOL, 
+        /* [out, retval] */ IDOMCSSRuleList**);
+
+    virtual HRESULT STDMETHODCALLTYPE devicePixelRatio(
+        /* [out, retval] */ double*);
+
+    virtual HRESULT STDMETHODCALLTYPE addEventListener(
+        /* [in] */ BSTR,
+        /* [in] */ IDOMEventListener *,
+        /* [in] */ BOOL);
+    
+    virtual HRESULT STDMETHODCALLTYPE removeEventListener(
+        /* [in] */ BSTR,
+        /* [in] */ IDOMEventListener *,
+        /* [in] */ BOOL);
+    
+    virtual HRESULT STDMETHODCALLTYPE dispatchEvent(
+        /* [in] */ IDOMEvent *,
+        /* [retval][out] */ BOOL *);
+
+    // DOMWindow
+    WebCore::DOMWindow* window() { return m_window; }
+
+protected:
+    WebCore::DOMWindow* m_window;
+};
+
+
+
 class DOMElement : public DOMNode, public IDOMElement, public IDOMElementPrivate, public IDOMNodeExtensions, public IDOMElementCSSInlineStyle, public IDOMElementExtensions {
 protected:
     DOMElement(WebCore::Element* e);

Modified: trunk/Source/WebKit/win/DOMEventsClasses.cpp (86999 => 87000)


--- trunk/Source/WebKit/win/DOMEventsClasses.cpp	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/DOMEventsClasses.cpp	2011-05-20 23:38:11 UTC (rev 87000)
@@ -28,10 +28,12 @@
 #include <initguid.h>
 #include "DOMEventsClasses.h"
 
+#include <WebCore/COMPtr.h>
 #include <WebCore/DOMWindow.h>
 #include <WebCore/Event.h>
 #include <WebCore/KeyboardEvent.h>
 #include <WebCore/MouseEvent.h>
+#include <WebCore/ScriptExecutionContext.h>
 
 // DOMEventListener -----------------------------------------------------------
 
@@ -53,6 +55,36 @@
     return E_NOTIMPL;
 }
 
+WebEventListener::WebEventListener(IDOMEventListener* i)
+    : EventListener(CPPEventListenerType)
+    , m_iDOMEventListener(i)
+{
+    m_iDOMEventListener->AddRef();
+}
+
+WebEventListener::~WebEventListener()
+{
+    m_iDOMEventListener->Release();
+}
+
+bool WebEventListener::operator==(const WebCore::EventListener& other)
+{
+    return (other.type() == CPPEventListenerType 
+        && reinterpret_cast<const WebEventListener*>(&other)->m_iDOMEventListener == m_iDOMEventListener);
+}
+
+void WebEventListener::handleEvent(WebCore::ScriptExecutionContext* s, WebCore::Event* e)
+{
+    RefPtr<WebCore::Event> ePtr(e);
+    COMPtr<IDOMEvent> domEvent = DOMEvent::createInstance(ePtr);
+    m_iDOMEventListener->handleEvent(domEvent.get());
+}
+
+PassRefPtr<WebEventListener> WebEventListener::create(IDOMEventListener* d)
+{
+    return adoptRef(new WebEventListener(d));
+}
+
 // DOMEvent -------------------------------------------------------------------
 
 DOMEvent::DOMEvent(PassRefPtr<WebCore::Event> e)
@@ -561,7 +593,7 @@
     return E_NOTIMPL;
 }
 
-HRESULT STDMETHODCALLTYPE DOMMutationEvent::initMutationEvent( 
+HRESULT STDMETHODCALLTYPE DOMMutationEvent::initMutationEvent(
     /* [in] */ BSTR /*type*/,
     /* [in] */ BOOL /*canBubble*/,
     /* [in] */ BOOL /*cancelable*/,

Modified: trunk/Source/WebKit/win/DOMEventsClasses.h (86999 => 87000)


--- trunk/Source/WebKit/win/DOMEventsClasses.h	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/DOMEventsClasses.h	2011-05-20 23:38:11 UTC (rev 87000)
@@ -28,6 +28,7 @@
 
 #include "WebKit.h"
 #include "DOMCoreClasses.h"
+#include <WebCore/EventListener.h>
 
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
@@ -41,6 +42,17 @@
 
 class DOMUIEvent;
 
+class WebEventListener : public WebCore::EventListener {
+public:
+    WebEventListener(IDOMEventListener*);
+    ~WebEventListener();
+    virtual bool operator==(const EventListener&);
+    virtual void handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*);
+    static PassRefPtr<WebEventListener> create(IDOMEventListener*);
+private:
+    IDOMEventListener* m_iDOMEventListener;
+};
+
 class DOMEventListener : public DOMObject, public IDOMEventListener
 {
 public:

Modified: trunk/Source/WebKit/win/Interfaces/IWebFrame.idl (86999 => 87000)


--- trunk/Source/WebKit/win/Interfaces/IWebFrame.idl	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/Interfaces/IWebFrame.idl	2011-05-20 23:38:11 UTC (rev 87000)
@@ -260,4 +260,12 @@
        @discussion Performs HTTP/1.1 end-to-end reload.
    */
    HRESULT reloadFromOrigin();
+
+    /*!
+        @method DOMWindow
+        @abstract Returns the DOM window of the frame.
+        @description Returns nil if the frame does not contain a DOM window such as a standalone image.
+        - (DOMWindow *)DOMWindow;
+    */
+    HRESULT DOMWindow([out, retval] IDOMWindow** window);
 }

Modified: trunk/Source/WebKit/win/WebFrame.cpp (86999 => 87000)


--- trunk/Source/WebKit/win/WebFrame.cpp	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/WebFrame.cpp	2011-05-20 23:38:11 UTC (rev 87000)
@@ -480,6 +480,24 @@
     return *result ? S_OK : E_FAIL;
 }
 
+
+HRESULT WebFrame::DOMWindow(/* [retval][out] */ IDOMWindow** window)
+{
+    if (!window) {
+        ASSERT_NOT_REACHED();
+        return E_POINTER;
+    }
+
+    *window = 0;
+
+    if (Frame* coreFrame = core(this)) {
+        if (WebCore::DOMWindow* coreWindow = coreFrame->domWindow())
+            *window = ::DOMWindow::createInstance(coreWindow);
+    }
+
+    return *window ? S_OK : E_FAIL;
+}
+
 HRESULT STDMETHODCALLTYPE WebFrame::frameElement( 
     /* [retval][out] */ IDOMHTMLElement** frameElement)
 {

Modified: trunk/Source/WebKit/win/WebFrame.h (86999 => 87000)


--- trunk/Source/WebKit/win/WebFrame.h	2011-05-20 23:20:48 UTC (rev 86999)
+++ trunk/Source/WebKit/win/WebFrame.h	2011-05-20 23:38:11 UTC (rev 87000)
@@ -105,6 +105,8 @@
 
     virtual HRESULT STDMETHODCALLTYPE DOMDocument( 
         /* [retval][out] */ IDOMDocument** document);
+
+    virtual HRESULT STDMETHODCALLTYPE DOMWindow(/* [retval][out] */ IDOMWindow**);
     
     virtual HRESULT STDMETHODCALLTYPE frameElement( 
         /* [retval][out] */ IDOMHTMLElement **frameElement);
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to