Index: chrome/browser/content_settings/tab_specific_content_settings.cc |
diff --git a/chrome/browser/content_settings/tab_specific_content_settings.cc b/chrome/browser/content_settings/tab_specific_content_settings.cc |
index cbb29ea9f2c664cdb2ac7e2c740e9887e586449d..89d968c54e6e377c29f3ba17f05f606c84f2328b 100644 |
--- a/chrome/browser/content_settings/tab_specific_content_settings.cc |
+++ b/chrome/browser/content_settings/tab_specific_content_settings.cc |
@@ -237,6 +237,20 @@ void TabSpecificContentSettings::FileSystemAccessed(int render_process_id, |
settings->OnFileSystemAccessed(url, blocked_by_policy); |
} |
+// static |
+void TabSpecificContentSettings::ServiceWorkerAccessed(int render_process_id, |
+ int render_frame_id, |
+ const GURL& scope, |
+ bool blocked_by_policy) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ DCHECK(scope.is_valid()); |
+ |
+ TabSpecificContentSettings* settings = |
+ GetForFrame(render_process_id, render_frame_id); |
+ if (settings) |
+ settings->OnServiceWorkerAccessed(scope, blocked_by_policy); |
+} |
+ |
bool TabSpecificContentSettings::IsContentBlocked( |
ContentSettingsType content_type) const { |
DCHECK(content_type != CONTENT_SETTINGS_TYPE_GEOLOCATION) |
@@ -462,6 +476,21 @@ void TabSpecificContentSettings::OnLocalStorageAccessed( |
NotifySiteDataObservers(); |
} |
+void TabSpecificContentSettings::OnServiceWorkerAccessed( |
+ const GURL& scope, |
+ bool blocked_by_policy) { |
+ DCHECK(scope.is_valid()); |
+ if (blocked_by_policy) { |
+ blocked_local_shared_objects_.service_workers()->AddServiceWorker( |
+ scope.GetOrigin(), std::vector<GURL>(1, scope)); |
+ OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES); |
+ } else { |
+ allowed_local_shared_objects_.service_workers()->AddServiceWorker( |
+ scope.GetOrigin(), std::vector<GURL>(1, scope)); |
+ OnContentAllowed(CONTENT_SETTINGS_TYPE_COOKIES); |
+ } |
+} |
+ |
void TabSpecificContentSettings::OnWebDatabaseAccessed( |
const GURL& url, |
const base::string16& name, |