blob: 21c07018890bd4547f9033f0c3585621c25b6850 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/search/search_model.h"
#include "chrome/browser/ui/search/search_tab_helper.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/browser_with_test_window_test.h"
typedef BrowserWithTestWindowTest SearchDelegateTest;
// Test the propagation of search "mode" changes from the tab's search model to
// the browser's search model.
TEST_F(SearchDelegateTest, SearchModel) {
// Initial state.
EXPECT_TRUE(browser()->search_model()->mode().is_default());
// Propagate change from tab's search model to browser's search model.
AddTab(browser(), GURL("http://foo/0"));
content::WebContents* web_contents =
browser()->tab_strip_model()->GetWebContentsAt(0);
SearchTabHelper::FromWebContents(web_contents)->model()->
SetMode(SearchMode(SearchMode::MODE_NTP, SearchMode::ORIGIN_NTP));
EXPECT_TRUE(browser()->search_model()->mode().is_ntp());
// Add second tab, make it active, and make sure its mode changes
// propagate to the browser's search model.
AddTab(browser(), GURL("http://foo/1"));
browser()->tab_strip_model()->ActivateTabAt(1, true);
web_contents = browser()->tab_strip_model()->GetWebContentsAt(1);
SearchTabHelper::FromWebContents(web_contents)->model()->
SetMode(SearchMode(SearchMode::MODE_SEARCH_RESULTS,
SearchMode::ORIGIN_DEFAULT));
EXPECT_TRUE(browser()->search_model()->mode().is_search());
// The first tab is not active so changes should not propagate.
web_contents = browser()->tab_strip_model()->GetWebContentsAt(0);
SearchTabHelper::FromWebContents(web_contents)->model()->
SetMode(SearchMode(SearchMode::MODE_NTP, SearchMode::ORIGIN_NTP));
EXPECT_TRUE(browser()->search_model()->mode().is_search());
}