| 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..a748e0576173e2da8c85cb60837df52d4cd1c703 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));
|
| + const bool ignore = ignore_next_reload_ && IsReload(load_details);
|
| + ignore_next_reload_ = false;
|
| + if (!ignore)
|
| + OnNavigation(NavigationDetailsFromLoadCommittedDetails(load_details));
|
| }
|
|
|
| void InfoBarService::WebContentsDestroyed() {
|
|
|