15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/ref_counted.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_service_observer.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL; 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass KeywordWebDataService; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TemplateURLService; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TestingProfile; 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass TestingSearchTermsData; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass TemplateURLServiceTestUtil : public TemplateURLServiceObserver { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TemplateURLServiceTestUtil(); 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~TemplateURLServiceTestUtil(); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TemplateURLServiceObserver implemementation. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnTemplateURLServiceChanged() OVERRIDE; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the observer count. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int GetObserverCount(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the observer count to 0. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResetObserverCount(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Makes sure the load was successful and sent the correct notification. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void VerifyLoad(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Makes the model believe it has been loaded (without actually doing the 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // load). Since this avoids setting the built-in keyword version, the next 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // load will do a merge from prepopulated data. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ChangeModelToLoadState(); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Deletes the current model (and doesn't create a new one). 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ClearModel(); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a new TemplateURLService. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResetModel(bool verify_load); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the search term from the last invocation of 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TemplateURLService::SetKeywordSearchTermsForURL and clears the search term. 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 GetAndClearSearchTerm(); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Sets the google base url. |base_url| must be valid. 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void SetGoogleBaseURL(const GURL& base_url); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Sets the managed preferences for the default search provider and trigger 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // notification. If |alternate_url| is empty, uses an empty list of alternate 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // URLs, otherwise uses a list containing a single entry. 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetManagedDefaultSearchPreferences( 62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool enabled, 63ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& name, 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& keyword, 65ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& search_url, 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& suggest_url, 67ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& icon_url, 68ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& encodings, 69ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& alternate_url, 70ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::string& search_terms_replacement_key); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Removes all the managed preferences for the default search provider and 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // triggers notification. 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RemoveManagedDefaultSearchPreferences(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci KeywordWebDataService* web_data_service() { return web_data_service_.get(); } 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TemplateURLService* model() { return model_.get(); } 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TestingProfile* profile() { return profile_.get(); } 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestingProfile> profile_; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int changed_count_; 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::string16 search_term_; 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_refptr<KeywordWebDataService> web_data_service_; 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci TestingSearchTermsData* search_terms_data_; 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci scoped_ptr<TemplateURLService> model_; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceTestUtil); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_ 93