| Index: chrome/browser/infobars/infobar_container.cc
|
| diff --git a/chrome/browser/infobars/infobar_container.cc b/chrome/browser/infobars/infobar_container.cc
|
| index b601744e09fac3f45aca280186dab6b1d419ac9d..b2699090f8999067d85b2c868cd016d8dde3daa8 100644
|
| --- a/chrome/browser/infobars/infobar_container.cc
|
| +++ b/chrome/browser/infobars/infobar_container.cc
|
| @@ -16,6 +16,7 @@
|
| #include "chrome/browser/api/infobars/infobar_service.h"
|
| #include "chrome/browser/infobars/infobar.h"
|
| #include "chrome/browser/instant/instant_overlay_model.h"
|
| +#include "chrome/browser/instant/search.h"
|
| #include "chrome/browser/ui/search/search_model.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "content/public/browser/notification_details.h"
|
| @@ -73,6 +74,10 @@ void InfoBarContainer::ChangeInfoBarService(InfoBarService* infobar_service) {
|
| infobar_service_),
|
| i, false, NO_CALLBACK);
|
| }
|
| +
|
| + // Hide infobars if search model requires so.
|
| + if (!search_model_->top_bars_visible())
|
| + HideAllInfoBars();
|
| }
|
|
|
| // Now that everything is up to date, signal the delegate to re-layout.
|
| @@ -174,29 +179,17 @@ void InfoBarContainer::Observe(int type,
|
| }
|
| }
|
|
|
| -void InfoBarContainer::ModeChanged(const chrome::search::Mode& old_mode,
|
| - const chrome::search::Mode& new_mode) {
|
| - // Hide infobars when showing Instant Extended suggestions.
|
| - if (new_mode.is_search_suggestions()) {
|
| - // If suggestions are being shown on a |DEFAULT| page, delay the hiding
|
| - // until notification that Instant overlay is ready is received via
|
| - // OverlayStateChanged(); this prevents jankiness caused by infobars hiding
|
| - // followed by suggestions appearing.
|
| - if (new_mode.is_origin_default())
|
| - return;
|
| - HideAllInfoBars();
|
| - OnInfoBarStateChanged(false);
|
| - } else {
|
| +void InfoBarContainer::ModelChanged(const chrome::search::Mode& old_mode,
|
| + const chrome::search::Mode& new_mode,
|
| + bool top_bars_visible) {
|
| + if (!chrome::search::ShouldHandleTopBarsVisibilityChange(old_mode,
|
| + new_mode)) {
|
| + return;
|
| + }
|
| + if (top_bars_visible && !infobars_shown_) {
|
| ChangeInfoBarService(infobar_service_);
|
| infobars_shown_time_ = base::TimeTicks::Now();
|
| - }
|
| -}
|
| -
|
| -void InfoBarContainer::OverlayStateChanged(const InstantOverlayModel& model) {
|
| - // If suggestions are being shown on a |DEFAULT| page, hide the infobars now.
|
| - // See comments for ModeChanged() for explanation.
|
| - if (model.mode().is_search_suggestions() &&
|
| - model.mode().is_origin_default()) {
|
| + } else if (!top_bars_visible && infobars_shown_) {
|
| HideAllInfoBars();
|
| OnInfoBarStateChanged(false);
|
| }
|
|
|