Index: extensions/browser/service_worker_manager.cc |
diff --git a/extensions/browser/service_worker_manager.cc b/extensions/browser/service_worker_manager.cc |
index 16167d4e3d9cfa31b25e5602c9fbb32d4b68f1b3..ec879faa184f61e372e2605d95b9aea5df83f3a2 100644 |
--- a/extensions/browser/service_worker_manager.cc |
+++ b/extensions/browser/service_worker_manager.cc |
@@ -48,4 +48,20 @@ void ServiceWorkerManager::OnExtensionUninstalled( |
->DeleteForOrigin(extension->url(), base::Bind(&EmptySuccessCallback)); |
} |
+void ServiceWorkerManager::OnExtensionWillBeInstalled( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ bool is_update, |
+ bool from_ephemeral, |
+ const std::string& old_name) { |
+ if (is_update) { |
+ // If |extension| is updated, then we need to fetch fresh ServiceWorker |
+ // next time. |
+ content::BrowserContext::GetStoragePartitionForSite(browser_context_, |
+ extension->url()) |
+ ->GetServiceWorkerContext() |
+ ->SetForceUpdateOnPageLoadForOrigin(extension->url()); |
+ } |
+} |
+ |
} // namespace extensions |