Commit 2aaa17f4 authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

service worker: Intercept responses of registration data update

Before this CL, the callbacks of the following methods were passed
directly to mojo remote calls:
* UpdateLastUpdateCheckTime
* UpdateNavigationPreloadEnabled
* UpdateNavigationPreloadHeader

As a preparation to support retry for these calls, this CL introduces
ServiceWorkerRegistry::DidUpdateRegistration and passes it as the
callbacks of remote calls. DidUpdateRegistration keeps the original
callbacks and runs the callbacks when ServiceWorkerRegistry gets
responses for them.

DidUpdateRegistration also checks the result of remote calls. If it's
a disk error, it schedules DeleteAndStartOver as the same as other
DidXXX callbacks do.

This CL doesn't add the retry mechanism for these methods yet.

DidUpdateToActiveState is merged into DidUpdateRegistration because
it does the same thing.

Bug: 1133143
Change-Id: I50bd2f526c9cef03277ae2c3da81a6eb7aa8b63f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2550112Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#829568}
parent e861e078
...@@ -449,8 +449,8 @@ void ServiceWorkerRegistry::UpdateToActiveState(int64_t registration_id, ...@@ -449,8 +449,8 @@ void ServiceWorkerRegistry::UpdateToActiveState(int64_t registration_id,
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
GetRemoteStorageControl()->UpdateToActiveState( GetRemoteStorageControl()->UpdateToActiveState(
registration_id, origin, registration_id, origin,
base::BindOnce(&ServiceWorkerRegistry::DidUpdateToActiveState, base::BindOnce(&ServiceWorkerRegistry::DidUpdateRegistration,
weak_factory_.GetWeakPtr(), origin, std::move(callback))); weak_factory_.GetWeakPtr(), std::move(callback)));
} }
void ServiceWorkerRegistry::UpdateLastUpdateCheckTime( void ServiceWorkerRegistry::UpdateLastUpdateCheckTime(
...@@ -461,7 +461,8 @@ void ServiceWorkerRegistry::UpdateLastUpdateCheckTime( ...@@ -461,7 +461,8 @@ void ServiceWorkerRegistry::UpdateLastUpdateCheckTime(
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
GetRemoteStorageControl()->UpdateLastUpdateCheckTime( GetRemoteStorageControl()->UpdateLastUpdateCheckTime(
registration_id, origin, last_update_check_time, registration_id, origin, last_update_check_time,
CreateDatabaseStatusCallback(std::move(callback))); base::BindOnce(&ServiceWorkerRegistry::DidUpdateRegistration,
weak_factory_.GetWeakPtr(), std::move(callback)));
} }
void ServiceWorkerRegistry::UpdateNavigationPreloadEnabled( void ServiceWorkerRegistry::UpdateNavigationPreloadEnabled(
...@@ -472,7 +473,8 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadEnabled( ...@@ -472,7 +473,8 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadEnabled(
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
GetRemoteStorageControl()->UpdateNavigationPreloadEnabled( GetRemoteStorageControl()->UpdateNavigationPreloadEnabled(
registration_id, origin, enable, registration_id, origin, enable,
CreateDatabaseStatusCallback(std::move(callback))); base::BindOnce(&ServiceWorkerRegistry::DidUpdateRegistration,
weak_factory_.GetWeakPtr(), std::move(callback)));
} }
void ServiceWorkerRegistry::UpdateNavigationPreloadHeader( void ServiceWorkerRegistry::UpdateNavigationPreloadHeader(
...@@ -483,7 +485,8 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadHeader( ...@@ -483,7 +485,8 @@ void ServiceWorkerRegistry::UpdateNavigationPreloadHeader(
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId()); DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
GetRemoteStorageControl()->UpdateNavigationPreloadHeader( GetRemoteStorageControl()->UpdateNavigationPreloadHeader(
registration_id, origin, value, registration_id, origin, value,
CreateDatabaseStatusCallback(std::move(callback))); base::BindOnce(&ServiceWorkerRegistry::DidUpdateRegistration,
weak_factory_.GetWeakPtr(), std::move(callback)));
} }
void ServiceWorkerRegistry::StoreUncommittedResourceId(int64_t resource_id, void ServiceWorkerRegistry::StoreUncommittedResourceId(int64_t resource_id,
...@@ -1144,10 +1147,10 @@ void ServiceWorkerRegistry::DidDeleteRegistration( ...@@ -1144,10 +1147,10 @@ void ServiceWorkerRegistry::DidDeleteRegistration(
std::move(callback).Run(status); std::move(callback).Run(status);
} }
void ServiceWorkerRegistry::DidUpdateToActiveState( void ServiceWorkerRegistry::DidUpdateRegistration(
const GURL& origin,
StatusCallback callback, StatusCallback callback,
storage::mojom::ServiceWorkerDatabaseStatus status) { storage::mojom::ServiceWorkerDatabaseStatus status) {
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk && if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk &&
status != storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) { status != storage::mojom::ServiceWorkerDatabaseStatus::kErrorNotFound) {
ScheduleDeleteAndStartOver(); ScheduleDeleteAndStartOver();
......
...@@ -322,8 +322,7 @@ class CONTENT_EXPORT ServiceWorkerRegistry { ...@@ -322,8 +322,7 @@ class CONTENT_EXPORT ServiceWorkerRegistry {
storage::mojom::ServiceWorkerDatabaseStatus database_status, storage::mojom::ServiceWorkerDatabaseStatus database_status,
ServiceWorkerStorage::OriginState origin_state); ServiceWorkerStorage::OriginState origin_state);
void DidUpdateToActiveState( void DidUpdateRegistration(
const GURL& origin,
StatusCallback callback, StatusCallback callback,
storage::mojom::ServiceWorkerDatabaseStatus status); storage::mojom::ServiceWorkerDatabaseStatus status);
void DidWriteUncommittedResourceIds( void DidWriteUncommittedResourceIds(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment