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 |