Index: chrome/browser/safe_browsing/ui_manager.cc |
diff --git a/chrome/browser/safe_browsing/ui_manager.cc b/chrome/browser/safe_browsing/ui_manager.cc |
index 6cdc91586cff1ea2f834bfce8828ab1337c72777..aa96596d648e1e63ca942ebcc39264ec52f76174 100644 |
--- a/chrome/browser/safe_browsing/ui_manager.cc |
+++ b/chrome/browser/safe_browsing/ui_manager.cc |
@@ -54,9 +54,11 @@ class WhitelistUrlSet : public base::SupportsUserData::Data { |
return set_.find(url.GetWithEmptyPath()) != set_.end(); |
} |
+ void RemovePending(const GURL url) { pending_.erase(url.GetWithEmptyPath()); } |
Nathan Parker
2016/10/27 18:31:02
const GURL&
Though maybe the compiler would do tha
estark
2016/10/28 17:57:47
Done.
|
+ |
void Insert(const GURL url) { |
set_.insert(url.GetWithEmptyPath()); |
- pending_.erase(url.GetWithEmptyPath()); |
+ RemovePending(url); |
} |
bool ContainsPending(const GURL url) { |
@@ -74,6 +76,17 @@ class WhitelistUrlSet : public base::SupportsUserData::Data { |
DISALLOW_COPY_AND_ASSIGN(WhitelistUrlSet); |
}; |
+GURL GetWhitelistUrl( |
+ const safe_browsing::SafeBrowsingUIManager::UnsafeResource& resource) { |
+ if (resource.is_subresource) { |
+ NavigationEntry* entry = resource.GetNavigationEntryForResource(); |
+ if (!entry) |
+ return GURL(); |
+ return entry->GetURL(); |
Nathan Parker
2016/10/27 18:31:02
How about returning .GetWithEmptyPath() so you don
estark
2016/10/28 17:57:47
Done.
|
+ } |
+ return resource.url; |
+} |
+ |
} // namespace |
namespace safe_browsing { |
@@ -163,6 +176,8 @@ void SafeBrowsingUIManager::OnBlockingPageDone( |
if (proceed) |
AddToWhitelistUrlSet(resource, false /* Pending -> permanent */); |
+ else |
+ RemoveFromPendingWhitelistUrlSet(resource); |
} |
} |
@@ -374,15 +389,9 @@ void SafeBrowsingUIManager::AddToWhitelistUrlSet(const UnsafeResource& resource, |
web_contents->SetUserData(kWhitelistKey, site_list); |
} |
- GURL whitelisted_url; |
- if (resource.is_subresource) { |
- NavigationEntry* entry = resource.GetNavigationEntryForResource(); |
- if (!entry) |
- return; |
- whitelisted_url = entry->GetURL(); |
- } else { |
- whitelisted_url = resource.url; |
- } |
+ GURL whitelisted_url = GetWhitelistUrl(resource); |
+ if (whitelisted_url.is_empty()) |
+ return; |
if (pending) { |
site_list->InsertPending(whitelisted_url); |
@@ -394,6 +403,21 @@ void SafeBrowsingUIManager::AddToWhitelistUrlSet(const UnsafeResource& resource, |
web_contents->DidChangeVisibleSecurityState(); |
} |
+void SafeBrowsingUIManager::RemoveFromPendingWhitelistUrlSet( |
+ const UnsafeResource& resource) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::UI); |
+ WebContents* web_contents = resource.web_contents_getter.Run(); |
+ WhitelistUrlSet* site_list = |
+ static_cast<WhitelistUrlSet*>(web_contents->GetUserData(kWhitelistKey)); |
+ GURL whitelisted_url = GetWhitelistUrl(resource); |
+ if (whitelisted_url.is_empty()) |
+ return; |
+ DCHECK(site_list->ContainsPending(whitelisted_url)); |
+ site_list->RemovePending(whitelisted_url); |
+ // Notify security UI that security state has changed. |
+ web_contents->DidChangeVisibleSecurityState(); |
+} |
+ |
bool SafeBrowsingUIManager::IsWhitelisted(const UnsafeResource& resource) { |
NavigationEntry* entry = nullptr; |
if (resource.is_subresource) { |