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