Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index da841da04ba9822298635707c3de75a936dd6ed7..593b28c5daa8f02189b2f8d5be1e98e5c94eda96 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -4207,8 +4207,9 @@ void WebContentsImpl::DocumentOnLoadCompleted( |
NotificationService::NoDetails()); |
} |
-void WebContentsImpl::UpdateStateForFrame(RenderFrameHost* render_frame_host, |
- const PageState& page_state) { |
+void WebContentsImpl::UpdateStateForFrame( |
+ RenderFrameHost* render_frame_host, |
+ const ExplodedFrameState& frame_state) { |
DCHECK(SiteIsolationPolicy::UseSubframeNavigationEntries()); |
// The state update affects the last NavigationEntry associated with the given |
@@ -4234,10 +4235,14 @@ void WebContentsImpl::UpdateStateForFrame(RenderFrameHost* render_frame_host, |
if (frame_entry->site_instance() != rfhi->GetSiteInstance()) |
return; |
- if (page_state == frame_entry->page_state()) |
- return; // Nothing to update. |
+ PageState old_page_state = entry->GetPageState(); |
+ |
+ frame_entry->set_frame_state(frame_state); |
+ entry->UpdatePageState(); |
+ |
+ if (entry->GetPageState() == old_page_state) |
+ return; // No reason to notify. |
- frame_entry->set_page_state(page_state); |
controller_.NotifyEntryChanged(entry); |
} |