| 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 | |
| 731 void ServiceWorkerStorage::ClearUserData(int64_t registration_id, | 696 void ServiceWorkerStorage::ClearUserData(int64_t registration_id, |
| 732 const std::vector<std::string>& keys, | 697 const std::vector<std::string>& keys, |
| 733 const StatusCallback& callback) { | 698 const StatusCallback& callback) { |
| 734 if (!LazyInitialize(base::Bind(&ServiceWorkerStorage::ClearUserData, | 699 if (!LazyInitialize(base::Bind(&ServiceWorkerStorage::ClearUserData, |
| 735 weak_factory_.GetWeakPtr(), registration_id, | 700 weak_factory_.GetWeakPtr(), registration_id, |
| 736 keys, callback))) { | 701 keys, callback))) { |
| 737 if (state_ != INITIALIZING) | 702 if (state_ != INITIALIZING) |
| 738 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_ABORT)); | 703 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_ABORT)); |
| 739 return; | 704 return; |
| 740 } | 705 } |
| (...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1799 int64_t registration_id, | 1764 int64_t registration_id, |
| 1800 const std::vector<std::string>& keys, | 1765 const std::vector<std::string>& keys, |
| 1801 const GetUserDataInDBCallback& callback) { | 1766 const GetUserDataInDBCallback& callback) { |
| 1802 std::vector<std::string> values; | 1767 std::vector<std::string> values; |
| 1803 ServiceWorkerDatabase::Status status = | 1768 ServiceWorkerDatabase::Status status = |
| 1804 database->ReadUserData(registration_id, keys, &values); | 1769 database->ReadUserData(registration_id, keys, &values); |
| 1805 original_task_runner->PostTask(FROM_HERE, | 1770 original_task_runner->PostTask(FROM_HERE, |
| 1806 base::Bind(callback, values, status)); | 1771 base::Bind(callback, values, status)); |
| 1807 } | 1772 } |
| 1808 | 1773 |
| 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 | |
| 1822 void ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB( | 1774 void ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB( |
| 1823 ServiceWorkerDatabase* database, | 1775 ServiceWorkerDatabase* database, |
| 1824 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 1776 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
| 1825 const std::string& key, | 1777 const std::string& key, |
| 1826 const GetUserDataForAllRegistrationsInDBCallback& callback) { | 1778 const GetUserDataForAllRegistrationsInDBCallback& callback) { |
| 1827 std::vector<std::pair<int64_t, std::string>> user_data; | 1779 std::vector<std::pair<int64_t, std::string>> user_data; |
| 1828 ServiceWorkerDatabase::Status status = | 1780 ServiceWorkerDatabase::Status status = |
| 1829 database->ReadUserDataForAllRegistrations(key, &user_data); | 1781 database->ReadUserDataForAllRegistrations(key, &user_data); |
| 1830 original_task_runner->PostTask(FROM_HERE, | 1782 original_task_runner->PostTask(FROM_HERE, |
| 1831 base::Bind(callback, user_data, status)); | 1783 base::Bind(callback, user_data, status)); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1898 callback.Run(SERVICE_WORKER_ERROR_FAILED); | 1850 callback.Run(SERVICE_WORKER_ERROR_FAILED); |
| 1899 return; | 1851 return; |
| 1900 } | 1852 } |
| 1901 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; | 1853 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; |
| 1902 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( | 1854 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( |
| 1903 ServiceWorkerMetrics::DELETE_OK); | 1855 ServiceWorkerMetrics::DELETE_OK); |
| 1904 callback.Run(SERVICE_WORKER_OK); | 1856 callback.Run(SERVICE_WORKER_OK); |
| 1905 } | 1857 } |
| 1906 | 1858 |
| 1907 } // namespace content | 1859 } // namespace content |
| OLD | NEW |