diff options
Diffstat (limited to 'WebKit/wx/WebKitSupport')
-rw-r--r-- | WebKit/wx/WebKitSupport/ChromeClientWx.cpp | 3 | ||||
-rw-r--r-- | WebKit/wx/WebKitSupport/ChromeClientWx.h | 2 | ||||
-rw-r--r-- | WebKit/wx/WebKitSupport/DragClientWx.cpp | 2 | ||||
-rw-r--r-- | WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp | 74 | ||||
-rw-r--r-- | WebKit/wx/WebKitSupport/FrameLoaderClientWx.h | 11 | ||||
-rw-r--r-- | WebKit/wx/WebKitSupport/InspectorClientWx.cpp | 9 | ||||
-rw-r--r-- | WebKit/wx/WebKitSupport/InspectorClientWx.h | 7 |
7 files changed, 86 insertions, 22 deletions
diff --git a/WebKit/wx/WebKitSupport/ChromeClientWx.cpp b/WebKit/wx/WebKitSupport/ChromeClientWx.cpp index 629463f..17f6f43 100644 --- a/WebKit/wx/WebKitSupport/ChromeClientWx.cpp +++ b/WebKit/wx/WebKitSupport/ChromeClientWx.cpp @@ -111,6 +111,9 @@ void ChromeClientWx::takeFocus(FocusDirection) notImplemented(); } +void ChromeClientWx::focusedNodeChanged(Node*) +{ +} Page* ChromeClientWx::createWindow(Frame*, const FrameLoadRequest& request, const WindowFeatures&) { diff --git a/WebKit/wx/WebKitSupport/ChromeClientWx.h b/WebKit/wx/WebKitSupport/ChromeClientWx.h index 07f70a8..bd4f1ec 100644 --- a/WebKit/wx/WebKitSupport/ChromeClientWx.h +++ b/WebKit/wx/WebKitSupport/ChromeClientWx.h @@ -54,6 +54,8 @@ public: virtual bool canTakeFocus(FocusDirection); virtual void takeFocus(FocusDirection); + virtual void focusedNodeChanged(Node*); + virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&); virtual Page* createModalDialog(Frame*, const FrameLoadRequest&); virtual void show(); diff --git a/WebKit/wx/WebKitSupport/DragClientWx.cpp b/WebKit/wx/WebKitSupport/DragClientWx.cpp index dcccc34..fb6905b 100644 --- a/WebKit/wx/WebKitSupport/DragClientWx.cpp +++ b/WebKit/wx/WebKitSupport/DragClientWx.cpp @@ -23,7 +23,9 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "config.h" #include "DragClientWx.h" + #include "NotImplemented.h" #include <stdio.h> diff --git a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp index 568cf42..fbb4ec3 100644 --- a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp +++ b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.cpp @@ -37,11 +37,13 @@ #include "FrameLoaderTypes.h" #include "FrameView.h" #include "FrameTree.h" +#include "PluginView.h" #include "HTMLFormElement.h" #include "HTMLFrameOwnerElement.h" #include "NotImplemented.h" #include "Page.h" #include "PlatformString.h" +#include "PluginView.h" #include "ProgressTracker.h" #include "RenderPart.h" #include "ResourceError.h" @@ -80,7 +82,10 @@ inline int wxNavTypeFromWebNavType(NavigationType type){ } FrameLoaderClientWx::FrameLoaderClientWx() - : m_webFrame(0) + : m_frame(0) + , m_pluginView(0) + , m_hasSentResponseToPlugin(false) + , m_webFrame(0) { } @@ -257,6 +262,20 @@ void FrameLoaderClientWx::dispatchDidChangeLocationWithinPage() notImplemented(); } +void FrameLoaderClientWx::dispatchDidPushStateWithinPage() +{ + notImplemented(); +} + +void FrameLoaderClientWx::dispatchDidReplaceStateWithinPage() +{ + notImplemented(); +} + +void FrameLoaderClientWx::dispatchDidPopStateWithinPage() +{ + notImplemented(); +} void FrameLoaderClientWx::dispatchWillClose() { @@ -408,7 +427,11 @@ void FrameLoaderClientWx::didChangeTitle(DocumentLoader *l) void FrameLoaderClientWx::finishedLoading(DocumentLoader*) { - notImplemented(); + if (m_pluginView) { + m_pluginView->didFinishLoading(); + m_pluginView = 0; + m_hasSentResponseToPlugin = false; + } } @@ -579,9 +602,25 @@ void FrameLoaderClientWx::committedLoad(WebCore::DocumentLoader* loader, const c { if (!m_webFrame) return; - FrameLoader* fl = loader->frameLoader(); - fl->setEncoding(m_response.textEncodingName(), false); - fl->addData(data, length); + if (!m_pluginView) { + FrameLoader* fl = loader->frameLoader(); + fl->setEncoding(m_response.textEncodingName(), false); + fl->addData(data, length); + } + + // We re-check here as the plugin can have been created + if (m_pluginView) { + if (!m_hasSentResponseToPlugin) { + m_pluginView->didReceiveResponse(loader->response()); + // didReceiveResponse sets up a new stream to the plug-in. on a full-page plug-in, a failure in + // setting up this stream can cause the main document load to be cancelled, setting m_pluginView + // to null + if (!m_pluginView) + return; + m_hasSentResponseToPlugin = true; + } + m_pluginView->didReceiveData(data, length); + } } WebCore::ResourceError FrameLoaderClientWx::cancelledError(const WebCore::ResourceRequest& request) @@ -812,16 +851,21 @@ ObjectContentType FrameLoaderClientWx::objectContentType(const KURL& url, const return ObjectContentType(); } -PassRefPtr<Widget> FrameLoaderClientWx::createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool loadManually) +PassRefPtr<Widget> FrameLoaderClientWx::createPlugin(const IntSize& size, HTMLPlugInElement* element, const KURL& url, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually) { - notImplemented(); +#if __WXMSW__ || __WXMAC__ + RefPtr<PluginView> pv = PluginView::create(m_frame, size, element, url, paramNames, paramValues, mimeType, loadManually); + if (pv->status() == PluginStatusLoadedSuccessfully) + return pv; +#endif return 0; } void FrameLoaderClientWx::redirectDataToPlugin(Widget* pluginWidget) { - notImplemented(); - return; + ASSERT(!m_pluginView); + m_pluginView = static_cast<PluginView*>(pluginWidget); + m_hasSentResponseToPlugin = false; } ResourceError FrameLoaderClientWx::pluginWillHandleLoadError(const ResourceResponse& response) @@ -843,8 +887,11 @@ String FrameLoaderClientWx::overrideMediaType() const return String(); } -void FrameLoaderClientWx::windowObjectCleared() +void FrameLoaderClientWx::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* world) { + if (world != mainThreadNormalWorld()) + return; + if (m_webView) { wxWebViewWindowObjectClearedEvent wkEvent(m_webView); Frame* coreFrame = m_webView->GetMainFrame()->GetFrame(); @@ -897,4 +944,11 @@ void FrameLoaderClientWx::transitionToCommittedForNewPage() m_frame->createView(size, backgroundColor, transparent, IntSize(), false); } +bool FrameLoaderClientWx::shouldUsePluginDocument(const String &mimeType) const +{ + // NOTE: Plugin Documents are used for viewing PDFs, etc. inline, and should + // not be used for pages with plugins in them. + return false; +} + } diff --git a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h index ed11974..0c29941 100644 --- a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h +++ b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h @@ -31,7 +31,9 @@ #include "FrameLoaderClient.h" #include "FrameLoader.h" #include "KURL.h" +#include "PluginView.h" #include "ResourceResponse.h" +#include "HTMLPlugInElement.h" class wxWebFrame; class wxWebView; @@ -94,6 +96,9 @@ namespace WebCore { virtual void dispatchDidCancelClientRedirect(); virtual void dispatchWillPerformClientRedirect(const KURL&, double interval, double fireDate); virtual void dispatchDidChangeLocationWithinPage(); + virtual void dispatchDidPushStateWithinPage(); + virtual void dispatchDidReplaceStateWithinPage(); + virtual void dispatchDidPopStateWithinPage(); virtual void dispatchWillClose(); virtual void dispatchDidReceiveIcon(); virtual void dispatchDidStartProvisionalLoad(); @@ -205,17 +210,21 @@ namespace WebCore { virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType); virtual String overrideMediaType() const; - virtual void windowObjectCleared(); + virtual void dispatchDidClearWindowObjectInWorld(DOMWrapperWorld*); virtual void documentElementAvailable(); virtual void didPerformFirstNavigation() const; virtual void registerForIconNotification(bool listen = true); + + virtual bool shouldUsePluginDocument(const String &mimeType) const; private: wxWebFrame *m_webFrame; Frame* m_frame; wxWebView *m_webView; + PluginView* m_pluginView; + bool m_hasSentResponseToPlugin; ResourceResponse m_response; bool m_firstData; }; diff --git a/WebKit/wx/WebKitSupport/InspectorClientWx.cpp b/WebKit/wx/WebKitSupport/InspectorClientWx.cpp index d55ad04..ff21ae0 100644 --- a/WebKit/wx/WebKitSupport/InspectorClientWx.cpp +++ b/WebKit/wx/WebKitSupport/InspectorClientWx.cpp @@ -105,17 +105,12 @@ void InspectorClientWx::inspectedURLChanged(const String& newURL) notImplemented(); } -void InspectorClientWx::populateSetting(const String& key, InspectorController::Setting& setting) +void InspectorClientWx::populateSetting(const String& key, String* setting) { notImplemented(); } -void InspectorClientWx::storeSetting(const String& key, const InspectorController::Setting& setting) -{ - notImplemented(); -} - -void InspectorClientWx::removeSetting(const String& key) +void InspectorClientWx::storeSetting(const String& key, const String& setting) { notImplemented(); } diff --git a/WebKit/wx/WebKitSupport/InspectorClientWx.h b/WebKit/wx/WebKitSupport/InspectorClientWx.h index 182df1b..f905817 100644 --- a/WebKit/wx/WebKitSupport/InspectorClientWx.h +++ b/WebKit/wx/WebKitSupport/InspectorClientWx.h @@ -60,10 +60,9 @@ public: virtual void inspectedURLChanged(const String& newURL); - virtual void populateSetting(const String& key, InspectorController::Setting&); - virtual void storeSetting(const String& key, const InspectorController::Setting&); - virtual void removeSetting(const String& key); - + virtual void populateSetting(const String& key, String* value); + virtual void storeSetting(const String& key, const String& value); + virtual void inspectorWindowObjectCleared(); }; |