| Index: chrome/browser/installable/installable_manager.cc
|
| diff --git a/chrome/browser/installable/installable_manager.cc b/chrome/browser/installable/installable_manager.cc
|
| index a4990888722e0e1366dcdd520e21f0d47b68ed2d..b52c8cc0e20429272cb81c26e93e3ec5096412b1 100644
|
| --- a/chrome/browser/installable/installable_manager.cc
|
| +++ b/chrome/browser/installable/installable_manager.cc
|
| @@ -406,21 +406,29 @@ void InstallableManager::CheckServiceWorker() {
|
| web_contents->GetSiteInstance());
|
| DCHECK(storage_partition);
|
|
|
| - storage_partition->GetServiceWorkerContext()->CheckHasServiceWorker(
|
| + storage_partition->GetServiceWorkerContext()->CheckServiceWorkerStatus(
|
| web_contents->GetLastCommittedURL(), manifest().start_url,
|
| - base::Bind(&InstallableManager::OnDidCheckHasServiceWorker,
|
| + base::Bind(&InstallableManager::OnDidCheckServiceWorkerStatus,
|
| weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| -void InstallableManager::OnDidCheckHasServiceWorker(bool has_service_worker) {
|
| +void InstallableManager::OnDidCheckServiceWorkerStatus(
|
| + content::ServiceWorkerStatus status) {
|
| if (!GetWebContents())
|
| return;
|
|
|
| - if (has_service_worker) {
|
| - installable_->installable = true;
|
| - } else {
|
| - installable_->installable = false;
|
| - installable_->error = NO_MATCHING_SERVICE_WORKER;
|
| + switch (status) {
|
| + case content::ServiceWorkerStatus::SERVICE_WORKER_WITH_FETCH_HANDLER:
|
| + installable_->installable = true;
|
| + break;
|
| + case content::ServiceWorkerStatus::SERVICE_WORKER_NO_FETCH_HANDLER:
|
| + installable_->installable = false;
|
| + installable_->error = NOT_OFFLINE_CAPABLE;
|
| + break;
|
| + case content::ServiceWorkerStatus::NO_SERVICE_WORKER:
|
| + installable_->installable = false;
|
| + installable_->error = NO_MATCHING_SERVICE_WORKER;
|
| + break;
|
| }
|
|
|
| installable_->fetched = true;
|
|
|