search_ipc_router_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
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.h"
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h"
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/search/search_ipc_router_policy_impl.h"
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/search/search_tab_helper.h"
211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h"
2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/common/chrome_switches.h"
234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/instant_types.h"
244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/ntp_logging_events.h"
254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/omnibox_focus_state.h"
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/common/render_messages.h"
274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chrome/common/url_constants.h"
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h"
291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.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));
551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD1(PasteIntoOmnibox, void(const string16&));
560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  MOCK_METHOD1(OnChromeIdentityCheck, void(const string16& identity));
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class MockSearchIPCRouterPolicy : public SearchIPCRouter::Policy {
6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~MockSearchIPCRouterPolicy() {}
6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessSetVoiceSearchSupport, bool());
641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD1(ShouldProcessFocusOmnibox, bool(bool));
651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD1(ShouldProcessNavigateToURL, bool(bool));
664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessDeleteMostVisitedItem, bool());
674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessUndoMostVisitedDeletion, bool());
684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessUndoAllMostVisitedDeletions, bool());
694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldProcessLogEvent, bool());
701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  MOCK_METHOD1(ShouldProcessPasteIntoOmnibox, bool(bool));
710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  MOCK_METHOD0(ShouldProcessChromeIdentityCheck, bool());
724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendSetPromoInformation, bool());
7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MOCK_METHOD0(ShouldSendSetDisplayInstantResults, bool());
744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendSetSuggestionToPrefetch, bool());
754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendMostVisitedItems, bool());
764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSendThemeBackgroundInfo, bool());
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MOCK_METHOD0(ShouldSendToggleVoiceSearch, bool());
784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  MOCK_METHOD0(ShouldSubmitQuery, bool());
7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace
8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class SearchIPCRouterTest : public BrowserWithTestWindowTest {
8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  SearchIPCRouterTest() : field_trial_list_(NULL) {}
861e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetUp() {
881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    BrowserWithTestWindowTest::SetUp();
891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    AddTab(browser(), GURL("chrome://blank"));
9058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    SearchTabHelper::CreateForWebContents(web_contents());
911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    TemplateURLServiceFactory::GetInstance()->SetTestingFactoryAndUse(
931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        profile(),
941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        &TemplateURLServiceFactory::BuildInstanceFor);
951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    TemplateURLService* template_url_service =
961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        TemplateURLServiceFactory::GetForProfile(profile());
971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    ui_test_utils::WaitForTemplateURLServiceToLoad(template_url_service);
981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    TemplateURLData data;
1001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.SetURL("http://foo.com/url?bar={searchTerms}");
1011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.instant_url = "http://foo.com/instant?"
1021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        "{google:omniboxStartMarginParameter}foo=foo#foo=foo&espv";
1031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.new_tab_url = "https://foo.com/newtab?espv";
1041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.alternate_urls.push_back("http://foo.com/alt#quux={searchTerms}");
1051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    data.search_terms_replacement_key = "espv";
1061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    TemplateURL* template_url = new TemplateURL(profile(), data);
1081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    // Takes ownership of |template_url|.
1091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    template_url_service->Add(template_url);
1101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    template_url_service->SetDefaultSearchProvider(template_url);
111f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    process()->sink().ClearMessages();
1121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  }
1131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* web_contents() {
1151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return browser()->tab_strip_model()->GetActiveWebContents();
1161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  }
1171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
1181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::MockRenderProcessHost* process() {
1191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    return static_cast<content::MockRenderProcessHost*>(
1201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        web_contents()->GetRenderViewHost()->GetProcess());
12158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
12258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
12358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  SearchTabHelper* GetSearchTabHelper(
12458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      content::WebContents* web_contents) {
12558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    EXPECT_NE(static_cast<content::WebContents*>(NULL), web_contents);
12658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return SearchTabHelper::FromWebContents(web_contents);
12758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
12858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
129f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void SetupMockDelegateAndPolicy() {
130f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    content::WebContents* contents = web_contents();
131f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    ASSERT_NE(static_cast<content::WebContents*>(NULL), contents);
132f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    SearchTabHelper* search_tab_helper = GetSearchTabHelper(contents);
13358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    ASSERT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
13458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    search_tab_helper->ipc_router().set_delegate(mock_delegate());
13558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    search_tab_helper->ipc_router().set_policy(
13658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        make_scoped_ptr(new MockSearchIPCRouterPolicy)
13758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)            .PassAs<SearchIPCRouter::Policy>());
13858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
13958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
14058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  bool MessageWasSent(uint32 id) {
14158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return process()->sink().GetFirstMessageMatching(id) != NULL;
14258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
14358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  void VerifyDisplayInstantResultsMsg(bool expected_param_value) {
145f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    SetupMockDelegateAndPolicy();
146f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
1471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    EXPECT_CALL(*policy, ShouldSendSetDisplayInstantResults()).Times(1)
1481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        .WillOnce(testing::Return(true));
1491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    GetSearchIPCRouter().SetDisplayInstantResults();
1511e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    const IPC::Message* message = process()->sink().GetFirstMessageMatching(
1521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        ChromeViewMsg_SearchBoxSetDisplayInstantResults::ID);
1531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    EXPECT_NE(static_cast<const IPC::Message*>(NULL), message);
1541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    Tuple1<bool> display_instant_results_param;
1551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    ChromeViewMsg_SearchBoxSetDisplayInstantResults::Read(
1561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)        message, &display_instant_results_param);
1571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    EXPECT_EQ(expected_param_value, display_instant_results_param.a);
1581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  }
1591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
16058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MockSearchIPCRouterDelegate* mock_delegate() { return &delegate_; }
16158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
162f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* GetSearchIPCRouterPolicy() {
163f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    content::WebContents* contents = web_contents();
164f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    EXPECT_NE(static_cast<content::WebContents*>(NULL), contents);
165f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    SearchTabHelper* search_tab_helper = GetSearchTabHelper(contents);
16658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    EXPECT_NE(static_cast<SearchTabHelper*>(NULL), search_tab_helper);
16758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    return static_cast<MockSearchIPCRouterPolicy*>(
16858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)        search_tab_helper->ipc_router().policy());
16958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  }
17058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
171f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SearchIPCRouter& GetSearchIPCRouter() {
172f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return GetSearchTabHelper(web_contents())->ipc_router();
173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
174f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
175f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  void OnMessageReceived(const IPC::Message& message) {
176f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    GetSearchIPCRouter().OnMessageReceived(message);
177f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
178f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
179f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool IsActiveTab(content::WebContents* contents) {
180f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return GetSearchTabHelper(contents)->ipc_router().is_active_tab_;
181f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
182f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
18358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
18458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  MockSearchIPCRouterDelegate delegate_;
1851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  base::FieldTrialList field_trial_list_;
18658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
18758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
18858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessVoiceSearchSupportMsg) {
1891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
190f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
191f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
19258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnSetVoiceSearchSupport(true)).Times(1);
193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*(policy), ShouldProcessSetVoiceSearchSupport()).Times(1)
19458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      .WillOnce(testing::Return(true));
19558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
196f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
19758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
19858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      new ChromeViewHostMsg_SetVoiceSearchSupported(
1991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
2001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID(),
20158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)          true));
202f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
20358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
20458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
20558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreVoiceSearchSupportMsg) {
2061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
2071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnSetVoiceSearchSupport(true)).Times(0);
208f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
209f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
21058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessSetVoiceSearchSupport()).Times(1)
21158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      .WillOnce(testing::Return(false));
21258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
213f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
21458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
21558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      new ChromeViewHostMsg_SetVoiceSearchSupported(
2161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
2171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID(),
21858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)          true));
219f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
22058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
22158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
2224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessFocusOmniboxMsg) {
2231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
2264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), FocusOmnibox(OMNIBOX_FOCUS_VISIBLE)).Times(1);
2271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
2301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
2311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessFocusOmnibox(is_active_tab)).Times(1)
2324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
2334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_FocusOmnibox(
2351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
2361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
2374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      OMNIBOX_FOCUS_VISIBLE));
238f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
2394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
2404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreFocusOmniboxMsg) {
2421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
243f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
244f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
2454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), FocusOmnibox(OMNIBOX_FOCUS_VISIBLE)).Times(0);
2461e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
247f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
248f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
2491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
2501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessFocusOmnibox(is_active_tab)).Times(1)
2514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
2524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
2534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_FocusOmnibox(
2541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
2551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
2564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      OMNIBOX_FOCUS_VISIBLE));
257f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
2581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
2591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, HandleTabChangedEvents) {
2611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
2621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
2631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(0, browser()->tab_strip_model()->GetIndexOfWebContents(contents));
264f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(IsActiveTab(contents));
2651e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Add a new tab to deactivate the current tab.
2671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  AddTab(browser(), GURL(content::kAboutBlankURL));
2681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(2, browser()->tab_strip_model()->count());
2691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(1, browser()->tab_strip_model()->GetIndexOfWebContents(contents));
2701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
271f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(IsActiveTab(contents));
2721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Activate the first tab.
2741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  browser()->tab_strip_model()->ActivateTabAt(1, false);
2751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_EQ(browser()->tab_strip_model()->active_index(),
2761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)            browser()->tab_strip_model()->GetIndexOfWebContents(contents));
277f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(IsActiveTab(contents));
2781e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
2791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessNavigateToURLMsg) {
2811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
282f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
2831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  GURL destination_url("www.foo.com");
2841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), NavigateToURL(destination_url, CURRENT_TAB,
2851e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                              true)).Times(1);
286f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
287f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
2881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
289f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
290f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
2911e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessNavigateToURL(is_active_tab)).Times(1)
2921e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(true));
2931e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_SearchBoxNavigate(
2951e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
2961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
2971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      destination_url, CURRENT_TAB, true));
298f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
2991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
3001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
3011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreNavigateToURLMsg) {
3021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
303f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
3041e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  GURL destination_url("www.foo.com");
3051e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), NavigateToURL(destination_url, CURRENT_TAB,
3061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                              true)).Times(0);
307f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
308f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
3091e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
310f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
311f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessNavigateToURL(is_active_tab)).Times(1)
3131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(false));
3141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
3151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_SearchBoxNavigate(
3161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
3171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
3181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      destination_url, CURRENT_TAB, true));
319f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessLogEventMsg) {
3231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
324f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
325f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnLogEvent(NTP_MOUSEOVER)).Times(1);
3274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(1)
3284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
3294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
330f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
3314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_LogEvent(
3321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
3331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
3344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      NTP_MOUSEOVER));
335f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreLogEventMsg) {
3391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
340f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
341f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnLogEvent(NTP_MOUSEOVER)).Times(0);
3434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(1)
3444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
3454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
346f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
3474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_LogEvent(
3481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
3491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
3504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      NTP_MOUSEOVER));
351f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
3534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
3540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessChromeIdentityCheckMsg) {
3550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
356f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
357f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
358f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const string16 test_identity = ASCIIToUTF16("foo@bar.com");
3590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnChromeIdentityCheck(test_identity)).Times(1);
3600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessChromeIdentityCheck()).Times(1)
3610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      .WillOnce(testing::Return(true));
3620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
363f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
3640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_ChromeIdentityCheck(
3650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      contents->GetRoutingID(),
3660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
3670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      test_identity));
368f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
3700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
3710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreChromeIdentityCheckMsg) {
3720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
373f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
374f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
376f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  const string16 test_identity = ASCIIToUTF16("foo@bar.com");
377f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnChromeIdentityCheck(test_identity)).Times(0);
3780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessChromeIdentityCheck()).Times(1)
3790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      .WillOnce(testing::Return(false));
3800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
381f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
3820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_ChromeIdentityCheck(
3830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      contents->GetRoutingID(),
3840f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(),
3850f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)      test_identity));
386f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
3870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}
3880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)
3894e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessDeleteMostVisitedItemMsg) {
3901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
391f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
392f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
3934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
3944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnDeleteMostVisitedItem(item_url)).Times(1);
3954e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessDeleteMostVisitedItem()).Times(1)
3964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
3974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
398f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
3994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem(
4011e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
4021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID(),
4034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)          item_url));
404f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreDeleteMostVisitedItemMsg) {
4081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
409f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
410f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
4124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnDeleteMostVisitedItem(item_url)).Times(0);
4134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessDeleteMostVisitedItem()).Times(1)
4144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
4154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
416f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem(
4191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
4201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID(),
4214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)          item_url));
422f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessUndoMostVisitedDeletionMsg) {
4261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
427f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
428f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
4304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoMostVisitedDeletion(item_url)).Times(1);
4314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoMostVisitedDeletion()).Times(1)
4324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
4334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
434f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion(
4371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
4381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID(),
4394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)          item_url));
440f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreUndoMostVisitedDeletionMsg) {
4441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
445f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
446f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
4484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoMostVisitedDeletion(item_url)).Times(0);
4494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoMostVisitedDeletion()).Times(1)
4504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
4514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
452f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion(
4551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
4561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID(),
4574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)          item_url));
458f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessUndoAllMostVisitedDeletionsMsg) {
4621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
463f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
464f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoAllMostVisitedDeletions()).Times(1);
4664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoAllMostVisitedDeletions()).Times(1)
4674e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
4684e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
469f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions(
4721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
4731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID()));
474f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4754e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4764e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreUndoAllMostVisitedDeletionsMsg) {
4781e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
479f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
480f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4814e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoAllMostVisitedDeletions()).Times(0);
4824e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoAllMostVisitedDeletions()).Times(1)
4834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
4844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
485f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
4864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  scoped_ptr<IPC::Message> message(
4874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      new ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions(
4881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetRoutingID(),
4891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)          contents->GetController().GetVisibleEntry()->GetPageID()));
490f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
4914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
4924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnoreMessageIfThePageIsNotActive) {
4941e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
495f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
496f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
4974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
4981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
499f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
5004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  int invalid_page_id = 1000;
5014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  GURL item_url("www.foo.com");
5021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), NavigateToURL(item_url, CURRENT_TAB,
5031e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)                                              true)).Times(0);
504f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessNavigateToURL(is_active_tab)).Times(0);
505f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5061e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_SearchBoxNavigate(
5071e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(), invalid_page_id, item_url, CURRENT_TAB,
5081e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      true));
509f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnDeleteMostVisitedItem(item_url)).Times(0);
5124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessDeleteMostVisitedItem()).Times(0);
5131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  message.reset(new ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem(
5141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(), invalid_page_id, item_url));
515f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoMostVisitedDeletion(item_url)).Times(0);
5184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoMostVisitedDeletion()).Times(0);
5194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  message.reset(new ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion(
5201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(), invalid_page_id, item_url));
521f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnUndoAllMostVisitedDeletions()).Times(0);
5244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessUndoAllMostVisitedDeletions()).Times(0);
5254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  message.reset(new ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions(
5261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(), invalid_page_id));
527f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), FocusOmnibox(OMNIBOX_FOCUS_VISIBLE)).Times(0);
530f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessFocusOmnibox(is_active_tab)).Times(0);
5314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  message.reset(new ChromeViewHostMsg_FocusOmnibox(
5321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(), invalid_page_id, OMNIBOX_FOCUS_VISIBLE));
533f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), OnLogEvent(NTP_MOUSEOVER)).Times(0);
5364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessLogEvent()).Times(0);
5371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  message.reset(new ChromeViewHostMsg_LogEvent(contents->GetRoutingID(),
5384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                                               invalid_page_id, NTP_MOUSEOVER));
539f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  string16 text;
5421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), PasteIntoOmnibox(text)).Times(0);
543f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessPasteIntoOmnibox(is_active_tab)).Times(0);
5441e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  message.reset(new ChromeViewHostMsg_PasteAndOpenDropdown(
5451e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(), invalid_page_id, text));
546f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
5481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, ProcessPasteAndOpenDropdownMsg) {
5501e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
551f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
552f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
5531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
555f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
5561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
557f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
558f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  string16 text;
5591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*mock_delegate(), PasteIntoOmnibox(text)).Times(1);
5601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessPasteIntoOmnibox(is_active_tab)).Times(1)
5611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(true));
5621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_PasteAndOpenDropdown(
5631e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
5641e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(), text));
565f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5661e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
5671e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5681e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest, IgnorePasteAndOpenDropdownMsg) {
5691e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
570f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
571f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  string16 text;
572f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*mock_delegate(), PasteIntoOmnibox(text)).Times(0);
5731e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  content::WebContents* contents = web_contents();
575f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  bool is_active_tab = IsActiveTab(contents);
5761e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_TRUE(is_active_tab);
577f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
578f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
5791e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  EXPECT_CALL(*policy, ShouldProcessPasteIntoOmnibox(is_active_tab)).Times(1)
5801e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      .WillOnce(testing::Return(false));
5811e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
5821e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  scoped_ptr<IPC::Message> message(new ChromeViewHostMsg_PasteAndOpenDropdown(
5831e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetRoutingID(),
5841e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      contents->GetController().GetVisibleEntry()->GetPageID(), text));
585f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  OnMessageReceived(*message);
5864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
5874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5884e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSetPromoInformationMsg) {
5891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
590f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
591f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
5924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetPromoInformation()).Times(1)
5934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
5944e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
595f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SetPromoInformation(true);
5964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxPromoInformation::ID));
5974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
5984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
5994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetPromoInformationMsg) {
6001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
601f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
602f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetPromoInformation()).Times(1)
6044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
6054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
606f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SetPromoInformation(false);
6074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxPromoInformation::ID));
6084e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
6094e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
6101e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest,
6111e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)       SendSetDisplayInstantResultsMsg_EnableInstantOnResultsPage) {
6121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
613f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      "EmbeddedSearch",
614f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      "Group1 espv:42 query_extraction:1 prefetch_results_srp:1"));
6151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("https://foo.com/url?espv&bar=abc"));
61658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Make sure ChromeViewMsg_SearchBoxSetDisplayInstantResults message param is
6181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // set to true if the underlying page is a results page and
6191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // "prefetch_results_srp" flag is enabled via field trials.
6201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  VerifyDisplayInstantResultsMsg(true);
6211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
62258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
6231e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest,
6241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)       SendSetDisplayInstantResultsMsg_DisableInstantOnResultsPage) {
6251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // |prefetch_results_srp" flag is disabled via field trials.
6261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
6271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      "EmbeddedSearch", "Group1 espv:42 prefetch_results_srp:0"));
6281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("https://foo.com/url?espv&bar=abc"));
6291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Make sure ChromeViewMsg_SearchBoxSetDisplayInstantResults message param is
6311e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // set to false.
6321e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  VerifyDisplayInstantResultsMsg(false);
6331e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
6341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)TEST_F(SearchIPCRouterTest,
6361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)       SendSetDisplayInstantResultsMsg_DisableInstantOutsideResultsPage) {
6371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
6381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      "EmbeddedSearch", "Group1 espv:42 prefetch_results_srp:1"));
6391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
6401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
6411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Make sure ChromeViewMsg_SearchBoxSetDisplayInstantResults param is set to
6421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // false if the underlying page is not a search results page.
6431e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  VerifyDisplayInstantResultsMsg(false);
64458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
64558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
64658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetDisplayInstantResultsMsg) {
6471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
648f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
649f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
65058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetDisplayInstantResults()).Times(1)
65158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      .WillOnce(testing::Return(false));
65258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
653f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
654f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SetDisplayInstantResults();
6554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(
65658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      ChromeViewMsg_SearchBoxSetDisplayInstantResults::ID));
65758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
6584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
6594e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSetSuggestionToPrefetch) {
6601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
661f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
662f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetSuggestionToPrefetch()).Times(1)
6644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
6654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
666f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
667f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
668f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchTabHelper(contents)->SetSuggestionToPrefetch(InstantSuggestion());
6694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(
6704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxSetSuggestionToPrefetch::ID));
6714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
6724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
6734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSetSuggestionToPrefetch) {
6741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
675f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
676f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6774e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendSetSuggestionToPrefetch()).Times(1)
6784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
6794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
680f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
681f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  content::WebContents* contents = web_contents();
682f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchTabHelper(contents)->SetSuggestionToPrefetch(InstantSuggestion());
6834e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(
6844e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxSetSuggestionToPrefetch::ID));
6854e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
6864e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
6874e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendMostVisitedItemsMsg) {
6881e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
689f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
690f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
6914e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendMostVisitedItems()).Times(1)
6924e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
6934e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
694f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
695f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendMostVisitedItems(
6964e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      std::vector<InstantMostVisitedItem>());
6974e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(
6984e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxMostVisitedItemsChanged::ID));
6994e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
7004e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendMostVisitedItemsMsg) {
7021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
703f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
704f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendMostVisitedItems()).Times(1)
7064e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
7074e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
708f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
709f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendMostVisitedItems(
7104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      std::vector<InstantMostVisitedItem>());
7114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(
7124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      ChromeViewMsg_SearchBoxMostVisitedItemsChanged::ID));
7134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
7144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendThemeBackgroundInfoMsg) {
7161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
717f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
718f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendThemeBackgroundInfo()).Times(1)
7204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
7214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
722f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
723f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendThemeBackgroundInfo(ThemeBackgroundInfo());
7244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxThemeChanged::ID));
7254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
7264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendThemeBackgroundInfoMsg) {
7281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
729f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
730f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendThemeBackgroundInfo()).Times(1)
7324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
7334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
734f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
735f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().SendThemeBackgroundInfo(ThemeBackgroundInfo());
7364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxThemeChanged::ID));
7374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
7384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendSubmitMsg) {
7401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
741f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
742f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSubmitQuery()).Times(1)
7444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(true));
7454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
746f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
747f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().Submit(string16());
7484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxSubmit::ID));
7494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
7504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
7514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendSubmitMsg) {
7521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl));
753f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
754f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
7554e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSubmitQuery()).Times(1)
7564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      .WillOnce(testing::Return(false));
7574e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
758f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
759f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().Submit(string16());
7604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxSubmit::ID));
7614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
762f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
763f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(SearchIPCRouterTest, SendToggleVoiceSearch) {
764f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
765f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
766f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
767f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendToggleVoiceSearch()).Times(1)
768f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      .WillOnce(testing::Return(true));
769f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
770f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
771f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().ToggleVoiceSearch();
772f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_TRUE(MessageWasSent(ChromeViewMsg_SearchBoxToggleVoiceSearch::ID));
773f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
774f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
775f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)TEST_F(SearchIPCRouterTest, DoNotSendToggleVoiceSearch) {
776f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar"));
777f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetupMockDelegateAndPolicy();
778f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy();
779f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_CALL(*policy, ShouldSendToggleVoiceSearch()).Times(1)
780f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      .WillOnce(testing::Return(false));
781f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
782f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  process()->sink().ClearMessages();
783f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  GetSearchIPCRouter().ToggleVoiceSearch();
784f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  EXPECT_FALSE(MessageWasSent(ChromeViewMsg_SearchBoxToggleVoiceSearch::ID));
785f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
786