Index: Source/web/WebFrameImpl.cpp |
diff --git a/Source/web/WebFrameImpl.cpp b/Source/web/WebFrameImpl.cpp |
index b51ac33b17741609182ab51fe3dbdbfc68680446..b08befe6e4240b73c4c72df0e46e6208d0b08a3d 100644 |
--- a/Source/web/WebFrameImpl.cpp |
+++ b/Source/web/WebFrameImpl.cpp |
@@ -922,12 +922,7 @@ void WebFrameImpl::loadHistoryItem(const WebHistoryItem& item) |
ASSERT(frame()); |
RefPtr<HistoryItem> historyItem = PassRefPtr<HistoryItem>(item); |
ASSERT(historyItem); |
- |
- frame()->loader().prepareForHistoryNavigation(); |
- RefPtr<HistoryItem> currentItem = frame()->loader().history()->currentItem(); |
- m_inSameDocumentHistoryLoad = currentItem && currentItem->shouldDoSameDocumentNavigationTo(historyItem.get()); |
- frame()->page()->goToItem(historyItem.get()); |
- m_inSameDocumentHistoryLoad = false; |
+ frame()->page()->history()->goToItem(historyItem.get()); |
} |
void WebFrameImpl::loadData(const WebData& data, const WebString& mimeType, const WebString& textEncoding, const WebURL& baseURL, const WebURL& unreachableURL, bool replace) |
@@ -998,7 +993,7 @@ WebHistoryItem WebFrameImpl::previousHistoryItem() const |
// only get saved to history when it becomes the previous item. The caller |
// is expected to query the history item after a navigation occurs, after |
// the desired history item has become the previous entry. |
- return WebHistoryItem(frame()->loader().history()->previousItem()); |
+ return WebHistoryItem(frame()->page()->history()->previousItemForExport(frame())); |
} |
WebHistoryItem WebFrameImpl::currentHistoryItem() const |
@@ -1014,13 +1009,13 @@ WebHistoryItem WebFrameImpl::currentHistoryItem() const |
// document state. However, it is OK for new navigations. |
// FIXME: Can we make this a plain old getter, instead of worrying about |
// clobbering here? |
- if (!m_inSameDocumentHistoryLoad && (frame()->loader().loadType() == FrameLoadTypeStandard |
+ if (!frame()->page()->history()->inSameDocumentLoad() && (frame()->loader().loadType() == FrameLoadTypeStandard |
|| !frame()->loader().activeDocumentLoader()->isLoadingInAPISense())) |
- frame()->loader().history()->saveDocumentAndScrollState(); |
+ frame()->page()->history()->saveDocumentAndScrollState(frame()); |
- if (HistoryItem* item = frame()->loader().history()->provisionalItem()) |
+ if (RefPtr<HistoryItem> item = frame()->page()->history()->provisionalItemForExport(frame())) |
return WebHistoryItem(item); |
- return WebHistoryItem(frame()->page()->mainFrame()->loader().history()->currentItem()); |
+ return WebHistoryItem(frame()->page()->history()->currentItemForExport(frame())); |
} |
void WebFrameImpl::enableViewSourceMode(bool enable) |
@@ -2104,7 +2099,6 @@ WebFrameImpl::WebFrameImpl(WebFrameClient* client, long long embedderIdentifier) |
, m_nextInvalidateAfter(0) |
, m_findMatchMarkersVersion(0) |
, m_findMatchRectsAreValid(false) |
- , m_inSameDocumentHistoryLoad(false) |
, m_inputEventsScaleFactorForEmulation(1) |
{ |
blink::Platform::current()->incrementStatsCounter(webFrameActiveCount); |
@@ -2193,12 +2187,11 @@ PassRefPtr<Frame> WebFrameImpl::createChildFrame(const FrameLoadRequest& request |
if (!childFrame->tree().parent()) |
return 0; |
- HistoryItem* parentItem = frame()->loader().history()->currentItem(); |
HistoryItem* childItem = 0; |
// If we're moving in the back/forward list, we might want to replace the content |
// of this child frame with whatever was there at that point. |
- if (parentItem && parentItem->children().size() && isBackForwardLoadType(frame()->loader().loadType()) && !frame()->document()->loadEventFinished()) |
- childItem = parentItem->childItemWithTarget(childFrame->tree().uniqueName()); |
+ if (isBackForwardLoadType(frame()->loader().loadType()) && !frame()->document()->loadEventFinished()) |
+ childItem = frame()->page()->history()->currentItem(childFrame.get()); |
if (childItem) |
childFrame->loader().loadHistoryItem(childItem); |