158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/search/search_ipc_router.h"
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <vector>
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/command_line.h"
1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/metrics/field_trial.h"
124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/strings/string16.h"
130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/tuple.h"
151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/search/search.h"
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h"
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/search/search_ipc_router_policy_impl.h"
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/search/search_tab_helper.h"
201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h"
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/common/chrome_switches.h"
224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/instant_types.h"
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/ntp_logging_events.h"
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/omnibox_focus_state.h"
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/common/render_messages.h"
264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/url_constants.h"
271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h"
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h"
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_service.h"
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/navigation_controller.h"
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/navigation_entry.h"
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/web_contents.h"
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/test/mock_render_process_host.h"
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ipc/ipc_message.h"
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ipc/ipc_test_sink.h"
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h"
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ui/base/window_open_disposition.h"
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "url/gurl.h"
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace {
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class MockSearchIPCRouterDelegate : public SearchIPCRouter::Delegate {
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~MockSearchIPCRouterDelegate() {}
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MOCK_METHOD1(OnInstantSupportDetermined, void(bool supports_instant));
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MOCK_METHOD1(OnSetVoiceSearchSupport, void(bool supports_voice_search));
494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD1(FocusOmnibox, void(OmniboxFocusState state));
501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD3(NavigateToURL, void(const GURL&, WindowOpenDisposition, bool));
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD1(OnDeleteMostVisitedItem, void(const GURL& url));
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD1(OnUndoMostVisitedDeletion, void(const GURL& url));
534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(OnUndoAllMostVisitedDeletions, void());
544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD1(OnLogEvent, void(NTPLoggingEventType event));
55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MOCK_METHOD2(OnLogMostVisitedImpression,
56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               void(int position, const base::string16& provider));
57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MOCK_METHOD2(OnLogMostVisitedNavigation,
58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)               void(int position, const base::string16& provider));
59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  MOCK_METHOD1(PasteIntoOmnibox, void(const base::string16&));
60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  MOCK_METHOD1(OnChromeIdentityCheck, void(const base::string16& identity));
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class MockSearchIPCRouterPolicy : public SearchIPCRouter::Policy {
6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~MockSearchIPCRouterPolicy() {}
6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessSetVoiceSearchSupport, bool());
681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD1(ShouldProcessFocusOmnibox, bool(bool));
691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD1(ShouldProcessNavigateToURL, bool(bool));
704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessDeleteMostVisitedItem, bool());
714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessUndoMostVisitedDeletion, bool());
724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessUndoAllMostVisitedDeletions, bool());
734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessLogEvent, bool());
741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD1(ShouldProcessPasteIntoOmnibox, bool(bool));
750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  MOCK_METHOD0(ShouldProcessChromeIdentityCheck, bool());
764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendSetPromoInformation, bool());
7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MOCK_METHOD0(ShouldSendSetDisplayInstantResults, bool());
784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendSetSuggestionToPrefetch, bool());
795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MOCK_METHOD0(ShouldSendSetOmniboxStartMargin, bool());
80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MOCK_METHOD1(ShouldSendSetInputInProgress, bool(bool));
81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MOCK_METHOD0(ShouldSendOmniboxFocusChanged, bool());
824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendMostVisitedItems, bool());
834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendThemeBackgroundInfo, bool());
84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MOCK_METHOD0(ShouldSendToggleVoiceSearch, bool());
854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSubmitQuery, bool());
8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
8858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace
8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class SearchIPCRouterTest : public BrowserWithTestWindowTest {
9158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  SearchIPCRouterTest() : field_trial_list_(NULL) {}
931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetUp() {
951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    BrowserWithTestWindowTest::SetUp();
961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    AddTab(browser(), GURL("chrome://blank"));
9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    SearchTabHelper::CreateForWebContents(web_contents());
981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
1001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        profile(),
1011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        &TemplateURLServiceFactory::BuildInstanceFor);
1021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    TemplateURLService* template_url_service =
1031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        TemplateURLServiceFactory::GetForProfile(profile());
1041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service);
1051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    TemplateURLData data;
1071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.SetURL("http://foo.com/url?bar={searchTerms}");
1081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.instant_url = "http://foo.com/instant?"
1091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        "{google:omniboxStartMarginParameter}foo=foo#foo=foo&espv";
1101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.new_tab_url = "https://foo.com/newtab?espv";
1111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.alternate_urls.push_back("http://foo.com/alt#quux={searchTerms}");
1121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.search_terms_replacement_key = "espv";
1131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
114f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    TemplateURL* template_url = new TemplateURL(data);
1151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    // Takes ownership of |template_url|.
1161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    template_url_service->Add(template_url);
1175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    template_url_service->SetUserSelectedDefaultSearchProvider(template_url);
118f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    process()->sink().ClearMessages();
1191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  }
1201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* web_contents() {
1221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return browser()->tab_strip_model()->GetActiveWebContents();
1231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  }
1241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::MockRenderProcessHost* process() {
1261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return static_cast<content::MockRenderProcessHost*>(
1271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        web_contents()->GetRenderViewHost()->GetProcess());
12858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
12958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
13058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  SearchTabHelper* GetSearchTabHelper(
13158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      content::WebContents* web_contents) {
13258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    EXPECT_NE(static_cast<content::WebContents*>(NULL), web_contents);
13358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return SearchTabHelper::FromWebContents(web_contents);
13458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
13558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
136f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SetupMockDelegateAndPolicy() {
137f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    content::WebContents* contents = web_contents();
138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    ASSERT_NE(static_cast<content::WebContents*>(NULL), contents);
139f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    SearchTabHelper* search_tab_helper = GetSearchTabHelper(contents);
14058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
14146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    search_tab_helper->ipc_router().set_delegate_for_testing(mock_delegate());
14246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    search_tab_helper->ipc_router().set_policy_for_testing(
14358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        make_scoped_ptr(new MockSearchIPCRouterPolicy)
14458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)            .PassAs<SearchIPCRouter::Policy>());
14558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
14658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
14758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool MessageWasSent(uint32 id) {
14858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return process()->sink().GetFirstMessageMatching(id) != NULL;
14958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
15058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  void VerifyDisplayInstantResultsMsg(bool expected_param_value) {
152f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    SetupMockDelegateAndPolicy();
153f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
1541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    EXPECT_CALL(*policy, ShouldSendSetDisplayInstantResults()).Times(1)
1551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        .WillOnce(testing::Return(true));
1561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    GetSearchIPCRouter().SetDisplayInstantResults();
1581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    const IPC::Message* message = process()->sink().GetFirstMessageMatching(
1591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        ChromeViewMsg_SearchBoxSetDisplayInstantResults::ID);
1601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    EXPECT_NE(static_cast<const IPC::Message*>(NULL), message);
1611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    Tuple1<bool> display_instant_results_param;
1621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    ChromeViewMsg_SearchBoxSetDisplayInstantResults::Read(
1631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        message, &display_instant_results_param);
1641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    EXPECT_EQ(expected_param_value, display_instant_results_param.a);
1651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  }
1661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
16758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MockSearchIPCRouterDelegate* mock_delegate() { return &delegate_; }
16858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
169f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* GetSearchIPCRouterPolicy() {
170f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    content::WebContents* contents = web_contents();
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    EXPECT_NE(static_cast<content::WebContents*>(NULL), contents);
172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    SearchTabHelper* search_tab_helper = GetSearchTabHelper(contents);
17358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    EXPECT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
17458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return static_cast<MockSearchIPCRouterPolicy*>(
17546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        search_tab_helper->ipc_router().policy_for_testing());
17658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
17758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SearchIPCRouter& GetSearchIPCRouter() {
179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return GetSearchTabHelper(web_contents())->ipc_router();
180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
18246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int GetSearchIPCRouterSeqNo() {
18346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    return GetSearchIPCRouter().page_seq_no_for_testing();
18446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
18546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
186f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void OnMessageReceived(const IPC::Message& message) {
187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    bool should_handle_message =
188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        chrome::IsRenderedInInstantProcess(web_contents(), profile());
189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    bool handled = GetSearchIPCRouter().OnMessageReceived(message);
190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ASSERT_EQ(should_handle_message, handled);
191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
192f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool IsActiveTab(content::WebContents* contents) {
194f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return GetSearchTabHelper(contents)->ipc_router().is_active_tab_;
195f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
19758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
19858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MockSearchIPCRouterDelegate delegate_;
1991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  base::FieldTrialList field_trial_list_;
20058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
20158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
202116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST_F(SearchIPCRouterTest, IgnoreMessagesFromNonInstantRenderers) {
203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  NavigateAndCommitActiveTab(GURL("file://foo/bar"));
204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  SetupMockDelegateAndPolicy();
205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  GURL destination_url("www.foo.com");
206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_CALL(*mock_delegate(), NavigateToURL(destination_url, CURRENT_TAB,
207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                                              true)).Times(0);
208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  content::WebContents* contents = web_contents();
209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  bool is_active_tab = IsActiveTab(contents);
210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_TRUE(is_active_tab);
211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_CALL(*policy, ShouldProcessNavigateToURL(is_active_tab)).Times(0);
214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_SearchBoxNavigate(
216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      contents->GetRoutingID(),
217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      GetSearchIPCRouterSeqNo(),
218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      destination_url, CURRENT_TAB, true));
219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  OnMessageReceived(*message);
220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
22258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessVoiceSearchSupportMsg) {
2231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
22658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnSetVoiceSearchSupport(true)).Times(1);
227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*(policy), ShouldProcessSetVoiceSearchSupport()).Times(1)
22858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      .WillOnce(testing::Return(true));
22958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
23158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
23258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      new ChromeViewHostMsg_SetVoiceSearchSupported(
23346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), true));
234f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
23558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
23658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
23758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreVoiceSearchSupportMsg) {
2381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
2391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnSetVoiceSearchSupport(true)).Times(0);
240f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
241f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
24258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessSetVoiceSearchSupport()).Times(1)
24358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      .WillOnce(testing::Return(false));
24458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
245f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
24658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
24758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      new ChromeViewHostMsg_SetVoiceSearchSupported(
24846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), true));
249f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
25058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
25158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessFocusOmniboxMsg) {
2531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
254f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
255f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
2564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), FocusOmnibox(OMNIBOX_FOCUS_VISIBLE)).Times(1);
2571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
258f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
259f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
2601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
2611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessFocusOmnibox(is_active_tab)).Times(1)
2624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
2634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_FocusOmnibox(
2651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
26646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      GetSearchIPCRouterSeqNo(),
2674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      OMNIBOX_FOCUS_VISIBLE));
268f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
2694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
2704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreFocusOmniboxMsg) {
2721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
273f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
274f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
2754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), FocusOmnibox(OMNIBOX_FOCUS_VISIBLE)).Times(0);
2761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
277f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
278f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
2791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
2801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessFocusOmnibox(is_active_tab)).Times(1)
2814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
2824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_FocusOmnibox(
2841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
28546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      GetSearchIPCRouterSeqNo(),
2864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      OMNIBOX_FOCUS_VISIBLE));
287f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
2881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
2891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, HandleTabChangedEvents) {
2911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
2921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
2931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(0, browser()->tab_strip_model()->GetIndexOfWebContents(contents));
294f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(IsActiveTab(contents));
2951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Add a new tab to deactivate the current tab.
297f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  AddTab(browser(), GURL(url::kAboutBlankURL));
2981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(2, browser()->tab_strip_model()->count());
2991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(1, browser()->tab_strip_model()->GetIndexOfWebContents(contents));
3001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
301f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(IsActiveTab(contents));
3021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
3031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Activate the first tab.
3041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  browser()->tab_strip_model()->ActivateTabAt(1, false);
3051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(browser()->tab_strip_model()->active_index(),
3061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)            browser()->tab_strip_model()->GetIndexOfWebContents(contents));
307f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(IsActiveTab(contents));
3081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
3091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
3101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessNavigateToURLMsg) {
311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
312f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
3131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  GURL destination_url("www.foo.com");
3141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), NavigateToURL(destination_url, CURRENT_TAB,
3151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                              true)).Times(1);
316f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
317f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
3181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
319f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
320f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessNavigateToURL(is_active_tab)).Times(1)
3221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(true));
3231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
3241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_SearchBoxNavigate(
3251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
32646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      GetSearchIPCRouterSeqNo(),
3271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      destination_url, CURRENT_TAB, true));
328f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
3301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
3311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreNavigateToURLMsg) {
3321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
333f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
3341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  GURL destination_url("www.foo.com");
3351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), NavigateToURL(destination_url, CURRENT_TAB,
3361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                              true)).Times(0);
337f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
338f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
3391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
340f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
341f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessNavigateToURL(is_active_tab)).Times(1)
3431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(false));
3441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
3451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_SearchBoxNavigate(
3461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
34746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      GetSearchIPCRouterSeqNo(),
3481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      destination_url, CURRENT_TAB, true));
349f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessLogEventMsg) {
3531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
354f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
355f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnLogEvent(NTP_MOUSEOVER)).Times(1);
3574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(1)
3584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
3594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
360f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
3614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_LogEvent(
36246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), GetSearchIPCRouterSeqNo(),
3634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      NTP_MOUSEOVER));
364f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreLogEventMsg) {
3681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
369f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
370f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnLogEvent(NTP_MOUSEOVER)).Times(0);
3724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(1)
3734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
3744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
375f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
3764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_LogEvent(
37746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), GetSearchIPCRouterSeqNo(),
3784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      NTP_MOUSEOVER));
379f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
382a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessLogMostVisitedImpressionMsg) {
3835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
3845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  SetupMockDelegateAndPolicy();
3855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(),
387a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OnLogMostVisitedImpression(3, base::ASCIIToUTF16("Server"))).Times(1);
3885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(1)
3895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      .WillOnce(testing::Return(true));
3905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
3915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  content::WebContents* contents = web_contents();
392a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  scoped_ptr<IPC::Message> message(
393a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      new ChromeViewHostMsg_LogMostVisitedImpression(
394a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      contents->GetRoutingID(),
39546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      GetSearchIPCRouterSeqNo(),
396a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      3,
397a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      base::ASCIIToUTF16("Server")));
398a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  OnMessageReceived(*message);
399a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
400a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
401a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessLogMostVisitedNavigationMsg) {
402a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
403a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  SetupMockDelegateAndPolicy();
404a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
405a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(),
406a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      OnLogMostVisitedNavigation(3, base::ASCIIToUTF16("Server"))).Times(1);
407a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(1)
408a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      .WillOnce(testing::Return(true));
409a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
410a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  content::WebContents* contents = web_contents();
411a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  scoped_ptr<IPC::Message> message(
412a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      new ChromeViewHostMsg_LogMostVisitedNavigation(
4135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      contents->GetRoutingID(),
41446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      GetSearchIPCRouterSeqNo(),
4155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      3,
4165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      base::ASCIIToUTF16("Server")));
4175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  OnMessageReceived(*message);
4185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
4195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
4200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessChromeIdentityCheckMsg) {
4210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
422f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
423f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  const base::string16 test_identity = base::ASCIIToUTF16("foo@bar.com");
4250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnChromeIdentityCheck(test_identity)).Times(1);
4260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessChromeIdentityCheck()).Times(1)
4270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      .WillOnce(testing::Return(true));
4280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
429f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_ChromeIdentityCheck(
43146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), test_identity));
432f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
4340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
4350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreChromeIdentityCheckMsg) {
4360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
437f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
438f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
4405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  const base::string16 test_identity = base::ASCIIToUTF16("foo@bar.com");
441f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnChromeIdentityCheck(test_identity)).Times(0);
4420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessChromeIdentityCheck()).Times(1)
4430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      .WillOnce(testing::Return(false));
4440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
445f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_ChromeIdentityCheck(
44746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), test_identity));
448f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
4500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
4514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessDeleteMostVisitedItemMsg) {
4521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
453f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
454f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
4564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnDeleteMostVisitedItem(item_url)).Times(1);
4574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessDeleteMostVisitedItem()).Times(1)
4584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
4594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
460f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem(
46346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), item_url));
464f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreDeleteMostVisitedItemMsg) {
4681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
469f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
470f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
4724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnDeleteMostVisitedItem(item_url)).Times(0);
4734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessDeleteMostVisitedItem()).Times(1)
4744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
4754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
476f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem(
47946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), item_url));
480f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessUndoMostVisitedDeletionMsg) {
4841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
485f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
486f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
4884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoMostVisitedDeletion(item_url)).Times(1);
4894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoMostVisitedDeletion()).Times(1)
4904e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
4914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
492f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion(
49546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), item_url));
496f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreUndoMostVisitedDeletionMsg) {
5001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
501f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
502f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
5034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
5044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoMostVisitedDeletion(item_url)).Times(0);
5054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoMostVisitedDeletion()).Times(1)
5064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
5074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
508f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
5094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
5104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion(
51146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), item_url));
512f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
5144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessUndoAllMostVisitedDeletionsMsg) {
5161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
517f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
518f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
5194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoAllMostVisitedDeletions()).Times(1);
5204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoAllMostVisitedDeletions()).Times(1)
5214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
5224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
523f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
5244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
5254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions(
52646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo()));
527f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
5294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreUndoAllMostVisitedDeletionsMsg) {
5311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
532f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
533f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
5344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoAllMostVisitedDeletions()).Times(0);
5354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoAllMostVisitedDeletions()).Times(1)
5364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
5374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
538f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
5394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
5404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions(
54146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          contents->GetRoutingID(), GetSearchIPCRouterSeqNo()));
542f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
5444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreMessageIfThePageIsNotActive) {
5461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
547f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
548f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
54946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  int page_seq_no = GetSearchIPCRouterSeqNo();
5504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
552f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
5534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
5541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), NavigateToURL(item_url, CURRENT_TAB,
5551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                              true)).Times(0);
55646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // At this point, in a real test, the navigation would cause the
55746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // SearchIPCRouter's page sequence to advance. In this test it doesn't, so
55846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // we'll decrement the sequence number on this side to simulate it.
55946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  --page_seq_no;
560f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessNavigateToURL(is_active_tab)).Times(0);
561f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_SearchBoxNavigate(
56346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), page_seq_no, item_url,
56446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      CURRENT_TAB, true));
565f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnDeleteMostVisitedItem(item_url)).Times(0);
5684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessDeleteMostVisitedItem()).Times(0);
5691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  message.reset(new ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem(
57046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), page_seq_no, item_url));
571f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoMostVisitedDeletion(item_url)).Times(0);
5744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoMostVisitedDeletion()).Times(0);
5754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  message.reset(new ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion(
57646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), page_seq_no, item_url));
577f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoAllMostVisitedDeletions()).Times(0);
5804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoAllMostVisitedDeletions()).Times(0);
5814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  message.reset(new ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions(
58246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), page_seq_no));
583f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), FocusOmnibox(OMNIBOX_FOCUS_VISIBLE)).Times(0);
586f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessFocusOmnibox(is_active_tab)).Times(0);
5874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  message.reset(new ChromeViewHostMsg_FocusOmnibox(
58846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), page_seq_no,
58946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      OMNIBOX_FOCUS_VISIBLE));
590f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnLogEvent(NTP_MOUSEOVER)).Times(0);
5934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(0);
5941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  message.reset(new ChromeViewHostMsg_LogEvent(contents->GetRoutingID(),
59546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                               page_seq_no,
59646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                               NTP_MOUSEOVER));
597f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
599a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 text;
6001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), PasteIntoOmnibox(text)).Times(0);
601f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessPasteIntoOmnibox(is_active_tab)).Times(0);
6021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  message.reset(new ChromeViewHostMsg_PasteAndOpenDropdown(
60346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), page_seq_no, text));
604f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
6051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
6061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessPasteAndOpenDropdownMsg) {
6081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
609f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
610f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
613f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
6141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
615f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
616a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 text;
6171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), PasteIntoOmnibox(text)).Times(1);
6181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessPasteIntoOmnibox(is_active_tab)).Times(1)
6191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(true));
6201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_PasteAndOpenDropdown(
62146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), text));
622f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
6231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
6241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnorePasteAndOpenDropdownMsg) {
6261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
627f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
628a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 text;
629f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), PasteIntoOmnibox(text)).Times(0);
6301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
632f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
6331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
634f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
635f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessPasteIntoOmnibox(is_active_tab)).Times(1)
6371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(false));
6381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_PasteAndOpenDropdown(
64046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      contents->GetRoutingID(), GetSearchIPCRouterSeqNo(), text));
641f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
6424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
6434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
6444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSetPromoInformationMsg) {
6451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
646f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
647f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetPromoInformation()).Times(1)
6494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
6504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
651f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SetPromoInformation(true);
6524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxPromoInformation::ID));
6534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
6544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
6554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetPromoInformationMsg) {
6561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
657f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
658f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetPromoInformation()).Times(1)
6604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
6614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
662f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SetPromoInformation(false);
6634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxPromoInformation::ID));
6644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
6654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
6661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest,
6671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)       SendSetDisplayInstantResultsMsg_EnableInstantOnResultsPage) {
6681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
669f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      "EmbeddedSearch",
670f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      "Group1 espv:42 query_extraction:1 prefetch_results_srp:1"));
6711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("https://foo.com/url?espv&bar=abc"));
67258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Make sure ChromeViewMsg_SearchBoxSetDisplayInstantResults message param is
6741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // set to true if the underlying page is a results page and
6751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // "prefetch_results_srp" flag is enabled via field trials.
6761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  VerifyDisplayInstantResultsMsg(true);
6771e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
67858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest,
6801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)       SendSetDisplayInstantResultsMsg_DisableInstantOnResultsPage) {
6811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // |prefetch_results_srp" flag is disabled via field trials.
6821e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      "EmbeddedSearch",
684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      "Group1 espv:42 query_extraction:1 prefetch_results_srp:0"));
6851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("https://foo.com/url?espv&bar=abc"));
6861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6871e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Make sure ChromeViewMsg_SearchBoxSetDisplayInstantResults message param is
6881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // set to false.
6891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  VerifyDisplayInstantResultsMsg(false);
6901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
6911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest,
693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch       SendSetDisplayInstantResultsMsg_EnableInstantOutsideSearchResultsPage) {
6941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
6951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Make sure ChromeViewMsg_SearchBoxSetDisplayInstantResults param is set to
696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // true if the underlying page is not a search results page.
697a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  VerifyDisplayInstantResultsMsg(true);
698a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
699a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
70058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetDisplayInstantResultsMsg) {
7011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
702f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
703f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
70458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetDisplayInstantResults()).Times(1)
70558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      .WillOnce(testing::Return(false));
70658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
707f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
708f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SetDisplayInstantResults();
7094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(
71058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      ChromeViewMsg_SearchBoxSetDisplayInstantResults::ID));
71158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
7124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSetSuggestionToPrefetch) {
7141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
715f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
716f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetSuggestionToPrefetch()).Times(1)
7184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
7194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
720f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
721f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
722f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchTabHelper(contents)->SetSuggestionToPrefetch(InstantSuggestion());
7234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(
7244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxSetSuggestionToPrefetch::ID));
7254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
7264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetSuggestionToPrefetch) {
7281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
729f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
730f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetSuggestionToPrefetch()).Times(1)
7324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
7334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
734f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
735f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
736f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchTabHelper(contents)->SetSuggestionToPrefetch(InstantSuggestion());
7374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(
7384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxSetSuggestionToPrefetch::ID));
7394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
7404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSetOmniboxStartMargin) {
7425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
7435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  SetupMockDelegateAndPolicy();
7445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetOmniboxStartMargin()).Times(1)
7465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      .WillOnce(testing::Return(true));
7475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
7485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  process()->sink().ClearMessages();
7495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  GetSearchIPCRouter().SetOmniboxStartMargin(92);
7505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxMarginChange::ID));
7515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
7525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
7535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetOmniboxStartMargin) {
7545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
7555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  SetupMockDelegateAndPolicy();
7565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetOmniboxStartMargin()).Times(1)
7585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      .WillOnce(testing::Return(false));
7595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
7605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  process()->sink().ClearMessages();
7615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  GetSearchIPCRouter().SetOmniboxStartMargin(92);
7625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxMarginChange::ID));
7635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
7645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
765a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(SearchIPCRouterTest, SendOmniboxFocusChange) {
766a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
767a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  SetupMockDelegateAndPolicy();
768a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
769a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendOmniboxFocusChanged()).Times(1)
770a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      .WillOnce(testing::Return(true));
771a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
772a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  process()->sink().ClearMessages();
773a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  GetSearchIPCRouter().OmniboxFocusChanged(OMNIBOX_FOCUS_NONE,
774a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                           OMNIBOX_FOCUS_CHANGE_EXPLICIT);
775a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxFocusChanged::ID));
776a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
777a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
778a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendOmniboxFocusChange) {
779a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
780a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  SetupMockDelegateAndPolicy();
781a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
782a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendOmniboxFocusChanged()).Times(1)
783a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      .WillOnce(testing::Return(false));
784a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
785a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  process()->sink().ClearMessages();
786a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  GetSearchIPCRouter().OmniboxFocusChanged(OMNIBOX_FOCUS_NONE,
787a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                                           OMNIBOX_FOCUS_CHANGE_EXPLICIT);
788a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxFocusChanged::ID));
789a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
790a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
791a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSetInputInProgress) {
792a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
793a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  SetupMockDelegateAndPolicy();
794a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
795a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetInputInProgress(true)).Times(1)
796a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      .WillOnce(testing::Return(true));
797a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
798a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  process()->sink().ClearMessages();
799a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  GetSearchIPCRouter().SetInputInProgress(true);
800a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxSetInputInProgress::ID));
801a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
802a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
803a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetInputInProgress) {
804a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
805a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  SetupMockDelegateAndPolicy();
806a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
807a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetInputInProgress(true)).Times(1)
808a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      .WillOnce(testing::Return(false));
809a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
810a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  process()->sink().ClearMessages();
811a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  GetSearchIPCRouter().SetInputInProgress(true);
812a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxSetInputInProgress::ID));
813a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
814a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
8154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendMostVisitedItemsMsg) {
8161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
817f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
818f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
8194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendMostVisitedItems()).Times(1)
8204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
8214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
822f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
823f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendMostVisitedItems(
8244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      std::vector<InstantMostVisitedItem>());
8254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(
8264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxMostVisitedItemsChanged::ID));
8274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
8284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
8294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendMostVisitedItemsMsg) {
8301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
831f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
832f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
8334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendMostVisitedItems()).Times(1)
8344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
8354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
836f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
837f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendMostVisitedItems(
8384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      std::vector<InstantMostVisitedItem>());
8394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(
8404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxMostVisitedItemsChanged::ID));
8414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
8424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
8434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendThemeBackgroundInfoMsg) {
8441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
845f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
846f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
8474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendThemeBackgroundInfo()).Times(1)
8484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
8494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
850f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
851f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendThemeBackgroundInfo(ThemeBackgroundInfo());
8524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxThemeChanged::ID));
8534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
8544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
8554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendThemeBackgroundInfoMsg) {
8561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
857f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
858f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
8594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendThemeBackgroundInfo()).Times(1)
8604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
8614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
862f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
863f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendThemeBackgroundInfo(ThemeBackgroundInfo());
8644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxThemeChanged::ID));
8654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
8664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
8674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSubmitMsg) {
8681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
869f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
870f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
8714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSubmitQuery()).Times(1)
8724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
8734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
874f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
8755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  GetSearchIPCRouter().Submit(base::string16());
8764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxSubmit::ID));
8774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
8784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
8794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSubmitMsg) {
8801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
881f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
882f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
8834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSubmitQuery()).Times(1)
8844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
8854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
886f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
8875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  GetSearchIPCRouter().Submit(base::string16());
8884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxSubmit::ID));
8894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
890f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
891f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendToggleVoiceSearch) {
892f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
893f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
894f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
895f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendToggleVoiceSearch()).Times(1)
896f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      .WillOnce(testing::Return(true));
897f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
898f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
899f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().ToggleVoiceSearch();
900f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxToggleVoiceSearch::ID));
901f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
902f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
903f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendToggleVoiceSearch) {
904f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
905f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
906f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
907f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendToggleVoiceSearch()).Times(1)
908f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      .WillOnce(testing::Return(false));
909f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
910f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
911f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().ToggleVoiceSearch();
912f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxToggleVoiceSearch::ID));
913f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
914