172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/values.h"
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/prefs/scoped_user_pref_update.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/glue/preference_model_associator.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/pref_names.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/testing_profile.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing browser_sync::PreferenceModelAssociator;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AbstractPreferenceMergeTest : public testing::Test {
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SetUp() {
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    pref_service_ = profile_.GetPrefs();
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void SetContentPattern(DictionaryValue* patterns_dict,
223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                         const std::string& expression,
233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                         const std::string& content_type,
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                         int setting) {
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    DictionaryValue* expression_dict;
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    bool found =
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        patterns_dict->GetDictionaryWithoutPathExpansion(expression,
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                                         &expression_dict);
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (!found) {
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      expression_dict = new DictionaryValue;
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      patterns_dict->SetWithoutPathExpansion(expression, expression_dict);
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    }
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    expression_dict->SetWithoutPathExpansion(
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        content_type,
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        Value::CreateIntegerValue(setting));
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  void SetPrefToEmpty(const std::string& pref_name) {
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    scoped_ptr<Value> empty_value;
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    const PrefService::Preference* pref =
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        pref_service_->FindPreference(pref_name.c_str());
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_TRUE(pref);
433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    Value::ValueType type = pref->GetType();
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    if (type == Value::TYPE_DICTIONARY)
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      empty_value.reset(new DictionaryValue);
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    else if (type == Value::TYPE_LIST)
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      empty_value.reset(new ListValue);
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    else
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      FAIL();
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    pref_service_->Set(pref_name.c_str(), *empty_value);
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TestingProfile profile_;
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PrefService* pref_service_;
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ListPreferenceMergeTest : public AbstractPreferenceMergeTest {
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ListPreferenceMergeTest() :
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      server_url0_("http://example.com/server0"),
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      server_url1_("http://example.com/server1"),
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      local_url0_("http://example.com/local0"),
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      local_url1_("http://example.com/local1") {}
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SetUp() {
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    AbstractPreferenceMergeTest::SetUp();
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    server_url_list_.Append(Value::CreateStringValue(server_url0_));
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    server_url_list_.Append(Value::CreateStringValue(server_url1_));
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string server_url0_;
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string server_url1_;
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string local_url0_;
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::string local_url1_;
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ListValue server_url_list_;
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ListPreferenceMergeTest, NotListOrDictionary) {
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  pref_service_->SetString(prefs::kHomePage, local_url0_);
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kHomePage);
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> server_value(Value::CreateStringValue(server_url0_));
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, *server_value));
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(server_value.get()));
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ListPreferenceMergeTest, LocalEmpty) {
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetPrefToEmpty(prefs::kURLsToRestoreOnStartup);
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup);
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, server_url_list_));
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&server_url_list_));
95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ListPreferenceMergeTest, ServerNull) {
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> null_value(Value::CreateNullValue());
99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup);
101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListValue* local_list_value = update.Get();
102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(local_url0_));
103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup);
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, *null_value));
109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const ListValue* local_list_value =
110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        pref_service_->GetList(prefs::kURLsToRestoreOnStartup);
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(local_list_value));
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ListPreferenceMergeTest, ServerEmpty) {
115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> empty_value(new ListValue);
116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup);
118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListValue* local_list_value = update.Get();
119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(local_url0_));
120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup);
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, *empty_value));
126ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const ListValue* local_list_value =
127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen        pref_service_->GetList(prefs::kURLsToRestoreOnStartup);
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(local_list_value));
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ListPreferenceMergeTest, Merge) {
132ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
133ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup);
134ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListValue* local_list_value = update.Get();
135ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(local_url0_));
136ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(local_url1_));
137ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup);
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, server_url_list_));
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ListValue expected;
145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  expected.Append(Value::CreateStringValue(server_url0_));
146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  expected.Append(Value::CreateStringValue(server_url1_));
147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  expected.Append(Value::CreateStringValue(local_url0_));
148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  expected.Append(Value::CreateStringValue(local_url1_));
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&expected));
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ListPreferenceMergeTest, Duplicates) {
153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup);
155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListValue* local_list_value = update.Get();
156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(local_url0_));
157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(server_url0_));
158ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(server_url1_));
159ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup);
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, server_url_list_));
165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ListValue expected;
167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  expected.Append(Value::CreateStringValue(server_url0_));
168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  expected.Append(Value::CreateStringValue(server_url1_));
169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  expected.Append(Value::CreateStringValue(local_url0_));
170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&expected));
171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
173c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(ListPreferenceMergeTest, Equals) {
174ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
175ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListPrefUpdate update(pref_service_, prefs::kURLsToRestoreOnStartup);
176ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    ListValue* local_list_value = update.Get();
177ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(server_url0_));
178ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    local_list_value->Append(Value::CreateStringValue(server_url1_));
179ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> original(server_url_list_.DeepCopy());
182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kURLsToRestoreOnStartup);
184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, server_url_list_));
186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(original.get()));
187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DictionaryPreferenceMergeTest : public AbstractPreferenceMergeTest {
190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DictionaryPreferenceMergeTest() :
1923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      expression0_("expression0"),
1933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      expression1_("expression1"),
1943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      expression2_("expression2"),
1953345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      content_type0_("content_type0"),
1963345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      content_type1_("content_type1") {}
197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SetUp() {
199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    AbstractPreferenceMergeTest::SetUp();
200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SetContentPattern(&server_patterns_, expression0_, content_type0_, 1);
201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SetContentPattern(&server_patterns_, expression0_, content_type1_, 2);
202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SetContentPattern(&server_patterns_, expression1_, content_type0_, 1);
203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
2053345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string expression0_;
2063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string expression1_;
2073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string expression2_;
2083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string content_type0_;
2093345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string content_type1_;
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DictionaryValue server_patterns_;
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
213c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DictionaryPreferenceMergeTest, LocalEmpty) {
214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetPrefToEmpty(prefs::kContentSettingsPatterns);
215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kContentSettingsPatterns);
217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, server_patterns_));
219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&server_patterns_));
220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
222c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DictionaryPreferenceMergeTest, ServerNull) {
223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> null_value(Value::CreateNullValue());
224ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
225ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryPrefUpdate update(pref_service_, prefs::kContentSettingsPatterns);
226ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryValue* local_dict_value = update.Get();
227ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression2_, content_type0_, 1);
228ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kContentSettingsPatterns);
232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, *null_value));
234ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const DictionaryValue* local_dict_value =
235ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      pref_service_->GetDictionary(prefs::kContentSettingsPatterns);
236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(local_dict_value));
237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
239c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DictionaryPreferenceMergeTest, ServerEmpty) {
240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> empty_value(new DictionaryValue);
241ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
242ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryPrefUpdate update(pref_service_, prefs::kContentSettingsPatterns);
243ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryValue* local_dict_value = update.Get();
244ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression2_, content_type0_, 1);
245ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  const PrefService::Preference* pref =
248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      pref_service_->FindPreference(prefs::kContentSettingsPatterns);
249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(
250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PreferenceModelAssociator::MergePreference(*pref, *empty_value));
251ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const DictionaryValue* local_dict_value =
252ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      pref_service_->GetDictionary(prefs::kContentSettingsPatterns);
253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(local_dict_value));
254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
256c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DictionaryPreferenceMergeTest, MergeNoConflicts) {
257ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
258ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryPrefUpdate update(pref_service_, prefs::kContentSettingsPatterns);
259ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryValue* local_dict_value = update.Get();
260ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression2_, content_type0_, 1);
261ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(PreferenceModelAssociator::MergePreference(
264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      *pref_service_->FindPreference(prefs::kContentSettingsPatterns),
265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      server_patterns_));
266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DictionaryValue expected;
268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression0_, content_type0_, 1);
269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression0_, content_type1_, 2);
270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression1_, content_type0_, 1);
271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression2_, content_type0_, 1);
272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&expected));
273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
275c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DictionaryPreferenceMergeTest, MergeConflicts) {
276ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
277ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryPrefUpdate update(pref_service_, prefs::kContentSettingsPatterns);
278ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryValue* local_dict_value = update.Get();
279ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression0_, content_type0_, 2);
280ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression1_, content_type0_, 1);
281ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression1_, content_type1_, 1);
282ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression2_, content_type0_, 2);
283ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(PreferenceModelAssociator::MergePreference(
286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      *pref_service_->FindPreference(prefs::kContentSettingsPatterns),
287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      server_patterns_));
288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DictionaryValue expected;
290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression0_, content_type0_, 1);
291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression0_, content_type1_, 2);
292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression1_, content_type0_, 1);
293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression1_, content_type1_, 1);
294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  SetContentPattern(&expected, expression2_, content_type0_, 2);
295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&expected));
296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
298c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DictionaryPreferenceMergeTest, Equal) {
299ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
300ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryPrefUpdate update(pref_service_, prefs::kContentSettingsPatterns);
301ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryValue* local_dict_value = update.Get();
302ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression0_, content_type0_, 1);
303ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression0_, content_type1_, 2);
304ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression1_, content_type0_, 1);
305ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(PreferenceModelAssociator::MergePreference(
308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      *pref_service_->FindPreference(prefs::kContentSettingsPatterns),
309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      server_patterns_));
310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&server_patterns_));
311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
313c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DictionaryPreferenceMergeTest, ConflictButServerWins) {
314ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  {
315ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryPrefUpdate update(pref_service_, prefs::kContentSettingsPatterns);
316ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    DictionaryValue* local_dict_value = update.Get();
317ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression0_, content_type0_, 2);
318ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression0_, content_type1_, 2);
319ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    SetContentPattern(local_dict_value, expression1_, content_type0_, 1);
320ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<Value> merged_value(PreferenceModelAssociator::MergePreference(
323c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      *pref_service_->FindPreference(prefs::kContentSettingsPatterns),
324c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      server_patterns_));
325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(merged_value->Equals(&server_patterns_));
326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass IndividualPreferenceMergeTest : public AbstractPreferenceMergeTest {
329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  IndividualPreferenceMergeTest() :
3313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      url0_("http://example.com/server0"),
3323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      url1_("http://example.com/server1"),
3333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      expression0_("expression0"),
3343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      expression1_("expression1"),
3353345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      content_type0_("content_type0") {}
336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
337c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SetUp() {
338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    AbstractPreferenceMergeTest::SetUp();
339c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    server_url_list_.Append(Value::CreateStringValue(url0_));
340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SetContentPattern(&server_patterns_, expression0_, content_type0_, 1);
341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  bool MergeListPreference(const char* pref) {
344ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    {
345ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      ListPrefUpdate update(pref_service_, pref);
346ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      ListValue* local_list_value = update.Get();
347ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      local_list_value->Append(Value::CreateStringValue(url1_));
348ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    }
349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    scoped_ptr<Value> merged_value(PreferenceModelAssociator::MergePreference(
351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        *pref_service_->FindPreference(pref),
352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        server_url_list_));
353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ListValue expected;
355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    expected.Append(Value::CreateStringValue(url0_));
356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    expected.Append(Value::CreateStringValue(url1_));
357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return merged_value->Equals(&expected);
358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  bool MergeDictionaryPreference(const char* pref) {
361ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    {
362ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      DictionaryPrefUpdate update(pref_service_, pref);
363ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      DictionaryValue* local_dict_value = update.Get();
364ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      SetContentPattern(local_dict_value, expression1_, content_type0_, 1);
365ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    }
366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    scoped_ptr<Value> merged_value(PreferenceModelAssociator::MergePreference(
368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        *pref_service_->FindPreference(pref),
369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        server_patterns_));
370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    DictionaryValue expected;
372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SetContentPattern(&expected, expression0_, content_type0_, 1);
373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    SetContentPattern(&expected, expression1_, content_type0_, 1);
374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return merged_value->Equals(&expected);
375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
3773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string url0_;
3783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string url1_;
3793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string expression0_;
3803345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string expression1_;
3813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  std::string content_type0_;
382c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ListValue server_url_list_;
383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DictionaryValue server_patterns_;
384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
386c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(IndividualPreferenceMergeTest, URLsToRestoreOnStartup) {
387c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(MergeListPreference(prefs::kURLsToRestoreOnStartup));
388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
390c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(IndividualPreferenceMergeTest, DesktopNotificationAllowedOrigins) {
391c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(MergeListPreference(prefs::kDesktopNotificationAllowedOrigins));
392c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
394c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(IndividualPreferenceMergeTest, DesktopNotificationDeniedOrigins) {
395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(MergeListPreference(prefs::kDesktopNotificationDeniedOrigins));
396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
398c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(IndividualPreferenceMergeTest, ContentSettingsPatterns) {
399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(MergeDictionaryPreference(prefs::kContentSettingsPatterns));
400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
401c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
402c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(IndividualPreferenceMergeTest, GeolocationContentSettings) {
403c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_TRUE(MergeDictionaryPreference(prefs::kGeolocationContentSettings));
404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
405