| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/service_worker/service_worker_storage.h" | 5 #include "content/browser/service_worker/service_worker_storage.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| (...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 686 } | 686 } |
| 687 | 687 |
| 688 database_task_manager_->GetTaskRunner()->PostTask( | 688 database_task_manager_->GetTaskRunner()->PostTask( |
| 689 FROM_HERE, | 689 FROM_HERE, |
| 690 base::Bind(&ServiceWorkerStorage::GetUserDataInDB, database_.get(), | 690 base::Bind(&ServiceWorkerStorage::GetUserDataInDB, database_.get(), |
| 691 base::ThreadTaskRunnerHandle::Get(), registration_id, keys, | 691 base::ThreadTaskRunnerHandle::Get(), registration_id, keys, |
| 692 base::Bind(&ServiceWorkerStorage::DidGetUserData, | 692 base::Bind(&ServiceWorkerStorage::DidGetUserData, |
| 693 weak_factory_.GetWeakPtr(), callback))); | 693 weak_factory_.GetWeakPtr(), callback))); |
| 694 } | 694 } |
| 695 | 695 |
| 696 void ServiceWorkerStorage::GetUserDataByKeyPrefix( |
| 697 int64_t registration_id, |
| 698 const std::string& key_prefix, |
| 699 const GetUserDataCallback& callback) { |
| 700 if (!LazyInitialize(base::Bind(&ServiceWorkerStorage::GetUserDataByKeyPrefix, |
| 701 weak_factory_.GetWeakPtr(), registration_id, |
| 702 key_prefix, callback))) { |
| 703 if (state_ != INITIALIZING) { |
| 704 RunSoon(FROM_HERE, base::Bind(callback, std::vector<std::string>(), |
| 705 SERVICE_WORKER_ERROR_ABORT)); |
| 706 } |
| 707 return; |
| 708 } |
| 709 DCHECK_EQ(INITIALIZED, state_); |
| 710 |
| 711 if (registration_id == kInvalidServiceWorkerRegistrationId) { |
| 712 RunSoon(FROM_HERE, base::Bind(callback, std::vector<std::string>(), |
| 713 SERVICE_WORKER_ERROR_FAILED)); |
| 714 return; |
| 715 } |
| 716 if (key_prefix.empty()) { |
| 717 RunSoon(FROM_HERE, base::Bind(callback, std::vector<std::string>(), |
| 718 SERVICE_WORKER_ERROR_FAILED)); |
| 719 return; |
| 720 } |
| 721 |
| 722 database_task_manager_->GetTaskRunner()->PostTask( |
| 723 FROM_HERE, |
| 724 base::Bind(&ServiceWorkerStorage::GetUserDataByKeyPrefixInDB, |
| 725 database_.get(), base::ThreadTaskRunnerHandle::Get(), |
| 726 registration_id, key_prefix, |
| 727 base::Bind(&ServiceWorkerStorage::DidGetUserData, |
| 728 weak_factory_.GetWeakPtr(), callback))); |
| 729 } |
| 730 |
| 696 void ServiceWorkerStorage::ClearUserData(int64_t registration_id, | 731 void ServiceWorkerStorage::ClearUserData(int64_t registration_id, |
| 697 const std::vector<std::string>& keys, | 732 const std::vector<std::string>& keys, |
| 698 const StatusCallback& callback) { | 733 const StatusCallback& callback) { |
| 699 if (!LazyInitialize(base::Bind(&ServiceWorkerStorage::ClearUserData, | 734 if (!LazyInitialize(base::Bind(&ServiceWorkerStorage::ClearUserData, |
| 700 weak_factory_.GetWeakPtr(), registration_id, | 735 weak_factory_.GetWeakPtr(), registration_id, |
| 701 keys, callback))) { | 736 keys, callback))) { |
| 702 if (state_ != INITIALIZING) | 737 if (state_ != INITIALIZING) |
| 703 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_ABORT)); | 738 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_ABORT)); |
| 704 return; | 739 return; |
| 705 } | 740 } |
| (...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1764 int64_t registration_id, | 1799 int64_t registration_id, |
| 1765 const std::vector<std::string>& keys, | 1800 const std::vector<std::string>& keys, |
| 1766 const GetUserDataInDBCallback& callback) { | 1801 const GetUserDataInDBCallback& callback) { |
| 1767 std::vector<std::string> values; | 1802 std::vector<std::string> values; |
| 1768 ServiceWorkerDatabase::Status status = | 1803 ServiceWorkerDatabase::Status status = |
| 1769 database->ReadUserData(registration_id, keys, &values); | 1804 database->ReadUserData(registration_id, keys, &values); |
| 1770 original_task_runner->PostTask(FROM_HERE, | 1805 original_task_runner->PostTask(FROM_HERE, |
| 1771 base::Bind(callback, values, status)); | 1806 base::Bind(callback, values, status)); |
| 1772 } | 1807 } |
| 1773 | 1808 |
| 1809 void ServiceWorkerStorage::GetUserDataByKeyPrefixInDB( |
| 1810 ServiceWorkerDatabase* database, |
| 1811 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
| 1812 int64_t registration_id, |
| 1813 const std::string& key_prefix, |
| 1814 const GetUserDataInDBCallback& callback) { |
| 1815 std::vector<std::string> values; |
| 1816 ServiceWorkerDatabase::Status status = |
| 1817 database->ReadUserDataByKeyPrefix(registration_id, key_prefix, &values); |
| 1818 original_task_runner->PostTask(FROM_HERE, |
| 1819 base::Bind(callback, values, status)); |
| 1820 } |
| 1821 |
| 1774 void ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB( | 1822 void ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB( |
| 1775 ServiceWorkerDatabase* database, | 1823 ServiceWorkerDatabase* database, |
| 1776 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 1824 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
| 1777 const std::string& key, | 1825 const std::string& key, |
| 1778 const GetUserDataForAllRegistrationsInDBCallback& callback) { | 1826 const GetUserDataForAllRegistrationsInDBCallback& callback) { |
| 1779 std::vector<std::pair<int64_t, std::string>> user_data; | 1827 std::vector<std::pair<int64_t, std::string>> user_data; |
| 1780 ServiceWorkerDatabase::Status status = | 1828 ServiceWorkerDatabase::Status status = |
| 1781 database->ReadUserDataForAllRegistrations(key, &user_data); | 1829 database->ReadUserDataForAllRegistrations(key, &user_data); |
| 1782 original_task_runner->PostTask(FROM_HERE, | 1830 original_task_runner->PostTask(FROM_HERE, |
| 1783 base::Bind(callback, user_data, status)); | 1831 base::Bind(callback, user_data, status)); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1850 callback.Run(SERVICE_WORKER_ERROR_FAILED); | 1898 callback.Run(SERVICE_WORKER_ERROR_FAILED); |
| 1851 return; | 1899 return; |
| 1852 } | 1900 } |
| 1853 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; | 1901 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; |
| 1854 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( | 1902 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( |
| 1855 ServiceWorkerMetrics::DELETE_OK); | 1903 ServiceWorkerMetrics::DELETE_OK); |
| 1856 callback.Run(SERVICE_WORKER_OK); | 1904 callback.Run(SERVICE_WORKER_OK); |
| 1857 } | 1905 } |
| 1858 | 1906 |
| 1859 } // namespace content | 1907 } // namespace content |
| OLD | NEW |