diff options
author | torne@chromium.org <torne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-11 10:22:56 +0000 |
---|---|---|
committer | torne@chromium.org <torne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-11 10:22:56 +0000 |
commit | 4b58e7dd7ac4e6c0f9d7480ef6e689ced72ce3d0 (patch) | |
tree | d39faabd90d2e98f7dd60b2988fa1352918fa883 /chrome | |
parent | 60b5f5aaeb21d77915310c9ba219d9d289818421 (diff) | |
download | chromium_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.cc | 12 | ||||
-rw-r--r-- | chrome/browser/bug_report_util.cc | 2 | ||||
-rw-r--r-- | chrome/browser/download/download_file_manager.cc | 4 | ||||
-rw-r--r-- | chrome/browser/download/download_manager.cc | 8 | ||||
-rw-r--r-- | chrome/browser/prefs/browser_prefs.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prerender/prerender_browsertest.cc | 18 | ||||
-rw-r--r-- | chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc | 8 | ||||
-rw-r--r-- | chrome/browser/ui/tab_contents/tab_contents_wrapper.cc | 2 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 20 | ||||
-rw-r--r-- | chrome/chrome_renderer.gypi | 9 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 28 | ||||
-rw-r--r-- | chrome/renderer/chrome_content_renderer_client.cc | 8 | ||||
-rw-r--r-- | chrome/renderer/chrome_render_view_observer.cc | 2 |
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, |