summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authortorne@chromium.org <torne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-11 10:22:56 +0000
committertorne@chromium.org <torne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-11 10:22:56 +0000
commit4b58e7dd7ac4e6c0f9d7480ef6e689ced72ce3d0 (patch)
treed39faabd90d2e98f7dd60b2988fa1352918fa883 /chrome
parent60b5f5aaeb21d77915310c9ba219d9d289818421 (diff)
downloadchromium_src-4b58e7dd7ac4e6c0f9d7480ef6e689ced72ce3d0.zip
chromium_src-4b58e7dd7ac4e6c0f9d7480ef6e689ced72ce3d0.tar.gz
chromium_src-4b58e7dd7ac4e6c0f9d7480ef6e689ced72ce3d0.tar.bz2
Make safe browsing optional at compile time.
Introduce a gyp variable "safe_browsing" which can be set to 0 to remove safe browsing code at compile time. Review URL: http://codereview.chromium.org/7227013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92000 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/browser_process_impl.cc12
-rw-r--r--chrome/browser/bug_report_util.cc2
-rw-r--r--chrome/browser/download/download_file_manager.cc4
-rw-r--r--chrome/browser/download/download_manager.cc8
-rw-r--r--chrome/browser/prefs/browser_prefs.cc2
-rw-r--r--chrome/browser/prerender/prerender_browsertest.cc18
-rw-r--r--chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc8
-rw-r--r--chrome/browser/ui/tab_contents/tab_contents_wrapper.cc2
-rw-r--r--chrome/chrome_browser.gypi20
-rw-r--r--chrome/chrome_renderer.gypi9
-rw-r--r--chrome/chrome_tests.gypi28
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc8
-rw-r--r--chrome/renderer/chrome_render_view_observer.cc2
13 files changed, 116 insertions, 7 deletions
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index a68073d..8455db0 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -200,8 +200,10 @@ BrowserProcessImpl::~BrowserProcessImpl() {
devtools_legacy_handler_ = NULL;
}
+#if defined(ENABLE_SAFE_BROWSING)
if (safe_browsing_service_.get())
safe_browsing_service()->ShutDown();
+#endif
if (resource_dispatcher_host_.get()) {
// Cancel pending requests and prevent new requests.
@@ -934,8 +936,10 @@ void BrowserProcessImpl::CreateBackgroundPrintingManager() {
void BrowserProcessImpl::CreateSafeBrowsingService() {
DCHECK(safe_browsing_service_.get() == NULL);
created_safe_browsing_service_ = true;
+#if defined(ENABLE_SAFE_BROWSING)
safe_browsing_service_ = SafeBrowsingService::CreateSafeBrowsingService();
safe_browsing_service_->Initialize();
+#endif
}
void BrowserProcessImpl::CreateSafeBrowsingDetectionService() {
@@ -944,6 +948,7 @@ void BrowserProcessImpl::CreateSafeBrowsingDetectionService() {
// create the service class if there was an error.
created_safe_browsing_detection_service_ = true;
+#if defined(ENABLE_SAFE_BROWSING)
FilePath model_file_dir;
Profile* profile = profile_manager() ?
profile_manager()->GetDefaultProfile() : NULL;
@@ -954,19 +959,20 @@ void BrowserProcessImpl::CreateSafeBrowsingDetectionService() {
safe_browsing::ClientSideDetectionService::Create(
model_file_dir, profile->GetRequestContext()));
}
+#endif
}
bool BrowserProcessImpl::IsSafeBrowsingDetectionServiceEnabled() {
// The safe browsing client-side detection is enabled only if the switch is
// not disabled and when safe browsing related stats are allowed to be
// collected.
-#ifdef OS_CHROMEOS
- return false;
-#else
+#if defined(ENABLE_SAFE_BROWSING) && !defined(OS_CHROMEOS)
return !CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableClientSidePhishingDetection) &&
safe_browsing_service() &&
safe_browsing_service()->CanReportStats();
+#else
+ return false;
#endif
}
diff --git a/chrome/browser/bug_report_util.cc b/chrome/browser/bug_report_util.cc
index 227f427..948e46a 100644
--- a/chrome/browser/bug_report_util.cc
+++ b/chrome/browser/bug_report_util.cc
@@ -373,6 +373,7 @@ void BugReportUtil::SendReport(Profile* profile,
DispatchFeedback(profile, post_body, 0);
}
+#if defined(ENABLE_SAFE_BROWSING)
// static
void BugReportUtil::ReportPhishing(TabContents* currentTab,
const std::string& phishing_url) {
@@ -383,3 +384,4 @@ void BugReportUtil::ReportPhishing(TabContents* currentTab,
GURL(),
PageTransition::LINK);
}
+#endif
diff --git a/chrome/browser/download/download_file_manager.cc b/chrome/browser/download/download_file_manager.cc
index 16a0ac7..37640ba 100644
--- a/chrome/browser/download/download_file_manager.cc
+++ b/chrome/browser/download/download_file_manager.cc
@@ -144,8 +144,12 @@ void DownloadFileManager::StartDownload(DownloadCreateInfo* info) {
manager->CreateDownloadItem(info);
+#if defined(ENABLE_SAFE_BROWSING)
bool hash_needed = g_browser_process->safe_browsing_service()->
DownloadBinHashNeeded();
+#else
+ bool hash_needed = false;
+#endif
BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
NewRunnableMethod(this, &DownloadFileManager::CreateDownloadFile,
diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc
index 01a0e69..c61912a 100644
--- a/chrome/browser/download/download_manager.cc
+++ b/chrome/browser/download/download_manager.cc
@@ -266,12 +266,16 @@ void DownloadManager::StartDownload(int32 download_id) {
if (!download)
return;
+#if defined(ENABLE_SAFE_BROWSING)
// Create a client to verify download URL with safebrowsing.
// It deletes itself after the callback.
scoped_refptr<DownloadSBClient> sb_client = new DownloadSBClient(
download_id, download->url_chain(), download->referrer_url());
sb_client->CheckDownloadUrl(
NewCallback(this, &DownloadManager::CheckDownloadUrlDone));
+#else
+ CheckDownloadUrlDone(download_id, false);
+#endif
}
void DownloadManager::CheckForHistoryFilesRemoval() {
@@ -665,12 +669,16 @@ void DownloadManager::OnAllDataSaved(int32 download_id,
// or there is error while it is calculated. We will skip the download hash
// check in that case.
if (!hash.empty()) {
+#if defined(ENABLE_SAFE_BROWSING)
scoped_refptr<DownloadSBClient> sb_client =
new DownloadSBClient(download_id,
download->url_chain(),
download->referrer_url());
sb_client->CheckDownloadHash(
hash, NewCallback(this, &DownloadManager::CheckDownloadHashDone));
+#else
+ CheckDownloadHashDone(download_id, false);
+#endif
}
MaybeCompleteDownload(download);
}
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 203c0ce..0f27e51 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -98,7 +98,9 @@ void RegisterLocalState(PrefService* local_state) {
MetricsService::RegisterPrefs(local_state);
printing::PrintJobManager::RegisterPrefs(local_state);
PromoResourceService::RegisterPrefs(local_state);
+#if defined(ENABLE_SAFE_BROWSING)
SafeBrowsingService::RegisterPrefs(local_state);
+#endif
browser_shutdown::RegisterPrefs(local_state);
#if defined(TOOLKIT_VIEWS)
BrowserView::RegisterBrowserViewPrefs(local_state);
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 196eff4..6c890ca 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -275,6 +275,7 @@ class WaitForLoadPrerenderContentsFactory : public PrerenderContents::Factory {
std::deque<FinalStatus> expected_final_status_queue_;
};
+#if defined(ENABLE_SAFE_BROWSING)
// A SafeBrowingService implementation that returns a fixed result for a given
// URL.
class FakeSafeBrowsingService : public SafeBrowsingService {
@@ -341,14 +342,17 @@ class TestSafeBrowsingServiceFactory : public SafeBrowsingServiceFactory {
private:
FakeSafeBrowsingService* most_recent_service_;
};
+#endif
} // namespace
class PrerenderBrowserTest : public InProcessBrowserTest {
public:
PrerenderBrowserTest()
- : safe_browsing_factory_(new TestSafeBrowsingServiceFactory()),
- prerender_contents_factory_(NULL),
+ : prerender_contents_factory_(NULL),
+#if defined(ENABLE_SAFE_BROWSING)
+ safe_browsing_factory_(new TestSafeBrowsingServiceFactory()),
+#endif
use_https_src_server_(false),
call_javascript_(true),
loader_path_("files/prerender/prerender_loader.html") {
@@ -356,7 +360,9 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
}
virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
+#if defined(ENABLE_SAFE_BROWSING)
SafeBrowsingService::RegisterFactory(safe_browsing_factory_.get());
+#endif
}
virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
@@ -511,9 +517,11 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
return static_cast<int>(history_list->GetSize());
}
+#if defined(ENABLE_SAFE_BROWSING)
FakeSafeBrowsingService* GetSafeBrowsingService() {
return safe_browsing_factory_->most_recent_service();
}
+#endif
TestPrerenderContents* GetPrerenderContents() const {
return static_cast<TestPrerenderContents*>(
@@ -646,8 +654,10 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
}
}
- scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_;
WaitForLoadPrerenderContentsFactory* prerender_contents_factory_;
+#if defined(ENABLE_SAFE_BROWSING)
+ scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_;
+#endif
GURL dest_url_;
bool use_https_src_server_;
bool call_javascript_;
@@ -1427,6 +1437,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertIframe) {
1);
}
+#if defined(ENABLE_SAFE_BROWSING)
// Ensures that we do not prerender pages with a safe browsing
// interstitial.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, SafeBrowsingPage) {
@@ -1436,6 +1447,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, SafeBrowsingPage) {
PrerenderTestURL("files/prerender/prerender_page.html",
FINAL_STATUS_SAFE_BROWSING, 1);
}
+#endif
// Checks that a local storage read will not cause prerender to fail.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderLocalStorageRead) {
diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
index 73fde30..5c10442 100644
--- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc
@@ -118,12 +118,14 @@ ResourceHandler* ChromeResourceDispatcherHostDelegate::RequestBeginning(
if (prerender_tracker_->IsPrerenderingOnIOThread(child_id, route_id))
request->set_load_flags(request->load_flags() | net::LOAD_PRERENDERING);
+#if defined(ENABLE_SAFE_BROWSING)
// Insert safe browsing at the front of the chain, so it gets to decide
// on policies first.
if (safe_browsing_->enabled()) {
handler = CreateSafeBrowsingResourceHandler(
handler, child_id, route_id, is_subresource);
}
+#endif
#if defined(OS_CHROMEOS)
// We check offline first, then check safe browsing so that we still can block
@@ -138,10 +140,14 @@ ResourceHandler* ChromeResourceDispatcherHostDelegate::DownloadStarting(
ResourceHandler* handler,
int child_id,
int route_id) {
+#if defined(ENABLE_SAFE_BROWSING)
if (!safe_browsing_->enabled())
return handler;
return CreateSafeBrowsingResourceHandler(handler, child_id, route_id, false);
+#else
+ return handler;
+#endif
}
bool ChromeResourceDispatcherHostDelegate::ShouldDeferStart(
@@ -209,6 +215,7 @@ void ChromeResourceDispatcherHostDelegate::HandleExternalProtocol(
&ExternalProtocolHandler::LaunchUrl, url, child_id, route_id));
}
+#if defined(ENABLE_SAFE_BROWSING)
ResourceHandler*
ChromeResourceDispatcherHostDelegate::CreateSafeBrowsingResourceHandler(
ResourceHandler* handler, int child_id, int route_id,
@@ -217,6 +224,7 @@ ResourceHandler*
handler, child_id, route_id, subresource, safe_browsing_,
resource_dispatcher_host_);
}
+#endif
bool ChromeResourceDispatcherHostDelegate::ShouldForceDownloadResource(
const GURL& url, const std::string& mime_type) {
diff --git a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
index f2a735f..c34f832 100644
--- a/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
+++ b/chrome/browser/ui/tab_contents/tab_contents_wrapper.cc
@@ -127,8 +127,10 @@ TabContentsWrapper::TabContentsWrapper(TabContents* contents)
password_manager_delegate_.reset(new PasswordManagerDelegateImpl(this));
password_manager_.reset(
new PasswordManager(contents, password_manager_delegate_.get()));
+#if defined(ENABLE_SAFE_BROWSING)
safebrowsing_detection_host_.reset(
safe_browsing::ClientSideDetectionHost::Create(contents));
+#endif
search_engine_tab_helper_.reset(new SearchEngineTabHelper(contents));
ssl_helper_.reset(new TabContentsSSLHelper(this));
content_settings_.reset(new TabSpecificContentSettings(contents));
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 1fc6c5e..a771a7e 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -3677,6 +3677,26 @@
['exclude', '^browser/ui/webui/options/options_managed_banner_handler.cc'],
],
}],
+ ['safe_browsing==1', {
+ 'defines': [
+ 'ENABLE_SAFE_BROWSING',
+ ],
+ }, { # safe_browsing==0
+ 'dependencies!': [
+ 'safe_browsing_report_proto',
+ ],
+ 'sources!': [
+ 'browser/download/download_safe_browsing_client.cc',
+ 'browser/download/download_safe_browsing_client.h',
+ 'browser/renderer_host/safe_browsing_resource_handler.cc',
+ 'browser/renderer_host/safe_browsing_resource_handler.h',
+ '<(protoc_out_dir)/chrome/browser/safe_browsing/report.pb.cc',
+ '<(protoc_out_dir)/chrome/browser/safe_browsing/report.pb.h',
+ ],
+ 'sources/': [
+ ['exclude', '^browser/safe_browsing/'],
+ ],
+ }],
['chromeos==0', {
'sources/': [
['exclude', '^browser/chromeos'],
diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi
index d5c8523..42e0c18 100644
--- a/chrome/chrome_renderer.gypi
+++ b/chrome/chrome_renderer.gypi
@@ -183,6 +183,15 @@
'renderer/nacl_desc_wrapper_chrome.cc',
],
}],
+ ['safe_browsing==1', {
+ 'defines': [
+ 'ENABLE_SAFE_BROWSING',
+ ],
+ }, { # safe_browsing==0
+ 'sources/': [
+ ['exclude', '^renderer/safe_browsing/'],
+ ],
+ }],
['OS=="mac"', {
'dependencies': [
'../third_party/mach_override/mach_override.gyp:mach_override',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 9360198..bebb6f6 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -2058,6 +2058,19 @@
['exclude', '^browser/prefs/proxy_policy_unittest.cc'],
],
}],
+ ['safe_browsing==1', {
+ 'defines': [
+ 'ENABLE_SAFE_BROWSING',
+ ],
+ }, { # safe_browsing == 0
+ 'sources!': [
+ 'browser/download/download_safe_browsing_client_unittest.cc',
+ ],
+ 'sources/': [
+ ['exclude', '^browser/safe_browsing/'],
+ ['exclude', '^renderer/safe_browsing/'],
+ ],
+ }],
['chromeos==1', {
'sources/': [
# TODO(thestig) Enable PrintPreviewUI tests on CrOS when
@@ -2596,6 +2609,16 @@
'browser/extensions/extension_input_apitest.cc',
],
}],
+ ['safe_browsing==1', {
+ 'defines': [
+ 'ENABLE_SAFE_BROWSING',
+ ],
+ }, { # safe_browsing == 0
+ 'sources/': [
+ ['exclude', '^browser/safe_browsing/'],
+ ['exclude', '^renderer/safe_browsing/'],
+ ],
+ }],
['internal_pdf', {
'sources': [
'test/plugin/pdf_browsertest.cc',
@@ -2784,6 +2807,11 @@
'test/out_of_proc_test_runner.cc',
],
'conditions': [
+ ['safe_browsing==0', {
+ 'sources!': [
+ 'browser/safe_browsing/safe_browsing_test.cc',
+ ],
+ }],
['OS=="win"', {
'dependencies': [
'chrome_dll_version',
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 510dd63..5339d33 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -145,7 +145,9 @@ void ChromeContentRendererClient::RenderThreadStarted() {
net_predictor_.reset(new RendererNetPredictor());
spellcheck_.reset(new SpellCheck());
visited_link_slave_.reset(new VisitedLinkSlave());
+#if defined(ENABLE_SAFE_BROWSING)
phishing_classifier_.reset(safe_browsing::PhishingClassifierFilter::Create());
+#endif
RenderThread* thread = RenderThread::current();
thread->AddFilter(new DevToolsAgentFilter());
@@ -153,7 +155,9 @@ void ChromeContentRendererClient::RenderThreadStarted() {
thread->AddObserver(chrome_observer_.get());
thread->AddObserver(extension_dispatcher_.get());
thread->AddObserver(histogram_snapshots_.get());
+#if defined(ENABLE_SAFE_BROWSING)
thread->AddObserver(phishing_classifier_.get());
+#endif
thread->AddObserver(spellcheck_.get());
thread->AddObserver(visited_link_slave_.get());
@@ -194,7 +198,7 @@ void ChromeContentRendererClient::RenderThreadStarted() {
void ChromeContentRendererClient::RenderViewCreated(RenderView* render_view) {
safe_browsing::PhishingClassifierDelegate* phishing_classifier = NULL;
-#ifndef OS_CHROMEOS
+#if defined(ENABLE_SAFE_BROWSING) && !defined(OS_CHROMEOS)
if (!CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisableClientSidePhishingDetection)) {
phishing_classifier =
@@ -211,7 +215,9 @@ void ChromeContentRendererClient::RenderViewCreated(RenderView* render_view) {
new PrintWebViewHelper(render_view);
new SearchBox(render_view);
new SpellCheckProvider(render_view, spellcheck_.get());
+#if defined(ENABLE_SAFE_BROWSING)
safe_browsing::MalwareDOMDetails::Create(render_view);
+#endif
#if defined(OS_MACOSX)
new TextInputClientObserver(render_view);
diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc
index 0cca0c2..dd0977e 100644
--- a/chrome/renderer/chrome_render_view_observer.cc
+++ b/chrome/renderer/chrome_render_view_observer.cc
@@ -635,9 +635,11 @@ void ChromeRenderViewObserver::CapturePageInfo(int load_id,
CaptureThumbnail();
}
+#if defined(ENABLE_SAFE_BROWSING)
// Will swap out the string.
if (phishing_classifier_)
phishing_classifier_->PageCaptured(&contents, preliminary_capture);
+#endif
}
void ChromeRenderViewObserver::CaptureText(WebFrame* frame,