| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/intents/device_attached_intent_source.h" | 5 #include "chrome/browser/intents/device_attached_intent_source.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 task.get())); | 121 task.get())); |
| 122 } | 122 } |
| 123 | 123 |
| 124 void DeviceAttachedIntentSource::DispatchIntentsForService( | 124 void DeviceAttachedIntentSource::DispatchIntentsForService( |
| 125 const base::SystemMonitor::RemovableStorageInfo& device_info) { | 125 const base::SystemMonitor::RemovableStorageInfo& device_info) { |
| 126 // Store the media device info locally. | 126 // Store the media device info locally. |
| 127 device_id_map_.insert(std::make_pair(device_info.device_id, device_info)); | 127 device_id_map_.insert(std::make_pair(device_info.device_id, device_info)); |
| 128 | 128 |
| 129 std::string device_name(UTF16ToUTF8(device_info.name)); | 129 std::string device_name(UTF16ToUTF8(device_info.name)); |
| 130 const FilePath device_path(device_info.location); | 130 const FilePath device_path(device_info.location); |
| 131 | |
| 132 // TODO(kinuko, kmadhusu): Use a different file system type for MTP. | 131 // TODO(kinuko, kmadhusu): Use a different file system type for MTP. |
| 133 // TODO(kmadhusu): To manage the registered file systems efficiently, register | 132 // TODO(kmadhusu): To manage the registered file systems efficiently, register |
| 134 // the attached device media file system using MediaFileSystemRegistry. | 133 // the attached device media file system using MediaFileSystemRegistry. |
| 135 const std::string fs_id = fileapi::IsolatedContext::GetInstance()-> | 134 const std::string fs_id = fileapi::IsolatedContext::GetInstance()-> |
| 136 RegisterFileSystemForPath(fileapi::kFileSystemTypeNativeMedia, | 135 RegisterFileSystemForPath(fileapi::kFileSystemTypeNativeMedia, |
| 137 device_path, &device_name); | 136 device_path, &device_name); |
| 138 | 137 |
| 139 DCHECK(!fs_id.empty()); | 138 DCHECK(!fs_id.empty()); |
| 140 webkit_glue::WebIntentData intent( | 139 webkit_glue::WebIntentData intent( |
| 141 UTF8ToUTF16(kAction), UTF8ToUTF16(kIntentType), device_name, fs_id); | 140 UTF8ToUTF16(kAction), UTF8ToUTF16(kIntentType), device_name, fs_id); |
| 142 | 141 |
| 143 delegate_->WebIntentDispatch(NULL /* no WebContents */, | 142 delegate_->WebIntentDispatch(NULL /* no WebContents */, |
| 144 content::WebIntentsDispatcher::Create(intent)); | 143 content::WebIntentsDispatcher::Create(intent)); |
| 145 } | 144 } |
| 146 | 145 |
| 147 void DeviceAttachedIntentSource::OnRemovableStorageDetached( | 146 void DeviceAttachedIntentSource::OnRemovableStorageDetached( |
| 148 const std::string& id) { | 147 const std::string& id) { |
| 149 DeviceIdToInfoMap::iterator it = device_id_map_.find(id); | 148 DeviceIdToInfoMap::iterator it = device_id_map_.find(id); |
| 150 if (it == device_id_map_.end()) | 149 if (it == device_id_map_.end()) |
| 151 return; | 150 return; |
| 152 | 151 |
| 153 FilePath path(it->second.location); | 152 FilePath path(it->second.location); |
| 154 fileapi::IsolatedContext::GetInstance()->RevokeFileSystemByPath(path); | 153 fileapi::IsolatedContext::GetInstance()->RevokeFileSystemByPath(path); |
| 155 device_id_map_.erase(it); | 154 device_id_map_.erase(it); |
| 156 } | 155 } |
| OLD | NEW |