| 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 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 base::Bind( | 793 base::Bind( |
| 794 &ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB, | 794 &ServiceWorkerStorage::GetUserDataForAllRegistrationsInDB, |
| 795 database_.get(), | 795 database_.get(), |
| 796 base::ThreadTaskRunnerHandle::Get(), | 796 base::ThreadTaskRunnerHandle::Get(), |
| 797 key, | 797 key, |
| 798 base::Bind(&ServiceWorkerStorage::DidGetUserDataForAllRegistrations, | 798 base::Bind(&ServiceWorkerStorage::DidGetUserDataForAllRegistrations, |
| 799 weak_factory_.GetWeakPtr(), | 799 weak_factory_.GetWeakPtr(), |
| 800 callback))); | 800 callback))); |
| 801 } | 801 } |
| 802 | 802 |
| 803 void ServiceWorkerStorage::GetUserDataForAllRegistrationsByKeyPrefix( |
| 804 const std::string& key_prefix, |
| 805 const ServiceWorkerStorage::GetUserDataForAllRegistrationsCallback& |
| 806 callback) { |
| 807 if (!LazyInitialize(base::Bind( |
| 808 &ServiceWorkerStorage::GetUserDataForAllRegistrationsByKeyPrefix, |
| 809 weak_factory_.GetWeakPtr(), key_prefix, callback))) { |
| 810 if (state_ != INITIALIZING) { |
| 811 RunSoon( |
| 812 FROM_HERE, |
| 813 base::Bind(callback, std::vector<std::pair<int64_t, std::string>>(), |
| 814 SERVICE_WORKER_ERROR_ABORT)); |
| 815 } |
| 816 return; |
| 817 } |
| 818 DCHECK_EQ(INITIALIZED, state_); |
| 819 |
| 820 if (key_prefix.empty()) { |
| 821 RunSoon(FROM_HERE, |
| 822 base::Bind(callback, std::vector<std::pair<int64_t, std::string>>(), |
| 823 SERVICE_WORKER_ERROR_FAILED)); |
| 824 return; |
| 825 } |
| 826 |
| 827 database_task_manager_->GetTaskRunner()->PostTask( |
| 828 FROM_HERE, |
| 829 base::Bind( |
| 830 &ServiceWorkerStorage::GetUserDataForAllRegistrationsByKeyPrefixInDB, |
| 831 database_.get(), base::ThreadTaskRunnerHandle::Get(), key_prefix, |
| 832 base::Bind(&ServiceWorkerStorage::DidGetUserDataForAllRegistrations, |
| 833 weak_factory_.GetWeakPtr(), callback))); |
| 834 } |
| 835 |
| 803 bool ServiceWorkerStorage::OriginHasForeignFetchRegistrations( | 836 bool ServiceWorkerStorage::OriginHasForeignFetchRegistrations( |
| 804 const GURL& origin) { | 837 const GURL& origin) { |
| 805 return !IsDisabled() && | 838 return !IsDisabled() && |
| 806 foreign_fetch_origins_.find(origin) != foreign_fetch_origins_.end(); | 839 foreign_fetch_origins_.find(origin) != foreign_fetch_origins_.end(); |
| 807 } | 840 } |
| 808 | 841 |
| 809 void ServiceWorkerStorage::DeleteAndStartOver(const StatusCallback& callback) { | 842 void ServiceWorkerStorage::DeleteAndStartOver(const StatusCallback& callback) { |
| 810 Disable(); | 843 Disable(); |
| 811 | 844 |
| 812 // Delete the database on the database thread. | 845 // Delete the database on the database thread. |
| (...skipping 1011 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1824 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 1857 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
| 1825 const std::string& key, | 1858 const std::string& key, |
| 1826 const GetUserDataForAllRegistrationsInDBCallback& callback) { | 1859 const GetUserDataForAllRegistrationsInDBCallback& callback) { |
| 1827 std::vector<std::pair<int64_t, std::string>> user_data; | 1860 std::vector<std::pair<int64_t, std::string>> user_data; |
| 1828 ServiceWorkerDatabase::Status status = | 1861 ServiceWorkerDatabase::Status status = |
| 1829 database->ReadUserDataForAllRegistrations(key, &user_data); | 1862 database->ReadUserDataForAllRegistrations(key, &user_data); |
| 1830 original_task_runner->PostTask(FROM_HERE, | 1863 original_task_runner->PostTask(FROM_HERE, |
| 1831 base::Bind(callback, user_data, status)); | 1864 base::Bind(callback, user_data, status)); |
| 1832 } | 1865 } |
| 1833 | 1866 |
| 1867 void ServiceWorkerStorage::GetUserDataForAllRegistrationsByKeyPrefixInDB( |
| 1868 ServiceWorkerDatabase* database, |
| 1869 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
| 1870 const std::string& key_prefix, |
| 1871 const GetUserDataForAllRegistrationsInDBCallback& callback) { |
| 1872 std::vector<std::pair<int64_t, std::string>> user_data; |
| 1873 ServiceWorkerDatabase::Status status = |
| 1874 database->ReadUserDataForAllRegistrationsByKeyPrefix(key_prefix, |
| 1875 &user_data); |
| 1876 original_task_runner->PostTask(FROM_HERE, |
| 1877 base::Bind(callback, user_data, status)); |
| 1878 } |
| 1879 |
| 1834 void ServiceWorkerStorage::DeleteAllDataForOriginsFromDB( | 1880 void ServiceWorkerStorage::DeleteAllDataForOriginsFromDB( |
| 1835 ServiceWorkerDatabase* database, | 1881 ServiceWorkerDatabase* database, |
| 1836 const std::set<GURL>& origins) { | 1882 const std::set<GURL>& origins) { |
| 1837 DCHECK(database); | 1883 DCHECK(database); |
| 1838 | 1884 |
| 1839 std::vector<int64_t> newly_purgeable_resources; | 1885 std::vector<int64_t> newly_purgeable_resources; |
| 1840 database->DeleteAllDataForOrigins(origins, &newly_purgeable_resources); | 1886 database->DeleteAllDataForOrigins(origins, &newly_purgeable_resources); |
| 1841 } | 1887 } |
| 1842 | 1888 |
| 1843 bool ServiceWorkerStorage::IsDisabled() const { | 1889 bool ServiceWorkerStorage::IsDisabled() const { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1898 callback.Run(SERVICE_WORKER_ERROR_FAILED); | 1944 callback.Run(SERVICE_WORKER_ERROR_FAILED); |
| 1899 return; | 1945 return; |
| 1900 } | 1946 } |
| 1901 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; | 1947 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; |
| 1902 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( | 1948 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( |
| 1903 ServiceWorkerMetrics::DELETE_OK); | 1949 ServiceWorkerMetrics::DELETE_OK); |
| 1904 callback.Run(SERVICE_WORKER_OK); | 1950 callback.Run(SERVICE_WORKER_OK); |
| 1905 } | 1951 } |
| 1906 | 1952 |
| 1907 } // namespace content | 1953 } // namespace content |
| OLD | NEW |