Chromium Code Reviews| Index: content/browser/frame_host/navigator_impl.cc |
| diff --git a/content/browser/frame_host/navigator_impl.cc b/content/browser/frame_host/navigator_impl.cc |
| index 6afb53557d27cc587d113398d3a48b0f2072e129..ec7f4013f4a1c2b305ba9287b10b1abeb328397d 100644 |
| --- a/content/browser/frame_host/navigator_impl.cc |
| +++ b/content/browser/frame_host/navigator_impl.cc |
| @@ -1025,7 +1025,12 @@ void NavigatorImpl::DidStartMainFrameNavigation( |
| NavigationEntryImpl* pending_entry = controller_->GetPendingEntry(); |
| bool has_browser_initiated_pending_entry = |
| pending_entry && !pending_entry->is_renderer_initiated(); |
| - if (!has_browser_initiated_pending_entry) { |
| + |
| + // If there is a transient entry, creating a new pending entry will result |
| + // in deleting it, which leads to inconsistent state. |
| + bool has_transient_entry = !!controller_->GetTransientEntry(); |
|
Charlie Reis
2016/04/13 06:03:37
I still think this is correct, but I just want to
Charlie Reis
2016/04/14 23:02:45
From your email, it sounds like we'll hang if we p
|
| + |
| + if (!has_browser_initiated_pending_entry && !has_transient_entry) { |
| std::unique_ptr<NavigationEntryImpl> entry = |
| NavigationEntryImpl::FromNavigationEntry( |
| controller_->CreateNavigationEntry( |