1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_
6#define CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/files/scoped_temp_dir.h"
12#include "base/memory/ref_counted.h"
13#include "base/memory/scoped_ptr.h"
14#include "base/strings/string16.h"
15#include "components/search_engines/template_url_service_observer.h"
16
17class GURL;
18class KeywordWebDataService;
19class TemplateURLService;
20class TestingProfile;
21class TestingSearchTermsData;
22
23class TemplateURLServiceTestUtil : public TemplateURLServiceObserver {
24 public:
25  TemplateURLServiceTestUtil();
26  virtual ~TemplateURLServiceTestUtil();
27
28  // TemplateURLServiceObserver implemementation.
29  virtual void OnTemplateURLServiceChanged() OVERRIDE;
30
31  // Gets the observer count.
32  int GetObserverCount();
33
34  // Sets the observer count to 0.
35  void ResetObserverCount();
36
37  // Makes sure the load was successful and sent the correct notification.
38  void VerifyLoad();
39
40  // Makes the model believe it has been loaded (without actually doing the
41  // load). Since this avoids setting the built-in keyword version, the next
42  // load will do a merge from prepopulated data.
43  void ChangeModelToLoadState();
44
45  // Deletes the current model (and doesn't create a new one).
46  void ClearModel();
47
48  // Creates a new TemplateURLService.
49  void ResetModel(bool verify_load);
50
51  // Returns the search term from the last invocation of
52  // TemplateURLService::SetKeywordSearchTermsForURL and clears the search term.
53  base::string16 GetAndClearSearchTerm();
54
55  // Sets the google base url.  |base_url| must be valid.
56  void SetGoogleBaseURL(const GURL& base_url);
57
58  // Sets the managed preferences for the default search provider and trigger
59  // notification. If |alternate_url| is empty, uses an empty list of alternate
60  // URLs, otherwise uses a list containing a single entry.
61  void SetManagedDefaultSearchPreferences(
62      bool enabled,
63      const std::string& name,
64      const std::string& keyword,
65      const std::string& search_url,
66      const std::string& suggest_url,
67      const std::string& icon_url,
68      const std::string& encodings,
69      const std::string& alternate_url,
70      const std::string& search_terms_replacement_key);
71
72  // Removes all the managed preferences for the default search provider and
73  // triggers notification.
74  void RemoveManagedDefaultSearchPreferences();
75
76  KeywordWebDataService* web_data_service() { return web_data_service_.get(); }
77  TemplateURLService* model() { return model_.get(); }
78  TestingProfile* profile() { return profile_.get(); }
79
80 private:
81  scoped_ptr<TestingProfile> profile_;
82  base::ScopedTempDir temp_dir_;
83  int changed_count_;
84  base::string16 search_term_;
85  scoped_refptr<KeywordWebDataService> web_data_service_;
86  TestingSearchTermsData* search_terms_data_;
87  scoped_ptr<TemplateURLService> model_;
88
89  DISALLOW_COPY_AND_ASSIGN(TemplateURLServiceTestUtil);
90};
91
92#endif  // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_TEST_UTIL_H_
93