Reviewed by Darin.
http://bugs.webkit.org/show_bug.cgi?id=10989
Provide a way for embedders to implement BrowserExtensionWin
WebCore:
* WebCore.vcproj/WebCore/WebCore.vcproj:
* bridge/win/BrowserExtensionWin.cpp: Added.
(BrowserExtensionWin::BrowserExtensionWin):
(BrowserExtensionWin::setTypedIconURL):
(BrowserExtensionWin::setIconURL):
(BrowserExtensionWin::getHistoryLength):
(BrowserExtensionWin::canRunModal):
(BrowserExtensionWin::createNewWindow):
(BrowserExtensionWin::canRunModalNow):
(BrowserExtensionWin::runModal):
(BrowserExtensionWin::goBackOrForward):
(BrowserExtensionWin::historyURL):
* bridge/win/BrowserExtensionWin.h:
* bridge/win/FrameWin.cpp:
(WebCore::FrameWin::createNewWindow):
* bridge/win/FrameWin.h:
* platform/win/TemporaryLinkStubs.cpp:
WebKit:
* COM/Interfaces/IWebUIDelegate.idl:
* COM/WebFrame.cpp:
(WebFrame::createNewWindow):
* COM/WebFrame.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16817
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2006-10-05 Marvin Decker <marv.decker@gmail.com>
+
+ Reviewed by Darin.
+
+ http://bugs.webkit.org/show_bug.cgi?id=10989
+ Provide a way for embedders to implement BrowserExtensionWin
+
+ * WebCore.vcproj/WebCore/WebCore.vcproj:
+ * bridge/win/BrowserExtensionWin.cpp: Added.
+ (BrowserExtensionWin::BrowserExtensionWin):
+ (BrowserExtensionWin::setTypedIconURL):
+ (BrowserExtensionWin::setIconURL):
+ (BrowserExtensionWin::getHistoryLength):
+ (BrowserExtensionWin::canRunModal):
+ (BrowserExtensionWin::createNewWindow):
+ (BrowserExtensionWin::canRunModalNow):
+ (BrowserExtensionWin::runModal):
+ (BrowserExtensionWin::goBackOrForward):
+ (BrowserExtensionWin::historyURL):
+ * bridge/win/BrowserExtensionWin.h:
+ * bridge/win/FrameWin.cpp:
+ (WebCore::FrameWin::createNewWindow):
+ * bridge/win/FrameWin.h:
+ * platform/win/TemporaryLinkStubs.cpp:
+
2006-10-05 Geoffrey Garen <ggaren@apple.com>
Reviewed by Darin.
<Filter
Name="win"
>
+ <File
+ RelativePath="..\..\bridge\win\BrowserExtensionWin.cpp"
+ >
+ </File>
<File
RelativePath="..\..\bridge\win\BrowserExtensionWin.h"
>
--- /dev/null
+#include <windows.h>
+#include "BrowserExtensionWin.h"
+#include "FrameWin.h"
+
+namespace WebCore {
+
+#define notImplemented() do { \
+ char buf[256] = {0}; \
+ _snprintf(buf, sizeof(buf), "FIXME: UNIMPLEMENTED: %s:%d\n", __FILE__, __LINE__); \
+ OutputDebugStringA(buf); \
+} while (0)
+
+
+BrowserExtensionWin::BrowserExtensionWin(WebCore::FrameWin* frame) : m_frame(frame)
+{
+
+}
+
+void BrowserExtensionWin::setTypedIconURL(KURL const&, const String&)
+{
+}
+
+void BrowserExtensionWin::setIconURL(KURL const&)
+{
+
+}
+
+int BrowserExtensionWin::getHistoryLength()
+{
+ return 0;
+}
+
+bool BrowserExtensionWin::canRunModal()
+{
+ notImplemented();
+ return 0;
+}
+
+void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const& request)
+{
+ m_frame->createNewWindow(request);
+}
+
+void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const& request,
+ struct WebCore::WindowArgs const& args,
+ Frame*& frame)
+{
+ m_frame->createNewWindow(request, args, frame);
+}
+
+bool BrowserExtensionWin::canRunModalNow()
+{
+ notImplemented();
+ return 0;
+}
+
+void BrowserExtensionWin::runModal()
+{
+ notImplemented();
+}
+
+void BrowserExtensionWin::goBackOrForward(int)
+{
+ notImplemented();
+}
+
+KURL BrowserExtensionWin::historyURL(int distance)
+{
+ notImplemented();
+ return KURL();
+}
+
+} // namespace WebCore
namespace WebCore {
class Frame;
-class WinFrame;
+class FrameWin;
class BrowserExtensionWin : public BrowserExtension {
public:
- BrowserExtensionWin(Frame*);
+ BrowserExtensionWin(FrameWin*);
virtual void createNewWindow(const ResourceRequest&);
virtual void createNewWindow(const ResourceRequest&,
virtual void runModal();
private:
- WinFrame *m_frame;
+ FrameWin *m_frame;
};
}
m_client->setStatusText(text);
}
+void FrameWin::createNewWindow(const ResourceRequest& request)
+{
+ m_client->createNewWindow(request);
+}
+
+void FrameWin::createNewWindow(const ResourceRequest& request,
+ const WindowArgs& args,
+ Frame*& part)
+{
+ m_client->createNewWindow(request, args, part);
+}
}
class FrameWinClient
{
public:
+ virtual void createNewWindow(const ResourceRequest&) = 0;
+ virtual void createNewWindow(const ResourceRequest&,
+ const WindowArgs&,
+ Frame*& part) = 0;
virtual void openURL(const DeprecatedString&, bool lockHistory) = 0;
virtual void submitForm(const String& method, const KURL&, const FormData*) = 0;
virtual void setTitle(const String& title) = 0;
FrameWin(Page*, Element*, FrameWinClient*);
~FrameWin();
+ virtual void createNewWindow(const ResourceRequest&);
+ virtual void createNewWindow(const ResourceRequest&, const WindowArgs&, Frame*& part);
virtual bool openURL(const KURL&);
virtual void openURLRequest(const ResourceRequest&);
virtual void submitForm(const ResourceRequest&);
#include "PlugInInfoStore.h"
#include "RenderTheme.h"
#include "FrameWin.h"
-#include "BrowserExtensionWin.h"
#include "ResourceLoader.h"
#include "RenderThemeWin.h"
#include "TextBoundaries.h"
KURL FrameWin::originalRequestURL() const { return KURL(); }
bool FrameWin::isLoadTypeReload() { notImplemented(); return false; }
-bool BrowserExtensionWin::canRunModal() { notImplemented(); return 0; }
-void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const&,struct WebCore::WindowArgs const&,Frame*&) { notImplemented(); }
-bool BrowserExtensionWin::canRunModalNow() { notImplemented(); return 0; }
-void BrowserExtensionWin::runModal() { notImplemented(); }
-void BrowserExtensionWin::goBackOrForward(int) { notImplemented(); }
-KURL BrowserExtensionWin::historyURL(int distance) { notImplemented(); return KURL(); }
-void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const&) { notImplemented(); }
-
void GraphicsContext::addRoundedRectClip(const IntRect& rect, const IntSize& topLeft, const IntSize& topRight,
const IntSize& bottomLeft, const IntSize& bottomRight) { notImplemented(); }
void GraphicsContext::addInnerRoundedRectClip(const IntRect& rect, int thickness) { notImplemented(); }
Plugin* FrameWin::createPlugin(Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) { return 0; }
ObjectContentType FrameWin::objectContentType(const KURL&, const String&) { return ObjectContentNone; }
-BrowserExtensionWin::BrowserExtensionWin(WebCore::Frame*) { }
-void BrowserExtensionWin::setTypedIconURL(KURL const&, const String&) { }
-void BrowserExtensionWin::setIconURL(KURL const&) { }
-int BrowserExtensionWin::getHistoryLength() { return 0; }
-
namespace WebCore {
bool CheckIfReloading(WebCore::DocLoader*) { return false; }
@result The WebView for the new window.
- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request;
*/
- HRESULT createWebViewWithRequest([in] IWebView* sender, [in] IWebURLRequest* request, [out, retval] IWebView* newWebView);
+ HRESULT createWebViewWithRequest([in] IWebView* sender, [in] IWebURLRequest* request, [out, retval] IWebView** newWebView);
/*!
@method webViewShow:
// FrameWinClient
+void WebFrame::createNewWindow(const WebCore::ResourceRequest&)
+{
+ // FIXME: This seems to never get called. Is it necessary?
+ IWebUIDelegate* uiDelegate = NULL;
+ if (FAILED(d->webView->uiDelegate(&uiDelegate)) || !uiDelegate)
+ return;
+ IWebView* new_view = NULL;
+ uiDelegate->createWebViewWithRequest(d->webView, NULL, &new_view);
+}
+
+void WebFrame::createNewWindow(const WebCore::ResourceRequest&,
+ const WebCore::WindowArgs&,
+ WebCore::Frame*& part)
+{
+ IWebUIDelegate* uiDelegate = NULL;
+ if (FAILED(d->webView->uiDelegate(&uiDelegate)) || !uiDelegate)
+ return;
+ IWebView* new_view = NULL;
+ if (FAILED(uiDelegate->createWebViewWithRequest(d->webView, NULL, &new_view)) || !new_view)
+ return;
+
+ IWebFrame* new_iwebframe = NULL;
+ if (FAILED(new_view->mainFrame(&new_iwebframe)) || !new_iwebframe)
+ return;
+
+ WebFrame* new_frame = static_cast<WebFrame*>(new_iwebframe);
+ part = new_frame->d->frame.get();
+}
+
void WebFrame::openURL(const DeprecatedString& url, bool lockHistory)
{
DeprecatedString terminatedURL(url);
virtual void receivedAllData(WebCore::ResourceLoader*, WebCore::PlatformData);
// FrameWinClient
+ virtual void createNewWindow(const WebCore::ResourceRequest&);
+ virtual void createNewWindow(const WebCore::ResourceRequest&,
+ const WebCore::WindowArgs&,
+ WebCore::Frame*& part);
virtual void openURL(const WebCore::DeprecatedString&, bool lockHistory);
virtual void submitForm(const WebCore::String& method, const WebCore::KURL&, const WebCore::FormData*);
virtual void setTitle(const WebCore::String& title);
+2006-10-05 Marvin Decker <marv.decker@gmail.com>
+
+ Reviewed by Darin.
+
+ http://bugs.webkit.org/show_bug.cgi?id=10989
+ Provide a way for embedders to implement BrowserExtensionWin
+
+ * COM/Interfaces/IWebUIDelegate.idl:
+ * COM/WebFrame.cpp:
+ (WebFrame::createNewWindow):
+ * COM/WebFrame.h:
+
2006-10-04 Mark Rowe <bdash@webkit.org>
Reviewed by NOBODY (build fix).