diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-01 03:53:57 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-01 03:53:57 +0000 |
commit | 184a2643cf0b7111cab9f602dde92ffa3d899e4b (patch) | |
tree | 9f2d943ee82f32b2a78e657ba8e4959e1516e38b /device/media_transfer_protocol | |
parent | 535a5cfc99aa98b005ae6357123024c5d73feda8 (diff) | |
download | chromium_src-184a2643cf0b7111cab9f602dde92ffa3d899e4b.zip chromium_src-184a2643cf0b7111cab9f602dde92ffa3d899e4b.tar.gz chromium_src-184a2643cf0b7111cab9f602dde92ffa3d899e4b.tar.bz2 |
Remove 'content' dependency from device/media_transfer_protocol.
BUG=171742
TEST=none
Review URL: https://chromiumcodereview.appspot.com/12092074
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@180065 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'device/media_transfer_protocol')
3 files changed, 46 insertions, 22 deletions
diff --git a/device/media_transfer_protocol/DEPS b/device/media_transfer_protocol/DEPS index 2708b71..b9845a3 100644 --- a/device/media_transfer_protocol/DEPS +++ b/device/media_transfer_protocol/DEPS @@ -2,6 +2,5 @@ include_rules = [ # The media transfer protocol daemon uses D-Bus. "+dbus", "+chromeos/dbus", - "+content/public/browser/browser_thread.h", "+third_party/cros_system_api/dbus", ] diff --git a/device/media_transfer_protocol/media_transfer_protocol_manager.cc b/device/media_transfer_protocol/media_transfer_protocol_manager.cc index 6b87b2e..5ca58f6 100644 --- a/device/media_transfer_protocol/media_transfer_protocol_manager.cc +++ b/device/media_transfer_protocol/media_transfer_protocol_manager.cc @@ -12,9 +12,10 @@ #include "base/bind.h" #include "base/command_line.h" #include "base/memory/weak_ptr.h" +#include "base/message_loop_proxy.h" #include "base/observer_list.h" #include "base/stl_util.h" -#include "content/public/browser/browser_thread.h" +#include "base/threading/thread_checker.h" #include "device/media_transfer_protocol/media_transfer_protocol_daemon_client.h" #include "device/media_transfer_protocol/mtp_file_entry.pb.h" #include "device/media_transfer_protocol/mtp_storage_info.pb.h" @@ -25,8 +26,6 @@ #include "dbus/bus.h" #endif -using content::BrowserThread; - namespace device { namespace { @@ -36,20 +35,23 @@ MediaTransferProtocolManager* g_media_transfer_protocol_manager = NULL; // The MediaTransferProtocolManager implementation. class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { public: - MediaTransferProtocolManagerImpl() : weak_ptr_factory_(this) { + MediaTransferProtocolManagerImpl( + scoped_refptr<base::MessageLoopProxy> loop_proxy) + : weak_ptr_factory_(this) { dbus::Bus* bus = NULL; #if defined(OS_CHROMEOS) + DCHECK(!loop_proxy.get()); chromeos::DBusThreadManager* dbus_thread_manager = chromeos::DBusThreadManager::Get(); bus = dbus_thread_manager->GetSystemBus(); if (!bus) return; #else + DCHECK(loop_proxy.get()); dbus::Bus::Options options; options.bus_type = dbus::Bus::SYSTEM; options.connection_type = dbus::Bus::PRIVATE; - options.dbus_thread_message_loop_proxy = - BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE); + options.dbus_thread_message_loop_proxy = loop_proxy; session_bus_ = new dbus::Bus(options); bus = session_bus_.get(); #endif @@ -83,7 +85,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { // MediaTransferProtocolManager override. const std::vector<std::string> GetStorages() const OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); std::vector<std::string> storages; for (StorageInfoMap::const_iterator it = storage_info_map_.begin(); it != storage_info_map_.end(); @@ -96,7 +98,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { // MediaTransferProtocolManager override. virtual const MtpStorageInfo* GetStorageInfo( const std::string& storage_name) const OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); StorageInfoMap::const_iterator it = storage_info_map_.find(storage_name); if (it == storage_info_map_.end()) return NULL; @@ -107,7 +109,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { virtual void OpenStorage(const std::string& storage_name, const std::string& mode, const OpenStorageCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(storage_info_map_, storage_name)) { callback.Run("", true); return; @@ -125,7 +127,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { // MediaTransferProtocolManager override. virtual void CloseStorage(const std::string& storage_handle, const CloseStorageCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, storage_handle)) { callback.Run(true); return; @@ -144,7 +146,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { const std::string& storage_handle, const std::string& path, const ReadDirectoryCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, storage_handle)) { callback.Run(std::vector<MtpFileEntry>(), true); return; @@ -164,7 +166,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { const std::string& storage_handle, uint32 file_id, const ReadDirectoryCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, storage_handle)) { callback.Run(std::vector<MtpFileEntry>(), true); return; @@ -185,7 +187,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { uint32 offset, uint32 count, const ReadFileCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, storage_handle)) { callback.Run(std::string(), true); return; @@ -205,7 +207,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { uint32 offset, uint32 count, const ReadFileCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, storage_handle)) { callback.Run(std::string(), true); return; @@ -222,7 +224,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { virtual void GetFileInfoByPath(const std::string& storage_handle, const std::string& path, const GetFileInfoCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, storage_handle)) { callback.Run(MtpFileEntry(), true); return; @@ -240,7 +242,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { virtual void GetFileInfoById(const std::string& storage_handle, uint32 file_id, const GetFileInfoCallback& callback) OVERRIDE { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, storage_handle)) { callback.Run(MtpFileEntry(), true); return; @@ -269,7 +271,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { typedef std::queue<GetFileInfoCallback> GetFileInfoCallbackQueue; void OnStorageChanged(bool is_attach, const std::string& storage_name) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); if (is_attach) { mtp_client_->GetStorageInfo( storage_name, @@ -293,6 +295,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { } void OnEnumerateStorages(const std::vector<std::string>& storage_names) { + DCHECK(thread_checker_.CalledOnValidThread()); for (size_t i = 0; i < storage_names.size(); ++i) { mtp_client_->GetStorageInfo( storage_names[i], @@ -303,7 +306,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { } void OnGetStorageInfo(const MtpStorageInfo& storage_info) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(thread_checker_.CalledOnValidThread()); const std::string& storage_name = storage_info.storage_name(); if (ContainsKey(storage_info_map_, storage_name)) { // This should not happen, since MediaTransferProtocolManagerImpl should @@ -324,6 +327,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { } void OnOpenStorage(const std::string& handle) { + DCHECK(thread_checker_.CalledOnValidThread()); if (!ContainsKey(handles_, handle)) { handles_.insert(handle); open_storage_callbacks_.front().Run(handle, false); @@ -340,6 +344,7 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { } void OnCloseStorage() { + DCHECK(thread_checker_.CalledOnValidThread()); const std::string& handle = close_storage_callbacks_.front().second; if (ContainsKey(handles_, handle)) { handles_.erase(handle); @@ -352,36 +357,43 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { } void OnCloseStorageError() { + DCHECK(thread_checker_.CalledOnValidThread()); close_storage_callbacks_.front().first.Run(true); close_storage_callbacks_.pop(); } void OnReadDirectory(const std::vector<MtpFileEntry>& file_entries) { + DCHECK(thread_checker_.CalledOnValidThread()); read_directory_callbacks_.front().Run(file_entries, false); read_directory_callbacks_.pop(); } void OnReadDirectoryError() { + DCHECK(thread_checker_.CalledOnValidThread()); read_directory_callbacks_.front().Run(std::vector<MtpFileEntry>(), true); read_directory_callbacks_.pop(); } void OnReadFile(const std::string& data) { + DCHECK(thread_checker_.CalledOnValidThread()); read_file_callbacks_.front().Run(data, false); read_file_callbacks_.pop(); } void OnReadFileError() { + DCHECK(thread_checker_.CalledOnValidThread()); read_file_callbacks_.front().Run(std::string(), true); read_file_callbacks_.pop(); } void OnGetFileInfo(const MtpFileEntry& entry) { + DCHECK(thread_checker_.CalledOnValidThread()); get_file_info_callbacks_.front().Run(entry, false); get_file_info_callbacks_.pop(); } void OnGetFileInfoError() { + DCHECK(thread_checker_.CalledOnValidThread()); get_file_info_callbacks_.front().Run(MtpFileEntry(), true); get_file_info_callbacks_.pop(); } @@ -414,18 +426,22 @@ class MediaTransferProtocolManagerImpl : public MediaTransferProtocolManager { ReadFileCallbackQueue read_file_callbacks_; GetFileInfoCallbackQueue get_file_info_callbacks_; + base::ThreadChecker thread_checker_; + DISALLOW_COPY_AND_ASSIGN(MediaTransferProtocolManagerImpl); }; } // namespace // static -void MediaTransferProtocolManager::Initialize() { +void MediaTransferProtocolManager::Initialize( + scoped_refptr<base::MessageLoopProxy> loop_proxy) { if (g_media_transfer_protocol_manager) { LOG(WARNING) << "MediaTransferProtocolManager was already initialized"; return; } - g_media_transfer_protocol_manager = new MediaTransferProtocolManagerImpl(); + g_media_transfer_protocol_manager = + new MediaTransferProtocolManagerImpl(loop_proxy); VLOG(1) << "MediaTransferProtocolManager initialized"; } diff --git a/device/media_transfer_protocol/media_transfer_protocol_manager.h b/device/media_transfer_protocol/media_transfer_protocol_manager.h index 5c416b5..8751325 100644 --- a/device/media_transfer_protocol/media_transfer_protocol_manager.h +++ b/device/media_transfer_protocol/media_transfer_protocol_manager.h @@ -9,6 +9,7 @@ #include <vector> #include "base/callback.h" +#include "base/memory/ref_counted.h" #include "build/build_config.h" #if !defined(OS_LINUX) @@ -18,6 +19,10 @@ class MtpFileEntry; class MtpStorageInfo; +namespace base { +class MessageLoopProxy; +} + namespace device { // This class handles the interaction with mtpd. @@ -128,7 +133,11 @@ class MediaTransferProtocolManager { const GetFileInfoCallback& callback) = 0; // Creates the global MediaTransferProtocolManager instance. - static void Initialize(); + // On Linux, |loop_proxy| specifies the message loop proxy to process + // asynchronous operations. + // On ChromeOS, |loop_proxy| is set to NULL because ChromeOS already has a + // dedicated message loop proxy. + static void Initialize(scoped_refptr<base::MessageLoopProxy> loop_proxy); // Destroys the global MediaTransferProtocolManager instance if it exists. static void Shutdown(); |