1// Copyright 2014 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_UI_THREAD_SEARCH_TERMS_DATA_H_
6#define CHROME_BROWSER_SEARCH_ENGINES_UI_THREAD_SEARCH_TERMS_DATA_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/compiler_specific.h"
12#include "base/strings/string16.h"
13#include "components/search_engines/search_terms_data.h"
14
15class Profile;
16
17// Implementation of SearchTermsData that is only usable on the UI thread.
18class UIThreadSearchTermsData : public SearchTermsData {
19 public:
20  // If |profile_| is NULL, the Google base URL accessors will return default
21  // values, and NTPIsThemedParam() will return an empty string.
22  explicit UIThreadSearchTermsData(Profile* profile);
23
24  virtual std::string GoogleBaseURLValue() const OVERRIDE;
25  virtual std::string GetApplicationLocale() const OVERRIDE;
26  virtual base::string16 GetRlzParameterValue(bool from_app_list) const
27      OVERRIDE;
28  virtual std::string GetSearchClient() const OVERRIDE;
29  virtual std::string GetSuggestClient() const OVERRIDE;
30  virtual std::string GetSuggestRequestIdentifier() const OVERRIDE;
31  virtual bool EnableAnswersInSuggest() const OVERRIDE;
32  virtual bool IsShowingSearchTermsOnSearchResultsPages() const OVERRIDE;
33  virtual std::string InstantExtendedEnabledParam(
34      bool for_search) const OVERRIDE;
35  virtual std::string ForceInstantResultsParam(
36      bool for_prerender) const OVERRIDE;
37  virtual int OmniboxStartMargin() const OVERRIDE;
38  virtual std::string NTPIsThemedParam() const OVERRIDE;
39  virtual std::string GoogleImageSearchSource() const OVERRIDE;
40
41  // Used by tests to override the value for the Google base URL.  Passing the
42  // empty string cancels this override.
43  static void SetGoogleBaseURL(const std::string& base_url);
44
45 private:
46  static std::string* google_base_url_;
47  Profile* profile_;
48
49  DISALLOW_COPY_AND_ASSIGN(UIThreadSearchTermsData);
50};
51
52#endif  // CHROME_BROWSER_SEARCH_ENGINES_UI_THREAD_SEARCH_TERMS_DATA_H_
53