1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/default_search_pref_test_util.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/strings/string_split.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/default_search_manager.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "testing/gtest/include/gtest/gtest.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// static
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochscoped_ptr<base::DictionaryValue>
13116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDefaultSearchPrefTestUtil::CreateDefaultSearchPreferenceValue(
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    bool enabled,
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& name,
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& keyword,
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& search_url,
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& suggest_url,
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& icon_url,
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& encodings,
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& alternate_url,
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& search_terms_replacement_key) {
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue);
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (!enabled) {
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    value->SetBoolean(DefaultSearchManager::kDisabledByPolicy, true);
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return value.Pass();
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_FALSE(keyword.empty());
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  EXPECT_FALSE(search_url.empty());
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kShortName,
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)             new base::StringValue(name));
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kKeyword,
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)             new base::StringValue(keyword));
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kURL,
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)             new base::StringValue(search_url));
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kSuggestionsURL,
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)             new base::StringValue(suggest_url));
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kFaviconURL,
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)             new base::StringValue(icon_url));
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kSearchTermsReplacementKey,
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)             new base::StringValue(search_terms_replacement_key));
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  std::vector<std::string> encodings_items;
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  base::SplitString(encodings, ';', &encodings_items);
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  scoped_ptr<base::ListValue> encodings_list(new base::ListValue);
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  for (std::vector<std::string>::const_iterator it = encodings_items.begin();
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch       it != encodings_items.end();
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch       ++it) {
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    encodings_list->AppendString(*it);
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kInputEncodings, encodings_list.release());
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  scoped_ptr<base::ListValue> alternate_url_list(new base::ListValue());
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (!alternate_url.empty())
565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    alternate_url_list->Append(new base::StringValue(alternate_url));
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  value->Set(DefaultSearchManager::kAlternateURLs,
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch             alternate_url_list.release());
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return value.Pass();
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
61