Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2457)

Unified Diff: chrome/browser/intents/device_attached_intent_source.cc

Issue 10781014: Isolated FS for media devices. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/intents/device_attached_intent_source.cc
diff --git a/chrome/browser/intents/device_attached_intent_source.cc b/chrome/browser/intents/device_attached_intent_source.cc
index 3a2e5d530cb6b06f0803e45b1d0798ffa4e40f52..1526606e44caf26a374a5657cb83ce8359ae79a3 100644
--- a/chrome/browser/intents/device_attached_intent_source.cc
+++ b/chrome/browser/intents/device_attached_intent_source.cc
@@ -15,6 +15,13 @@
#include "webkit/fileapi/file_system_types.h"
#include "webkit/fileapi/isolated_context.h"
#include "webkit/glue/web_intent_data.h"
+#include "webkit/fileapi/media/media_file_system_config.h"
+
+#if defined(SUPPORT_MEDIA_FILESYSTEM)
+#include "webkit/fileapi/media/media_device_map_service.h"
+
+using fileapi::MediaDeviceMapService;
+#endif
using base::SystemMonitor;
using content::WebContentsDelegate;
@@ -42,6 +49,7 @@ void DeviceAttachedIntentSource::OnMediaDeviceAttached(
return;
// Only handle FilePaths for now.
+ // TODO(kmadhusu): Handle all device types. http://crbug.com/140353.
if (type != SystemMonitor::TYPE_PATH)
return;
@@ -50,6 +58,10 @@ void DeviceAttachedIntentSource::OnMediaDeviceAttached(
if (!device_path.IsAbsolute() || device_path.ReferencesParent())
return;
+ // Store the media device info locally.
+ SystemMonitor::MediaDeviceInfo device_info(id, name, type, location);
+ device_id_map_.insert(std::make_pair(id, device_info));
+
std::string device_name;
// Register device path as an isolated file system.
@@ -68,3 +80,25 @@ void DeviceAttachedIntentSource::OnMediaDeviceAttached(
delegate_->WebIntentDispatch(NULL /* no WebContents */,
content::WebIntentsDispatcher::Create(intent));
}
+
+void DeviceAttachedIntentSource::OnMediaDeviceDetached(const std::string& id) {
+ DeviceIdToInfoMap::iterator it = device_id_map_.find(id);
+ if (it == device_id_map_.end())
+ return;
+
+ // TODO(kmadhusu, vandebo): Clean up this code. http://crbug.com/140340.
+
+ FilePath path(it->second.location);
+ fileapi::IsolatedContext::GetInstance()->RevokeFileSystemByPath(path);
+ switch (it->second.type) {
+ case SystemMonitor::TYPE_MTP:
+#if defined(SUPPORT_MEDIA_FILESYSTEM)
+ MediaDeviceMapService::GetInstance()->RemoveMediaDevice(
+ it->second.location);
+#endif
+ break;
+ case SystemMonitor::TYPE_PATH:
+ break;
+ }
+ device_id_map_.erase(it);
+}

Powered by Google App Engine
This is Rietveld 408576698