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

Side by Side Diff: content/browser/indexed_db/indexed_db_browsertest.cc

Issue 2941353002: Indexed DB: Use BindOnce / OnceCallback / OnceClosure where applicable (Closed)
Patch Set: Created 3 years, 6 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
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 void SetQuota(int per_host_quota_kilobytes) { 125 void SetQuota(int per_host_quota_kilobytes) {
126 SetTempQuota(per_host_quota_kilobytes, 126 SetTempQuota(per_host_quota_kilobytes,
127 BrowserContext::GetDefaultStoragePartition( 127 BrowserContext::GetDefaultStoragePartition(
128 shell()->web_contents()->GetBrowserContext()) 128 shell()->web_contents()->GetBrowserContext())
129 ->GetQuotaManager()); 129 ->GetQuotaManager());
130 } 130 }
131 131
132 static void SetTempQuota(int per_host_quota_kilobytes, 132 static void SetTempQuota(int per_host_quota_kilobytes,
133 scoped_refptr<QuotaManager> qm) { 133 scoped_refptr<QuotaManager> qm) {
134 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { 134 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
135 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 135 BrowserThread::PostTask(
136 base::Bind(&IndexedDBBrowserTest::SetTempQuota, 136 BrowserThread::IO, FROM_HERE,
137 per_host_quota_kilobytes, qm)); 137 base::BindOnce(&IndexedDBBrowserTest::SetTempQuota,
138 per_host_quota_kilobytes, qm));
138 return; 139 return;
139 } 140 }
140 DCHECK_CURRENTLY_ON(BrowserThread::IO); 141 DCHECK_CURRENTLY_ON(BrowserThread::IO);
141 const int KB = 1024; 142 const int KB = 1024;
142 qm->SetQuotaSettings( 143 qm->SetQuotaSettings(
143 storage::GetHardCodedSettings(per_host_quota_kilobytes * KB)); 144 storage::GetHardCodedSettings(per_host_quota_kilobytes * KB));
144 } 145 }
145 146
146 virtual int64_t RequestDiskUsage() { 147 virtual int64_t RequestDiskUsage() {
147 PostTaskAndReplyWithResult( 148 PostTaskAndReplyWithResult(
148 GetContext()->TaskRunner(), 149 GetContext()->TaskRunner(), FROM_HERE,
149 FROM_HERE, 150 base::BindOnce(&IndexedDBContext::GetOriginDiskUsage, GetContext(),
150 base::Bind(&IndexedDBContext::GetOriginDiskUsage, 151 GURL("file:///")),
151 GetContext(), 152 base::BindOnce(&IndexedDBBrowserTest::DidGetDiskUsage,
152 GURL("file:///")), 153 base::Unretained(this)));
153 base::Bind(&IndexedDBBrowserTest::DidGetDiskUsage,
154 base::Unretained(this)));
155 scoped_refptr<base::ThreadTestHelper> helper( 154 scoped_refptr<base::ThreadTestHelper> helper(
156 new base::ThreadTestHelper(GetContext()->TaskRunner())); 155 new base::ThreadTestHelper(GetContext()->TaskRunner()));
157 EXPECT_TRUE(helper->Run()); 156 EXPECT_TRUE(helper->Run());
158 // Wait for DidGetDiskUsage to be called. 157 // Wait for DidGetDiskUsage to be called.
159 base::RunLoop().RunUntilIdle(); 158 base::RunLoop().RunUntilIdle();
160 return disk_usage_; 159 return disk_usage_;
161 } 160 }
162 161
163 virtual int RequestBlobFileCount() { 162 virtual int RequestBlobFileCount() {
164 PostTaskAndReplyWithResult( 163 PostTaskAndReplyWithResult(
165 GetContext()->TaskRunner(), FROM_HERE, 164 GetContext()->TaskRunner(), FROM_HERE,
166 base::Bind(&IndexedDBContextImpl::GetOriginBlobFileCount, GetContext(), 165 base::BindOnce(&IndexedDBContextImpl::GetOriginBlobFileCount,
167 Origin(GURL("file:///"))), 166 GetContext(), Origin(GURL("file:///"))),
168 base::Bind(&IndexedDBBrowserTest::DidGetBlobFileCount, 167 base::BindOnce(&IndexedDBBrowserTest::DidGetBlobFileCount,
169 base::Unretained(this))); 168 base::Unretained(this)));
170 scoped_refptr<base::ThreadTestHelper> helper( 169 scoped_refptr<base::ThreadTestHelper> helper(
171 new base::ThreadTestHelper(GetContext()->TaskRunner())); 170 new base::ThreadTestHelper(GetContext()->TaskRunner()));
172 EXPECT_TRUE(helper->Run()); 171 EXPECT_TRUE(helper->Run());
173 // Wait for DidGetBlobFileCount to be called. 172 // Wait for DidGetBlobFileCount to be called.
174 base::RunLoop().RunUntilIdle(); 173 base::RunLoop().RunUntilIdle();
175 return blob_file_count_; 174 return blob_file_count_;
176 } 175 }
177 176
178 private: 177 private:
179 static MockBrowserTestIndexedDBClassFactory* GetTestClassFactory() { 178 static MockBrowserTestIndexedDBClassFactory* GetTestClassFactory() {
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 context->data_path(), 322 context->data_path(),
324 kRecursive)); 323 kRecursive));
325 } 324 }
326 325
327 class IndexedDBBrowserTestWithPreexistingLevelDB : public IndexedDBBrowserTest { 326 class IndexedDBBrowserTestWithPreexistingLevelDB : public IndexedDBBrowserTest {
328 public: 327 public:
329 IndexedDBBrowserTestWithPreexistingLevelDB() {} 328 IndexedDBBrowserTestWithPreexistingLevelDB() {}
330 void SetUpOnMainThread() override { 329 void SetUpOnMainThread() override {
331 scoped_refptr<IndexedDBContextImpl> context = GetContext(); 330 scoped_refptr<IndexedDBContextImpl> context = GetContext();
332 context->TaskRunner()->PostTask( 331 context->TaskRunner()->PostTask(
333 FROM_HERE, 332 FROM_HERE, base::BindOnce(&CopyLevelDBToProfile, shell(), context,
334 base::Bind( 333 EnclosingLevelDBDir()));
335 &CopyLevelDBToProfile, shell(), context, EnclosingLevelDBDir()));
336 scoped_refptr<base::ThreadTestHelper> helper( 334 scoped_refptr<base::ThreadTestHelper> helper(
337 new base::ThreadTestHelper(GetContext()->TaskRunner())); 335 new base::ThreadTestHelper(GetContext()->TaskRunner()));
338 ASSERT_TRUE(helper->Run()); 336 ASSERT_TRUE(helper->Run());
339 } 337 }
340 338
341 virtual std::string EnclosingLevelDBDir() = 0; 339 virtual std::string EnclosingLevelDBDir() = 0;
342 340
343 private: 341 private:
344 DISALLOW_COPY_AND_ASSIGN(IndexedDBBrowserTestWithPreexistingLevelDB); 342 DISALLOW_COPY_AND_ASSIGN(IndexedDBBrowserTestWithPreexistingLevelDB);
345 }; 343 };
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 EXPECT_GT(size, kQuotaKilobytes * 1024); 433 EXPECT_GT(size, kQuotaKilobytes * 1024);
436 SetQuota(kQuotaKilobytes); 434 SetQuota(kQuotaKilobytes);
437 SimpleTest(GetTestUrl("indexeddb", "delete_over_quota.html")); 435 SimpleTest(GetTestUrl("indexeddb", "delete_over_quota.html"));
438 } 436 }
439 437
440 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, EmptyBlob) { 438 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, EmptyBlob) {
441 // First delete all IDB's for the test origin 439 // First delete all IDB's for the test origin
442 // TODO(jsbell): Remove static_cast<> when overloads are eliminated. 440 // TODO(jsbell): Remove static_cast<> when overloads are eliminated.
443 GetContext()->TaskRunner()->PostTask( 441 GetContext()->TaskRunner()->PostTask(
444 FROM_HERE, 442 FROM_HERE,
445 base::Bind(static_cast<void (IndexedDBContextImpl::*)(const GURL&)>( 443 base::BindOnce(static_cast<void (IndexedDBContextImpl::*)(const GURL&)>(
446 &IndexedDBContextImpl::DeleteForOrigin), 444 &IndexedDBContextImpl::DeleteForOrigin),
447 GetContext(), GURL("file:///"))); 445 GetContext(), GURL("file:///")));
448 EXPECT_EQ(0, RequestBlobFileCount()); // Start with no blob files. 446 EXPECT_EQ(0, RequestBlobFileCount()); // Start with no blob files.
449 const GURL test_url = GetTestUrl("indexeddb", "empty_blob.html"); 447 const GURL test_url = GetTestUrl("indexeddb", "empty_blob.html");
450 // For some reason Android's futimes fails (EPERM) in this test. Do not assert 448 // For some reason Android's futimes fails (EPERM) in this test. Do not assert
451 // file times on Android, but do so on other platforms. crbug.com/467247 449 // file times on Android, but do so on other platforms. crbug.com/467247
452 // TODO(cmumford): Figure out why this is the case and fix if possible. 450 // TODO(cmumford): Figure out why this is the case and fix if possible.
453 #if defined(OS_ANDROID) 451 #if defined(OS_ANDROID)
454 SimpleTest(GURL(test_url.spec() + "#ignoreTimes")); 452 SimpleTest(GURL(test_url.spec() + "#ignoreTimes"));
455 #else 453 #else
456 SimpleTest(GURL(test_url.spec())); 454 SimpleTest(GURL(test_url.spec()));
457 #endif 455 #endif
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 } 487 }
490 488
491 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DeleteForOriginDeletesBlobs) { 489 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DeleteForOriginDeletesBlobs) {
492 SimpleTest(GetTestUrl("indexeddb", "write_4mb_blob.html")); 490 SimpleTest(GetTestUrl("indexeddb", "write_4mb_blob.html"));
493 int64_t size = RequestDiskUsage(); 491 int64_t size = RequestDiskUsage();
494 // This assertion assumes that we do not compress blobs. 492 // This assertion assumes that we do not compress blobs.
495 EXPECT_GT(size, 4 << 20 /* 4 MB */); 493 EXPECT_GT(size, 4 << 20 /* 4 MB */);
496 // TODO(jsbell): Remove static_cast<> when overloads are eliminated. 494 // TODO(jsbell): Remove static_cast<> when overloads are eliminated.
497 GetContext()->TaskRunner()->PostTask( 495 GetContext()->TaskRunner()->PostTask(
498 FROM_HERE, 496 FROM_HERE,
499 base::Bind(static_cast<void (IndexedDBContextImpl::*)(const GURL&)>( 497 base::BindOnce(static_cast<void (IndexedDBContextImpl::*)(const GURL&)>(
500 &IndexedDBContextImpl::DeleteForOrigin), 498 &IndexedDBContextImpl::DeleteForOrigin),
501 GetContext(), GURL("file:///"))); 499 GetContext(), GURL("file:///")));
502 scoped_refptr<base::ThreadTestHelper> helper( 500 scoped_refptr<base::ThreadTestHelper> helper(
503 new base::ThreadTestHelper(GetContext()->TaskRunner())); 501 new base::ThreadTestHelper(GetContext()->TaskRunner()));
504 ASSERT_TRUE(helper->Run()); 502 ASSERT_TRUE(helper->Run());
505 EXPECT_EQ(0, RequestDiskUsage()); 503 EXPECT_EQ(0, RequestDiskUsage());
506 } 504 }
507 505
508 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DiskFullOnCommit) { 506 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DiskFullOnCommit) {
509 // Ignore several preceding transactions: 507 // Ignore several preceding transactions:
510 // * The test calls deleteDatabase() which opens the backing store: 508 // * The test calls deleteDatabase() which opens the backing store:
511 // #1: IndexedDBBackingStore::OpenBackingStore 509 // #1: IndexedDBBackingStore::OpenBackingStore
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 request_path = request_path.substr(0, query_pos); 604 request_path = request_path.substr(0, query_pos);
607 } 605 }
608 606
609 if (request_path == "corruptdb" && !request_query.empty()) { 607 if (request_path == "corruptdb" && !request_query.empty()) {
610 VLOG(0) << "Requested to corrupt IndexedDB: " << request_query; 608 VLOG(0) << "Requested to corrupt IndexedDB: " << request_query;
611 base::WaitableEvent signal_when_finished( 609 base::WaitableEvent signal_when_finished(
612 base::WaitableEvent::ResetPolicy::AUTOMATIC, 610 base::WaitableEvent::ResetPolicy::AUTOMATIC,
613 base::WaitableEvent::InitialState::NOT_SIGNALED); 611 base::WaitableEvent::InitialState::NOT_SIGNALED);
614 context->TaskRunner()->PostTask( 612 context->TaskRunner()->PostTask(
615 FROM_HERE, 613 FROM_HERE,
616 base::Bind(&CorruptIndexedDBDatabase, base::ConstRef(context), origin, 614 base::BindOnce(&CorruptIndexedDBDatabase, base::ConstRef(context),
617 &signal_when_finished)); 615 origin, &signal_when_finished));
618 signal_when_finished.Wait(); 616 signal_when_finished.Wait();
619 617
620 std::unique_ptr<net::test_server::BasicHttpResponse> http_response( 618 std::unique_ptr<net::test_server::BasicHttpResponse> http_response(
621 new net::test_server::BasicHttpResponse); 619 new net::test_server::BasicHttpResponse);
622 http_response->set_code(net::HTTP_OK); 620 http_response->set_code(net::HTTP_OK);
623 return std::move(http_response); 621 return std::move(http_response);
624 } else if (request_path == "fail" && !request_query.empty()) { 622 } else if (request_path == "fail" && !request_query.empty()) {
625 FailClass failure_class = FAIL_CLASS_NOTHING; 623 FailClass failure_class = FAIL_CLASS_NOTHING;
626 FailMethod failure_method = FAIL_METHOD_NOTHING; 624 FailMethod failure_method = FAIL_METHOD_NOTHING;
627 int instance_num = 1; 625 int instance_num = 1;
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 } 827 }
830 828
831 // Verify that a "close" event is fired at database connections when 829 // Verify that a "close" event is fired at database connections when
832 // the backing store is deleted. 830 // the backing store is deleted.
833 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, ForceCloseEventTest) { 831 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, ForceCloseEventTest) {
834 NavigateAndWaitForTitle(shell(), "force_close_event.html", NULL, 832 NavigateAndWaitForTitle(shell(), "force_close_event.html", NULL,
835 "connection ready"); 833 "connection ready");
836 // TODO(jsbell): Remove static_cast<> when overloads are eliminated. 834 // TODO(jsbell): Remove static_cast<> when overloads are eliminated.
837 GetContext()->TaskRunner()->PostTask( 835 GetContext()->TaskRunner()->PostTask(
838 FROM_HERE, 836 FROM_HERE,
839 base::Bind(static_cast<void (IndexedDBContextImpl::*)(const GURL&)>( 837 base::BindOnce(static_cast<void (IndexedDBContextImpl::*)(const GURL&)>(
840 &IndexedDBContextImpl::DeleteForOrigin), 838 &IndexedDBContextImpl::DeleteForOrigin),
841 GetContext(), GURL("file:///"))); 839 GetContext(), GURL("file:///")));
842 840
843 base::string16 expected_title16(ASCIIToUTF16("connection closed")); 841 base::string16 expected_title16(ASCIIToUTF16("connection closed"));
844 TitleWatcher title_watcher(shell()->web_contents(), expected_title16); 842 TitleWatcher title_watcher(shell()->web_contents(), expected_title16);
845 title_watcher.AlsoWaitForTitle(ASCIIToUTF16("connection closed with error")); 843 title_watcher.AlsoWaitForTitle(ASCIIToUTF16("connection closed with error"));
846 EXPECT_EQ(expected_title16, title_watcher.WaitAndGetTitle()); 844 EXPECT_EQ(expected_title16, title_watcher.WaitAndGetTitle());
847 } 845 }
848 846
849 class IndexedDBBrowserTestSingleProcess : public IndexedDBBrowserTest { 847 class IndexedDBBrowserTestSingleProcess : public IndexedDBBrowserTest {
850 public: 848 public:
851 void SetUpCommandLine(base::CommandLine* command_line) override { 849 void SetUpCommandLine(base::CommandLine* command_line) override {
852 command_line->AppendSwitch(switches::kSingleProcess); 850 command_line->AppendSwitch(switches::kSingleProcess);
853 } 851 }
854 }; 852 };
855 853
856 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTestSingleProcess, 854 IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTestSingleProcess,
857 RenderThreadShutdownTest) { 855 RenderThreadShutdownTest) {
858 SimpleTest(GetTestUrl("indexeddb", "shutdown_with_requests.html")); 856 SimpleTest(GetTestUrl("indexeddb", "shutdown_with_requests.html"));
859 } 857 }
860 858
861 } // namespace content 859 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_backing_store_unittest.cc ('k') | content/browser/indexed_db/indexed_db_callbacks.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698