| 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 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 return SERVICE_WORKER_OK; | 74 return SERVICE_WORKER_OK; |
| 75 case ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND: | 75 case ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND: |
| 76 return SERVICE_WORKER_ERROR_NOT_FOUND; | 76 return SERVICE_WORKER_ERROR_NOT_FOUND; |
| 77 case ServiceWorkerDatabase::STATUS_ERROR_MAX: | 77 case ServiceWorkerDatabase::STATUS_ERROR_MAX: |
| 78 NOTREACHED(); | 78 NOTREACHED(); |
| 79 default: | 79 default: |
| 80 return SERVICE_WORKER_ERROR_FAILED; | 80 return SERVICE_WORKER_ERROR_FAILED; |
| 81 } | 81 } |
| 82 } | 82 } |
| 83 | 83 |
| 84 void DidUpdateNavigationPreloadState( |
| 85 const ServiceWorkerStorage::StatusCallback& callback, |
| 86 ServiceWorkerDatabase::Status status) { |
| 87 callback.Run(DatabaseStatusToStatusCode(status)); |
| 88 } |
| 89 |
| 84 } // namespace | 90 } // namespace |
| 85 | 91 |
| 86 ServiceWorkerStorage::InitialData::InitialData() | 92 ServiceWorkerStorage::InitialData::InitialData() |
| 87 : next_registration_id(kInvalidServiceWorkerRegistrationId), | 93 : next_registration_id(kInvalidServiceWorkerRegistrationId), |
| 88 next_version_id(kInvalidServiceWorkerVersionId), | 94 next_version_id(kInvalidServiceWorkerVersionId), |
| 89 next_resource_id(kInvalidServiceWorkerResourceId) {} | 95 next_resource_id(kInvalidServiceWorkerResourceId) {} |
| 90 | 96 |
| 91 ServiceWorkerStorage::InitialData::~InitialData() { | 97 ServiceWorkerStorage::InitialData::~InitialData() { |
| 92 } | 98 } |
| 93 | 99 |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 data.script = version->script_url(); | 409 data.script = version->script_url(); |
| 404 data.has_fetch_handler = version->fetch_handler_existence() == | 410 data.has_fetch_handler = version->fetch_handler_existence() == |
| 405 ServiceWorkerVersion::FetchHandlerExistence::EXISTS; | 411 ServiceWorkerVersion::FetchHandlerExistence::EXISTS; |
| 406 data.version_id = version->version_id(); | 412 data.version_id = version->version_id(); |
| 407 data.last_update_check = registration->last_update_check(); | 413 data.last_update_check = registration->last_update_check(); |
| 408 data.is_active = (version == registration->active_version()); | 414 data.is_active = (version == registration->active_version()); |
| 409 data.foreign_fetch_scopes = version->foreign_fetch_scopes(); | 415 data.foreign_fetch_scopes = version->foreign_fetch_scopes(); |
| 410 data.foreign_fetch_origins = version->foreign_fetch_origins(); | 416 data.foreign_fetch_origins = version->foreign_fetch_origins(); |
| 411 if (version->origin_trial_tokens()) | 417 if (version->origin_trial_tokens()) |
| 412 data.origin_trial_tokens = *version->origin_trial_tokens(); | 418 data.origin_trial_tokens = *version->origin_trial_tokens(); |
| 419 data.navigation_preload_state = registration->navigation_preload_state(); |
| 413 | 420 |
| 414 ResourceList resources; | 421 ResourceList resources; |
| 415 version->script_cache_map()->GetResources(&resources); | 422 version->script_cache_map()->GetResources(&resources); |
| 416 | 423 |
| 417 if (resources.empty()) { | 424 if (resources.empty()) { |
| 418 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_FAILED)); | 425 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_FAILED)); |
| 419 return; | 426 return; |
| 420 } | 427 } |
| 421 | 428 |
| 422 uint64_t resources_total_size_bytes = 0; | 429 uint64_t resources_total_size_bytes = 0; |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 database_task_manager_->GetTaskRunner()->PostTask( | 483 database_task_manager_->GetTaskRunner()->PostTask( |
| 477 FROM_HERE, | 484 FROM_HERE, |
| 478 base::Bind( | 485 base::Bind( |
| 479 base::IgnoreResult(&ServiceWorkerDatabase::UpdateLastCheckTime), | 486 base::IgnoreResult(&ServiceWorkerDatabase::UpdateLastCheckTime), |
| 480 base::Unretained(database_.get()), | 487 base::Unretained(database_.get()), |
| 481 registration->id(), | 488 registration->id(), |
| 482 registration->pattern().GetOrigin(), | 489 registration->pattern().GetOrigin(), |
| 483 registration->last_update_check())); | 490 registration->last_update_check())); |
| 484 } | 491 } |
| 485 | 492 |
| 493 void ServiceWorkerStorage::UpdateNavigationPreloadEnabled( |
| 494 int64_t registration_id, |
| 495 const GURL& origin, |
| 496 bool enable, |
| 497 const StatusCallback& callback) { |
| 498 DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_; |
| 499 if (IsDisabled()) { |
| 500 callback.Run(SERVICE_WORKER_ERROR_ABORT); |
| 501 return; |
| 502 } |
| 503 |
| 504 PostTaskAndReplyWithResult( |
| 505 database_task_manager_->GetTaskRunner(), FROM_HERE, |
| 506 base::Bind(&ServiceWorkerDatabase::UpdateNavigationPreloadEnabled, |
| 507 base::Unretained(database_.get()), registration_id, origin, |
| 508 enable), |
| 509 base::Bind(&DidUpdateNavigationPreloadState, callback)); |
| 510 } |
| 511 |
| 512 void ServiceWorkerStorage::UpdateNavigationPreloadHeader( |
| 513 int64_t registration_id, |
| 514 const GURL& origin, |
| 515 const std::string& value, |
| 516 const StatusCallback& callback) { |
| 517 DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_; |
| 518 if (IsDisabled()) { |
| 519 callback.Run(SERVICE_WORKER_ERROR_ABORT); |
| 520 return; |
| 521 } |
| 522 |
| 523 PostTaskAndReplyWithResult( |
| 524 database_task_manager_->GetTaskRunner(), FROM_HERE, |
| 525 base::Bind(&ServiceWorkerDatabase::UpdateNavigationPreloadHeader, |
| 526 base::Unretained(database_.get()), registration_id, origin, |
| 527 value), |
| 528 base::Bind(&DidUpdateNavigationPreloadState, callback)); |
| 529 } |
| 530 |
| 486 void ServiceWorkerStorage::DeleteRegistration(int64_t registration_id, | 531 void ServiceWorkerStorage::DeleteRegistration(int64_t registration_id, |
| 487 const GURL& origin, | 532 const GURL& origin, |
| 488 const StatusCallback& callback) { | 533 const StatusCallback& callback) { |
| 489 DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_; | 534 DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_; |
| 490 if (IsDisabled()) { | 535 if (IsDisabled()) { |
| 491 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_ABORT)); | 536 RunSoon(FROM_HERE, base::Bind(callback, SERVICE_WORKER_ERROR_ABORT)); |
| 492 return; | 537 return; |
| 493 } | 538 } |
| 494 | 539 |
| 495 if (!has_checked_for_stale_resources_) | 540 if (!has_checked_for_stale_resources_) |
| (...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1266 version->SetValidOriginTrialTokens(*data.origin_trial_tokens); | 1311 version->SetValidOriginTrialTokens(*data.origin_trial_tokens); |
| 1267 } | 1312 } |
| 1268 | 1313 |
| 1269 if (version->status() == ServiceWorkerVersion::ACTIVATED) | 1314 if (version->status() == ServiceWorkerVersion::ACTIVATED) |
| 1270 registration->SetActiveVersion(version); | 1315 registration->SetActiveVersion(version); |
| 1271 else if (version->status() == ServiceWorkerVersion::INSTALLED) | 1316 else if (version->status() == ServiceWorkerVersion::INSTALLED) |
| 1272 registration->SetWaitingVersion(version); | 1317 registration->SetWaitingVersion(version); |
| 1273 else | 1318 else |
| 1274 NOTREACHED(); | 1319 NOTREACHED(); |
| 1275 | 1320 |
| 1321 registration->EnableNavigationPreload(data.navigation_preload_state.enabled); |
| 1322 registration->SetNavigationPreloadHeader( |
| 1323 data.navigation_preload_state.header); |
| 1276 return registration; | 1324 return registration; |
| 1277 } | 1325 } |
| 1278 | 1326 |
| 1279 ServiceWorkerRegistration* | 1327 ServiceWorkerRegistration* |
| 1280 ServiceWorkerStorage::FindInstallingRegistrationForDocument( | 1328 ServiceWorkerStorage::FindInstallingRegistrationForDocument( |
| 1281 const GURL& document_url) { | 1329 const GURL& document_url) { |
| 1282 DCHECK(!document_url.has_ref()); | 1330 DCHECK(!document_url.has_ref()); |
| 1283 | 1331 |
| 1284 LongestScopeMatcher matcher(document_url); | 1332 LongestScopeMatcher matcher(document_url); |
| 1285 ServiceWorkerRegistration* match = nullptr; | 1333 ServiceWorkerRegistration* match = nullptr; |
| (...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1785 callback.Run(SERVICE_WORKER_ERROR_FAILED); | 1833 callback.Run(SERVICE_WORKER_ERROR_FAILED); |
| 1786 return; | 1834 return; |
| 1787 } | 1835 } |
| 1788 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; | 1836 DVLOG(1) << "Deleted ServiceWorkerDiskCache successfully."; |
| 1789 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( | 1837 ServiceWorkerMetrics::RecordDeleteAndStartOverResult( |
| 1790 ServiceWorkerMetrics::DELETE_OK); | 1838 ServiceWorkerMetrics::DELETE_OK); |
| 1791 callback.Run(SERVICE_WORKER_OK); | 1839 callback.Run(SERVICE_WORKER_OK); |
| 1792 } | 1840 } |
| 1793 | 1841 |
| 1794 } // namespace content | 1842 } // namespace content |
| OLD | NEW |