summaryrefslogtreecommitdiffstats
path: root/WebKit/wx/WebFrame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/wx/WebFrame.cpp')
-rw-r--r--WebKit/wx/WebFrame.cpp41
1 files changed, 29 insertions, 12 deletions
diff --git a/WebKit/wx/WebFrame.cpp b/WebKit/wx/WebFrame.cpp
index 630eb8f..f205152 100644
--- a/WebKit/wx/WebFrame.cpp
+++ b/WebKit/wx/WebFrame.cpp
@@ -42,6 +42,7 @@
#include "RenderView.h"
#include "ScriptController.h"
#include "ScriptValue.h"
+#include "SubstituteData.h"
#include "TextEncoding.h"
#include "JSDOMBinding.h"
@@ -73,8 +74,7 @@ wxWebFrame::wxWebFrame(wxWebView* container, wxWebFrame* parent, WebViewFrameDat
m_textMagnifier(1.0),
m_isEditable(false),
m_isInitialized(false),
- m_beingDestroyed(false),
- m_title(wxEmptyString)
+ m_beingDestroyed(false)
{
m_impl = new WebFramePrivate();
@@ -86,13 +86,16 @@ wxWebFrame::wxWebFrame(wxWebView* container, wxWebFrame* parent, WebViewFrameDat
}
WebCore::FrameLoaderClientWx* loaderClient = new WebCore::FrameLoaderClientWx();
-
- m_impl->frame = WebCore::Frame::create(container->m_impl->page, parentFrame, loaderClient);
- m_impl->frame->deref();
+ RefPtr<WebCore::Frame> newFrame = WebCore::Frame::create(container->m_impl->page, parentFrame, loaderClient);
+
+ m_impl->frame = newFrame.get();
- loaderClient->setFrame(m_impl->frame.get());
+ loaderClient->setFrame(this);
loaderClient->setWebView(container);
+ if (data && data->ownerElement)
+ m_impl->frame->ref();
+
m_impl->frame->init();
m_isInitialized = true;
@@ -100,13 +103,14 @@ wxWebFrame::wxWebFrame(wxWebView* container, wxWebFrame* parent, WebViewFrameDat
wxWebFrame::~wxWebFrame()
{
- m_impl->frame->loader()->detachFromParent();
+ if (m_impl)
+ delete m_impl;
}
WebCore::Frame* wxWebFrame::GetFrame()
{
if (m_impl)
- return m_impl->frame.get();
+ return m_impl->frame;
return 0;
}
@@ -142,10 +146,16 @@ wxString wxWebFrame::GetPageSource()
void wxWebFrame::SetPageSource(const wxString& source, const wxString& baseUrl)
{
if (m_impl->frame && m_impl->frame->loader()) {
- WebCore::FrameLoader* loader = m_impl->frame->loader();
- loader->begin(WebCore::KURL(WebCore::KURL(), static_cast<const char*>(baseUrl.mb_str(wxConvUTF8)), WebCore::UTF8Encoding()));
- loader->write(static_cast<const WebCore::String>(source));
- loader->end();
+ WebCore::KURL url(WebCore::KURL(), static_cast<const char*>(baseUrl.mb_str(wxConvUTF8)));
+
+ wxCharBuffer charBuffer(source.mb_str(wxConvUTF8));
+ const char* contents = charBuffer;
+
+ WTF::PassRefPtr<WebCore::SharedBuffer> sharedBuffer = WebCore::SharedBuffer::create(contents, strlen(contents));
+ WebCore::SubstituteData substituteData(sharedBuffer, WebCore::String("text/html"), WebCore::String("UTF-8"), WebCore::blankURL(), url);
+
+ m_impl->frame->loader()->stop();
+ m_impl->frame->loader()->load(WebCore::ResourceRequest(url), substituteData, false);
}
}
@@ -383,3 +393,10 @@ wxWebViewDOMElementInfo wxWebFrame::HitTest(const wxPoint& pos) const
return domInfo;
}
+bool wxWebFrame::ShouldClose() const
+{
+ if (m_impl->frame)
+ return m_impl->frame->shouldClose();
+
+ return true;
+}