| Index: third_party/WebKit/WebCore/loader/FrameLoader.cpp | 
| =================================================================== | 
| --- third_party/WebKit/WebCore/loader/FrameLoader.cpp	(revision 9391) | 
| +++ third_party/WebKit/WebCore/loader/FrameLoader.cpp	(working copy) | 
| @@ -2353,7 +2353,8 @@ | 
| // FIXME: is this the right place to reset loadType? Perhaps this should be done after loading is finished or aborted. | 
| m_loadType = FrameLoadTypeStandard; | 
| RefPtr<DocumentLoader> loader = m_client->createDocumentLoader(request, substituteData); | 
| -    loader->setURLForHistoryReflectsClientRedirect(lockHistory); | 
| +    if (lockHistory && m_documentLoader) | 
| +        loader->setClientRedirectSourceForHistory(m_documentLoader->didCreateGlobalHistoryEntry() ? m_documentLoader->urlForHistory() : m_documentLoader->clientRedirectSourceForHistory()); | 
| load(loader.get()); | 
| } | 
|  | 
| @@ -2376,7 +2377,8 @@ | 
| void FrameLoader::loadWithNavigationAction(const ResourceRequest& request, const NavigationAction& action, bool lockHistory, FrameLoadType type, PassRefPtr<FormState> formState) | 
| { | 
| RefPtr<DocumentLoader> loader = m_client->createDocumentLoader(request, SubstituteData()); | 
| -    loader->setURLForHistoryReflectsClientRedirect(lockHistory); | 
| +    if (lockHistory && m_documentLoader) | 
| +        loader->setClientRedirectSourceForHistory(m_documentLoader->didCreateGlobalHistoryEntry() ? m_documentLoader->urlForHistory() : m_documentLoader->clientRedirectSourceForHistory()); | 
|  | 
| loader->setTriggeringAction(action); | 
| if (m_documentLoader) { | 
| @@ -2783,11 +2785,6 @@ | 
| m_documentLoader = loader; | 
| } | 
|  | 
| -DocumentLoader* FrameLoader::documentLoader() const | 
| -{ | 
| -    return m_documentLoader.get(); | 
| -} | 
| - | 
| void FrameLoader::setPolicyDocumentLoader(DocumentLoader* loader) | 
| { | 
| if (m_policyDocumentLoader == loader) | 
| @@ -2804,16 +2801,6 @@ | 
| m_policyDocumentLoader = loader; | 
| } | 
|  | 
| -DocumentLoader* FrameLoader::policyDocumentLoader() const | 
| -{ | 
| -    return m_policyDocumentLoader.get(); | 
| -} | 
| - | 
| -DocumentLoader* FrameLoader::provisionalDocumentLoader() const | 
| -{ | 
| -    return m_provisionalDocumentLoader.get(); | 
| -} | 
| - | 
| void FrameLoader::setProvisionalDocumentLoader(DocumentLoader* loader) | 
| { | 
| ASSERT(!loader || !m_provisionalDocumentLoader); | 
| @@ -2825,11 +2812,6 @@ | 
| m_provisionalDocumentLoader = loader; | 
| } | 
|  | 
| -FrameState FrameLoader::state() const | 
| -{ | 
| -    return m_state; | 
| -} | 
| - | 
| double FrameLoader::timeOfLastCompletedLoad() | 
| { | 
| return storedTimeOfLastCompletedLoad; | 
| @@ -4813,13 +4795,12 @@ | 
| m_navigationDuringLoad = false; | 
| } | 
|  | 
| -    bool didUpdateGlobalHistory = false; | 
| if (!frameNavigationDuringLoad && !documentLoader()->isClientRedirect()) { | 
| if (!historyURL.isEmpty()) { | 
| addBackForwardItemClippedAtTarget(true); | 
| if (!needPrivacy) { | 
| m_client->updateGlobalHistory(); | 
| -                didUpdateGlobalHistory = true; | 
| +                m_documentLoader->setDidCreateGlobalHistoryEntry(true); | 
| } | 
| if (Page* page = m_frame->page()) | 
| page->setGlobalHistoryItem(needPrivacy ? 0 : page->backForwardList()->currentItem()); | 
| @@ -4833,8 +4814,8 @@ | 
| if (Page* page = m_frame->page()) | 
| page->group().addVisitedLink(historyURL); | 
|  | 
| -        if (!didUpdateGlobalHistory && !url().isEmpty()) | 
| -            m_client->updateGlobalHistoryForRedirectWithoutHistoryItem(); | 
| +        if (!m_documentLoader->didCreateGlobalHistoryEntry() && documentLoader()->unreachableURL().isEmpty() && !url().isEmpty()) | 
| +            m_client->updateGlobalHistoryRedirectLinks(); | 
| } | 
| } | 
|  | 
| @@ -4903,14 +4884,13 @@ | 
| bool needPrivacy = !settings || settings->privateBrowsingEnabled(); | 
| const KURL& historyURL = documentLoader()->urlForHistory(); | 
|  | 
| -    bool didUpdateGlobalHistory = false; | 
| if (documentLoader()->isClientRedirect()) { | 
| if (!m_currentHistoryItem && !m_frame->tree()->parent()) { | 
| if (!historyURL.isEmpty()) { | 
| addBackForwardItemClippedAtTarget(true); | 
| if (!needPrivacy) { | 
| m_client->updateGlobalHistory(); | 
| -                    didUpdateGlobalHistory = true; | 
| +                    m_documentLoader->setDidCreateGlobalHistoryEntry(true); | 
| } | 
| if (Page* page = m_frame->page()) | 
| page->setGlobalHistoryItem(needPrivacy ? 0 : page->backForwardList()->currentItem()); | 
| @@ -4930,8 +4910,8 @@ | 
| if (Page* page = m_frame->page()) | 
| page->group().addVisitedLink(historyURL); | 
|  | 
| -        if (!didUpdateGlobalHistory && !url().isEmpty()) | 
| -            m_client->updateGlobalHistoryForRedirectWithoutHistoryItem(); | 
| +        if (!m_documentLoader->didCreateGlobalHistoryEntry() && documentLoader()->unreachableURL().isEmpty() && !url().isEmpty()) | 
| +            m_client->updateGlobalHistoryRedirectLinks(); | 
| } | 
| } | 
|  | 
|  |