diff options
author | sdefresne <sdefresne@chromium.org> | 2015-12-01 09:50:21 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-01 17:51:23 +0000 |
commit | d11ece3c9f74fb73c5e73836bc61fd6dcbd317e2 (patch) | |
tree | d3c94ec3a459774ece6c30a84214ee8954aebe1c | |
parent | 934d88d64c50f9f4d684194320cf15cd9b29059e (diff) | |
download | chromium_src-d11ece3c9f74fb73c5e73836bc61fd6dcbd317e2.zip chromium_src-d11ece3c9f74fb73c5e73836bc61fd6dcbd317e2.tar.gz chromium_src-d11ece3c9f74fb73c5e73836bc61fd6dcbd317e2.tar.bz2 |
Remove obsolete provider IOSChromeBrowsingDataRemoverProvider.
Inline the two methods that no longer have any bad dependency in client
IOSChromeBrowsingDataRemover, and move GetSafeBrowsingURLRequestContext
method to ChromeBrowserProvider to remove one indirection.
BUG=562155,563936,563581
Review URL: https://codereview.chromium.org/1492443002
Cr-Commit-Position: refs/heads/master@{#362447}
5 files changed, 64 insertions, 118 deletions
diff --git a/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.cc b/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.cc index ee4e2b4..3140ee2 100644 --- a/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.cc +++ b/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.cc @@ -26,9 +26,11 @@ #include "components/password_manager/core/browser/password_store.h" #include "components/search_engines/template_url_service.h" #include "components/sessions/core/tab_restore_service.h" +#include "ios/chrome/browser/application_context.h" #include "ios/chrome/browser/autofill/personal_data_manager_factory.h" #include "ios/chrome/browser/history/history_service_factory.h" #include "ios/chrome/browser/history/web_history_service_factory.h" +#include "ios/chrome/browser/ios_chrome_io_thread.h" #include "ios/chrome/browser/passwords/ios_chrome_password_store_factory.h" #include "ios/chrome/browser/pref_names.h" #include "ios/chrome/browser/search_engines/template_url_service_factory.h" @@ -36,7 +38,6 @@ #include "ios/chrome/browser/web_data_service_factory.h" #include "ios/net/http_cache_helper.h" #include "ios/public/provider/chrome/browser/browser_state/chrome_browser_state.h" -#include "ios/public/provider/chrome/browser/browsing_data/ios_chrome_browsing_data_remover_provider.h" #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" #include "ios/public/provider/chrome/browser/keyed_service_provider.h" #include "ios/web/public/user_metrics.h" @@ -48,7 +49,6 @@ #include "net/ssl/channel_id_store.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context_getter.h" -#include "url/origin.h" using base::UserMetricsAction; using web::WebThread; @@ -110,9 +110,7 @@ IOSChromeBrowsingDataRemover::IOSChromeBrowsingDataRemover( : browser_state_(browser_state), delete_begin_(delete_begin), delete_end_(delete_end), - main_context_getter_(browser_state->GetRequestContext()), - provider_(ios::GetChromeBrowserProvider() - ->GetIOSChromeBrowsingDataRemoverProvider(browser_state)) { + main_context_getter_(browser_state->GetRequestContext()) { DCHECK(browser_state); // crbug.com/140910: Many places were calling this with base::Time() as // delete_end, even though they should've used base::Time::Max(). Work around @@ -141,7 +139,6 @@ void IOSChromeBrowsingDataRemover::RemoveImpl(int remove_mask, DCHECK_CURRENTLY_ON_WEB_THREAD(WebThread::UI); set_removing(true); remove_mask_ = remove_mask; - url::Origin remove_origin(remove_url); PrefService* prefs = browser_state_->GetPrefs(); bool may_delete_history = @@ -181,10 +178,18 @@ void IOSChromeBrowsingDataRemover::RemoveImpl(int remove_mask, // Need to clear the host cache and accumulated speculative data, as it also // reveals some history: we have no mechanism to track when these items were // created, so we'll clear them all. Better safe than sorry. - waiting_for_clear_hostname_resolution_cache_ = true; - provider_->ClearHostnameResolutionCache(base::Bind( - &IOSChromeBrowsingDataRemover::OnClearedHostnameResolutionCache, - base::Unretained(this))); + IOSChromeIOThread* ios_chrome_io_thread = + GetApplicationContext()->GetIOSChromeIOThread(); + if (ios_chrome_io_thread) { + waiting_for_clear_hostname_resolution_cache_ = true; + web::WebThread::PostTaskAndReply( + web::WebThread::IO, FROM_HERE, + base::Bind(&IOSChromeIOThread::ClearHostCache, + base::Unretained(ios_chrome_io_thread)), + base::Bind( + &IOSChromeBrowsingDataRemover::OnClearedHostnameResolutionCache, + base::Unretained(this))); + } // As part of history deletion we also delete the auto-generated keywords. // Because the TemplateURLService is shared between incognito and @@ -266,33 +271,36 @@ void IOSChromeBrowsingDataRemover::RemoveImpl(int remove_mask, // hours/days to the safebrowsing cookies since they aren't the result of // any user action. if (delete_begin_ == base::Time()) { - net::URLRequestContextGetter* safe_browsing_context = - provider_->GetSafeBrowsingURLRequestContext(); + scoped_refptr<net::URLRequestContextGetter> safe_browsing_context = + make_scoped_refptr(ios::GetChromeBrowserProvider() + ->GetSafeBrowsingURLRequestContext()); if (safe_browsing_context) { ++waiting_for_clear_cookies_count_; WebThread::PostTask( WebThread::IO, FROM_HERE, base::Bind(&IOSChromeBrowsingDataRemover::ClearCookiesOnIOThread, - base::Unretained(this), - base::Unretained(safe_browsing_context))); + base::Unretained(this), safe_browsing_context, GURL())); } } + ++waiting_for_clear_cookies_count_; + WebThread::PostTask( + WebThread::IO, FROM_HERE, + base::Bind(&IOSChromeBrowsingDataRemover::ClearCookiesOnIOThread, + base::Unretained(this), main_context_getter_, remove_url)); + // TODO(mkwst): If we're not removing passwords, then clear the 'zero-click' // flag for all credentials in the password store. } if (remove_mask & REMOVE_CHANNEL_IDS) { web::RecordAction(UserMetricsAction("ClearBrowsingData_ChannelIDs")); - // Since we are running on the UI thread don't call GetURLRequestContext(). - net::URLRequestContextGetter* rq_context = - browser_state_->GetRequestContext(); - if (rq_context) { + if (main_context_getter_) { waiting_for_clear_channel_ids_ = true; WebThread::PostTask( WebThread::IO, FROM_HERE, base::Bind(&IOSChromeBrowsingDataRemover::ClearChannelIDsOnIOThread, - base::Unretained(this), base::Unretained(rq_context))); + base::Unretained(this), main_context_getter_)); } } @@ -345,18 +353,10 @@ void IOSChromeBrowsingDataRemover::RemoveImpl(int remove_mask, DCHECK(delete_begin_.is_null()) << "Partial clearing not supported"; ClearHttpCache(browser_state_->GetRequestContext(), WebThread::GetTaskRunnerForThread(WebThread::IO), - base::Bind(&IOSChromeBrowsingDataRemover::ClearedCache, + base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCache, base::Unretained(this))); } - if (remove_mask & REMOVE_COOKIES) { - waiting_for_clear_storage_partition_data_ = true; - provider_->ClearStoragePartition( - remove_url, delete_begin_, delete_end_, - base::Bind(&IOSChromeBrowsingDataRemover::OnClearedStoragePartitionData, - base::Unretained(this))); - } - // Remove omnibox zero-suggest cache results. if ((remove_mask & (REMOVE_CACHE | REMOVE_COOKIES))) prefs->SetString(omnibox::kZeroSuggestCachedResults, std::string()); @@ -418,8 +418,7 @@ bool IOSChromeBrowsingDataRemover::AllDone() { !waiting_for_clear_hostname_resolution_cache_ && !waiting_for_clear_keyword_data_ && !waiting_for_clear_networking_history_ && - !waiting_for_clear_passwords_ && - !waiting_for_clear_storage_partition_data_; + !waiting_for_clear_passwords_; } void IOSChromeBrowsingDataRemover::OnKeywordsLoaded() { @@ -473,7 +472,7 @@ void IOSChromeBrowsingDataRemover::OnClearedNetworkingHistory() { NotifyAndDeleteIfDone(); } -void IOSChromeBrowsingDataRemover::ClearedCache(int error) { +void IOSChromeBrowsingDataRemover::OnClearedCache(int error) { waiting_for_clear_cache_ = false; NotifyAndDeleteIfDone(); @@ -500,29 +499,37 @@ void IOSChromeBrowsingDataRemover::OnClearedCookies(int num_deleted) { } void IOSChromeBrowsingDataRemover::ClearCookiesOnIOThread( - net::URLRequestContextGetter* rq_context) { + const scoped_refptr<net::URLRequestContextGetter>& rq_context, + const GURL& storage_url) { DCHECK_CURRENTLY_ON_WEB_THREAD(WebThread::IO); net::CookieStore* cookie_store = rq_context->GetURLRequestContext()->cookie_store(); - cookie_store->DeleteAllCreatedBetweenAsync( - delete_begin_, delete_end_, - base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCookies, - base::Unretained(this))); + if (storage_url.is_empty()) { + cookie_store->DeleteAllCreatedBetweenAsync( + delete_begin_, delete_end_, + base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCookies, + base::Unretained(this))); + } else { + cookie_store->DeleteAllCreatedBetweenForHostAsync( + delete_begin_, delete_end_, storage_url, + base::Bind(&IOSChromeBrowsingDataRemover::OnClearedCookies, + base::Unretained(this))); + } } void IOSChromeBrowsingDataRemover::ClearChannelIDsOnIOThread( - net::URLRequestContextGetter* rq_context) { + const scoped_refptr<net::URLRequestContextGetter>& rq_context) { DCHECK_CURRENTLY_ON_WEB_THREAD(WebThread::IO); net::ChannelIDService* channel_id_service = rq_context->GetURLRequestContext()->channel_id_service(); channel_id_service->GetChannelIDStore()->DeleteAllCreatedBetween( delete_begin_, delete_end_, base::Bind(&IOSChromeBrowsingDataRemover::OnClearedChannelIDsOnIOThread, - base::Unretained(this), base::Unretained(rq_context))); + base::Unretained(this), rq_context)); } void IOSChromeBrowsingDataRemover::OnClearedChannelIDsOnIOThread( - net::URLRequestContextGetter* rq_context) { + const scoped_refptr<net::URLRequestContextGetter>& rq_context) { // Need to close open SSL connections which may be using the channel ids we // are deleting. // TODO(mattm): http://crbug.com/166069 Make the server bound cert @@ -554,12 +561,6 @@ void IOSChromeBrowsingDataRemover::OnClearedAutofillOriginURLs() { NotifyAndDeleteIfDone(); } -void IOSChromeBrowsingDataRemover::OnClearedStoragePartitionData() { - DCHECK_CURRENTLY_ON_WEB_THREAD(WebThread::UI); - waiting_for_clear_storage_partition_data_ = false; - NotifyAndDeleteIfDone(); -} - // static IOSChromeBrowsingDataRemover::CallbackSubscription IOSChromeBrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback( diff --git a/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h b/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h index 6f14bc4..aaf15d2 100644 --- a/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h +++ b/ios/chrome/browser/browsing_data/ios_chrome_browsing_data_remover.h @@ -21,7 +21,6 @@ namespace ios { class ChromeBrowserState; -class IOSChromeBrowsingDataRemoverProvider; } namespace net { @@ -189,7 +188,7 @@ class IOSChromeBrowsingDataRemover { // Callback for when the cache has been deleted. Invokes // NotifyAndDeleteIfDone. - void ClearedCache(int error); + void OnClearedCache(int error); // Callback for when passwords for the requested time range have been cleared. void OnClearedPasswords(); @@ -198,14 +197,18 @@ class IOSChromeBrowsingDataRemover { void OnClearedCookies(int num_deleted); // Invoked on the IO thread to delete cookies. - void ClearCookiesOnIOThread(net::URLRequestContextGetter* rq_context); + void ClearCookiesOnIOThread( + const scoped_refptr<net::URLRequestContextGetter>& rq_context, + const GURL& storage_url); // Invoked on the IO thread to delete channel IDs. - void ClearChannelIDsOnIOThread(net::URLRequestContextGetter* rq_context); + void ClearChannelIDsOnIOThread( + const scoped_refptr<net::URLRequestContextGetter>& rq_context); // Callback on IO Thread when channel IDs have been deleted. Clears SSL // connection pool and posts to UI thread to run OnClearedChannelIDs. - void OnClearedChannelIDsOnIOThread(net::URLRequestContextGetter* rq_context); + void OnClearedChannelIDsOnIOThread( + const scoped_refptr<net::URLRequestContextGetter>& rq_context); // Callback for when channel IDs have been deleted. Invokes // NotifyAndDeleteIfDone. @@ -218,9 +221,6 @@ class IOSChromeBrowsingDataRemover { // been deleted. void OnClearedAutofillOriginURLs(); - // Callback on UI thread when the storage partition related data are cleared. - void OnClearedStoragePartitionData(); - void OnClearedDomainReliabilityMonitor(); // Returns true if we're all done. @@ -254,7 +254,6 @@ class IOSChromeBrowsingDataRemover { bool waiting_for_clear_keyword_data_ = false; bool waiting_for_clear_networking_history_ = false; bool waiting_for_clear_passwords_ = false; - bool waiting_for_clear_storage_partition_data_ = false; // The removal mask for the current removal operation. int remove_mask_ = 0; @@ -266,10 +265,6 @@ class IOSChromeBrowsingDataRemover { scoped_ptr<TemplateURLService::Subscription> template_url_sub_; - // Object that supports legacy functionality and functionality that has not - // yet been ported to //ios/chrome. - scoped_ptr<ios::IOSChromeBrowsingDataRemoverProvider> provider_; - DISALLOW_COPY_AND_ASSIGN(IOSChromeBrowsingDataRemover); }; diff --git a/ios/public/provider/chrome/browser/browsing_data/ios_chrome_browsing_data_remover_provider.h b/ios/public/provider/chrome/browser/browsing_data/ios_chrome_browsing_data_remover_provider.h deleted file mode 100644 index 692ebed..0000000 --- a/ios/public/provider/chrome/browser/browsing_data/ios_chrome_browsing_data_remover_provider.h +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2015 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 IOS_PUBLIC_PROVIDER_CHROME_BROWSER_BROWSING_DATA_IOS_CHROME_BROWSING_DATA_REMOVER_PROVIDER_H_ -#define IOS_PUBLIC_PROVIDER_CHROME_BROWSER_BROWSING_DATA_IOS_CHROME_BROWSING_DATA_REMOVER_PROVIDER_H_ - -#include "base/basictypes.h" -#include "base/callback_forward.h" - -class GURL; - -namespace base { -class Time; -} - -namespace net { -class URLRequestContextGetter; -} - -namespace ios { - -class ChromeBrowserState; - -// A class that provides additional functionality to -// IOSChromeBrowsingDataRemover. -class IOSChromeBrowsingDataRemoverProvider { - public: - virtual ~IOSChromeBrowsingDataRemoverProvider() {} - - // Clears the hostname resolution cache and runs |callback| on completion. - // If the hostname resolution cache doesn't exist, runs |callback| - // immediately. - virtual void ClearHostnameResolutionCache(const base::Closure& callback) = 0; - - // Gets the URLRequestContextGetter used by the SafeBrowsing service. Returns - // null if there is no SafeBrowsing service. - virtual net::URLRequestContextGetter* GetSafeBrowsingURLRequestContext() = 0; - - // Clears the relevant storage partition and runs |callback| on - // completion. - virtual void ClearStoragePartition(const GURL& remove_url, - base::Time delete_begin, - base::Time delete_end, - const base::Closure& callback) = 0; -}; - -} // namespace ios - -#endif // IOS_PUBLIC_PROVIDER_CHROME_BROWSER_BROWSING_DATA_IOS_CHROME_BROWSING_DATA_REMOVER_PROVIDER_H_ diff --git a/ios/public/provider/chrome/browser/chrome_browser_provider.cc b/ios/public/provider/chrome/browser/chrome_browser_provider.cc index a12824c..285144b 100644 --- a/ios/public/provider/chrome/browser/chrome_browser_provider.cc +++ b/ios/public/provider/chrome/browser/chrome_browser_provider.cc @@ -10,7 +10,6 @@ #include "components/metrics/metrics_provider.h" #include "components/sync_sessions/local_session_event_router.h" #include "components/sync_sessions/synced_window_delegates_getter.h" -#include "ios/public/provider/chrome/browser/browsing_data/ios_chrome_browsing_data_remover_provider.h" #include "ios/public/provider/chrome/browser/keyed_service_provider.h" namespace ios { @@ -82,12 +81,6 @@ LiveTabContextProvider* ChromeBrowserProvider::GetLiveTabContextProvider() { return nullptr; } -scoped_ptr<IOSChromeBrowsingDataRemoverProvider> -ChromeBrowserProvider::GetIOSChromeBrowsingDataRemoverProvider( - ChromeBrowserState* browser_state) { - return nullptr; -} - GeolocationUpdaterProvider* ChromeBrowserProvider::GetGeolocationUpdaterProvider() { return nullptr; @@ -138,4 +131,9 @@ ChromeBrowserProvider::CreateSyncedWindowDelegatesGetter( return nullptr; } +net::URLRequestContextGetter* +ChromeBrowserProvider::GetSafeBrowsingURLRequestContext() { + return nullptr; +} + } // namespace ios diff --git a/ios/public/provider/chrome/browser/chrome_browser_provider.h b/ios/public/provider/chrome/browser/chrome_browser_provider.h index 470b3e4..4509c50 100644 --- a/ios/public/provider/chrome/browser/chrome_browser_provider.h +++ b/ios/public/provider/chrome/browser/chrome_browser_provider.h @@ -11,6 +11,7 @@ #include <vector> #include "base/callback_forward.h" +#include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "components/favicon_base/favicon_callback.h" @@ -57,7 +58,6 @@ class ChromeBrowserState; class ChromeBrowserStateManager; class ChromeIdentityService; class GeolocationUpdaterProvider; -class IOSChromeBrowsingDataRemoverProvider; class SigninResourcesProvider; class StringProvider; class LiveTabContextProvider; @@ -103,8 +103,6 @@ class ChromeBrowserProvider { virtual StringProvider* GetStringProvider(); // Returns an instance of a LiveTabContextProvider. virtual LiveTabContextProvider* GetLiveTabContextProvider(); - virtual scoped_ptr<IOSChromeBrowsingDataRemoverProvider> - GetIOSChromeBrowsingDataRemoverProvider(ChromeBrowserState* browser_state); virtual GeolocationUpdaterProvider* GetGeolocationUpdaterProvider(); // Returns "enabled", "disabled", or "default". virtual std::string DataReductionProxyAvailability(); @@ -139,6 +137,10 @@ class ChromeBrowserProvider { // Returns the SyncedWindowDelegatesGetter implementation. virtual scoped_ptr<browser_sync::SyncedWindowDelegatesGetter> CreateSyncedWindowDelegatesGetter(ios::ChromeBrowserState* browser_state); + + // Gets the URLRequestContextGetter used by the SafeBrowsing service. Returns + // null if there is no SafeBrowsing service. + virtual net::URLRequestContextGetter* GetSafeBrowsingURLRequestContext(); }; } // namespace ios |