Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1271)

Side by Side Diff: content/browser/service_worker/service_worker_storage.cc

Issue 2521793004: service worker: Persist NavigationPreloadState (Closed)
Patch Set: expect_ name Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698