preferences_helper.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 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)#include "chrome/browser/sync/test/integration/preferences_helper.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/pref_service.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/scoped_user_pref_update.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_harness.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_test.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using sync_datatype_helper::test;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace preferences_helper {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PrefService* GetPrefs(int index) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return test()->GetProfile(index)->GetPrefs();
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PrefService* GetVerifierPrefs() {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return test()->verifier()->GetPrefs();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChangeBooleanPref(int index, const char* pref_name) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool new_value = !GetPrefs(index)->GetBoolean(pref_name);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetPrefs(index)->SetBoolean(pref_name, new_value);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier())
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetVerifierPrefs()->SetBoolean(pref_name, new_value);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChangeIntegerPref(int index, const char* pref_name, int new_value) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetPrefs(index)->SetInteger(pref_name, new_value);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier())
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetVerifierPrefs()->SetInteger(pref_name, new_value);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChangeInt64Pref(int index, const char* pref_name, int64 new_value) {
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetPrefs(index)->SetInt64(pref_name, new_value);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier())
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetVerifierPrefs()->SetInt64(pref_name, new_value);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChangeDoublePref(int index, const char* pref_name, double new_value) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetPrefs(index)->SetDouble(pref_name, new_value);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier())
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetVerifierPrefs()->SetDouble(pref_name, new_value);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChangeStringPref(int index,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      const char* pref_name,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      const std::string& new_value) {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetPrefs(index)->SetString(pref_name, new_value);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier())
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetVerifierPrefs()->SetString(pref_name, new_value);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppendStringPref(int index,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      const char* pref_name,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      const std::string& append_value) {
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChangeStringPref(index,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   pref_name,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   GetPrefs(index)->GetString(pref_name) + append_value);
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChangeFilePathPref(int index,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const char* pref_name,
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const FilePath& new_value) {
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetPrefs(index)->SetFilePath(pref_name, new_value);
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier())
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GetVerifierPrefs()->SetFilePath(pref_name, new_value);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChangeListPref(int index,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const char* pref_name,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    const ListValue& new_value) {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ListPrefUpdate update(GetPrefs(index), pref_name);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ListValue* list = update.Get();
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for (ListValue::const_iterator it = new_value.begin();
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         it != new_value.end();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         ++it) {
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      list->Append((*it)->DeepCopy());
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ListPrefUpdate update_verifier(GetVerifierPrefs(), pref_name);
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ListValue* list_verifier = update_verifier.Get();
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for (ListValue::const_iterator it = new_value.begin();
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         it != new_value.end();
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         ++it) {
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      list_verifier->Append((*it)->DeepCopy());
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool BooleanPrefMatches(const char* pref_name) {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool reference_value;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetVerifierPrefs()->GetBoolean(pref_name);
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetPrefs(0)->GetBoolean(pref_name);
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < test()->num_clients(); ++i) {
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (reference_value != GetPrefs(i)->GetBoolean(pref_name)) {
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LOG(ERROR) << "Boolean preference " << pref_name << " mismatched in"
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 << " profile " << i << ".";
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IntegerPrefMatches(const char* pref_name) {
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int reference_value;
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetVerifierPrefs()->GetInteger(pref_name);
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetPrefs(0)->GetInteger(pref_name);
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < test()->num_clients(); ++i) {
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (reference_value != GetPrefs(i)->GetInteger(pref_name)) {
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LOG(ERROR) << "Integer preference " << pref_name << " mismatched in"
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 << " profile " << i << ".";
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool Int64PrefMatches(const char* pref_name) {
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int64 reference_value;
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetVerifierPrefs()->GetInt64(pref_name);
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetPrefs(0)->GetInt64(pref_name);
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < test()->num_clients(); ++i) {
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (reference_value != GetPrefs(i)->GetInt64(pref_name)) {
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LOG(ERROR) << "Integer preference " << pref_name << " mismatched in"
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 << " profile " << i << ".";
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DoublePrefMatches(const char* pref_name) {
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  double reference_value;
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetVerifierPrefs()->GetDouble(pref_name);
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetPrefs(0)->GetDouble(pref_name);
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < test()->num_clients(); ++i) {
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (reference_value != GetPrefs(i)->GetDouble(pref_name)) {
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LOG(ERROR) << "Double preference " << pref_name << " mismatched in"
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 << " profile " << i << ".";
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool StringPrefMatches(const char* pref_name) {
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string reference_value;
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetVerifierPrefs()->GetString(pref_name);
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetPrefs(0)->GetString(pref_name);
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < test()->num_clients(); ++i) {
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (reference_value != GetPrefs(i)->GetString(pref_name)) {
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LOG(ERROR) << "String preference " << pref_name << " mismatched in"
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 << " profile " << i << ".";
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool FilePathPrefMatches(const char* pref_name) {
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FilePath reference_value;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetVerifierPrefs()->GetFilePath(pref_name);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetPrefs(0)->GetFilePath(pref_name);
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < test()->num_clients(); ++i) {
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (reference_value != GetPrefs(i)->GetFilePath(pref_name)) {
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LOG(ERROR) << "FilePath preference " << pref_name << " mismatched in"
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 << " profile " << i << ".";
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ListPrefMatches(const char* pref_name) {
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const ListValue* reference_value;
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (test()->use_verifier()) {
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetVerifierPrefs()->GetList(pref_name);
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    reference_value = GetPrefs(0)->GetList(pref_name);
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (int i = 0; i < test()->num_clients(); ++i) {
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!reference_value->Equals(GetPrefs(i)->GetList(pref_name))) {
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LOG(ERROR) << "List preference " << pref_name << " mismatched in"
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 << " profile " << i << ".";
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace preferences_helper
220