+2007-11-05 Adam Roben <aroben@apple.com>
+
+ Allow passing a base class pointer to COMPtr::copyRefTo
+
+ Reviewed by Sam.
+
+ * platform/win/COMPtr.h:
+
2007-11-05 Dan Bernstein <mitz@apple.com>
Reviewed by Oliver Hunt.
void query(IUnknown* ptr) { adoptRef(copyQueryInterfaceRef(ptr)); }
template <typename U> inline void query(const COMPtr<U>& ptr) { query(ptr.get()); }
- HRESULT copyRefTo(T**);
+ template <typename U> HRESULT copyRefTo(U**);
void adoptRef(T*);
private:
return result;
}
-template <typename T> inline HRESULT COMPtr<T>::copyRefTo(T** ptr)
+template <typename T> template <typename U> inline HRESULT COMPtr<T>::copyRefTo(U** ptr)
{
if (!ptr)
return E_POINTER;
+2007-11-04 Adam Roben <aroben@apple.com>
+
+ Add IWebInspector and a way to get one from a WebView
+
+ This API matches the Mac one added in r27266.
+
+ Reviewed by Sam.
+
+ * Interfaces/IWebInspector.idl: Added.
+ * Interfaces/IWebViewPrivate.idl: Added a new inspector method to
+ match Mac.
+ * WebInspector.cpp: Added.
+ (WebInspector::createInstance):
+ (WebInspector::WebInspector):
+ (WebInspector::~WebInspector):
+ (WebInspector::webViewClosed):
+ (WebInspector::QueryInterface):
+ (WebInspector::AddRef):
+ (WebInspector::Release):
+ (WebInspector::show):
+ (WebInspector::showConsole):
+ (WebInspector::showTimeline):
+ (WebInspector::close):
+ (WebInspector::attach):
+ (WebInspector::detach):
+ * WebInspector.h: Added.
+ * WebKit.vcproj/Interfaces.vcproj: Added IWebInspector.idl.
+ * WebKit.vcproj/WebKit.vcproj: Added WebInspector.{cpp,h}.
+ * WebKit.vcproj/WebKitGUID.vcproj: Added IWebInspector_i.c.
+ * WebView.cpp:
+ (WebView::close): Notify the WebInspector that we're closing.
+ (WebView::inspector): Added.
+ * WebView.h:
+
2007-11-04 Adam Roben <aroben@apple.com>
Cache strings that come directly from WebLocalizedString
--- /dev/null
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * 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.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "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 OR ITS 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.
+ */
+
+cpp_quote("/*")
+cpp_quote(" * Copyright (C) 2007 Apple Inc. All rights reserved.")
+cpp_quote(" *")
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")
+cpp_quote(" * modification, are permitted provided that the following conditions")
+cpp_quote(" * are met:")
+cpp_quote(" *")
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")
+cpp_quote(" * notice, this list of conditions and the following disclaimer.")
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")
+cpp_quote(" * notice, this list of conditions and the following disclaimer in the")
+cpp_quote(" * documentation and/or other materials provided with the distribution.")
+cpp_quote(" * 3. Neither the name of Apple Computer, Inc. (\"Apple\") nor the names of")
+cpp_quote(" * its contributors may be used to endorse or promote products derived")
+cpp_quote(" * from this software without specific prior written permission.")
+cpp_quote(" *")
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS \"AS IS\" AND ANY")
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED")
+cpp_quote(" * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE")
+cpp_quote(" * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY")
+cpp_quote(" * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES")
+cpp_quote(" * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;")
+cpp_quote(" * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND")
+cpp_quote(" * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF")
+cpp_quote(" * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.")
+cpp_quote(" */")
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+[
+ object,
+ oleautomation,
+ uuid(68159FF1-9037-45ec-9992-B2E455CF39F3),
+ pointer_default(unique)
+]
+interface IWebInspector : IUnknown
+{
+ HRESULT show();
+ HRESULT showConsole();
+ HRESULT showTimeline();
+ HRESULT close();
+ HRESULT attach();
+ HRESULT detach();
+}
import "ocidl.idl";
import "IWebFormDelegate.idl";
import "IWebFrameLoadDelegatePrivate.idl";
+import "IWebInspector.idl";
[
object,
HRESULT removeCustomDropTarget();
HRESULT setInitialFocus([in] BOOL forward);
+
+ HRESULT inspector([out, retval] IWebInspector**);
}
--- /dev/null
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * 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.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "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 OR ITS 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.
+ */
+
+#include "config.h"
+#include "WebInspector.h"
+
+#include "WebKitDLL.h"
+#include "WebView.h"
+#pragma warning(push, 0)
+#include <WebCore/InspectorController.h>
+#include <WebCore/Page.h>
+#pragma warning(pop)
+#include <wtf/Assertions.h>
+
+using namespace WebCore;
+
+WebInspector* WebInspector::createInstance(WebView* webView)
+{
+ WebInspector* inspector = new WebInspector(webView);
+ inspector->AddRef();
+ return inspector;
+}
+
+WebInspector::WebInspector(WebView* webView)
+ : m_refCount(0)
+ , m_webView(webView)
+{
+ ASSERT_ARG(webView, webView);
+
+ gClassCount++;
+}
+
+WebInspector::~WebInspector()
+{
+ gClassCount--;
+}
+
+void WebInspector::webViewClosed()
+{
+ m_webView = 0;
+}
+
+HRESULT STDMETHODCALLTYPE WebInspector::QueryInterface(REFIID riid, void** ppvObject)
+{
+ *ppvObject = 0;
+ if (IsEqualGUID(riid, IID_IWebInspector))
+ *ppvObject = static_cast<IWebInspector*>(this);
+ else if (IsEqualGUID(riid, IID_IUnknown))
+ *ppvObject = static_cast<IWebInspector*>(this);
+ else
+ return E_NOINTERFACE;
+
+ AddRef();
+ return S_OK;
+}
+
+ULONG STDMETHODCALLTYPE WebInspector::AddRef(void)
+{
+ return ++m_refCount;
+}
+
+ULONG STDMETHODCALLTYPE WebInspector::Release(void)
+{
+ ULONG newRef = --m_refCount;
+ if (!newRef)
+ delete this;
+
+ return newRef;
+}
+
+HRESULT STDMETHODCALLTYPE WebInspector::show()
+{
+ if (m_webView)
+ if (Page* page = m_webView->page())
+ page->inspectorController()->show();
+
+ return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE WebInspector::showConsole()
+{
+ if (m_webView)
+ if (Page* page = m_webView->page())
+ page->inspectorController()->showConsole();
+
+ return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE WebInspector::showTimeline()
+{
+ if (m_webView)
+ if (Page* page = m_webView->page())
+ page->inspectorController()->showTimeline();
+
+ return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE WebInspector::close()
+{
+ if (m_webView)
+ if (Page* page = m_webView->page())
+ page->inspectorController()->close();
+
+ return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE WebInspector::attach()
+{
+ if (m_webView)
+ if (Page* page = m_webView->page())
+ page->inspectorController()->attachWindow();
+
+ return S_OK;
+}
+
+HRESULT STDMETHODCALLTYPE WebInspector::detach()
+{
+ if (m_webView)
+ if (Page* page = m_webView->page())
+ page->inspectorController()->detachWindow();
+
+ return S_OK;
+}
--- /dev/null
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * 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.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "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 OR ITS 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 WebInspector_h
+#define WebInspector_h
+
+#include "IWebInspector.h"
+#include <wtf/Noncopyable.h>
+
+class WebView;
+
+class WebInspector : public IWebInspector, Noncopyable {
+public:
+ static WebInspector* createInstance(WebView*);
+
+ void webViewClosed();
+
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, void** ppvObject);
+ virtual ULONG STDMETHODCALLTYPE AddRef();
+ virtual ULONG STDMETHODCALLTYPE Release();
+
+ virtual HRESULT STDMETHODCALLTYPE show();
+ virtual HRESULT STDMETHODCALLTYPE showConsole();
+ virtual HRESULT STDMETHODCALLTYPE showTimeline();
+ virtual HRESULT STDMETHODCALLTYPE close();
+ virtual HRESULT STDMETHODCALLTYPE attach();
+ virtual HRESULT STDMETHODCALLTYPE detach();
+
+private:
+ WebInspector(WebView*);
+ ~WebInspector();
+
+ ULONG m_refCount;
+ WebView* m_webView;
+};
+
+#endif // !defined(WebInspector_h)
RelativePath="..\Interfaces\IWebIconDatabase.idl"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\Interfaces\IWebInspector.idl"\r
+ >\r
+ </File>\r
<File\r
RelativePath="..\Interfaces\IWebJavaScriptCollector.idl"\r
>\r
RelativePath="..\WebIconDatabase.h"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\WebInspector.h"\r
+ >\r
+ </File>\r
<File\r
RelativePath="..\WebInspectorClient.h"\r
>\r
RelativePath="..\WebIconDatabase.cpp"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\WebInspector.cpp"\r
+ >\r
+ </File>\r
<File\r
RelativePath="..\WebJavaScriptCollector.cpp"\r
>\r
RelativePath="$(WebKitOutputDir)\obj\WebKit\Interfaces\IWebIconDatabase_i.c"\r
>\r
</File>\r
+ <File\r
+ RelativePath="$(WebKitOutputDir)\obj\WebKit\Interfaces\IWebInspector_i.c"\r
+ >\r
+ </File>\r
<File\r
RelativePath="$(WebKitOutputDir)\obj\WebKit\Interfaces\IWebJavaScriptCollector_i.c"\r
>\r
#include "WebContextMenuClient.h"
#include "WebDragClient.h"
#include "WebIconDatabase.h"
+#include "WebInspector.h"
#include "WebInspectorClient.h"
#include "WebKit.h"
#include "WebKitStatisticsPrivate.h"
setUIDelegate(0);
setFormDelegate(0);
+ if (m_webInspector)
+ m_webInspector->webViewClosed();
+
delete m_page;
m_page = 0;
return false;
}
+HRESULT STDMETHODCALLTYPE WebView::inspector(IWebInspector** inspector)
+{
+ if (!m_webInspector)
+ m_webInspector.adoptRef(WebInspector::createInstance(this));
+
+ return m_webInspector.copyRefTo(inspector);
+}
+
class EnumTextMatches : public IEnumTextMatches
{
long m_ref;
class WebFrame;
class WebBackForwardList;
+class WebInspector;
class WebInspectorClient;
WebCore::Page* core(IWebView*);
virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView(
/* [in] */ IWebView *otherView);
+ virtual HRESULT STDMETHODCALLTYPE inspector(
+ /* [retval][out] */ IWebInspector**);
+
// WebView
WebCore::Page* page();
bool handleMouseEvent(UINT, WPARAM, LPARAM);
COMPtr<IWebResourceLoadDelegate> m_resourceLoadDelegate;
COMPtr<IWebDownloadDelegate> m_downloadDelegate;
COMPtr<WebPreferences> m_preferences;
+ COMPtr<WebInspector> m_webInspector;
+
bool m_userAgentOverridden;
bool m_useBackForwardList;
WebCore::String m_userAgentCustom;