forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SafeBrowsing for Network Service: refactor the browser-side code.
This is a preparation for adding support for Android WebView: - moves some files from chrome/browser to components/safe_browsing/browser. - introduces UrlCheckerDelegate interface and moves chrome-specific logic into a subclass of UrlCheckerDelegate. Bug=715673 Change-Id: I7c7e440f5146e6b7928e71265e7d5657f2c5b295 Reviewed-on: https://chromium-review.googlesource.com/567586 Commit-Queue: Yuzhu Shen <yzshen@chromium.org> Reviewed-by: Varun Khaneja <vakh@chromium.org> Reviewed-by: John Abd-El-Malek <jam@chromium.org> Cr-Commit-Position: refs/heads/master@{#487644}
- Loading branch information
Showing
16 changed files
with
324 additions
and
136 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
// Copyright 2017 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
#include "chrome/browser/safe_browsing/url_checker_delegate_impl.h" | ||
|
||
#include "base/bind.h" | ||
#include "chrome/browser/prerender/prerender_contents.h" | ||
#include "chrome/browser/prerender/prerender_final_status.h" | ||
#include "chrome/browser/safe_browsing/ui_manager.h" | ||
#include "components/safe_browsing_db/database_manager.h" | ||
#include "components/safe_browsing_db/v4_protocol_manager_util.h" | ||
#include "content/public/browser/browser_thread.h" | ||
#include "content/public/browser/web_contents.h" | ||
|
||
namespace safe_browsing { | ||
namespace { | ||
|
||
// Destroys the prerender contents associated with the web_contents, if any. | ||
void DestroyPrerenderContents( | ||
const base::Callback<content::WebContents*()>& web_contents_getter) { | ||
content::WebContents* web_contents = web_contents_getter.Run(); | ||
if (web_contents) { | ||
prerender::PrerenderContents* prerender_contents = | ||
prerender::PrerenderContents::FromWebContents(web_contents); | ||
if (prerender_contents) | ||
prerender_contents->Destroy(prerender::FINAL_STATUS_SAFE_BROWSING); | ||
} | ||
} | ||
|
||
void StartDisplayingBlockingPage( | ||
scoped_refptr<BaseUIManager> ui_manager, | ||
const security_interstitials::UnsafeResource& resource) { | ||
content::WebContents* web_contents = resource.web_contents_getter.Run(); | ||
if (web_contents) { | ||
prerender::PrerenderContents* prerender_contents = | ||
prerender::PrerenderContents::FromWebContents(web_contents); | ||
if (prerender_contents) { | ||
prerender_contents->Destroy(prerender::FINAL_STATUS_SAFE_BROWSING); | ||
} else { | ||
ui_manager->DisplayBlockingPage(resource); | ||
return; | ||
} | ||
} | ||
|
||
// Tab is gone or it's being prerendered. | ||
content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, | ||
base::Bind(resource.callback, false)); | ||
} | ||
|
||
} // namespace | ||
|
||
UrlCheckerDelegateImpl::UrlCheckerDelegateImpl( | ||
scoped_refptr<SafeBrowsingDatabaseManager> database_manager, | ||
scoped_refptr<SafeBrowsingUIManager> ui_manager) | ||
: database_manager_(std::move(database_manager)), | ||
ui_manager_(std::move(ui_manager)), | ||
threat_types_( | ||
CreateSBThreatTypeSet({safe_browsing::SB_THREAT_TYPE_URL_MALWARE, | ||
safe_browsing::SB_THREAT_TYPE_URL_PHISHING, | ||
safe_browsing::SB_THREAT_TYPE_URL_UNWANTED})) { | ||
} | ||
|
||
UrlCheckerDelegateImpl::~UrlCheckerDelegateImpl() = default; | ||
|
||
void UrlCheckerDelegateImpl::MaybeDestroyPrerenderContents( | ||
const base::Callback<content::WebContents*()>& web_contents_getter) { | ||
// Destroy the prefetch with FINAL_STATUS_SAFEBROSWING. | ||
content::BrowserThread::PostTask( | ||
content::BrowserThread::UI, FROM_HERE, | ||
base::BindOnce(&DestroyPrerenderContents, web_contents_getter)); | ||
} | ||
|
||
void UrlCheckerDelegateImpl::StartDisplayingBlockingPageHelper( | ||
const security_interstitials::UnsafeResource& resource) { | ||
content::BrowserThread::PostTask( | ||
content::BrowserThread::UI, FROM_HERE, | ||
base::BindOnce(&StartDisplayingBlockingPage, ui_manager_, resource)); | ||
} | ||
|
||
const SBThreatTypeSet& UrlCheckerDelegateImpl::GetThreatTypes() { | ||
return threat_types_; | ||
} | ||
|
||
SafeBrowsingDatabaseManager* UrlCheckerDelegateImpl::GetDatabaseManager() { | ||
return database_manager_.get(); | ||
} | ||
|
||
BaseUIManager* UrlCheckerDelegateImpl::GetUIManager() { | ||
return ui_manager_.get(); | ||
} | ||
|
||
} // namespace safe_browsing |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
// Copyright 2017 The Chromium Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style license that can be | ||
// found in the LICENSE file. | ||
|
||
#ifndef CHROME_BROWSER_SAFE_BROWSING_URL_CHECKER_DELEGATE_IMPL_H_ | ||
#define CHROME_BROWSER_SAFE_BROWSING_URL_CHECKER_DELEGATE_IMPL_H_ | ||
|
||
#include "base/macros.h" | ||
#include "base/memory/ref_counted.h" | ||
#include "components/safe_browsing/browser/url_checker_delegate.h" | ||
|
||
namespace safe_browsing { | ||
|
||
class SafeBrowsingUIManager; | ||
|
||
class UrlCheckerDelegateImpl : public UrlCheckerDelegate { | ||
public: | ||
UrlCheckerDelegateImpl( | ||
scoped_refptr<SafeBrowsingDatabaseManager> database_manager, | ||
scoped_refptr<SafeBrowsingUIManager> ui_manager); | ||
|
||
private: | ||
~UrlCheckerDelegateImpl() override; | ||
|
||
// Implementation of UrlCheckerDelegate: | ||
void MaybeDestroyPrerenderContents( | ||
const base::Callback<content::WebContents*()>& web_contents_getter) | ||
override; | ||
void StartDisplayingBlockingPageHelper( | ||
const security_interstitials::UnsafeResource& resource) override; | ||
const SBThreatTypeSet& GetThreatTypes() override; | ||
SafeBrowsingDatabaseManager* GetDatabaseManager() override; | ||
BaseUIManager* GetUIManager() override; | ||
|
||
scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; | ||
scoped_refptr<SafeBrowsingUIManager> ui_manager_; | ||
SBThreatTypeSet threat_types_; | ||
|
||
DISALLOW_COPY_AND_ASSIGN(UrlCheckerDelegateImpl); | ||
}; | ||
|
||
} // namespace safe_browsing | ||
|
||
#endif // CHROME_BROWSER_SAFE_BROWSING_URL_CHECKER_DELEGATE_IMPL_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.