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