summaryrefslogtreecommitdiff
path: root/Source/WebKit/blackberry/Api/WebPage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/blackberry/Api/WebPage.cpp')
-rw-r--r--Source/WebKit/blackberry/Api/WebPage.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/Source/WebKit/blackberry/Api/WebPage.cpp b/Source/WebKit/blackberry/Api/WebPage.cpp
index 5f8894548..684279e30 100644
--- a/Source/WebKit/blackberry/Api/WebPage.cpp
+++ b/Source/WebKit/blackberry/Api/WebPage.cpp
@@ -638,7 +638,13 @@ void WebPage::loadFile(const char* path, const char* overrideContentType)
void WebPage::download(const Platform::NetworkRequest& request)
{
- d->load(request.getUrlRef().c_str(), 0, "GET", Platform::NetworkRequest::UseProtocolCachePolicy, 0, 0, 0, 0, false, false, true, "", request.getSuggestedSaveName().c_str());
+ vector<const char*> headers;
+ Platform::NetworkRequest::HeaderList& list = request.getHeaderListRef();
+ for (unsigned i = 0; i < list.size(); i++) {
+ headers.push_back(list[i].first.c_str());
+ headers.push_back(list[i].second.c_str());
+ }
+ d->load(request.getUrlRef().c_str(), 0, "GET", Platform::NetworkRequest::UseProtocolCachePolicy, 0, 0, headers.empty() ? 0 : &headers[0], headers.size(), false, false, true, "", request.getSuggestedSaveName().c_str());
}
void WebPagePrivate::loadString(const char* string, const char* baseURL, const char* contentType, const char* failingURL)
@@ -892,11 +898,17 @@ void WebPagePrivate::setLoadState(LoadState state)
m_virtualViewportHeight = m_defaultLayoutSize.height();
}
// Check if we have already process the meta viewport tag, this only happens on history navigation.
+ // For back/forward history navigation, we should only keep these previous values if the document
+ // has the meta viewport tag when the state is Committed in setLoadState.
// Refreshing should keep these previous values as well.
+ static ViewportArguments defaultViewportArguments;
+ bool documentHasViewportArguments = false;
FrameLoadType frameLoadType = FrameLoadTypeStandard;
+ if (m_mainFrame && m_mainFrame->document() && !(m_mainFrame->document()->viewportArguments() == defaultViewportArguments))
+ documentHasViewportArguments = true;
if (m_mainFrame && m_mainFrame->loader())
frameLoadType = m_mainFrame->loader()->loadType();
- if (!m_didRestoreFromPageCache && !(frameLoadType == FrameLoadTypeReload || frameLoadType == FrameLoadTypeReloadFromOrigin)) {
+ if (!((m_didRestoreFromPageCache && documentHasViewportArguments) || (frameLoadType == FrameLoadTypeReload || frameLoadType == FrameLoadTypeReloadFromOrigin))) {
m_viewportArguments = ViewportArguments();
// At the moment we commit a new load, set the viewport arguments
@@ -5618,6 +5630,8 @@ void WebPagePrivate::setCompositor(PassRefPtr<WebPageCompositorPrivate> composit
}
m_compositor = compositor;
+ if (m_compositor)
+ m_compositor->setPage(this);
// The previous compositor, if any, has now released it's OpenGL resources,
// so we can safely free the owned context, if any.
@@ -5850,6 +5864,9 @@ void WebPagePrivate::destroyCompositor()
if (!m_ownedContext)
return;
+ // m_compositor is a RefPtr, so it may live on beyond this point.
+ // Disconnect the compositor from us
+ m_compositor->setPage(0);
m_compositor.clear();
m_ownedContext.clear();
}