Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: chrome/browser/extensions/api/storage/settings_frontend_unittest.cc

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 } 47 }
48 return scoped_ptr<Value>(megabyte); 48 return scoped_ptr<Value>(megabyte);
49 } 49 }
50 50
51 } 51 }
52 52
53 class ExtensionSettingsFrontendTest : public ExtensionTest { 53 class ExtensionSettingsFrontendTest : public ExtensionTest {
54 public: 54 public:
55 ExtensionSettingsFrontendTest() 55 ExtensionSettingsFrontendTest()
56 : storage_factory_(new util::ScopedSettingsStorageFactory()), 56 : storage_factory_(new util::ScopedSettingsStorageFactory()),
57 ui_thread_(BrowserThread::UI, MessageLoop::current()), 57 ui_thread_(BrowserThread::UI, base::MessageLoop::current()),
58 file_thread_(BrowserThread::FILE, MessageLoop::current()) {} 58 file_thread_(BrowserThread::FILE, base::MessageLoop::current()) {}
59 59
60 virtual void SetUp() OVERRIDE { 60 virtual void SetUp() OVERRIDE {
61 ExtensionTest::SetUp(); 61 ExtensionTest::SetUp();
62 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 62 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
63 profile_.reset(new util::MockProfile(temp_dir_.path())); 63 profile_.reset(new util::MockProfile(temp_dir_.path()));
64 ResetFrontend(); 64 ResetFrontend();
65 } 65 }
66 66
67 virtual void TearDown() OVERRIDE { 67 virtual void TearDown() OVERRIDE {
68 frontend_.reset(); 68 frontend_.reset();
69 profile_.reset(); 69 profile_.reset();
70 // Execute any pending deletion tasks. 70 // Execute any pending deletion tasks.
71 message_loop_.RunUntilIdle(); 71 message_loop_.RunUntilIdle();
72 ExtensionTest::TearDown(); 72 ExtensionTest::TearDown();
73 } 73 }
74 74
75 protected: 75 protected:
76 void ResetFrontend() { 76 void ResetFrontend() {
77 storage_factory_->Reset(new LeveldbSettingsStorageFactory()); 77 storage_factory_->Reset(new LeveldbSettingsStorageFactory());
78 frontend_.reset( 78 frontend_.reset(
79 SettingsFrontend::Create(storage_factory_.get(), profile_.get())); 79 SettingsFrontend::Create(storage_factory_.get(), profile_.get()));
80 } 80 }
81 81
82 base::ScopedTempDir temp_dir_; 82 base::ScopedTempDir temp_dir_;
83 scoped_ptr<util::MockProfile> profile_; 83 scoped_ptr<util::MockProfile> profile_;
84 scoped_ptr<SettingsFrontend> frontend_; 84 scoped_ptr<SettingsFrontend> frontend_;
85 scoped_refptr<util::ScopedSettingsStorageFactory> storage_factory_; 85 scoped_refptr<util::ScopedSettingsStorageFactory> storage_factory_;
86 86
87 private: 87 private:
88 MessageLoop message_loop_; 88 base::MessageLoop message_loop_;
89 content::TestBrowserThread ui_thread_; 89 content::TestBrowserThread ui_thread_;
90 content::TestBrowserThread file_thread_; 90 content::TestBrowserThread file_thread_;
91 }; 91 };
92 92
93 // Get a semblance of coverage for both extension and app settings by 93 // Get a semblance of coverage for both extension and app settings by
94 // alternating in each test. 94 // alternating in each test.
95 // TODO(kalman): explicitly test the two interact correctly. 95 // TODO(kalman): explicitly test the two interact correctly.
96 96
97 TEST_F(ExtensionSettingsFrontendTest, SettingsPreservedAcrossReconstruction) { 97 TEST_F(ExtensionSettingsFrontendTest, SettingsPreservedAcrossReconstruction) {
98 const std::string id = "ext"; 98 const std::string id = "ext";
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 ValueStore* storage = util::GetStorage(id, frontend_.get()); 137 ValueStore* storage = util::GetStorage(id, frontend_.get());
138 138
139 { 139 {
140 StringValue bar("bar"); 140 StringValue bar("bar");
141 ValueStore::WriteResult result = storage->Set(DEFAULTS, "foo", bar); 141 ValueStore::WriteResult result = storage->Set(DEFAULTS, "foo", bar);
142 ASSERT_FALSE(result->HasError()); 142 ASSERT_FALSE(result->HasError());
143 } 143 }
144 144
145 // This would be triggered by extension uninstall via a DataDeleter. 145 // This would be triggered by extension uninstall via a DataDeleter.
146 frontend_->DeleteStorageSoon(id); 146 frontend_->DeleteStorageSoon(id);
147 MessageLoop::current()->RunUntilIdle(); 147 base::MessageLoop::current()->RunUntilIdle();
148 148
149 // The storage area may no longer be valid post-uninstall, so re-request. 149 // The storage area may no longer be valid post-uninstall, so re-request.
150 storage = util::GetStorage(id, frontend_.get()); 150 storage = util::GetStorage(id, frontend_.get());
151 { 151 {
152 ValueStore::ReadResult result = storage->Get(); 152 ValueStore::ReadResult result = storage->Get();
153 ASSERT_FALSE(result->HasError()); 153 ASSERT_FALSE(result->HasError());
154 EXPECT_TRUE(result->settings()->empty()); 154 EXPECT_TRUE(result->settings()->empty());
155 } 155 }
156 } 156 }
157 157
(...skipping 15 matching lines...) Expand all
173 173
174 // Should need to both clear the database and delete the frontend for the 174 // Should need to both clear the database and delete the frontend for the
175 // leveldb database to be deleted from disk. 175 // leveldb database to be deleted from disk.
176 { 176 {
177 ValueStore::WriteResult result = storage->Clear(); 177 ValueStore::WriteResult result = storage->Clear();
178 ASSERT_FALSE(result->HasError()); 178 ASSERT_FALSE(result->HasError());
179 EXPECT_TRUE(file_util::PathExists(temp_dir_.path())); 179 EXPECT_TRUE(file_util::PathExists(temp_dir_.path()));
180 } 180 }
181 181
182 frontend_.reset(); 182 frontend_.reset();
183 MessageLoop::current()->RunUntilIdle(); 183 base::MessageLoop::current()->RunUntilIdle();
184 // TODO(kalman): Figure out why this fails, despite appearing to work. 184 // TODO(kalman): Figure out why this fails, despite appearing to work.
185 // Leaving this commented out rather than disabling the whole test so that the 185 // Leaving this commented out rather than disabling the whole test so that the
186 // deletion code paths are at least exercised. 186 // deletion code paths are at least exercised.
187 //EXPECT_FALSE(file_util::PathExists(temp_dir_.path())); 187 //EXPECT_FALSE(file_util::PathExists(temp_dir_.path()));
188 } 188 }
189 189
190 TEST_F(ExtensionSettingsFrontendTest, 190 TEST_F(ExtensionSettingsFrontendTest,
191 QuotaLimitsEnforcedCorrectlyForSyncAndLocal) { 191 QuotaLimitsEnforcedCorrectlyForSyncAndLocal) {
192 const std::string id = "ext"; 192 const std::string id = "ext";
193 ExtensionServiceInterface* esi = 193 ExtensionServiceInterface* esi =
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 extensions::ExtensionSystem::Get(profile_.get())->extension_service(); 278 extensions::ExtensionSystem::Get(profile_.get())->extension_service();
279 static_cast<extensions::settings_test_util::MockExtensionService*>(esi)-> 279 static_cast<extensions::settings_test_util::MockExtensionService*>(esi)->
280 AddExtensionWithIdAndPermissions(id, Manifest::TYPE_EXTENSION, 280 AddExtensionWithIdAndPermissions(id, Manifest::TYPE_EXTENSION,
281 permissions); 281 permissions);
282 282
283 frontend_->RunWithStorage( 283 frontend_->RunWithStorage(
284 id, settings::SYNC, base::Bind(&UnlimitedSyncStorageTestCallback)); 284 id, settings::SYNC, base::Bind(&UnlimitedSyncStorageTestCallback));
285 frontend_->RunWithStorage( 285 frontend_->RunWithStorage(
286 id, settings::LOCAL, base::Bind(&UnlimitedLocalStorageTestCallback)); 286 id, settings::LOCAL, base::Bind(&UnlimitedLocalStorageTestCallback));
287 287
288 MessageLoop::current()->RunUntilIdle(); 288 base::MessageLoop::current()->RunUntilIdle();
289 } 289 }
290 290
291 } // namespace extensions 291 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698