| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_database.h" | 5 #include "content/browser/service_worker/service_worker_database.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 Status status = LazyOpen(false); | 793 Status status = LazyOpen(false); |
| 794 if (IsNewOrNonexistentDatabase(status)) | 794 if (IsNewOrNonexistentDatabase(status)) |
| 795 return STATUS_OK; | 795 return STATUS_OK; |
| 796 if (status != STATUS_OK) | 796 if (status != STATUS_OK) |
| 797 return status; | 797 return status; |
| 798 if (!origin.is_valid()) | 798 if (!origin.is_valid()) |
| 799 return STATUS_ERROR_FAILED; | 799 return STATUS_ERROR_FAILED; |
| 800 | 800 |
| 801 leveldb::WriteBatch batch; | 801 leveldb::WriteBatch batch; |
| 802 | 802 |
| 803 // Remove |origin| from unique origins if a registration specified by | 803 // Remove |origin| from opaque origins if a registration specified by |
| 804 // |registration_id| is the only one for |origin|. | 804 // |registration_id| is the only one for |origin|. |
| 805 // TODO(nhiroki): Check the uniqueness by more efficient way. | 805 // TODO(nhiroki): Check the uniqueness by more efficient way. |
| 806 std::vector<RegistrationData> registrations; | 806 std::vector<RegistrationData> registrations; |
| 807 status = GetRegistrationsForOrigin(origin, ®istrations, nullptr); | 807 status = GetRegistrationsForOrigin(origin, ®istrations, nullptr); |
| 808 if (status != STATUS_OK) | 808 if (status != STATUS_OK) |
| 809 return status; | 809 return status; |
| 810 | 810 |
| 811 if (registrations.size() == 1 && | 811 if (registrations.size() == 1 && |
| 812 registrations[0].registration_id == registration_id) { | 812 registrations[0].registration_id == registration_id) { |
| 813 batch.Delete(CreateUniqueOriginKey(origin)); | 813 batch.Delete(CreateUniqueOriginKey(origin)); |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 if (IsNewOrNonexistentDatabase(status)) | 1146 if (IsNewOrNonexistentDatabase(status)) |
| 1147 return STATUS_OK; | 1147 return STATUS_OK; |
| 1148 if (status != STATUS_OK) | 1148 if (status != STATUS_OK) |
| 1149 return status; | 1149 return status; |
| 1150 leveldb::WriteBatch batch; | 1150 leveldb::WriteBatch batch; |
| 1151 | 1151 |
| 1152 for (const GURL& origin : origins) { | 1152 for (const GURL& origin : origins) { |
| 1153 if (!origin.is_valid()) | 1153 if (!origin.is_valid()) |
| 1154 return STATUS_ERROR_FAILED; | 1154 return STATUS_ERROR_FAILED; |
| 1155 | 1155 |
| 1156 // Delete from the unique origin list. | 1156 // Delete from the opaque origin list. |
| 1157 batch.Delete(CreateUniqueOriginKey(origin)); | 1157 batch.Delete(CreateUniqueOriginKey(origin)); |
| 1158 | 1158 |
| 1159 // Delete from the foreign fetch origin list. | 1159 // Delete from the foreign fetch origin list. |
| 1160 batch.Delete(CreateForeignFetchOriginKey(origin)); | 1160 batch.Delete(CreateForeignFetchOriginKey(origin)); |
| 1161 | 1161 |
| 1162 std::vector<RegistrationData> registrations; | 1162 std::vector<RegistrationData> registrations; |
| 1163 status = GetRegistrationsForOrigin(origin, ®istrations, nullptr); | 1163 status = GetRegistrationsForOrigin(origin, ®istrations, nullptr); |
| 1164 if (status != STATUS_OK) | 1164 if (status != STATUS_OK) |
| 1165 return status; | 1165 return status; |
| 1166 | 1166 |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1363 !ServiceWorkerUtils::ScopeMatches(scope_url, sub_scope_url)) { | 1363 !ServiceWorkerUtils::ScopeMatches(scope_url, sub_scope_url)) { |
| 1364 DLOG(ERROR) << "Foreign fetch scope '" << data.foreign_fetch_scope(i) | 1364 DLOG(ERROR) << "Foreign fetch scope '" << data.foreign_fetch_scope(i) |
| 1365 << "' is not valid or does not match Scope URL '" << scope_url | 1365 << "' is not valid or does not match Scope URL '" << scope_url |
| 1366 << "'."; | 1366 << "'."; |
| 1367 return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED; | 1367 return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED; |
| 1368 } | 1368 } |
| 1369 out->foreign_fetch_scopes.push_back(sub_scope_url); | 1369 out->foreign_fetch_scopes.push_back(sub_scope_url); |
| 1370 } | 1370 } |
| 1371 for (int i = 0; i < data.foreign_fetch_origin_size(); ++i) { | 1371 for (int i = 0; i < data.foreign_fetch_origin_size(); ++i) { |
| 1372 url::Origin parsed_origin(GURL(data.foreign_fetch_origin(i))); | 1372 url::Origin parsed_origin(GURL(data.foreign_fetch_origin(i))); |
| 1373 if (parsed_origin.unique()) { | 1373 if (parsed_origin.opaque()) { |
| 1374 DLOG(ERROR) << "Foreign fetch origin '" << data.foreign_fetch_origin(i) | 1374 DLOG(ERROR) << "Foreign fetch origin '" << data.foreign_fetch_origin(i) |
| 1375 << "' is not valid."; | 1375 << "' is not valid."; |
| 1376 return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED; | 1376 return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED; |
| 1377 } | 1377 } |
| 1378 out->foreign_fetch_origins.push_back(parsed_origin); | 1378 out->foreign_fetch_origins.push_back(parsed_origin); |
| 1379 } | 1379 } |
| 1380 if (data.has_origin_trial_tokens()) { | 1380 if (data.has_origin_trial_tokens()) { |
| 1381 const ServiceWorkerOriginTrialInfo& info = data.origin_trial_tokens(); | 1381 const ServiceWorkerOriginTrialInfo& info = data.origin_trial_tokens(); |
| 1382 TrialTokenValidator::FeatureToTokensMap origin_trial_tokens; | 1382 TrialTokenValidator::FeatureToTokensMap origin_trial_tokens; |
| 1383 for (int i = 0; i < info.features_size(); ++i) { | 1383 for (int i = 0; i < info.features_size(); ++i) { |
| (...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1824 if (status != STATUS_OK) | 1824 if (status != STATUS_OK) |
| 1825 Disable(from_here, status); | 1825 Disable(from_here, status); |
| 1826 ServiceWorkerMetrics::CountWriteDatabaseResult(status); | 1826 ServiceWorkerMetrics::CountWriteDatabaseResult(status); |
| 1827 } | 1827 } |
| 1828 | 1828 |
| 1829 bool ServiceWorkerDatabase::IsDatabaseInMemory() const { | 1829 bool ServiceWorkerDatabase::IsDatabaseInMemory() const { |
| 1830 return path_.empty(); | 1830 return path_.empty(); |
| 1831 } | 1831 } |
| 1832 | 1832 |
| 1833 } // namespace content | 1833 } // namespace content |
| OLD | NEW |