Chromium Code Reviews| Index: chrome/browser/infobars/infobar_service.cc |
| diff --git a/chrome/browser/infobars/infobar_service.cc b/chrome/browser/infobars/infobar_service.cc |
| index db73ec38b903aa3fe7f407d30f7a0addcc88bfaa..c4e96023fcb44b283d3da0ded8917f9f91a27d74 100644 |
| --- a/chrome/browser/infobars/infobar_service.cc |
| +++ b/chrome/browser/infobars/infobar_service.cc |
| @@ -20,6 +20,16 @@ using infobars::InfoBar; |
| using infobars::InfoBarDelegate; |
| using infobars::InfoBarManager; |
| +namespace { |
| + |
| +bool IsReload(const content::LoadCommittedDetails& details) { |
| + return content::PageTransitionStripQualifier( |
| + details.entry->GetTransitionType()) == content::PAGE_TRANSITION_RELOAD; |
| + |
| +} |
| + |
| +} // namespace |
| + |
| // static |
| InfoBarDelegate::NavigationDetails |
| InfoBarService::NavigationDetailsFromLoadCommittedDetails( |
| @@ -32,9 +42,7 @@ InfoBarDelegate::NavigationDetails |
| navigation_details.is_main_frame = details.is_main_frame; |
| const content::PageTransition transition = details.entry->GetTransitionType(); |
| - navigation_details.is_reload = |
| - content::PageTransitionStripQualifier(transition) == |
| - content::PAGE_TRANSITION_RELOAD; |
| + navigation_details.is_reload = IsReload(details); |
| navigation_details.is_redirect = |
| (transition & content::PAGE_TRANSITION_IS_REDIRECT_MASK) != 0; |
| @@ -51,7 +59,8 @@ content::WebContents* InfoBarService::WebContentsFromInfoBar(InfoBar* infobar) { |
| } |
| InfoBarService::InfoBarService(content::WebContents* web_contents) |
| - : content::WebContentsObserver(web_contents) { |
| + : content::WebContentsObserver(web_contents), |
| + ignore_next_reload_(false) { |
| DCHECK(web_contents); |
| } |
| @@ -90,9 +99,18 @@ void InfoBarService::RenderProcessGone(base::TerminationStatus status) { |
| RemoveAllInfoBars(true); |
| } |
| +void InfoBarService::DidStartNavigationToPendingEntry( |
| + const GURL& url, |
| + content::NavigationController::ReloadType reload_type) { |
| + ignore_next_reload_ = false; |
| +} |
| + |
| void InfoBarService::NavigationEntryCommitted( |
| const content::LoadCommittedDetails& load_details) { |
| - OnNavigation(NavigationDetailsFromLoadCommittedDetails(load_details)); |
| + if (ignore_next_reload_ && IsReload(load_details)) |
|
Peter Kasting
2014/09/18 17:48:04
Hmm, this seems subtle. If we set ignore_next_rel
sky
2014/09/18 19:22:27
Done.
|
| + ignore_next_reload_ = false; |
| + else |
| + OnNavigation(NavigationDetailsFromLoadCommittedDetails(load_details)); |
| } |
| void InfoBarService::WebContentsDestroyed() { |