diff options
author | lukasza <lukasza@chromium.org> | 2015-06-11 21:21:25 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-12 04:22:02 +0000 |
commit | 037c10b1b0e88341219a7943143487fd65080186 (patch) | |
tree | 174b3d6027a722f33d48f379f497a398994148bd | |
parent | 28fcf1477d5a5928d9e43e8f87f762693f722739 (diff) | |
download | chromium_src-037c10b1b0e88341219a7943143487fd65080186.zip chromium_src-037c10b1b0e88341219a7943143487fd65080186.tar.gz chromium_src-037c10b1b0e88341219a7943143487fd65080186.tar.bz2 |
DCHECK..ON(BrowserThread::UI) -> DCHECK(thread_checker_.CalledOnValidThread())
This changelist removes one unnecessary dependency from
chrome/browser/chromeos/drive
to
content/public/browser/browser_thread.h
- Where possible
DCHECK_CURRENTLY_ON(BrowserThread::UI)
is replaced with
DCHECK(thread_checker_.CalledOnValidThread())
- The new DCHECK is in theory more relaxed than the original DCHECK, but
in practice is no different, assumming that objects (and therefore the
newly added base::ThreadChecker field) are created from the UI thread
(in practice this is enforced by DCHECK_CURRENTLY_ON(BrowserThread::UI)
in the constructor and methods of DriveIntegrationService).
- The old DCHECK is left untouched in places that do not have to be
reused outside of a browser (most notably - browser-specific
file_system_util.cc and most of drive_integration_service.cc).
- The old DCHECK is removed without adding the new DCHECK in a few
places where base::ThreadChecker could not be used in a straightforward
way (i.e. in standalone functions or callbacks).
BUG=498951
TEST=built (GYP_DEFINES="... chromeos=1") and run unit_tests gyp/ninja target from chrome/chrome_tests_unit.gypi
Review URL: https://codereview.chromium.org/1177823002
Cr-Commit-Position: refs/heads/master@{#334127}
51 files changed, 333 insertions, 338 deletions
diff --git a/chrome/browser/chromeos/drive/change_list_loader.cc b/chrome/browser/chromeos/drive/change_list_loader.cc index 29d4dad..0f0d924 100644 --- a/chrome/browser/chromeos/drive/change_list_loader.cc +++ b/chrome/browser/chromeos/drive/change_list_loader.cc @@ -19,12 +19,9 @@ #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "chrome/browser/drive/event_logger.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" #include "url/gurl.h" -using content::BrowserThread; - namespace drive { namespace internal { @@ -50,7 +47,7 @@ class FullFeedFetcher : public ChangeListLoader::FeedFetcher { ~FullFeedFetcher() override {} void Run(const FeedFetcherCallback& callback) override { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // Remember the time stamp for usage stats. @@ -66,7 +63,7 @@ class FullFeedFetcher : public ChangeListLoader::FeedFetcher { void OnFileListFetched(const FeedFetcherCallback& callback, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::FileList> file_list) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); @@ -99,6 +96,7 @@ class FullFeedFetcher : public ChangeListLoader::FeedFetcher { JobScheduler* scheduler_; ScopedVector<ChangeList> change_lists_; base::TimeTicks start_time_; + base::ThreadChecker thread_checker_; base::WeakPtrFactory<FullFeedFetcher> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(FullFeedFetcher); }; @@ -115,7 +113,7 @@ class DeltaFeedFetcher : public ChangeListLoader::FeedFetcher { ~DeltaFeedFetcher() override {} void Run(const FeedFetcherCallback& callback) override { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scheduler_->GetChangeList( @@ -128,7 +126,7 @@ class DeltaFeedFetcher : public ChangeListLoader::FeedFetcher { void OnChangeListFetched(const FeedFetcherCallback& callback, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::ChangeList> change_list) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); @@ -158,6 +156,7 @@ class DeltaFeedFetcher : public ChangeListLoader::FeedFetcher { JobScheduler* scheduler_; int64 start_change_id_; ScopedVector<ChangeList> change_lists_; + base::ThreadChecker thread_checker_; base::WeakPtrFactory<DeltaFeedFetcher> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(DeltaFeedFetcher); }; @@ -167,15 +166,14 @@ class DeltaFeedFetcher : public ChangeListLoader::FeedFetcher { LoaderController::LoaderController() : lock_count_(0), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } LoaderController::~LoaderController() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } scoped_ptr<base::ScopedClosureRunner> LoaderController::GetLock() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); ++lock_count_; return make_scoped_ptr(new base::ScopedClosureRunner( @@ -184,7 +182,7 @@ scoped_ptr<base::ScopedClosureRunner> LoaderController::GetLock() { } void LoaderController::ScheduleRun(const base::Closure& task) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!task.is_null()); if (lock_count_ > 0) { @@ -195,7 +193,7 @@ void LoaderController::ScheduleRun(const base::Closure& task) { } void LoaderController::Unlock() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK_LT(0, lock_count_); if (--lock_count_ > 0) @@ -217,7 +215,7 @@ AboutResourceLoader::~AboutResourceLoader() {} void AboutResourceLoader::GetAboutResource( const google_apis::AboutResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // If the latest UpdateAboutResource task is still running. Wait for it, @@ -241,7 +239,7 @@ void AboutResourceLoader::GetAboutResource( void AboutResourceLoader::UpdateAboutResource( const google_apis::AboutResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); ++current_update_task_id_; @@ -257,7 +255,7 @@ void AboutResourceLoader::UpdateAboutResourceAfterGetAbout( int task_id, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::AboutResource> about_resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FileError error = GDataToFileError(status); const std::vector<google_apis::AboutResourceCallback> callbacks = @@ -319,17 +317,17 @@ bool ChangeListLoader::IsRefreshing() const { } void ChangeListLoader::AddObserver(ChangeListLoaderObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observers_.AddObserver(observer); } void ChangeListLoader::RemoveObserver(ChangeListLoaderObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observers_.RemoveObserver(observer); } void ChangeListLoader::CheckForUpdates(const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // We only start to check for updates iff the load is done. @@ -356,7 +354,7 @@ void ChangeListLoader::CheckForUpdates(const FileOperationCallback& callback) { } void ChangeListLoader::LoadIfNeeded(const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // If the metadata is not yet loaded, start loading. @@ -365,7 +363,7 @@ void ChangeListLoader::LoadIfNeeded(const FileOperationCallback& callback) { } void ChangeListLoader::Load(const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // Check if this is the first time this ChangeListLoader do loading. @@ -397,7 +395,7 @@ void ChangeListLoader::LoadAfterGetLargestChangestamp( bool is_initial_load, const int64* local_changestamp, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (error != FILE_ERROR_OK) { OnChangeListLoadComplete(error); @@ -424,7 +422,7 @@ void ChangeListLoader::LoadAfterGetAboutResource( int64 local_changestamp, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::AboutResource> about_resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FileError error = GDataToFileError(status); if (error != FILE_ERROR_OK) { @@ -452,7 +450,7 @@ void ChangeListLoader::LoadAfterGetAboutResource( } void ChangeListLoader::OnChangeListLoadComplete(FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (!loaded_ && error == FILE_ERROR_OK) { loaded_ = true; @@ -478,7 +476,7 @@ void ChangeListLoader::OnChangeListLoadComplete(FileError error) { void ChangeListLoader::OnAboutResourceUpdated( google_apis::DriveApiErrorCode error, scoped_ptr<google_apis::AboutResource> resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (drive::GDataToFileError(error) != drive::FILE_ERROR_OK) { logger_->Log(logging::LOG_ERROR, @@ -492,7 +490,7 @@ void ChangeListLoader::OnAboutResourceUpdated( } void ChangeListLoader::LoadChangeListFromServer(int64 start_changestamp) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!change_feed_fetcher_); DCHECK(about_resource_loader_->cached_about_resource()); @@ -521,7 +519,7 @@ void ChangeListLoader::LoadChangeListFromServerAfterLoadChangeList( bool is_delta_update, FileError error, ScopedVector<ChangeList> change_lists) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(about_resource); // Delete the fetcher first. @@ -563,7 +561,7 @@ void ChangeListLoader::LoadChangeListFromServerAfterUpdate( bool should_notify_changed_directories, const base::Time& start_time, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); const base::TimeDelta elapsed = base::Time::Now() - start_time; logger_->Log(logging::LOG_INFO, diff --git a/chrome/browser/chromeos/drive/change_list_loader.h b/chrome/browser/chromeos/drive/change_list_loader.h index 644e6ed..612df97 100644 --- a/chrome/browser/chromeos/drive/change_list_loader.h +++ b/chrome/browser/chromeos/drive/change_list_loader.h @@ -13,6 +13,7 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/observer_list.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" #include "google_apis/drive/drive_common_callbacks.h" @@ -69,6 +70,8 @@ class LoaderController { int lock_count_; std::vector<base::Closure> pending_tasks_; + base::ThreadChecker thread_checker_; + base::WeakPtrFactory<LoaderController> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(LoaderController); }; @@ -118,6 +121,8 @@ class AboutResourceLoader { std::map<int, std::vector<google_apis::AboutResourceCallback> > pending_callbacks_; + base::ThreadChecker thread_checker_; + base::WeakPtrFactory<AboutResourceLoader> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(AboutResourceLoader); }; @@ -230,6 +235,8 @@ class ChangeListLoader { // stored locally). bool loaded_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<ChangeListLoader> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/debug_info_collector.cc b/chrome/browser/chromeos/drive/debug_info_collector.cc index 6159ea1..cf50912 100644 --- a/chrome/browser/chromeos/drive/debug_info_collector.cc +++ b/chrome/browser/chromeos/drive/debug_info_collector.cc @@ -6,11 +6,8 @@ #include "base/callback.h" #include "base/logging.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/task_util.h" -using content::BrowserThread; - namespace drive { namespace { @@ -68,7 +65,7 @@ DebugInfoCollector::~DebugInfoCollector() { void DebugInfoCollector::GetResourceEntry( const base::FilePath& file_path, const GetResourceEntryCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scoped_ptr<ResourceEntry> entry(new ResourceEntry); @@ -86,7 +83,7 @@ void DebugInfoCollector::GetResourceEntry( void DebugInfoCollector::ReadDirectory( const base::FilePath& file_path, const ReadDirectoryCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scoped_ptr<ResourceEntryVector> entries(new ResourceEntryVector); @@ -104,7 +101,7 @@ void DebugInfoCollector::ReadDirectory( void DebugInfoCollector::IterateFileCache( const IterateFileCacheCallback& iteration_callback, const base::Closure& completion_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!iteration_callback.is_null()); DCHECK(!completion_callback.is_null()); @@ -118,7 +115,7 @@ void DebugInfoCollector::IterateFileCache( void DebugInfoCollector::GetMetadata( const GetFilesystemMetadataCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // Currently, this is just a proxy to the FileSystem. diff --git a/chrome/browser/chromeos/drive/debug_info_collector.h b/chrome/browser/chromeos/drive/debug_info_collector.h index 65aded9..213caea 100644 --- a/chrome/browser/chromeos/drive/debug_info_collector.h +++ b/chrome/browser/chromeos/drive/debug_info_collector.h @@ -7,6 +7,7 @@ #include "base/basictypes.h" #include "base/callback_forward.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_system_interface.h" namespace drive { @@ -57,6 +58,8 @@ class DebugInfoCollector { FileSystemInterface* file_system_; // Not owned. scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; + base::ThreadChecker thread_checker_; + DISALLOW_COPY_AND_ASSIGN(DebugInfoCollector); }; diff --git a/chrome/browser/chromeos/drive/directory_loader.cc b/chrome/browser/chromeos/drive/directory_loader.cc index 7d60858..23df472 100644 --- a/chrome/browser/chromeos/drive/directory_loader.cc +++ b/chrome/browser/chromeos/drive/directory_loader.cc @@ -16,12 +16,9 @@ #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "chrome/browser/drive/event_logger.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" #include "url/gurl.h" -using content::BrowserThread; - namespace drive { namespace internal { @@ -106,7 +103,7 @@ class DirectoryLoader::FeedFetcher { } void Run(const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); DCHECK(!directory_fetch_info_.resource_id().empty()); @@ -123,7 +120,7 @@ class DirectoryLoader::FeedFetcher { void OnFileListFetched(const FileOperationCallback& callback, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::FileList> file_list) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); @@ -159,7 +156,7 @@ class DirectoryLoader::FeedFetcher { const GURL& next_url, const std::vector<ResourceEntry>* refreshed_entries, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -191,6 +188,7 @@ class DirectoryLoader::FeedFetcher { DirectoryFetchInfo directory_fetch_info_; std::string root_folder_id_; base::TimeTicks start_time_; + base::ThreadChecker thread_checker_; base::WeakPtrFactory<FeedFetcher> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(FeedFetcher); }; @@ -216,12 +214,12 @@ DirectoryLoader::~DirectoryLoader() { } void DirectoryLoader::AddObserver(ChangeListLoaderObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observers_.AddObserver(observer); } void DirectoryLoader::RemoveObserver(ChangeListLoaderObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observers_.RemoveObserver(observer); } @@ -229,7 +227,7 @@ void DirectoryLoader::ReadDirectory( const base::FilePath& directory_path, const ReadDirectoryEntriesCallback& entries_callback, const FileOperationCallback& completion_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!completion_callback.is_null()); ResourceEntry* entry = new ResourceEntry; @@ -256,7 +254,7 @@ void DirectoryLoader::ReadDirectoryAfterGetEntry( bool should_try_loading_parent, const ResourceEntry* entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!completion_callback.is_null()); if (error == FILE_ERROR_NOT_FOUND && @@ -308,7 +306,7 @@ void DirectoryLoader::ReadDirectoryAfterLoadParent( const ReadDirectoryEntriesCallback& entries_callback, const FileOperationCallback& completion_callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!completion_callback.is_null()); if (error != FILE_ERROR_OK) { @@ -337,7 +335,7 @@ void DirectoryLoader::ReadDirectoryAfterGetAboutResource( const std::string& local_id, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::AboutResource> about_resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FileError error = GDataToFileError(status); if (error != FILE_ERROR_OK) { @@ -374,7 +372,7 @@ void DirectoryLoader::ReadDirectoryAfterCheckLocalState( const ResourceEntry* entry, const int64* local_changestamp, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(about_resource); if (error != FILE_ERROR_OK) { @@ -412,7 +410,7 @@ void DirectoryLoader::ReadDirectoryAfterCheckLocalState( void DirectoryLoader::OnDirectoryLoadComplete(const std::string& local_id, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); LoadCallbackMap::iterator it = pending_load_callback_.find(local_id); if (it == pending_load_callback_.end()) @@ -487,7 +485,7 @@ void DirectoryLoader::SendEntries(const std::string& local_id, void DirectoryLoader::LoadDirectoryFromServer( const DirectoryFetchInfo& directory_fetch_info) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!directory_fetch_info.empty()); DVLOG(1) << "Start loading directory: " << directory_fetch_info.ToString(); @@ -516,7 +514,7 @@ void DirectoryLoader::LoadDirectoryFromServerAfterLoad( const DirectoryFetchInfo& directory_fetch_info, FeedFetcher* fetcher, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!directory_fetch_info.empty()); // Delete the fetcher. @@ -556,7 +554,7 @@ void DirectoryLoader::LoadDirectoryFromServerAfterUpdateChangestamp( const DirectoryFetchInfo& directory_fetch_info, const base::FilePath* directory_path, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DVLOG(1) << "Directory loaded: " << directory_fetch_info.ToString(); OnDirectoryLoadComplete(directory_fetch_info.local_id(), error); diff --git a/chrome/browser/chromeos/drive/directory_loader.h b/chrome/browser/chromeos/drive/directory_loader.h index 12a5b8c..07fd18e 100644 --- a/chrome/browser/chromeos/drive/directory_loader.h +++ b/chrome/browser/chromeos/drive/directory_loader.h @@ -15,6 +15,7 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" #include "base/observer_list.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/file_system_interface.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -136,6 +137,8 @@ class DirectoryLoader { // Set of the running feed fetcher for the fast fetch. std::set<FeedFetcher*> fast_fetch_feed_fetcher_set_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<DirectoryLoader> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/drive_file_stream_reader.cc b/chrome/browser/chromeos/drive/drive_file_stream_reader.cc index 8a1650e..97ce158 100644 --- a/chrome/browser/chromeos/drive/drive_file_stream_reader.cc +++ b/chrome/browser/chromeos/drive/drive_file_stream_reader.cc @@ -96,7 +96,6 @@ LocalReaderProxy::LocalReaderProxy( : file_reader_(file_reader.Pass()), remaining_length_(length), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); DCHECK(file_reader_); } @@ -105,7 +104,7 @@ LocalReaderProxy::~LocalReaderProxy() { int LocalReaderProxy::Read(net::IOBuffer* buffer, int buffer_length, const net::CompletionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(file_reader_); if (buffer_length > remaining_length_) { @@ -135,7 +134,7 @@ void LocalReaderProxy::OnCompleted(FileError error) { void LocalReaderProxy::OnReadCompleted(const net::CompletionCallback& callback, int read_result) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(file_reader_); if (read_result >= 0) { @@ -160,7 +159,6 @@ NetworkReaderProxy::NetworkReaderProxy( error_code_(net::OK), buffer_length_(0), job_canceller_(job_canceller) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); } NetworkReaderProxy::~NetworkReaderProxy() { @@ -171,7 +169,7 @@ NetworkReaderProxy::~NetworkReaderProxy() { int NetworkReaderProxy::Read(net::IOBuffer* buffer, int buffer_length, const net::CompletionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); // Check if there is no pending Read operation. DCHECK(!buffer_.get()); DCHECK_EQ(buffer_length_, 0); @@ -218,7 +216,7 @@ int NetworkReaderProxy::Read(net::IOBuffer* buffer, int buffer_length, } void NetworkReaderProxy::OnGetContent(scoped_ptr<std::string> data) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(data && !data->empty()); if (remaining_offset_ >= static_cast<int64>(data->length())) { @@ -253,7 +251,7 @@ void NetworkReaderProxy::OnGetContent(scoped_ptr<std::string> data) { } void NetworkReaderProxy::OnCompleted(FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); // The downloading is completed, so we do not need to cancel the job // in the destructor. job_canceller_.Reset(); @@ -333,14 +331,13 @@ DriveFileStreamReader::DriveFileStreamReader( : file_system_getter_(file_system_getter), file_task_runner_(file_task_runner), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); } DriveFileStreamReader::~DriveFileStreamReader() { } bool DriveFileStreamReader::IsInitialized() const { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); return reader_proxy_.get() != NULL; } @@ -348,7 +345,7 @@ void DriveFileStreamReader::Initialize( const base::FilePath& drive_file_path, const net::HttpByteRange& byte_range, const InitializeCompletionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); GetFileContent( @@ -370,7 +367,7 @@ void DriveFileStreamReader::Initialize( int DriveFileStreamReader::Read(net::IOBuffer* buffer, int buffer_length, const net::CompletionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(reader_proxy_); DCHECK(buffer); DCHECK(!callback.is_null()); @@ -379,7 +376,7 @@ int DriveFileStreamReader::Read(net::IOBuffer* buffer, int buffer_length, void DriveFileStreamReader::StoreCancelDownloadClosure( const base::Closure& cancel_download_closure) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); cancel_download_closure_ = cancel_download_closure; } @@ -389,7 +386,7 @@ void DriveFileStreamReader::InitializeAfterGetFileContentInitialized( FileError error, const base::FilePath& local_cache_file_path, scoped_ptr<ResourceEntry> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); // StoreCancelDownloadClosure() should be called before this function. DCHECK(!cancel_download_closure_.is_null()); @@ -445,7 +442,7 @@ void DriveFileStreamReader::InitializeAfterLocalFileOpen( scoped_ptr<ResourceEntry> entry, scoped_ptr<util::LocalFileReader> file_reader, int open_result) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); if (open_result != net::OK) { callback.Run(net::ERR_FAILED, scoped_ptr<ResourceEntry>()); @@ -460,7 +457,7 @@ void DriveFileStreamReader::InitializeAfterLocalFileOpen( void DriveFileStreamReader::OnGetContent( google_apis::DriveApiErrorCode error_code, scoped_ptr<std::string> data) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(reader_proxy_); reader_proxy_->OnGetContent(data.Pass()); } @@ -468,7 +465,7 @@ void DriveFileStreamReader::OnGetContent( void DriveFileStreamReader::OnGetFileContentCompletion( const InitializeCompletionCallback& callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); + DCHECK(thread_checker_.CalledOnValidThread()); if (reader_proxy_) { // If the proxy object available, send the error to it. diff --git a/chrome/browser/chromeos/drive/drive_file_stream_reader.h b/chrome/browser/chromeos/drive/drive_file_stream_reader.h index e61f4f0..9f2073e 100644 --- a/chrome/browser/chromeos/drive/drive_file_stream_reader.h +++ b/chrome/browser/chromeos/drive/drive_file_stream_reader.h @@ -12,6 +12,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/scoped_vector.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" #include "net/base/completion_callback.h" @@ -78,6 +79,8 @@ class LocalReaderProxy : public ReaderProxy { // The number of remaining bytes to be read. int64 remaining_length_; + base::ThreadChecker thread_checker_; + // This should remain the last member so it'll be destroyed first and // invalidate its weak pointers before other members are destroyed. base::WeakPtrFactory<LocalReaderProxy> weak_ptr_factory_; @@ -125,6 +128,8 @@ class NetworkReaderProxy : public ReaderProxy { int buffer_length_; net::CompletionCallback callback_; + base::ThreadChecker thread_checker_; + // Keeps the closure to cancel downloading job if necessary. // Will be reset when the job is completed (regardless whether the job is // successfully done or not). @@ -214,6 +219,8 @@ class DriveFileStreamReader { base::Closure cancel_download_closure_; scoped_ptr<internal::ReaderProxy> reader_proxy_; + base::ThreadChecker thread_checker_; + // This should remain the last member so it'll be destroyed first and // invalidate its weak pointers before other members are destroyed. base::WeakPtrFactory<DriveFileStreamReader> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_cache.cc b/chrome/browser/chromeos/drive/file_cache.cc index 910c552..085d6c5 100644 --- a/chrome/browser/chromeos/drive/file_cache.cc +++ b/chrome/browser/chromeos/drive/file_cache.cc @@ -6,9 +6,12 @@ #include <vector> +#include "base/bind.h" +#include "base/bind_helpers.h" #include "base/callback_helpers.h" #include "base/files/file_enumerator.h" #include "base/files/file_util.h" +#include "base/location.h" #include "base/logging.h" #include "base/metrics/histogram.h" #include "base/strings/string_util.h" @@ -19,15 +22,12 @@ #include "chrome/browser/chromeos/drive/resource_metadata_storage.h" #include "chrome/browser/drive/drive_api_util.h" #include "chromeos/chromeos_constants.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/task_util.h" #include "net/base/filename_util.h" #include "net/base/mime_sniffer.h" #include "net/base/mime_util.h" #include "third_party/cros_system_api/constants/cryptohome.h" -using content::BrowserThread; - namespace drive { namespace internal { namespace { @@ -49,7 +49,6 @@ FileCache::FileCache(ResourceMetadataStorage* storage, free_disk_space_getter_(free_disk_space_getter), weak_ptr_factory_(this) { DCHECK(blocking_task_runner_.get()); - DCHECK_CURRENTLY_ON(BrowserThread::UI); } FileCache::~FileCache() { @@ -417,7 +416,7 @@ bool FileCache::Initialize() { } void FileCache::Destroy() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); in_shutdown_.Set(); diff --git a/chrome/browser/chromeos/drive/file_cache.h b/chrome/browser/chromeos/drive/file_cache.h index f93c3e1..d2ba35a 100644 --- a/chrome/browser/chromeos/drive/file_cache.h +++ b/chrome/browser/chromeos/drive/file_cache.h @@ -12,6 +12,7 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/cancellation_flag.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/resource_metadata_storage.h" @@ -180,6 +181,8 @@ class FileCache { // IDs of files marked mounted. std::set<std::string> mounted_files_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. // This object should be accessed only on |blocking_task_runner_|. diff --git a/chrome/browser/chromeos/drive/file_system.cc b/chrome/browser/chromeos/drive/file_system.cc index 189856b..7e04eec 100644 --- a/chrome/browser/chromeos/drive/file_system.cc +++ b/chrome/browser/chromeos/drive/file_system.cc @@ -32,11 +32,8 @@ #include "chrome/browser/chromeos/drive/search_metadata.h" #include "chrome/browser/chromeos/drive/sync_client.h" #include "chrome/common/pref_names.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" -using content::BrowserThread; - namespace drive { namespace { @@ -90,7 +87,6 @@ FileError GetLocallyStoredResourceEntry( void RunGetResourceEntryCallback(const GetResourceEntryCallback& callback, scoped_ptr<ResourceEntry> entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) @@ -160,7 +156,6 @@ void OnGetLargestChangestamp( const GetFilesystemMetadataCallback& callback, const int64* largest_changestamp, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!callback.is_null()); metadata.largest_changestamp = *largest_changestamp; @@ -205,7 +200,6 @@ FileError GetPathFromResourceIdOnBlockingPool( void GetPathFromResourceIdAfterGetPath(base::FilePath* file_path, const GetFilePathCallback& callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); callback.Run(error, *file_path); } @@ -218,7 +212,6 @@ bool FreeDiskSpaceIfNeededForOnBlockingPool(internal::FileCache* cache, // Used to implement ReadDirectory(). void FilterHostedDocuments(const ReadDirectoryEntriesCallback& callback, scoped_ptr<ResourceEntryVector> entries) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!callback.is_null()); if (entries) { @@ -295,13 +288,11 @@ FileSystem::FileSystem(PrefService* pref_service, file_task_runner_(file_task_runner), temporary_file_directory_(temporary_file_directory), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - ResetComponents(); } FileSystem::~FileSystem() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); directory_loader_->RemoveObserver(this); change_list_loader_->RemoveObserver(this); @@ -409,7 +400,7 @@ void FileSystem::ResetComponents() { } void FileSystem::CheckForUpdates() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DVLOG(1) << "CheckForUpdates"; change_list_loader_->CheckForUpdates( @@ -417,19 +408,19 @@ void FileSystem::CheckForUpdates() { } void FileSystem::OnUpdateChecked(FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DVLOG(1) << "CheckForUpdates finished: " << FileErrorToString(error); last_update_check_time_ = base::Time::Now(); last_update_check_error_ = error; } void FileSystem::AddObserver(FileSystemObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observers_.AddObserver(observer); } void FileSystem::RemoveObserver(FileSystemObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observers_.RemoveObserver(observer); } @@ -437,7 +428,7 @@ void FileSystem::TransferFileFromLocalToRemote( const base::FilePath& local_src_file_path, const base::FilePath& remote_dest_file_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); copy_operation_->TransferFileFromLocalToRemote(local_src_file_path, remote_dest_file_path, @@ -448,7 +439,7 @@ void FileSystem::Copy(const base::FilePath& src_file_path, const base::FilePath& dest_file_path, bool preserve_last_modified, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); copy_operation_->Copy( src_file_path, dest_file_path, preserve_last_modified, callback); @@ -457,7 +448,7 @@ void FileSystem::Copy(const base::FilePath& src_file_path, void FileSystem::Move(const base::FilePath& src_file_path, const base::FilePath& dest_file_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); move_operation_->Move(src_file_path, dest_file_path, callback); } @@ -465,7 +456,7 @@ void FileSystem::Move(const base::FilePath& src_file_path, void FileSystem::Remove(const base::FilePath& file_path, bool is_recursive, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); remove_operation_->Remove(file_path, is_recursive, callback); } @@ -475,7 +466,7 @@ void FileSystem::CreateDirectory( bool is_exclusive, bool is_recursive, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); CreateDirectoryParams params; @@ -493,7 +484,7 @@ void FileSystem::CreateDirectory( void FileSystem::CreateDirectoryAfterRead(const CreateDirectoryParams& params, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!params.callback.is_null()); DVLOG_IF(1, error != FILE_ERROR_OK) << "ReadDirectory failed. " @@ -508,7 +499,7 @@ void FileSystem::CreateFile(const base::FilePath& file_path, bool is_exclusive, const std::string& mime_type, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); create_file_operation_->CreateFile( file_path, is_exclusive, mime_type, callback); @@ -518,7 +509,7 @@ void FileSystem::TouchFile(const base::FilePath& file_path, const base::Time& last_access_time, const base::Time& last_modified_time, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); touch_operation_->TouchFile( file_path, last_access_time, last_modified_time, callback); @@ -527,14 +518,14 @@ void FileSystem::TouchFile(const base::FilePath& file_path, void FileSystem::TruncateFile(const base::FilePath& file_path, int64 length, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); truncate_operation_->Truncate(file_path, length, callback); } void FileSystem::Pin(const base::FilePath& file_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); std::string* local_id = new std::string; @@ -551,7 +542,7 @@ void FileSystem::Pin(const base::FilePath& file_path, void FileSystem::FinishPin(const FileOperationCallback& callback, const std::string* local_id, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error == FILE_ERROR_OK) @@ -561,7 +552,7 @@ void FileSystem::FinishPin(const FileOperationCallback& callback, void FileSystem::Unpin(const base::FilePath& file_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); std::string* local_id = new std::string; @@ -579,7 +570,7 @@ void FileSystem::Unpin(const base::FilePath& file_path, void FileSystem::FinishUnpin(const FileOperationCallback& callback, const std::string* local_id, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error == FILE_ERROR_OK) @@ -589,7 +580,7 @@ void FileSystem::FinishUnpin(const FileOperationCallback& callback, void FileSystem::GetFile(const base::FilePath& file_path, const GetFileCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); download_operation_->EnsureFileDownloadedByPath( @@ -602,7 +593,7 @@ void FileSystem::GetFile(const base::FilePath& file_path, void FileSystem::GetFileForSaving(const base::FilePath& file_path, const GetFileCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); get_file_for_saving_operation_->GetFileForSaving(file_path, callback); @@ -613,7 +604,7 @@ base::Closure FileSystem::GetFileContent( const GetFileContentInitializedCallback& initialized_callback, const google_apis::GetContentCallback& get_content_callback, const FileOperationCallback& completion_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!initialized_callback.is_null()); DCHECK(!get_content_callback.is_null()); DCHECK(!completion_callback.is_null()); @@ -630,7 +621,7 @@ base::Closure FileSystem::GetFileContent( void FileSystem::GetResourceEntry( const base::FilePath& file_path, const GetResourceEntryCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); ReadDirectory(file_path.DirName(), @@ -645,7 +636,7 @@ void FileSystem::GetResourceEntryAfterRead( const base::FilePath& file_path, const GetResourceEntryCallback& callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); DVLOG_IF(1, error != FILE_ERROR_OK) << "ReadDirectory failed. " @@ -668,7 +659,7 @@ void FileSystem::ReadDirectory( const base::FilePath& directory_path, const ReadDirectoryEntriesCallback& entries_callback_in, const FileOperationCallback& completion_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!completion_callback.is_null()); const bool hide_hosted_docs = @@ -687,7 +678,7 @@ void FileSystem::ReadDirectory( void FileSystem::GetAvailableSpace( const GetAvailableSpaceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); about_resource_loader_->GetAboutResource( @@ -700,7 +691,7 @@ void FileSystem::OnGetAboutResource( const GetAvailableSpaceCallback& callback, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::AboutResource> about_resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); @@ -717,7 +708,7 @@ void FileSystem::OnGetAboutResource( void FileSystem::GetShareUrl(const base::FilePath& file_path, const GURL& embed_origin, const GetShareUrlCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // Resolve the resource id. @@ -743,7 +734,7 @@ void FileSystem::GetShareUrlAfterGetResourceEntry( const GetShareUrlCallback& callback, ResourceEntry* entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -769,7 +760,7 @@ void FileSystem::OnGetResourceEntryForGetShareUrl( const GetShareUrlCallback& callback, google_apis::DriveApiErrorCode status, const GURL& share_url) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); @@ -789,7 +780,7 @@ void FileSystem::OnGetResourceEntryForGetShareUrl( void FileSystem::Search(const std::string& search_query, const GURL& next_link, const SearchCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); search_operation_->Search(search_query, next_link, callback); } @@ -798,7 +789,7 @@ void FileSystem::SearchMetadata(const std::string& query, int options, int at_most_num_matches, const SearchMetadataCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); // TODO(satorux): Stop handling hide_hosted_docs here. crbug.com/256520. if (pref_service_->GetBoolean(prefs::kDisableDriveHostedFiles)) @@ -812,7 +803,7 @@ void FileSystem::SearchMetadata(const std::string& query, void FileSystem::SearchByHashes(const std::set<std::string>& hashes, const SearchByHashesCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); drive::internal::SearchMetadata( blocking_task_runner_, resource_metadata_, /* any file name */ "", base::Bind(&CheckHashes, hashes), @@ -821,7 +812,7 @@ void FileSystem::SearchByHashes(const std::set<std::string>& hashes, } void FileSystem::OnFileChangedByOperation(const FileChange& changed_files) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FOR_EACH_OBSERVER( FileSystemObserver, observers_, OnFileChanged(changed_files)); @@ -865,27 +856,27 @@ bool FileSystem::WaitForSyncComplete(const std::string& local_id, } void FileSystem::OnDirectoryReloaded(const base::FilePath& directory_path) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FOR_EACH_OBSERVER( FileSystemObserver, observers_, OnDirectoryChanged(directory_path)); } void FileSystem::OnFileChanged(const FileChange& changed_files) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FOR_EACH_OBSERVER( FileSystemObserver, observers_, OnFileChanged(changed_files)); } void FileSystem::OnLoadFromServerComplete() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); sync_client_->StartCheckingExistingPinnedFiles(); } void FileSystem::OnInitialLoadComplete() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); blocking_task_runner_->PostTask(FROM_HERE, base::Bind(&internal::RemoveStaleCacheFiles, @@ -896,7 +887,7 @@ void FileSystem::OnInitialLoadComplete() { void FileSystem::GetMetadata( const GetFilesystemMetadataCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileSystemMetadata metadata; @@ -922,7 +913,7 @@ void FileSystem::GetMetadata( void FileSystem::MarkCacheFileAsMounted( const base::FilePath& drive_file_path, const MarkMountedCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); base::FilePath* cache_file_path = new base::FilePath; @@ -941,7 +932,7 @@ void FileSystem::MarkCacheFileAsMounted( void FileSystem::MarkCacheFileAsUnmounted( const base::FilePath& cache_file_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (!cache_->IsUnderFileCacheDirectory(cache_file_path)) { @@ -962,7 +953,7 @@ void FileSystem::AddPermission(const base::FilePath& drive_file_path, const std::string& email, google_apis::drive::PermissionRole role, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); // Resolve the resource id. @@ -988,7 +979,7 @@ void FileSystem::AddPermissionAfterGetResourceEntry( const FileOperationCallback& callback, ResourceEntry* entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (error != FILE_ERROR_OK) { callback.Run(error); @@ -1008,7 +999,7 @@ void FileSystem::SetProperty( const std::string& key, const std::string& value, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); set_property_operation_->SetProperty(drive_file_path, visibility, key, value, @@ -1019,7 +1010,7 @@ void FileSystem::OpenFile(const base::FilePath& file_path, OpenMode open_mode, const std::string& mime_type, const OpenFileCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); open_file_operation_->OpenFile(file_path, open_mode, mime_type, callback); @@ -1027,7 +1018,7 @@ void FileSystem::OpenFile(const base::FilePath& file_path, void FileSystem::GetPathFromResourceId(const std::string& resource_id, const GetFilePathCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); base::FilePath* const file_path = new base::FilePath(); @@ -1046,7 +1037,7 @@ void FileSystem::GetPathFromResourceId(const std::string& resource_id, void FileSystem::FreeDiskSpaceIfNeededFor( int64 num_bytes, const FreeDiskSpaceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); base::PostTaskAndReplyWithResult( blocking_task_runner_.get(), FROM_HERE, diff --git a/chrome/browser/chromeos/drive/file_system.h b/chrome/browser/chromeos/drive/file_system.h index c96594a..7d091ab 100644 --- a/chrome/browser/chromeos/drive/file_system.h +++ b/chrome/browser/chromeos/drive/file_system.h @@ -11,6 +11,7 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/change_list_loader_observer.h" #include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/file_system_interface.h" @@ -294,6 +295,8 @@ class FileSystem : public FileSystemInterface, get_file_for_saving_operation_; scoped_ptr<file_system::SetPropertyOperation> set_property_operation_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<FileSystem> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/copy_operation.cc b/chrome/browser/chromeos/drive/file_system/copy_operation.cc index 39b959a..e6b58f1 100644 --- a/chrome/browser/chromeos/drive/file_system/copy_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/copy_operation.cc @@ -17,11 +17,8 @@ #include "chrome/browser/chromeos/drive/resource_entry_conversion.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "chrome/browser/drive/drive_api_util.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" -using content::BrowserThread; - namespace drive { namespace file_system { @@ -288,18 +285,17 @@ CopyOperation::CopyOperation(base::SequencedTaskRunner* blocking_task_runner, delegate, metadata)), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } CopyOperation::~CopyOperation() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void CopyOperation::Copy(const base::FilePath& src_file_path, const base::FilePath& dest_file_path, bool preserve_last_modified, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); CopyParams* params = new CopyParams; @@ -328,7 +324,7 @@ void CopyOperation::CopyAfterTryToCopyLocally( const bool* directory_changed, const bool* should_copy_on_server, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!params->callback.is_null()); for (const auto& id : *updated_local_ids) { @@ -366,7 +362,7 @@ void CopyOperation::CopyAfterTryToCopyLocally( void CopyOperation::CopyAfterParentSync(const CopyParams& params, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!params.callback.is_null()); if (error != FILE_ERROR_OK) { @@ -391,7 +387,7 @@ void CopyOperation::CopyAfterParentSync(const CopyParams& params, void CopyOperation::CopyAfterGetParentResourceId(const CopyParams& params, const ResourceEntry* parent, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!params.callback.is_null()); if (error != FILE_ERROR_OK) { @@ -420,7 +416,7 @@ void CopyOperation::TransferFileFromLocalToRemote( const base::FilePath& local_src_path, const base::FilePath& remote_dest_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); std::string* gdoc_resource_id = new std::string; @@ -446,7 +442,7 @@ void CopyOperation::TransferFileFromLocalToRemoteAfterPrepare( std::string* gdoc_resource_id, ResourceEntry* parent_entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -483,7 +479,7 @@ void CopyOperation::TransferFileFromLocalToRemoteAfterPrepare( void CopyOperation::TransferJsonGdocFileAfterLocalWork( TransferJsonGdocParams* params, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (error != FILE_ERROR_OK) { params->callback.Run(error); @@ -541,7 +537,7 @@ void CopyOperation::CopyResourceOnServer( const std::string& new_title, const base::Time& last_modified, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scheduler_->CopyResource( @@ -555,7 +551,7 @@ void CopyOperation::UpdateAfterServerSideOperation( const FileOperationCallback& callback, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::FileResource> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); @@ -589,7 +585,7 @@ void CopyOperation::UpdateAfterLocalStateUpdate( base::FilePath* file_path, const ResourceEntry* entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error == FILE_ERROR_OK) { @@ -604,7 +600,7 @@ void CopyOperation::ScheduleTransferRegularFile( const base::FilePath& local_src_path, const base::FilePath& remote_dest_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); create_file_operation_->CreateFile( @@ -621,7 +617,7 @@ void CopyOperation::ScheduleTransferRegularFileAfterCreate( const base::FilePath& remote_dest_path, const FileOperationCallback& callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -656,7 +652,7 @@ void CopyOperation::ScheduleTransferRegularFileAfterUpdateLocalState( const ResourceEntry* entry, std::string* local_id, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error == FILE_ERROR_OK) { diff --git a/chrome/browser/chromeos/drive/file_system/copy_operation.h b/chrome/browser/chromeos/drive/file_system/copy_operation.h index 6a3833d..af3bbdc 100644 --- a/chrome/browser/chromeos/drive/file_system/copy_operation.h +++ b/chrome/browser/chromeos/drive/file_system/copy_operation.h @@ -12,6 +12,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -166,6 +167,8 @@ class CopyOperation { // Uploading a new file is internally implemented by creating a dirty file. scoped_ptr<CreateFileOperation> create_file_operation_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<CopyOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc b/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc index 28d36b9..1901c4c 100644 --- a/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/create_directory_operation.cc @@ -10,9 +10,6 @@ #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace file_system { @@ -130,11 +127,10 @@ CreateDirectoryOperation::CreateDirectoryOperation( delegate_(delegate), metadata_(metadata), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } CreateDirectoryOperation::~CreateDirectoryOperation() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void CreateDirectoryOperation::CreateDirectory( @@ -142,7 +138,7 @@ void CreateDirectoryOperation::CreateDirectory( bool is_exclusive, bool is_recursive, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); std::set<std::string>* updated_local_ids = new std::set<std::string>; @@ -170,7 +166,7 @@ void CreateDirectoryOperation::CreateDirectoryAfterUpdateLocalState( const std::set<std::string>* updated_local_ids, const FileChange* changed_files, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); for (const auto& id : *updated_local_ids) { diff --git a/chrome/browser/chromeos/drive/file_system/create_directory_operation.h b/chrome/browser/chromeos/drive/file_system/create_directory_operation.h index f77a599..4b3055b 100644 --- a/chrome/browser/chromeos/drive/file_system/create_directory_operation.h +++ b/chrome/browser/chromeos/drive/file_system/create_directory_operation.h @@ -10,6 +10,7 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" namespace base { @@ -64,6 +65,8 @@ class CreateDirectoryOperation { OperationDelegate* delegate_; internal::ResourceMetadata* metadata_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<CreateDirectoryOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/create_file_operation.cc b/chrome/browser/chromeos/drive/file_system/create_file_operation.cc index afbc20c..12e57aa 100644 --- a/chrome/browser/chromeos/drive/file_system/create_file_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/create_file_operation.cc @@ -12,11 +12,8 @@ #include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" -#include "content/public/browser/browser_thread.h" #include "net/base/mime_util.h" -using content::BrowserThread; - namespace drive { namespace file_system { @@ -78,18 +75,17 @@ CreateFileOperation::CreateFileOperation( delegate_(delegate), metadata_(metadata), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } CreateFileOperation::~CreateFileOperation() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void CreateFileOperation::CreateFile(const base::FilePath& file_path, bool is_exclusive, const std::string& mime_type, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); ResourceEntry* entry = new ResourceEntry; @@ -115,7 +111,7 @@ void CreateFileOperation::CreateFileAfterUpdateLocalState( bool is_exclusive, ResourceEntry* entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error == FILE_ERROR_EXISTS) { diff --git a/chrome/browser/chromeos/drive/file_system/create_file_operation.h b/chrome/browser/chromeos/drive/file_system/create_file_operation.h index d515ac7..6c2b627 100644 --- a/chrome/browser/chromeos/drive/file_system/create_file_operation.h +++ b/chrome/browser/chromeos/drive/file_system/create_file_operation.h @@ -8,6 +8,7 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" namespace base { @@ -61,6 +62,8 @@ class CreateFileOperation { OperationDelegate* delegate_; internal::ResourceMetadata* metadata_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<CreateFileOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/download_operation.cc b/chrome/browser/chromeos/drive/file_system/download_operation.cc index 1aeb5e7..d3dde19 100644 --- a/chrome/browser/chromeos/drive/file_system/download_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/download_operation.cc @@ -17,11 +17,8 @@ #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_error_codes.h" -using content::BrowserThread; - namespace drive { namespace file_system { namespace { @@ -360,7 +357,7 @@ base::Closure DownloadOperation::EnsureFileDownloadedByLocalId( const GetFileContentInitializedCallback& initialized_callback, const google_apis::GetContentCallback& get_content_callback, const GetFileCallback& completion_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!completion_callback.is_null()); CheckPreconditionForEnsureFileDownloadedParams params; @@ -401,7 +398,7 @@ base::Closure DownloadOperation::EnsureFileDownloadedByPath( const GetFileContentInitializedCallback& initialized_callback, const google_apis::GetContentCallback& get_content_callback, const GetFileCallback& completion_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!completion_callback.is_null()); CheckPreconditionForEnsureFileDownloadedParams params; @@ -442,7 +439,7 @@ void DownloadOperation::EnsureFileDownloadedAfterCheckPreCondition( base::FilePath* cache_file_path, base::FilePath* temp_download_file_path, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(params); DCHECK(drive_file_path); DCHECK(cache_file_path); @@ -489,7 +486,7 @@ void DownloadOperation::EnsureFileDownloadedAfterDownloadFile( scoped_ptr<DownloadParams> params, google_apis::DriveApiErrorCode gdata_error, const base::FilePath& downloaded_file_path) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DownloadParams* params_ptr = params.get(); ResourceEntry* entry_after_update = new ResourceEntry; @@ -519,7 +516,7 @@ void DownloadOperation::EnsureFileDownloadedAfterUpdateLocalState( scoped_ptr<ResourceEntry> entry_after_update, base::FilePath* cache_file_path, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (error != FILE_ERROR_OK) { params->OnError(error); diff --git a/chrome/browser/chromeos/drive/file_system/download_operation.h b/chrome/browser/chromeos/drive/file_system/download_operation.h index 9dcd52d..2ad4018 100644 --- a/chrome/browser/chromeos/drive/file_system/download_operation.h +++ b/chrome/browser/chromeos/drive/file_system/download_operation.h @@ -7,6 +7,7 @@ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/file_system_interface.h" #include "chrome/browser/chromeos/drive/job_list.h" @@ -118,6 +119,8 @@ class DownloadOperation { internal::FileCache* cache_; const base::FilePath temporary_file_directory_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<DownloadOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.cc b/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.cc index ea85f58..12f2898 100644 --- a/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.cc @@ -16,8 +16,6 @@ #include "chrome/browser/drive/event_logger.h" #include "content/public/browser/browser_thread.h" -using content::BrowserThread; - namespace drive { namespace file_system { @@ -69,7 +67,7 @@ GetFileForSavingOperation::~GetFileForSavingOperation() { void GetFileForSavingOperation::GetFileForSaving( const base::FilePath& file_path, const GetFileCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); create_file_operation_->CreateFile( @@ -86,7 +84,7 @@ void GetFileForSavingOperation::GetFileForSavingAfterCreate( const base::FilePath& file_path, const GetFileCallback& callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -109,7 +107,7 @@ void GetFileForSavingOperation::GetFileForSavingAfterDownload( FileError error, const base::FilePath& cache_path, scoped_ptr<ResourceEntry> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -144,7 +142,7 @@ void GetFileForSavingOperation::GetFileForSavingAfterOpenForWrite( scoped_ptr<ResourceEntry> entry, scoped_ptr<base::ScopedClosureRunner>* file_closer, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -171,7 +169,7 @@ void GetFileForSavingOperation::GetFileForSavingAfterWatch( const base::FilePath& cache_path, scoped_ptr<ResourceEntry> entry, bool success) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); logger_->Log(logging::LOG_INFO, "Started watching modification to %s [%s].", diff --git a/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.h b/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.h index 749c5f0..fc63db1 100644 --- a/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.h +++ b/chrome/browser/chromeos/drive/file_system/get_file_for_saving_operation.h @@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/file_system_interface.h" @@ -94,6 +95,8 @@ class GetFileForSavingOperation { internal::ResourceMetadata* metadata_; internal::FileCache* cache_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<GetFileForSavingOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/move_operation.cc b/chrome/browser/chromeos/drive/file_system/move_operation.cc index 402ee53..9d9391b 100644 --- a/chrome/browser/chromeos/drive/file_system/move_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/move_operation.cc @@ -10,9 +10,6 @@ #include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace file_system { @@ -74,17 +71,16 @@ MoveOperation::MoveOperation(base::SequencedTaskRunner* blocking_task_runner, delegate_(delegate), metadata_(metadata), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } MoveOperation::~MoveOperation() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void MoveOperation::Move(const base::FilePath& src_file_path, const base::FilePath& dest_file_path, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileChange* changed_files = new FileChange; @@ -110,7 +106,7 @@ void MoveOperation::MoveAfterUpdateLocalState( const FileChange* changed_files, const std::string* local_id, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (error == FILE_ERROR_OK) { // Notify the change of directory. delegate_->OnFileChangedByOperation(*changed_files); diff --git a/chrome/browser/chromeos/drive/file_system/move_operation.h b/chrome/browser/chromeos/drive/file_system/move_operation.h index 5bea0e6..7b41933 100644 --- a/chrome/browser/chromeos/drive/file_system/move_operation.h +++ b/chrome/browser/chromeos/drive/file_system/move_operation.h @@ -11,6 +11,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -64,6 +65,8 @@ class MoveOperation { OperationDelegate* delegate_; internal::ResourceMetadata* metadata_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<MoveOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/open_file_operation.cc b/chrome/browser/chromeos/drive/file_system/open_file_operation.cc index d8aa4a0..ee779ec 100644 --- a/chrome/browser/chromeos/drive/file_system/open_file_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/open_file_operation.cc @@ -18,9 +18,6 @@ #include "chrome/browser/chromeos/drive/file_system/download_operation.h" #include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace file_system { @@ -50,7 +47,7 @@ void OpenFileOperation::OpenFile(const base::FilePath& file_path, OpenMode open_mode, const std::string& mime_type, const OpenFileCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); switch (open_mode) { @@ -83,7 +80,7 @@ void OpenFileOperation::OpenFileAfterCreateFile( const base::FilePath& file_path, const OpenFileCallback& callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -106,7 +103,7 @@ void OpenFileOperation::OpenFileAfterFileDownloaded( FileError error, const base::FilePath& local_file_path, scoped_ptr<ResourceEntry> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error == FILE_ERROR_OK) { @@ -145,7 +142,7 @@ void OpenFileOperation::OpenFileAfterOpenForWrite( const OpenFileCallback& callback, scoped_ptr<base::ScopedClosureRunner>* file_closer, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -164,7 +161,7 @@ void OpenFileOperation::OpenFileAfterOpenForWrite( void OpenFileOperation::CloseFile( const std::string& local_id, scoped_ptr<base::ScopedClosureRunner> file_closer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK_GT(open_files_[local_id], 0); if (--open_files_[local_id] == 0) { diff --git a/chrome/browser/chromeos/drive/file_system/open_file_operation.h b/chrome/browser/chromeos/drive/file_system/open_file_operation.h index 953130b..02795b6 100644 --- a/chrome/browser/chromeos/drive/file_system/open_file_operation.h +++ b/chrome/browser/chromeos/drive/file_system/open_file_operation.h @@ -11,6 +11,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/file_system_interface.h" @@ -94,6 +95,8 @@ class OpenFileOperation { // the file is opened. std::map<std::string, int> open_files_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<OpenFileOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/remove_operation.cc b/chrome/browser/chromeos/drive/file_system/remove_operation.cc index c3f7a1e..d3d58d9 100644 --- a/chrome/browser/chromeos/drive/file_system/remove_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/remove_operation.cc @@ -12,9 +12,6 @@ #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace file_system { @@ -70,17 +67,16 @@ RemoveOperation::RemoveOperation( metadata_(metadata), cache_(cache), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } RemoveOperation::~RemoveOperation() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void RemoveOperation::Remove(const base::FilePath& path, bool is_recursive, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); std::string* local_id = new std::string; @@ -111,7 +107,7 @@ void RemoveOperation::RemoveAfterUpdateLocalState( const ResourceEntry* entry, const base::FilePath* changed_path, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (!changed_path->empty()) { diff --git a/chrome/browser/chromeos/drive/file_system/remove_operation.h b/chrome/browser/chromeos/drive/file_system/remove_operation.h index 215e6a3..c8cc6f3 100644 --- a/chrome/browser/chromeos/drive/file_system/remove_operation.h +++ b/chrome/browser/chromeos/drive/file_system/remove_operation.h @@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -62,6 +63,8 @@ class RemoveOperation { internal::ResourceMetadata* metadata_; internal::FileCache* cache_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<RemoveOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/search_operation.cc b/chrome/browser/chromeos/drive/file_system/search_operation.cc index 8b32317..182cb6f 100644 --- a/chrome/browser/chromeos/drive/file_system/search_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/search_operation.cc @@ -17,12 +17,9 @@ #include "chrome/browser/chromeos/drive/resource_entry_conversion.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "chrome/browser/drive/drive_api_util.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" #include "url/gurl.h" -using content::BrowserThread; - namespace drive { namespace file_system { namespace { @@ -98,7 +95,7 @@ SearchOperation::~SearchOperation() { void SearchOperation::Search(const std::string& search_query, const GURL& next_link, const SearchCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (next_link.is_empty()) { @@ -120,7 +117,7 @@ void SearchOperation::SearchAfterGetFileList( const SearchCallback& callback, google_apis::DriveApiErrorCode gdata_error, scoped_ptr<google_apis::FileList> file_list) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(gdata_error); @@ -167,7 +164,7 @@ void SearchOperation::SearchAfterResolveSearchResult( const GURL& next_link, scoped_ptr<std::vector<SearchResultInfo> > result, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); DCHECK(result); diff --git a/chrome/browser/chromeos/drive/file_system/search_operation.h b/chrome/browser/chromeos/drive/file_system/search_operation.h index aa2e5f7..709371d 100644 --- a/chrome/browser/chromeos/drive/file_system/search_operation.h +++ b/chrome/browser/chromeos/drive/file_system/search_operation.h @@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/file_system_interface.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -71,6 +72,8 @@ class SearchOperation { internal::ResourceMetadata* metadata_; internal::LoaderController* loader_controller_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<SearchOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/set_property_operation.cc b/chrome/browser/chromeos/drive/file_system/set_property_operation.cc index 111f9b7..509ba2a 100644 --- a/chrome/browser/chromeos/drive/file_system/set_property_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/set_property_operation.cc @@ -12,9 +12,6 @@ #include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace file_system { @@ -90,7 +87,7 @@ void SetPropertyOperation::SetProperty( const std::string& key, const std::string& value, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); ResourceEntry* entry = new ResourceEntry; @@ -106,7 +103,7 @@ void SetPropertyOperation::SetPropertyAfterUpdateLocalState( const FileOperationCallback& callback, const ResourceEntry* entry, FileError result) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (result == FILE_ERROR_OK) { diff --git a/chrome/browser/chromeos/drive/file_system/set_property_operation.h b/chrome/browser/chromeos/drive/file_system/set_property_operation.h index 5d5634f..6a93a16 100644 --- a/chrome/browser/chromeos/drive/file_system/set_property_operation.h +++ b/chrome/browser/chromeos/drive/file_system/set_property_operation.h @@ -10,6 +10,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_requests.h" @@ -55,6 +56,8 @@ class SetPropertyOperation { OperationDelegate* delegate_; internal::ResourceMetadata* metadata_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<SetPropertyOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/touch_operation.cc b/chrome/browser/chromeos/drive/file_system/touch_operation.cc index 217bd92..47dd5aa 100644 --- a/chrome/browser/chromeos/drive/file_system/touch_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/touch_operation.cc @@ -13,9 +13,6 @@ #include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace file_system { @@ -60,7 +57,7 @@ void TouchOperation::TouchFile(const base::FilePath& file_path, const base::Time& last_access_time, const base::Time& last_modified_time, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); ResourceEntry* entry = new ResourceEntry; @@ -78,7 +75,7 @@ void TouchOperation::TouchFileAfterUpdateLocalState( const FileOperationCallback& callback, const ResourceEntry* entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileChange changed_files; diff --git a/chrome/browser/chromeos/drive/file_system/touch_operation.h b/chrome/browser/chromeos/drive/file_system/touch_operation.h index 15d6849..fe2ebc2 100644 --- a/chrome/browser/chromeos/drive/file_system/touch_operation.h +++ b/chrome/browser/chromeos/drive/file_system/touch_operation.h @@ -8,6 +8,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" namespace base { @@ -53,6 +54,8 @@ class TouchOperation { OperationDelegate* delegate_; internal::ResourceMetadata* metadata_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<TouchOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_system/truncate_operation.cc b/chrome/browser/chromeos/drive/file_system/truncate_operation.cc index 0c0edaf..ff1307e 100644 --- a/chrome/browser/chromeos/drive/file_system/truncate_operation.cc +++ b/chrome/browser/chromeos/drive/file_system/truncate_operation.cc @@ -18,9 +18,6 @@ #include "chrome/browser/chromeos/drive/file_system/download_operation.h" #include "chrome/browser/chromeos/drive/file_system/operation_delegate.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace file_system { @@ -80,7 +77,7 @@ TruncateOperation::~TruncateOperation() { void TruncateOperation::Truncate(const base::FilePath& file_path, int64 length, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (length < 0) { @@ -107,7 +104,7 @@ void TruncateOperation::TruncateAfterEnsureFileDownloadedByPath( FileError error, const base::FilePath& local_file_path, scoped_ptr<ResourceEntry> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -136,7 +133,7 @@ void TruncateOperation::TruncateAfterTruncateOnBlockingPool( const std::string& local_id, const FileOperationCallback& callback, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); delegate_->OnEntryUpdatedByOperation(ClientContext(USER_INITIATED), local_id); diff --git a/chrome/browser/chromeos/drive/file_system/truncate_operation.h b/chrome/browser/chromeos/drive/file_system/truncate_operation.h index 0a6d5e7..5067c6b 100644 --- a/chrome/browser/chromeos/drive/file_system/truncate_operation.h +++ b/chrome/browser/chromeos/drive/file_system/truncate_operation.h @@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" namespace base { @@ -73,6 +74,8 @@ class TruncateOperation { scoped_ptr<DownloadOperation> download_operation_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<TruncateOperation> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/file_write_watcher.cc b/chrome/browser/chromeos/drive/file_write_watcher.cc index b6f84ba..a7a75aa 100644 --- a/chrome/browser/chromeos/drive/file_write_watcher.cc +++ b/chrome/browser/chromeos/drive/file_write_watcher.cc @@ -12,11 +12,8 @@ #include "base/files/file_path_watcher.h" #include "base/stl_util.h" #include "base/timer/timer.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/task_util.h" -using content::BrowserThread; - namespace drive { namespace internal { @@ -72,6 +69,8 @@ class FileWriteWatcher::FileWriteWatcherImpl { std::map<base::FilePath, PathWatchInfo*> watchers_; scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<FileWriteWatcherImpl> weak_ptr_factory_; @@ -83,11 +82,10 @@ FileWriteWatcher::FileWriteWatcherImpl::FileWriteWatcherImpl( : delay_(base::TimeDelta::FromSeconds(kWriteEventDelayInSeconds)), file_task_runner_(file_task_runner), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } void FileWriteWatcher::FileWriteWatcherImpl::Destroy() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); // Just forwarding the call to FILE thread. file_task_runner_->PostTask( @@ -99,7 +97,7 @@ void FileWriteWatcher::FileWriteWatcherImpl::StartWatch( const base::FilePath& path, const StartWatchCallback& on_start_callback, const base::Closure& on_write_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); // Forwarding the call to FILE thread and relaying the |callback|. file_task_runner_->PostTask( @@ -188,17 +186,16 @@ void FileWriteWatcher::FileWriteWatcherImpl::InvokeCallback( FileWriteWatcher::FileWriteWatcher( base::SingleThreadTaskRunner* file_task_runner) : watcher_impl_(new FileWriteWatcherImpl(file_task_runner)) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } FileWriteWatcher::~FileWriteWatcher() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void FileWriteWatcher::StartWatch(const base::FilePath& file_path, const StartWatchCallback& on_start_callback, const base::Closure& on_write_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); watcher_impl_->StartWatch(file_path, on_start_callback, on_write_callback); } diff --git a/chrome/browser/chromeos/drive/file_write_watcher.h b/chrome/browser/chromeos/drive/file_write_watcher.h index 63ee9f5..68004ca 100644 --- a/chrome/browser/chromeos/drive/file_write_watcher.h +++ b/chrome/browser/chromeos/drive/file_write_watcher.h @@ -7,6 +7,7 @@ #include "base/callback_forward.h" #include "base/memory/scoped_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_system_util.h" namespace base { @@ -54,6 +55,8 @@ class FileWriteWatcher { class FileWriteWatcherImpl; scoped_ptr<FileWriteWatcherImpl, util::DestroyHelper> watcher_impl_; + base::ThreadChecker thread_checker_; + DISALLOW_COPY_AND_ASSIGN(FileWriteWatcher); }; diff --git a/chrome/browser/chromeos/drive/job_scheduler.cc b/chrome/browser/chromeos/drive/job_scheduler.cc index bcf1a02..f5c749a 100644 --- a/chrome/browser/chromeos/drive/job_scheduler.cc +++ b/chrome/browser/chromeos/drive/job_scheduler.cc @@ -15,11 +15,8 @@ #include "base/thread_task_runner_handle.h" #include "chrome/browser/drive/event_logger.h" #include "chrome/common/pref_names.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" -using content::BrowserThread; - namespace drive { namespace { @@ -163,11 +160,10 @@ JobScheduler::JobEntry::JobEntry(JobType type) : job_info(type), context(ClientContext(USER_INITIATED)), retry_count(0) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } JobScheduler::JobEntry::~JobEntry() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } struct JobScheduler::ResumeUploadParams { @@ -189,8 +185,6 @@ JobScheduler::JobScheduler(PrefService* pref_service, uploader_(new DriveUploader(drive_service, blocking_task_runner)), pref_service_(pref_service), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - for (int i = 0; i < NUM_QUEUES; ++i) queue_[i].reset(new JobQueue(kMaxJobCount[i], NUM_CONTEXT_TYPES, kMaxBatchCount, kMaxBatchSize)); @@ -199,7 +193,7 @@ JobScheduler::JobScheduler(PrefService* pref_service, } JobScheduler::~JobScheduler() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); size_t num_queued_jobs = 0; for (int i = 0; i < NUM_QUEUES; ++i) @@ -217,17 +211,17 @@ std::vector<JobInfo> JobScheduler::GetJobInfoList() { } void JobScheduler::AddObserver(JobListObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observer_list_.AddObserver(observer); } void JobScheduler::RemoveObserver(JobListObserver* observer) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); observer_list_.RemoveObserver(observer); } void JobScheduler::CancelJob(JobID job_id) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); JobEntry* job = job_map_.Lookup(job_id); if (job) { @@ -244,7 +238,7 @@ void JobScheduler::CancelJob(JobID job_id) { } void JobScheduler::CancelAllJobs() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); // CancelJob may remove the entry from |job_map_|. That's OK. IDMap supports // removable during iteration. @@ -254,7 +248,7 @@ void JobScheduler::CancelAllJobs() { void JobScheduler::GetAboutResource( const google_apis::AboutResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_ABOUT_RESOURCE); @@ -270,7 +264,7 @@ void JobScheduler::GetAboutResource( } void JobScheduler::GetAppList(const google_apis::AppListCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_APP_LIST); @@ -287,7 +281,7 @@ void JobScheduler::GetAppList(const google_apis::AppListCallback& callback) { void JobScheduler::GetAllFileList( const google_apis::FileListCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_ALL_RESOURCE_LIST); @@ -305,7 +299,7 @@ void JobScheduler::GetAllFileList( void JobScheduler::GetFileListInDirectory( const std::string& directory_resource_id, const google_apis::FileListCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob( @@ -324,7 +318,7 @@ void JobScheduler::GetFileListInDirectory( void JobScheduler::Search(const std::string& search_query, const google_apis::FileListCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_SEARCH); @@ -343,7 +337,7 @@ void JobScheduler::Search(const std::string& search_query, void JobScheduler::GetChangeList( int64 start_changestamp, const google_apis::ChangeListCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_CHANGE_LIST); @@ -362,7 +356,7 @@ void JobScheduler::GetChangeList( void JobScheduler::GetRemainingChangeList( const GURL& next_link, const google_apis::ChangeListCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_CHANGE_LIST); @@ -381,7 +375,7 @@ void JobScheduler::GetRemainingChangeList( void JobScheduler::GetRemainingFileList( const GURL& next_link, const google_apis::FileListCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_FILE_LIST); @@ -401,7 +395,7 @@ void JobScheduler::GetFileResource( const std::string& resource_id, const ClientContext& context, const google_apis::FileResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_RESOURCE_ENTRY); @@ -423,7 +417,7 @@ void JobScheduler::GetShareUrl( const GURL& embed_origin, const ClientContext& context, const google_apis::GetShareUrlCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_GET_SHARE_URL); @@ -445,7 +439,7 @@ void JobScheduler::TrashResource( const std::string& resource_id, const ClientContext& context, const google_apis::EntryActionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_TRASH_RESOURCE); @@ -468,7 +462,7 @@ void JobScheduler::CopyResource( const std::string& new_title, const base::Time& last_modified, const google_apis::FileResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_COPY_RESOURCE); @@ -496,7 +490,7 @@ void JobScheduler::UpdateResource( const google_apis::drive::Properties& properties, const ClientContext& context, const google_apis::FileResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_UPDATE_RESOURCE); @@ -516,7 +510,7 @@ void JobScheduler::AddResourceToDirectory( const std::string& parent_resource_id, const std::string& resource_id, const google_apis::EntryActionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_ADD_RESOURCE_TO_DIRECTORY); @@ -538,7 +532,7 @@ void JobScheduler::RemoveResourceFromDirectory( const std::string& resource_id, const ClientContext& context, const google_apis::EntryActionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); JobEntry* new_job = CreateNewJob(TYPE_REMOVE_RESOURCE_FROM_DIRECTORY); new_job->context = context; @@ -561,7 +555,7 @@ void JobScheduler::AddNewDirectory( const AddNewDirectoryOptions& options, const ClientContext& context, const google_apis::FileResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); JobEntry* new_job = CreateNewJob(TYPE_ADD_NEW_DIRECTORY); new_job->context = context; @@ -587,7 +581,7 @@ JobID JobScheduler::DownloadFile( const ClientContext& context, const google_apis::DownloadActionCallback& download_action_callback, const google_apis::GetContentCallback& get_content_callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); // Temporary histogram for crbug.com/229650. CollectCopyHistogramSample("Drive.DownloadFromDriveFileSize", @@ -625,7 +619,7 @@ void JobScheduler::UploadNewFile( const UploadNewFileOptions& options, const ClientContext& context, const google_apis::FileResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); JobEntry* new_job = CreateNewJob(TYPE_UPLOAD_NEW_FILE); new_job->job_info.file_path = drive_file_path; @@ -668,7 +662,7 @@ void JobScheduler::UploadExistingFile( const UploadExistingFileOptions& options, const ClientContext& context, const google_apis::FileResourceCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); JobEntry* new_job = CreateNewJob(TYPE_UPLOAD_EXISTING_FILE); new_job->job_info.file_path = drive_file_path; @@ -706,7 +700,7 @@ void JobScheduler::AddPermission( const std::string& email, google_apis::drive::PermissionRole role, const google_apis::EntryActionCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); JobEntry* new_job = CreateNewJob(TYPE_ADD_PERMISSION); @@ -738,7 +732,7 @@ void JobScheduler::StartJob(JobEntry* job) { } void JobScheduler::QueueJob(JobID job_id) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); JobEntry* job_entry = job_map_.Lookup(job_id); DCHECK(job_entry); @@ -774,7 +768,7 @@ void JobScheduler::QueueJob(JobID job_id) { } void JobScheduler::DoJobLoop(QueueType queue_type) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); const int accepted_priority = GetCurrentAcceptedPriority(queue_type); @@ -832,7 +826,7 @@ void JobScheduler::DoJobLoop(QueueType queue_type) { } int JobScheduler::GetCurrentAcceptedPriority(QueueType queue_type) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); const int kNoJobShouldRun = -1; @@ -857,7 +851,7 @@ int JobScheduler::GetCurrentAcceptedPriority(QueueType queue_type) { } void JobScheduler::UpdateWait() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); if (disable_throttling_ || throttle_count_ == 0) return; @@ -873,7 +867,7 @@ void JobScheduler::UpdateWait() { bool JobScheduler::OnJobDone(JobID job_id, google_apis::DriveApiErrorCode error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); JobEntry* job_entry = job_map_.Lookup(job_id); DCHECK(job_entry); @@ -935,7 +929,7 @@ void JobScheduler::OnGetFileListJobDone( const google_apis::FileListCallback& callback, google_apis::DriveApiErrorCode error, scoped_ptr<google_apis::FileList> file_list) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -947,7 +941,7 @@ void JobScheduler::OnGetChangeListJobDone( const google_apis::ChangeListCallback& callback, google_apis::DriveApiErrorCode error, scoped_ptr<google_apis::ChangeList> change_list) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -959,7 +953,7 @@ void JobScheduler::OnGetFileResourceJobDone( const google_apis::FileResourceCallback& callback, google_apis::DriveApiErrorCode error, scoped_ptr<google_apis::FileResource> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -971,7 +965,7 @@ void JobScheduler::OnGetAboutResourceJobDone( const google_apis::AboutResourceCallback& callback, google_apis::DriveApiErrorCode error, scoped_ptr<google_apis::AboutResource> about_resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -983,7 +977,7 @@ void JobScheduler::OnGetShareUrlJobDone( const google_apis::GetShareUrlCallback& callback, google_apis::DriveApiErrorCode error, const GURL& share_url) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -995,7 +989,7 @@ void JobScheduler::OnGetAppListJobDone( const google_apis::AppListCallback& callback, google_apis::DriveApiErrorCode error, scoped_ptr<google_apis::AppList> app_list) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -1006,7 +1000,7 @@ void JobScheduler::OnEntryActionJobDone( JobID job_id, const google_apis::EntryActionCallback& callback, google_apis::DriveApiErrorCode error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -1018,7 +1012,7 @@ void JobScheduler::OnDownloadActionJobDone( const google_apis::DownloadActionCallback& callback, google_apis::DriveApiErrorCode error, const base::FilePath& temp_file) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (OnJobDone(job_id, error)) @@ -1032,7 +1026,7 @@ void JobScheduler::OnUploadCompletionJobDone( google_apis::DriveApiErrorCode error, const GURL& upload_location, scoped_ptr<google_apis::FileResource> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (!upload_location.is_empty()) { @@ -1069,7 +1063,7 @@ void JobScheduler::OnResumeUploadFileDone( google_apis::DriveApiErrorCode error, const GURL& upload_location, scoped_ptr<google_apis::FileResource> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!original_task.is_null()); DCHECK(!callback.is_null()); @@ -1097,7 +1091,7 @@ void JobScheduler::UpdateProgress(JobID job_id, int64 progress, int64 total) { void JobScheduler::OnConnectionTypeChanged( net::NetworkChangeNotifier::ConnectionType type) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); // Resume the job loop. // Note that we don't need to check the network connection status as it will @@ -1138,7 +1132,7 @@ JobScheduler::QueueType JobScheduler::GetJobQueueType(JobType type) { void JobScheduler::AbortNotRunningJob(JobEntry* job, google_apis::DriveApiErrorCode error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); const base::TimeDelta elapsed = base::Time::Now() - job->job_info.start_time; const QueueType queue_type = GetJobQueueType(job->job_info.job_type); @@ -1159,19 +1153,19 @@ void JobScheduler::AbortNotRunningJob(JobEntry* job, } void JobScheduler::NotifyJobAdded(const JobInfo& job_info) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FOR_EACH_OBSERVER(JobListObserver, observer_list_, OnJobAdded(job_info)); } void JobScheduler::NotifyJobDone(const JobInfo& job_info, google_apis::DriveApiErrorCode error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FOR_EACH_OBSERVER(JobListObserver, observer_list_, OnJobDone(job_info, GDataToFileError(error))); } void JobScheduler::NotifyJobUpdated(const JobInfo& job_info) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); FOR_EACH_OBSERVER(JobListObserver, observer_list_, OnJobUpdated(job_info)); } diff --git a/chrome/browser/chromeos/drive/job_scheduler.h b/chrome/browser/chromeos/drive/job_scheduler.h index 1d0eae3..39909ca 100644 --- a/chrome/browser/chromeos/drive/job_scheduler.h +++ b/chrome/browser/chromeos/drive/job_scheduler.h @@ -11,6 +11,7 @@ #include "base/id_map.h" #include "base/memory/scoped_ptr.h" #include "base/observer_list.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/job_list.h" #include "chrome/browser/chromeos/drive/job_queue.h" #include "chrome/browser/drive/drive_service_interface.h" @@ -239,6 +240,8 @@ class JobScheduler // The callback to notify an error to the client of JobScheduler. // This is used to notify cancel of a job that is not running yet. base::Callback<void(google_apis::DriveApiErrorCode)> abort_callback; + + base::ThreadChecker thread_checker_; }; // Parameters for DriveUploader::ResumeUploadFile. @@ -395,6 +398,8 @@ class JobScheduler PrefService* pref_service_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<JobScheduler> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/resource_metadata.cc b/chrome/browser/chromeos/drive/resource_metadata.cc index 8b27437..d63b0c4 100644 --- a/chrome/browser/chromeos/drive/resource_metadata.cc +++ b/chrome/browser/chromeos/drive/resource_metadata.cc @@ -4,7 +4,10 @@ #include "chrome/browser/chromeos/drive/resource_metadata.h" +#include "base/bind.h" +#include "base/bind_helpers.h" #include "base/guid.h" +#include "base/location.h" #include "base/rand_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" @@ -13,9 +16,6 @@ #include "chrome/browser/chromeos/drive/file_cache.h" #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/drive/resource_metadata_storage.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; namespace drive { namespace internal { @@ -72,7 +72,6 @@ ResourceMetadata::ResourceMetadata( : blocking_task_runner_(blocking_task_runner), storage_(storage), cache_(cache) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } FileError ResourceMetadata::Initialize() { @@ -81,7 +80,7 @@ FileError ResourceMetadata::Initialize() { } void ResourceMetadata::Destroy() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); blocking_task_runner_->PostTask( FROM_HERE, diff --git a/chrome/browser/chromeos/drive/resource_metadata.h b/chrome/browser/chromeos/drive/resource_metadata.h index fdafc87..ffdcb1a 100644 --- a/chrome/browser/chromeos/drive/resource_metadata.h +++ b/chrome/browser/chromeos/drive/resource_metadata.h @@ -11,6 +11,7 @@ #include "base/files/file_path.h" #include "base/memory/scoped_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/resource_metadata_storage.h" @@ -134,6 +135,8 @@ class ResourceMetadata { ResourceMetadataStorage* storage_; FileCache* cache_; + base::ThreadChecker thread_checker_; + DISALLOW_COPY_AND_ASSIGN(ResourceMetadata); }; diff --git a/chrome/browser/chromeos/drive/search_metadata.cc b/chrome/browser/chromeos/drive/search_metadata.cc index 7c4c604..efbe464 100644 --- a/chrome/browser/chromeos/drive/search_metadata.cc +++ b/chrome/browser/chromeos/drive/search_metadata.cc @@ -14,11 +14,8 @@ #include "base/time/time.h" #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/drive/drive_api_util.h" -#include "content/public/browser/browser_thread.h" #include "net/base/escape.h" -using content::BrowserThread; - namespace drive { namespace internal { @@ -265,7 +262,6 @@ void SearchMetadata( const SearchMetadataPredicate& predicate, size_t at_most_num_matches, const SearchMetadataCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(!callback.is_null()); const base::TimeTicks start_time = base::TimeTicks::Now(); diff --git a/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc b/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc index 221fd0b..53a22c5bf 100644 --- a/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc +++ b/chrome/browser/chromeos/drive/sync/entry_revert_performer.cc @@ -12,11 +12,8 @@ #include "chrome/browser/chromeos/drive/resource_entry_conversion.h" #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "chrome/browser/drive/drive_api_util.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" -using content::BrowserThread; - namespace drive { namespace internal { namespace { @@ -93,17 +90,16 @@ EntryRevertPerformer::EntryRevertPerformer( scheduler_(scheduler), metadata_(metadata), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } EntryRevertPerformer::~EntryRevertPerformer() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void EntryRevertPerformer::RevertEntry(const std::string& local_id, const ClientContext& context, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scoped_ptr<ResourceEntry> entry(new ResourceEntry); @@ -123,7 +119,7 @@ void EntryRevertPerformer::RevertEntryAfterPrepare( const FileOperationCallback& callback, scoped_ptr<ResourceEntry> entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error == FILE_ERROR_OK && entry->resource_id().empty()) @@ -146,7 +142,7 @@ void EntryRevertPerformer::RevertEntryAfterGetFileResource( const std::string& local_id, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::FileResource> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileChange* changed_files = new FileChange; @@ -169,7 +165,7 @@ void EntryRevertPerformer::RevertEntryAfterFinishRevert( const FileOperationCallback& callback, const FileChange* changed_files, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); delegate_->OnFileChangedByOperation(*changed_files); diff --git a/chrome/browser/chromeos/drive/sync/entry_revert_performer.h b/chrome/browser/chromeos/drive/sync/entry_revert_performer.h index e022b26..5a3dac8 100644 --- a/chrome/browser/chromeos/drive/sync/entry_revert_performer.h +++ b/chrome/browser/chromeos/drive/sync/entry_revert_performer.h @@ -11,6 +11,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -78,6 +79,8 @@ class EntryRevertPerformer { JobScheduler* scheduler_; ResourceMetadata* metadata_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<EntryRevertPerformer> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/sync/entry_update_performer.cc b/chrome/browser/chromeos/drive/sync/entry_update_performer.cc index 4560ec5..f265603 100644 --- a/chrome/browser/chromeos/drive/sync/entry_update_performer.cc +++ b/chrome/browser/chromeos/drive/sync/entry_update_performer.cc @@ -18,11 +18,8 @@ #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "chrome/browser/chromeos/drive/sync/entry_revert_performer.h" #include "chrome/browser/chromeos/drive/sync/remove_performer.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" -using content::BrowserThread; - namespace drive { namespace internal { @@ -243,17 +240,16 @@ EntryUpdatePerformer::EntryUpdatePerformer( scheduler, metadata)), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } EntryUpdatePerformer::~EntryUpdatePerformer() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void EntryUpdatePerformer::UpdateEntry(const std::string& local_id, const ClientContext& context, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scoped_ptr<LocalState> local_state(new LocalState); @@ -272,7 +268,7 @@ void EntryUpdatePerformer::UpdateEntryAfterPrepare( const FileOperationCallback& callback, scoped_ptr<LocalState> local_state, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK) { @@ -411,7 +407,7 @@ void EntryUpdatePerformer::UpdateEntryAfterUpdateResource( scoped_ptr<base::ScopedClosureRunner> loader_lock, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::FileResource> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (status == google_apis::HTTP_FORBIDDEN) { @@ -441,7 +437,7 @@ void EntryUpdatePerformer::UpdateEntryAfterFinish( const FileOperationCallback& callback, const FileChange* changed_files, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); delegate_->OnFileChangedByOperation(*changed_files); diff --git a/chrome/browser/chromeos/drive/sync/entry_update_performer.h b/chrome/browser/chromeos/drive/sync/entry_update_performer.h index 7f620e6..8c8deb6 100644 --- a/chrome/browser/chromeos/drive/sync/entry_update_performer.h +++ b/chrome/browser/chromeos/drive/sync/entry_update_performer.h @@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -91,6 +92,8 @@ class EntryUpdatePerformer { scoped_ptr<RemovePerformer> remove_performer_; scoped_ptr<EntryRevertPerformer> entry_revert_performer_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<EntryUpdatePerformer> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/sync/remove_performer.cc b/chrome/browser/chromeos/drive/sync/remove_performer.cc index db1a34a..b320100 100644 --- a/chrome/browser/chromeos/drive/sync/remove_performer.cc +++ b/chrome/browser/chromeos/drive/sync/remove_performer.cc @@ -13,11 +13,8 @@ #include "chrome/browser/chromeos/drive/resource_metadata.h" #include "chrome/browser/chromeos/drive/sync/entry_revert_performer.h" #include "chrome/browser/drive/drive_api_util.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/drive_api_parser.h" -using content::BrowserThread; - namespace drive { namespace internal { @@ -63,11 +60,10 @@ RemovePerformer::RemovePerformer( scheduler, metadata)), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } RemovePerformer::~RemovePerformer() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } // Returns |entry| corresponding to |local_id|. @@ -84,7 +80,7 @@ FileError TryToRemoveLocally(ResourceMetadata* metadata, void RemovePerformer::Remove(const std::string& local_id, const ClientContext& context, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); ResourceEntry* entry = new ResourceEntry; @@ -104,7 +100,7 @@ void RemovePerformer::RemoveAfterGetResourceEntry( const FileOperationCallback& callback, const ResourceEntry* entry, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (error != FILE_ERROR_OK || entry->resource_id().empty()) { @@ -132,7 +128,7 @@ void RemovePerformer::TrashResource(const ClientContext& context, const FileOperationCallback& callback, const std::string& resource_id, const std::string& local_id) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scheduler_->TrashResource( @@ -147,7 +143,7 @@ void RemovePerformer::TrashResourceAfterUpdateRemoteState( const FileOperationCallback& callback, const std::string& local_id, google_apis::DriveApiErrorCode status) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); if (status == google_apis::HTTP_FORBIDDEN) { @@ -174,7 +170,7 @@ void RemovePerformer::UnparentResource(const ClientContext& context, const FileOperationCallback& callback, const std::string& resource_id, const std::string& local_id) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); scheduler_->GetFileResource( @@ -190,7 +186,7 @@ void RemovePerformer::UnparentResourceAfterGetFileResource( const std::string& local_id, google_apis::DriveApiErrorCode status, scoped_ptr<google_apis::FileResource> file_resource) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); @@ -239,7 +235,7 @@ void RemovePerformer::UnparentResourceAfterUpdateRemoteState( const FileOperationCallback& callback, const std::string& local_id, google_apis::DriveApiErrorCode status) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); DCHECK(!callback.is_null()); FileError error = GDataToFileError(status); diff --git a/chrome/browser/chromeos/drive/sync/remove_performer.h b/chrome/browser/chromeos/drive/sync/remove_performer.h index 2d0a3bd..d7213dc 100644 --- a/chrome/browser/chromeos/drive/sync/remove_performer.h +++ b/chrome/browser/chromeos/drive/sync/remove_performer.h @@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "google_apis/drive/drive_api_error_codes.h" @@ -99,6 +100,8 @@ class RemovePerformer { ResourceMetadata* metadata_; scoped_ptr<EntryRevertPerformer> entry_revert_performer_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate the weak pointers before any other members are destroyed. base::WeakPtrFactory<RemovePerformer> weak_ptr_factory_; diff --git a/chrome/browser/chromeos/drive/sync_client.cc b/chrome/browser/chromeos/drive/sync_client.cc index 43e4b86..c920606 100644 --- a/chrome/browser/chromeos/drive/sync_client.cc +++ b/chrome/browser/chromeos/drive/sync_client.cc @@ -15,11 +15,8 @@ #include "chrome/browser/chromeos/drive/file_system_util.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" #include "chrome/browser/chromeos/drive/sync/entry_update_performer.h" -#include "content/public/browser/browser_thread.h" #include "google_apis/drive/task_util.h" -using content::BrowserThread; - namespace drive { namespace internal { @@ -165,15 +162,14 @@ SyncClient::SyncClient(base::SequencedTaskRunner* blocking_task_runner, delay_(base::TimeDelta::FromSeconds(kDelaySeconds)), long_delay_(base::TimeDelta::FromSeconds(kLongDelaySeconds)), weak_ptr_factory_(this) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); } SyncClient::~SyncClient() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); } void SyncClient::StartProcessingBacklog() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); std::vector<std::string>* to_fetch = new std::vector<std::string>; std::vector<std::string>* to_update = new std::vector<std::string>; @@ -187,7 +183,7 @@ void SyncClient::StartProcessingBacklog() { } void SyncClient::StartCheckingExistingPinnedFiles() { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); std::vector<std::string>* local_ids = new std::vector<std::string>; blocking_task_runner_->PostTaskAndReply( @@ -202,12 +198,12 @@ void SyncClient::StartCheckingExistingPinnedFiles() { } void SyncClient::AddFetchTask(const std::string& local_id) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); AddFetchTaskInternal(local_id, delay_); } void SyncClient::RemoveFetchTask(const std::string& local_id) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); SyncTasks::iterator it = tasks_.find(SyncTasks::key_type(FETCH, local_id)); if (it == tasks_.end()) @@ -228,14 +224,14 @@ void SyncClient::RemoveFetchTask(const std::string& local_id) { void SyncClient::AddUpdateTask(const ClientContext& context, const std::string& local_id) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); AddUpdateTaskInternal(context, local_id, delay_); } bool SyncClient:: WaitForUpdateTaskToComplete( const std::string& local_id, const FileOperationCallback& callback) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); SyncTasks::iterator it = tasks_.find(SyncTasks::key_type(UPDATE, local_id)); if (it == tasks_.end()) @@ -248,7 +244,7 @@ bool SyncClient:: WaitForUpdateTaskToComplete( base::Closure SyncClient::PerformFetchTask(const std::string& local_id, const ClientContext& context) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); return download_operation_->EnsureFileDownloadedByLocalId( local_id, context, @@ -261,7 +257,7 @@ base::Closure SyncClient::PerformFetchTask(const std::string& local_id, void SyncClient::AddFetchTaskInternal(const std::string& local_id, const base::TimeDelta& delay) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); SyncTask task; task.state = PENDING; @@ -274,7 +270,7 @@ void SyncClient::AddFetchTaskInternal(const std::string& local_id, base::Closure SyncClient::PerformUpdateTask(const std::string& local_id, const ClientContext& context) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); entry_update_performer_->UpdateEntry( local_id, context, @@ -288,7 +284,7 @@ base::Closure SyncClient::PerformUpdateTask(const std::string& local_id, void SyncClient::AddUpdateTaskInternal(const ClientContext& context, const std::string& local_id, const base::TimeDelta& delay) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); SyncTask task; task.state = PENDING; @@ -302,7 +298,7 @@ void SyncClient::AddUpdateTaskInternal(const ClientContext& context, void SyncClient::AddTask(const SyncTasks::key_type& key, const SyncTask& task, const base::TimeDelta& delay) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); SyncTasks::iterator it = tasks_.find(key); if (it != tasks_.end()) { @@ -391,7 +387,7 @@ void SyncClient::StartTaskAfterGetParentResourceEntry( void SyncClient::OnGetLocalIdsOfBacklog( const std::vector<std::string>* to_fetch, const std::vector<std::string>* to_update) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); // Give priority to upload tasks over fetch tasks, so that dirty files are // uploaded as soon as possible. @@ -409,7 +405,7 @@ void SyncClient::OnGetLocalIdsOfBacklog( } void SyncClient::AddFetchTasks(const std::vector<std::string>* local_ids) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); for (size_t i = 0; i < local_ids->size(); ++i) AddFetchTask((*local_ids)[i]); @@ -418,7 +414,7 @@ void SyncClient::AddFetchTasks(const std::vector<std::string>* local_ids) { void SyncClient::OnTaskComplete(SyncType type, const std::string& local_id, FileError error) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); const SyncTasks::key_type key(type, local_id); SyncTasks::iterator it = tasks_.find(key); @@ -478,7 +474,7 @@ void SyncClient::OnFetchFileComplete(const std::string& local_id, FileError error, const base::FilePath& local_path, scoped_ptr<ResourceEntry> entry) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); + DCHECK(thread_checker_.CalledOnValidThread()); OnTaskComplete(FETCH, local_id, error); if (error == FILE_ERROR_ABORT) { // If user cancels download, unpin the file so that we do not sync the file diff --git a/chrome/browser/chromeos/drive/sync_client.h b/chrome/browser/chromeos/drive/sync_client.h index bc85efe..d3c0593 100644 --- a/chrome/browser/chromeos/drive/sync_client.h +++ b/chrome/browser/chromeos/drive/sync_client.h @@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/threading/thread_checker.h" #include "base/time/time.h" #include "chrome/browser/chromeos/drive/file_errors.h" #include "chrome/browser/chromeos/drive/job_scheduler.h" @@ -183,6 +184,8 @@ class SyncClient { // The delay is used for delaying retry of tasks on server errors. base::TimeDelta long_delay_; + base::ThreadChecker thread_checker_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<SyncClient> weak_ptr_factory_; |