Index: content/browser/frame_host/navigation_controller_impl.cc |
diff --git a/content/browser/frame_host/navigation_controller_impl.cc b/content/browser/frame_host/navigation_controller_impl.cc |
index 6d1c597d7604629df1b636ed8947c099fbc40c5c..cda5a721bab4baf1259ddf39a64a7b791d19b794 100644 |
--- a/content/browser/frame_host/navigation_controller_impl.cc |
+++ b/content/browser/frame_host/navigation_controller_impl.cc |
@@ -769,12 +769,14 @@ bool NavigationControllerImpl::RendererDidNavigate( |
details->is_in_page = IsURLInPageNavigation( |
params.url, params.was_within_same_page, details->type); |
+ bool clear_blocked_page_entry = true; |
switch (details->type) { |
case NAVIGATION_TYPE_NEW_PAGE: |
RendererDidNavigateToNewPage(rfh, params, details->did_replace_entry); |
break; |
case NAVIGATION_TYPE_EXISTING_PAGE: |
RendererDidNavigateToExistingPage(rfh, params); |
+ clear_blocked_page_entry = false; |
break; |
case NAVIGATION_TYPE_SAME_PAGE: |
RendererDidNavigateToSamePage(rfh, params); |
@@ -803,6 +805,9 @@ bool NavigationControllerImpl::RendererDidNavigate( |
NOTREACHED(); |
} |
+ if (clear_blocked_page_entry) |
+ blocked_page_entry_.reset(NULL); |
+ |
// At this point, we know that the navigation has just completed, so |
// record the time. |
// |
@@ -1755,6 +1760,15 @@ void NavigationControllerImpl::SetTransientEntry(NavigationEntry* entry) { |
delegate_->NotifyNavigationStateChanged(kInvalidateAll); |
} |
+NavigationEntry* NavigationControllerImpl::GetBlockedPageEntry() const { |
+ return blocked_page_entry_.get(); |
+} |
+ |
+void NavigationControllerImpl::SetBlockedPageEntry(NavigationEntry* entry) { |
+ NavigationEntry* copy = NavigationEntry::Create(*entry); |
+ blocked_page_entry_.reset(static_cast<NavigationEntryImpl*>(copy)); |
+} |
+ |
void NavigationControllerImpl::InsertEntriesFrom( |
const NavigationControllerImpl& source, |
int max_index) { |