Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java |
index 663fb569c7f2824615ce95f97387aaf4d5193304..294c6413c80800169de6db70fd2e5ea86e16b63d 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePermissionsFetcher.java |
@@ -72,6 +72,8 @@ public class WebsitePermissionsFetcher { |
queue.add(new PopupExceptionInfoFetcher()); |
// JavaScript exceptions are host-based patterns. |
queue.add(new JavaScriptExceptionInfoFetcher()); |
+ // Keygen exceptions are host-based patterns. |
+ queue.add(new KeygenExceptionInfoFetcher()); |
// Protected media identifier permission is per-origin and per-embedder. |
queue.add(new ProtectedMediaIdentifierInfoFetcher()); |
// Push notification permission is per-origin and per-embedder. |
@@ -245,6 +247,25 @@ public class WebsitePermissionsFetcher { |
} |
} |
+ private class KeygenExceptionInfoFetcher implements Task { |
+ @Override |
+ public void run(TaskQueue queue) { |
+ for (ContentSettingException exception : |
+ WebsitePreferenceBridge.getContentSettingsExceptions( |
+ ContentSettingsType.CONTENT_SETTINGS_TYPE_KEYGEN)) { |
+ // The pattern "*" represents the default setting, not a specific website. |
+ if (exception.getPattern().equals("*")) continue; |
+ WebsiteAddress address = WebsiteAddress.create(exception.getPattern()); |
+ if (address == null) continue; |
+ Set<Website> sites = findOrCreateSitesByHost(address); |
+ for (Website site : sites) { |
+ site.setKeygenException(exception); |
+ } |
+ } |
+ queue.next(); |
+ } |
+ } |
+ |
private class CookieInfoFetcher implements Task { |
@Override |
public void run(TaskQueue queue) { |