| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" | 5 #include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 #include "components/nacl/browser/nacl_browser.h" | 57 #include "components/nacl/browser/nacl_browser.h" |
| 58 #include "components/nacl/browser/pnacl_host.h" | 58 #include "components/nacl/browser/pnacl_host.h" |
| 59 #include "components/ntp_snippets/bookmarks/bookmark_last_visit_utils.h" | 59 #include "components/ntp_snippets/bookmarks/bookmark_last_visit_utils.h" |
| 60 #include "components/ntp_snippets/content_suggestions_service.h" | 60 #include "components/ntp_snippets/content_suggestions_service.h" |
| 61 #include "components/omnibox/browser/omnibox_pref_names.h" | 61 #include "components/omnibox/browser/omnibox_pref_names.h" |
| 62 #include "components/password_manager/core/browser/password_store.h" | 62 #include "components/password_manager/core/browser/password_store.h" |
| 63 #include "components/prefs/pref_service.h" | 63 #include "components/prefs/pref_service.h" |
| 64 #include "components/previews/core/previews_ui_service.h" | 64 #include "components/previews/core/previews_ui_service.h" |
| 65 #include "components/search_engines/template_url_service.h" | 65 #include "components/search_engines/template_url_service.h" |
| 66 #include "components/sessions/core/tab_restore_service.h" | 66 #include "components/sessions/core/tab_restore_service.h" |
| 67 #include "content/public/browser/ssl_host_state_delegate.h" |
| 68 #include "content/public/browser/storage_partition.h" |
| 67 #include "content/public/browser/user_metrics.h" | 69 #include "content/public/browser/user_metrics.h" |
| 68 #include "net/cookies/cookie_store.h" | 70 #include "net/cookies/cookie_store.h" |
| 71 #include "net/http/http_transaction_factory.h" |
| 69 #include "net/url_request/url_request_context.h" | 72 #include "net/url_request/url_request_context.h" |
| 70 #include "net/url_request/url_request_context_getter.h" | 73 #include "net/url_request/url_request_context_getter.h" |
| 71 | 74 |
| 72 #if defined(OS_ANDROID) | 75 #if defined(OS_ANDROID) |
| 73 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" | 76 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" |
| 74 #include "chrome/browser/android/webapps/webapp_registry.h" | 77 #include "chrome/browser/android/webapps/webapp_registry.h" |
| 75 #include "chrome/browser/precache/precache_manager_factory.h" | 78 #include "chrome/browser/precache/precache_manager_factory.h" |
| 76 #include "components/offline_pages/core/offline_page_feature.h" | 79 #include "components/offline_pages/core/offline_page_feature.h" |
| 77 #include "components/offline_pages/core/offline_page_model.h" | 80 #include "components/offline_pages/core/offline_page_model.h" |
| 78 #include "components/precache/content/precache_manager.h" | 81 #include "components/precache/content/precache_manager.h" |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 } | 203 } |
| 201 | 204 |
| 202 void ClearHostnameResolutionCacheOnIOThread( | 205 void ClearHostnameResolutionCacheOnIOThread( |
| 203 IOThread* io_thread, | 206 IOThread* io_thread, |
| 204 base::Callback<bool(const std::string&)> host_filter) { | 207 base::Callback<bool(const std::string&)> host_filter) { |
| 205 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 208 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 206 | 209 |
| 207 io_thread->ClearHostCache(host_filter); | 210 io_thread->ClearHostCache(host_filter); |
| 208 } | 211 } |
| 209 | 212 |
| 213 void ClearHttpAuthCacheOnIOThread( |
| 214 scoped_refptr<net::URLRequestContextGetter> context_getter, |
| 215 base::Time delete_begin) { |
| 216 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 217 |
| 218 net::HttpNetworkSession* http_session = context_getter->GetURLRequestContext() |
| 219 ->http_transaction_factory() |
| 220 ->GetSession(); |
| 221 DCHECK(http_session); |
| 222 http_session->http_auth_cache()->ClearEntriesAddedWithin(base::Time::Now() - |
| 223 delete_begin); |
| 224 http_session->CloseAllConnections(); |
| 225 } |
| 226 |
| 210 } // namespace | 227 } // namespace |
| 211 | 228 |
| 212 ChromeBrowsingDataRemoverDelegate::SubTask::SubTask( | 229 ChromeBrowsingDataRemoverDelegate::SubTask::SubTask( |
| 213 const base::Closure& forward_callback) | 230 const base::Closure& forward_callback) |
| 214 : is_pending_(false), | 231 : is_pending_(false), |
| 215 forward_callback_(forward_callback), | 232 forward_callback_(forward_callback), |
| 216 weak_ptr_factory_(this) { | 233 weak_ptr_factory_(this) { |
| 217 DCHECK(!forward_callback_.is_null()); | 234 DCHECK(!forward_callback_.is_null()); |
| 218 } | 235 } |
| 219 | 236 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 clear_keyword_data_(sub_task_forward_callback_), | 270 clear_keyword_data_(sub_task_forward_callback_), |
| 254 #if !defined(DISABLE_NACL) | 271 #if !defined(DISABLE_NACL) |
| 255 clear_nacl_cache_(sub_task_forward_callback_), | 272 clear_nacl_cache_(sub_task_forward_callback_), |
| 256 clear_pnacl_cache_(sub_task_forward_callback_), | 273 clear_pnacl_cache_(sub_task_forward_callback_), |
| 257 #endif | 274 #endif |
| 258 clear_hostname_resolution_cache_(sub_task_forward_callback_), | 275 clear_hostname_resolution_cache_(sub_task_forward_callback_), |
| 259 clear_network_predictor_(sub_task_forward_callback_), | 276 clear_network_predictor_(sub_task_forward_callback_), |
| 260 clear_networking_history_(sub_task_forward_callback_), | 277 clear_networking_history_(sub_task_forward_callback_), |
| 261 clear_passwords_(sub_task_forward_callback_), | 278 clear_passwords_(sub_task_forward_callback_), |
| 262 clear_passwords_stats_(sub_task_forward_callback_), | 279 clear_passwords_stats_(sub_task_forward_callback_), |
| 280 clear_http_auth_cache_(sub_task_forward_callback_), |
| 263 clear_platform_keys_(sub_task_forward_callback_), | 281 clear_platform_keys_(sub_task_forward_callback_), |
| 264 #if defined(OS_ANDROID) | 282 #if defined(OS_ANDROID) |
| 265 clear_precache_history_(sub_task_forward_callback_), | 283 clear_precache_history_(sub_task_forward_callback_), |
| 266 clear_offline_page_data_(sub_task_forward_callback_), | 284 clear_offline_page_data_(sub_task_forward_callback_), |
| 267 #endif | 285 #endif |
| 268 #if BUILDFLAG(ENABLE_WEBRTC) | 286 #if BUILDFLAG(ENABLE_WEBRTC) |
| 269 clear_webrtc_logs_(sub_task_forward_callback_), | 287 clear_webrtc_logs_(sub_task_forward_callback_), |
| 270 #endif | 288 #endif |
| 271 clear_auto_sign_in_(sub_task_forward_callback_), | 289 clear_auto_sign_in_(sub_task_forward_callback_), |
| 272 #if defined(OS_ANDROID) | 290 #if defined(OS_ANDROID) |
| (...skipping 29 matching lines...) Expand all Loading... |
| 302 base::Callback<bool(const GURL&)> nullable_filter = | 320 base::Callback<bool(const GURL&)> nullable_filter = |
| 303 filter_builder.IsEmptyBlacklist() ? base::Callback<bool(const GURL&)>() | 321 filter_builder.IsEmptyBlacklist() ? base::Callback<bool(const GURL&)>() |
| 304 : filter; | 322 : filter; |
| 305 | 323 |
| 306 // Managed devices and supervised users can have restrictions on history | 324 // Managed devices and supervised users can have restrictions on history |
| 307 // deletion. | 325 // deletion. |
| 308 PrefService* prefs = profile_->GetPrefs(); | 326 PrefService* prefs = profile_->GetPrefs(); |
| 309 bool may_delete_history = prefs->GetBoolean( | 327 bool may_delete_history = prefs->GetBoolean( |
| 310 prefs::kAllowDeletingBrowserHistory); | 328 prefs::kAllowDeletingBrowserHistory); |
| 311 | 329 |
| 330 // All the UI entry points into the BrowsingDataRemoverImpl should be |
| 331 // disabled, but this will fire if something was missed or added. |
| 332 DCHECK(may_delete_history || |
| 333 (remove_mask & BrowsingDataRemover::REMOVE_NOCHECKS) || |
| 334 (!(remove_mask & BrowsingDataRemover::REMOVE_HISTORY) && |
| 335 !(remove_mask & BrowsingDataRemover::REMOVE_DOWNLOADS))); |
| 336 |
| 312 ////////////////////////////////////////////////////////////////////////////// | 337 ////////////////////////////////////////////////////////////////////////////// |
| 313 // REMOVE_HISTORY | 338 // REMOVE_HISTORY |
| 314 if ((remove_mask & BrowsingDataRemover::REMOVE_HISTORY) && | 339 if ((remove_mask & BrowsingDataRemover::REMOVE_HISTORY) && |
| 315 may_delete_history) { | 340 may_delete_history) { |
| 316 history::HistoryService* history_service = | 341 history::HistoryService* history_service = |
| 317 HistoryServiceFactory::GetForProfile( | 342 HistoryServiceFactory::GetForProfile( |
| 318 profile_, ServiceAccessType::EXPLICIT_ACCESS); | 343 profile_, ServiceAccessType::EXPLICIT_ACCESS); |
| 319 if (history_service) { | 344 if (history_service) { |
| 320 // TODO(dmurph): Support all backends with filter (crbug.com/113621). | 345 // TODO(dmurph): Support all backends with filter (crbug.com/113621). |
| 321 content::RecordAction(UserMetricsAction("ClearBrowsingData_History")); | 346 content::RecordAction(UserMetricsAction("ClearBrowsingData_History")); |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 } | 533 } |
| 509 } | 534 } |
| 510 | 535 |
| 511 // |previews_service| is null if |profile_| is off the record. | 536 // |previews_service| is null if |profile_| is off the record. |
| 512 PreviewsService* previews_service = | 537 PreviewsService* previews_service = |
| 513 PreviewsServiceFactory::GetForProfile(profile_); | 538 PreviewsServiceFactory::GetForProfile(profile_); |
| 514 if (previews_service && previews_service->previews_ui_service()) { | 539 if (previews_service && previews_service->previews_ui_service()) { |
| 515 previews_service->previews_ui_service()->ClearBlackList(delete_begin_, | 540 previews_service->previews_ui_service()->ClearBlackList(delete_begin_, |
| 516 delete_end_); | 541 delete_end_); |
| 517 } | 542 } |
| 543 |
| 544 // The SSL Host State that tracks SSL interstitial "proceed" decisions may |
| 545 // include origins that the user has visited, so it must be cleared. |
| 546 // TODO(msramek): We can reuse the plugin filter here, since both plugins |
| 547 // and SSL host state are scoped to hosts and represent them as std::string. |
| 548 // Rename the method to indicate its more general usage. |
| 549 if (profile_->GetSSLHostStateDelegate()) { |
| 550 profile_->GetSSLHostStateDelegate()->Clear( |
| 551 filter_builder.IsEmptyBlacklist() |
| 552 ? base::Callback<bool(const std::string&)>() |
| 553 : filter_builder.BuildPluginFilter()); |
| 554 } |
| 518 } | 555 } |
| 519 | 556 |
| 520 ////////////////////////////////////////////////////////////////////////////// | 557 ////////////////////////////////////////////////////////////////////////////// |
| 521 // REMOVE_DOWNLOADS | 558 // REMOVE_DOWNLOADS |
| 522 if ((remove_mask & BrowsingDataRemover::REMOVE_DOWNLOADS) && | 559 if ((remove_mask & BrowsingDataRemover::REMOVE_DOWNLOADS) && |
| 523 may_delete_history) { | 560 may_delete_history) { |
| 524 DownloadPrefs* download_prefs = DownloadPrefs::FromDownloadManager( | 561 DownloadPrefs* download_prefs = DownloadPrefs::FromDownloadManager( |
| 525 BrowserContext::GetDownloadManager(profile_)); | 562 BrowserContext::GetDownloadManager(profile_)); |
| 526 download_prefs->SetSaveFilePath(download_prefs->DownloadPath()); | 563 download_prefs->SetSaveFilePath(download_prefs->DownloadPath()); |
| 527 } | 564 } |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 611 password_manager::PasswordStore* password_store = | 648 password_manager::PasswordStore* password_store = |
| 612 PasswordStoreFactory::GetForProfile( | 649 PasswordStoreFactory::GetForProfile( |
| 613 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); | 650 profile_, ServiceAccessType::EXPLICIT_ACCESS).get(); |
| 614 | 651 |
| 615 if (password_store) { | 652 if (password_store) { |
| 616 clear_passwords_.Start(); | 653 clear_passwords_.Start(); |
| 617 password_store->RemoveLoginsByURLAndTime( | 654 password_store->RemoveLoginsByURLAndTime( |
| 618 filter, delete_begin_, delete_end_, | 655 filter, delete_begin_, delete_end_, |
| 619 clear_passwords_.GetCompletionCallback()); | 656 clear_passwords_.GetCompletionCallback()); |
| 620 } | 657 } |
| 658 |
| 659 scoped_refptr<net::URLRequestContextGetter> request_context = |
| 660 BrowserContext::GetDefaultStoragePartition(profile_) |
| 661 ->GetURLRequestContext(); |
| 662 clear_http_auth_cache_.Start(); |
| 663 BrowserThread::PostTaskAndReply( |
| 664 BrowserThread::IO, FROM_HERE, |
| 665 base::Bind(&ClearHttpAuthCacheOnIOThread, std::move(request_context), |
| 666 delete_begin_), |
| 667 clear_http_auth_cache_.GetCompletionCallback()); |
| 621 } | 668 } |
| 622 | 669 |
| 623 if (remove_mask & BrowsingDataRemover::REMOVE_COOKIES) { | 670 if (remove_mask & BrowsingDataRemover::REMOVE_COOKIES) { |
| 624 password_manager::PasswordStore* password_store = | 671 password_manager::PasswordStore* password_store = |
| 625 PasswordStoreFactory::GetForProfile(profile_, | 672 PasswordStoreFactory::GetForProfile(profile_, |
| 626 ServiceAccessType::EXPLICIT_ACCESS) | 673 ServiceAccessType::EXPLICIT_ACCESS) |
| 627 .get(); | 674 .get(); |
| 628 | 675 |
| 629 if (password_store) { | 676 if (password_store) { |
| 630 clear_auto_sign_in_.Start(); | 677 clear_auto_sign_in_.Start(); |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 840 !clear_form_.is_pending() && !clear_history_.is_pending() && | 887 !clear_form_.is_pending() && !clear_history_.is_pending() && |
| 841 !clear_hostname_resolution_cache_.is_pending() && | 888 !clear_hostname_resolution_cache_.is_pending() && |
| 842 !clear_keyword_data_.is_pending() && | 889 !clear_keyword_data_.is_pending() && |
| 843 #if !defined(DISABLE_NACL) | 890 #if !defined(DISABLE_NACL) |
| 844 !clear_nacl_cache_.is_pending() && !clear_pnacl_cache_.is_pending() && | 891 !clear_nacl_cache_.is_pending() && !clear_pnacl_cache_.is_pending() && |
| 845 #endif | 892 #endif |
| 846 !clear_network_predictor_.is_pending() && | 893 !clear_network_predictor_.is_pending() && |
| 847 !clear_networking_history_.is_pending() && | 894 !clear_networking_history_.is_pending() && |
| 848 !clear_passwords_.is_pending() && | 895 !clear_passwords_.is_pending() && |
| 849 !clear_passwords_stats_.is_pending() && | 896 !clear_passwords_stats_.is_pending() && |
| 897 !clear_http_auth_cache_.is_pending() && |
| 850 !clear_platform_keys_.is_pending() && | 898 !clear_platform_keys_.is_pending() && |
| 851 #if defined(OS_ANDROID) | 899 #if defined(OS_ANDROID) |
| 852 !clear_precache_history_.is_pending() && | 900 !clear_precache_history_.is_pending() && |
| 853 !clear_offline_page_data_.is_pending() && | 901 !clear_offline_page_data_.is_pending() && |
| 854 #endif | 902 #endif |
| 855 #if BUILDFLAG(ENABLE_WEBRTC) | 903 #if BUILDFLAG(ENABLE_WEBRTC) |
| 856 !clear_webrtc_logs_.is_pending() && | 904 !clear_webrtc_logs_.is_pending() && |
| 857 #endif | 905 #endif |
| 858 !clear_auto_sign_in_.is_pending(); | 906 !clear_auto_sign_in_.is_pending(); |
| 859 } | 907 } |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 | 944 |
| 897 #if defined(OS_CHROMEOS) | 945 #if defined(OS_CHROMEOS) |
| 898 void ChromeBrowsingDataRemoverDelegate::OnClearPlatformKeys( | 946 void ChromeBrowsingDataRemoverDelegate::OnClearPlatformKeys( |
| 899 chromeos::DBusMethodCallStatus call_status, | 947 chromeos::DBusMethodCallStatus call_status, |
| 900 bool result) { | 948 bool result) { |
| 901 LOG_IF(ERROR, call_status != chromeos::DBUS_METHOD_CALL_SUCCESS || !result) | 949 LOG_IF(ERROR, call_status != chromeos::DBUS_METHOD_CALL_SUCCESS || !result) |
| 902 << "Failed to clear platform keys."; | 950 << "Failed to clear platform keys."; |
| 903 clear_platform_keys_.GetCompletionCallback().Run(); | 951 clear_platform_keys_.GetCompletionCallback().Run(); |
| 904 } | 952 } |
| 905 #endif | 953 #endif |
| OLD | NEW |