| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync/test/integration/extension_settings_helper.h" | 5 #include "chrome/browser/sync/test/integration/extension_settings_helper.h" |
| 6 | 6 |
| 7 #include <memory> |
| 8 |
| 7 #include "base/bind.h" | 9 #include "base/bind.h" |
| 8 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| 9 #include "base/logging.h" | 11 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | |
| 11 #include "base/synchronization/waitable_event.h" | 12 #include "base/synchronization/waitable_event.h" |
| 12 #include "base/values.h" | 13 #include "base/values.h" |
| 13 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
| 14 #include "chrome/browser/sync/test/integration/extensions_helper.h" | 15 #include "chrome/browser/sync/test/integration/extensions_helper.h" |
| 15 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h" | 16 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h" |
| 16 #include "chrome/browser/sync/test/integration/sync_extension_helper.h" | 17 #include "chrome/browser/sync/test/integration/sync_extension_helper.h" |
| 17 #include "content/public/browser/browser_thread.h" | 18 #include "content/public/browser/browser_thread.h" |
| 18 #include "extensions/browser/api/storage/storage_frontend.h" | 19 #include "extensions/browser/api/storage/storage_frontend.h" |
| 19 #include "extensions/browser/extension_registry.h" | 20 #include "extensions/browser/extension_registry.h" |
| 20 #include "extensions/browser/value_store/value_store.h" | 21 #include "extensions/browser/value_store/value_store.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 37 } | 38 } |
| 38 | 39 |
| 39 void GetAllSettingsOnFileThread(base::DictionaryValue* out, | 40 void GetAllSettingsOnFileThread(base::DictionaryValue* out, |
| 40 base::WaitableEvent* signal, | 41 base::WaitableEvent* signal, |
| 41 ValueStore* storage) { | 42 ValueStore* storage) { |
| 42 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 43 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 43 out->Swap(&storage->Get()->settings()); | 44 out->Swap(&storage->Get()->settings()); |
| 44 signal->Signal(); | 45 signal->Signal(); |
| 45 } | 46 } |
| 46 | 47 |
| 47 scoped_ptr<base::DictionaryValue> GetAllSettings( | 48 std::unique_ptr<base::DictionaryValue> GetAllSettings(Profile* profile, |
| 48 Profile* profile, const std::string& id) { | 49 const std::string& id) { |
| 49 base::WaitableEvent signal(false, false); | 50 base::WaitableEvent signal(false, false); |
| 50 scoped_ptr<base::DictionaryValue> settings(new base::DictionaryValue()); | 51 std::unique_ptr<base::DictionaryValue> settings(new base::DictionaryValue()); |
| 51 extensions::StorageFrontend::Get(profile)->RunWithStorage( | 52 extensions::StorageFrontend::Get(profile)->RunWithStorage( |
| 52 ExtensionRegistry::Get(profile)->enabled_extensions().GetByID(id), | 53 ExtensionRegistry::Get(profile)->enabled_extensions().GetByID(id), |
| 53 extensions::settings_namespace::SYNC, | 54 extensions::settings_namespace::SYNC, |
| 54 base::Bind(&GetAllSettingsOnFileThread, settings.get(), &signal)); | 55 base::Bind(&GetAllSettingsOnFileThread, settings.get(), &signal)); |
| 55 signal.Wait(); | 56 signal.Wait(); |
| 56 return settings; | 57 return settings; |
| 57 } | 58 } |
| 58 | 59 |
| 59 bool AreSettingsSame(Profile* expected_profile, Profile* actual_profile) { | 60 bool AreSettingsSame(Profile* expected_profile, Profile* actual_profile) { |
| 60 const extensions::ExtensionSet& extensions = | 61 const extensions::ExtensionSet& extensions = |
| 61 ExtensionRegistry::Get(expected_profile)->enabled_extensions(); | 62 ExtensionRegistry::Get(expected_profile)->enabled_extensions(); |
| 62 if (extensions.size() != | 63 if (extensions.size() != |
| 63 ExtensionRegistry::Get(actual_profile)->enabled_extensions().size()) { | 64 ExtensionRegistry::Get(actual_profile)->enabled_extensions().size()) { |
| 64 ADD_FAILURE(); | 65 ADD_FAILURE(); |
| 65 return false; | 66 return false; |
| 66 } | 67 } |
| 67 | 68 |
| 68 bool same = true; | 69 bool same = true; |
| 69 for (extensions::ExtensionSet::const_iterator it = extensions.begin(); | 70 for (extensions::ExtensionSet::const_iterator it = extensions.begin(); |
| 70 it != extensions.end(); | 71 it != extensions.end(); |
| 71 ++it) { | 72 ++it) { |
| 72 const std::string& id = (*it)->id(); | 73 const std::string& id = (*it)->id(); |
| 73 scoped_ptr<base::DictionaryValue> expected( | 74 std::unique_ptr<base::DictionaryValue> expected( |
| 74 GetAllSettings(expected_profile, id)); | 75 GetAllSettings(expected_profile, id)); |
| 75 scoped_ptr<base::DictionaryValue> actual( | 76 std::unique_ptr<base::DictionaryValue> actual( |
| 76 GetAllSettings(actual_profile, id)); | 77 GetAllSettings(actual_profile, id)); |
| 77 if (!expected->Equals(actual.get())) { | 78 if (!expected->Equals(actual.get())) { |
| 78 ADD_FAILURE() << | 79 ADD_FAILURE() << |
| 79 "Expected " << ToJson(*expected) << " got " << ToJson(*actual); | 80 "Expected " << ToJson(*expected) << " got " << ToJson(*actual); |
| 80 same = false; | 81 same = false; |
| 81 } | 82 } |
| 82 } | 83 } |
| 83 return same; | 84 return same; |
| 84 } | 85 } |
| 85 | 86 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 bool all_profiles_same = true; | 118 bool all_profiles_same = true; |
| 118 for (int i = 0; i < test()->num_clients(); ++i) { | 119 for (int i = 0; i < test()->num_clients(); ++i) { |
| 119 // &= so that all profiles are tested; analogous to EXPECT over ASSERT. | 120 // &= so that all profiles are tested; analogous to EXPECT over ASSERT. |
| 120 all_profiles_same &= | 121 all_profiles_same &= |
| 121 AreSettingsSame(test()->verifier(), test()->GetProfile(i)); | 122 AreSettingsSame(test()->verifier(), test()->GetProfile(i)); |
| 122 } | 123 } |
| 123 return all_profiles_same; | 124 return all_profiles_same; |
| 124 } | 125 } |
| 125 | 126 |
| 126 } // namespace extension_settings_helper | 127 } // namespace extension_settings_helper |
| OLD | NEW |