Index: chrome/browser/storage/durable_storage_permission_context.cc |
diff --git a/chrome/browser/storage/durable_storage_permission_context.cc b/chrome/browser/storage/durable_storage_permission_context.cc |
index 5d3c29e74d1ac0da56e045225348616f6594fa6f..5ea22bf0ac1d2e45cfda3fbd4580faa56c3396fc 100644 |
--- a/chrome/browser/storage/durable_storage_permission_context.cc |
+++ b/chrome/browser/storage/durable_storage_permission_context.cc |
@@ -11,6 +11,7 @@ |
#include "chrome/browser/content_settings/cookie_settings_factory.h" |
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
#include "chrome/browser/content_settings/tab_specific_content_settings.h" |
+#include "chrome/browser/engagement/important_sites_util.h" |
#include "chrome/browser/permissions/permission_request_id.h" |
#include "chrome/browser/profiles/profile.h" |
#include "components/bookmarks/browser/bookmark_model.h" |
@@ -21,6 +22,7 @@ |
#include "content/public/browser/child_process_security_policy.h" |
#include "content/public/browser/permission_type.h" |
#include "content/public/common/origin_util.h" |
+#include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
#include "url/gurl.h" |
using bookmarks::BookmarkModel; |
@@ -62,13 +64,20 @@ void DurableStoragePermissionContext::DecidePermission( |
return; |
} |
- // TODO(dmurph): Remove bookmarks check in favor of important sites. |
- BookmarkModel* model = |
- BookmarkModelFactory::GetForBrowserContextIfExists(profile()); |
- if (model) { |
- std::vector<bookmarks::BookmarkModel::URLAndTitle> bookmarks; |
- model->GetBookmarks(&bookmarks); |
- if (IsOriginBookmarked(bookmarks, requesting_origin)) { |
+ const size_t kMaxImportantResults = 10; |
+ std::vector<ImportantSitesUtil::ImportantDomainInfo> important_sites = |
+ ImportantSitesUtil::GetImportantRegisterableDomains(profile(), |
+ kMaxImportantResults); |
+ |
+ std::string registerable_domain = |
+ net::registry_controlled_domains::GetDomainAndRegistry( |
+ requesting_origin, |
+ net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); |
+ if (registerable_domain.empty() && requesting_origin.HostIsIPAddress()) |
+ registerable_domain = requesting_origin.host(); |
+ |
+ for (const auto& important_site : important_sites) { |
+ if (important_site.registerable_domain == registerable_domain) { |
NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, |
true /* persist */, CONTENT_SETTING_ALLOW); |
return; |
@@ -97,15 +106,3 @@ void DurableStoragePermissionContext::UpdateContentSetting( |
bool DurableStoragePermissionContext::IsRestrictedToSecureOrigins() const { |
return true; |
} |
- |
-bool DurableStoragePermissionContext::IsOriginBookmarked( |
- const std::vector<bookmarks::BookmarkModel::URLAndTitle>& bookmarks, |
- const GURL& origin) { |
- BookmarkModel::URLAndTitle looking_for; |
- looking_for.url = origin; |
- return std::binary_search(bookmarks.begin(), bookmarks.end(), looking_for, |
- [](const BookmarkModel::URLAndTitle& a, |
- const BookmarkModel::URLAndTitle& b) { |
- return a.url.GetOrigin() < b.url.GetOrigin(); |
- }); |
-} |