Index: chrome/browser/extensions/api/media_galleries_private/media_galleries_private_event_router.cc |
diff --git a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_event_router.cc b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_event_router.cc |
index b270fad6a5104d53cc21f0fafd6feb3abd8f8256..f515fca612bad7b4ca5920555d6163619715ee35 100644 |
--- a/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_event_router.cc |
+++ b/chrome/browser/extensions/api/media_galleries_private/media_galleries_private_event_router.cc |
@@ -9,6 +9,7 @@ |
#include <map> |
#include "base/utf_string_conversions.h" |
+#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/extensions/event_names.h" |
#include "chrome/browser/extensions/event_router.h" |
@@ -16,6 +17,7 @@ |
#include "chrome/browser/media_gallery/media_file_system_registry.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/extensions/api/media_galleries_private.h" |
+#include "content/public/browser/browser_thread.h" |
namespace extensions { |
@@ -31,27 +33,52 @@ std::string GetTransientIdForDeviceId(const std::string& device_id) { |
using extensions::api::media_galleries_private::DeviceAttachmentDetails; |
using extensions::api::media_galleries_private::DeviceDetachmentDetails; |
+using extensions::api::media_galleries_private::GalleryChangeDetails; |
MediaGalleriesPrivateEventRouter::MediaGalleriesPrivateEventRouter( |
Profile* profile) |
: profile_(profile) { |
- CHECK(profile_); |
- |
+ DCHECK(profile_); |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
base::SystemMonitor* system_monitor = base::SystemMonitor::Get(); |
if (system_monitor) |
system_monitor->AddDevicesChangedObserver(this); |
} |
MediaGalleriesPrivateEventRouter::~MediaGalleriesPrivateEventRouter() { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
base::SystemMonitor* system_monitor = base::SystemMonitor::Get(); |
if (system_monitor) |
system_monitor->RemoveDevicesChangedObserver(this); |
} |
+void MediaGalleriesPrivateEventRouter::OnGalleryChanged( |
+ const std::string& gallery_id, |
+ const std::set<std::string>& extension_ids) { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
+ EventRouter* router = |
+ extensions::ExtensionSystem::Get(profile_)->event_router(); |
+ if (!router->HasEventListener(event_names::kOnGalleryChangedEventName)) |
+ return; |
+ |
+ for (std::set<std::string>::const_iterator it = extension_ids.begin(); |
+ it != extension_ids.end(); ++it) { |
+ GalleryChangeDetails details; |
+ details.gallery_id = gallery_id; |
+ scoped_ptr<ListValue> args(new ListValue()); |
+ args->Append(details.ToValue().release()); |
+ scoped_ptr<extensions::Event> event(new extensions::Event( |
Lei Zhang
2012/12/18 00:47:01
Why can't you use MediaGalleriesPrivateEventRouter
kmadhusu
2012/12/18 21:32:39
DispatchEvent uses BroadcastEvent(). BroadcastEven
Lei Zhang
2012/12/19 01:03:47
This warrants a comment so future readers understa
kmadhusu
2012/12/19 21:55:55
Done.
|
+ event_names::kOnGalleryChangedEventName, |
+ args.Pass())); |
+ router->DispatchEventToExtension(*it, event.Pass()); |
+ } |
+} |
+ |
void MediaGalleriesPrivateEventRouter::OnRemovableStorageAttached( |
const std::string& id, |
const string16& name, |
const FilePath::StringType& location) { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
EventRouter* router = |
extensions::ExtensionSystem::Get(profile_)->event_router(); |
if (!router->HasEventListener(event_names::kOnAttachEventName)) |
@@ -68,6 +95,7 @@ void MediaGalleriesPrivateEventRouter::OnRemovableStorageAttached( |
void MediaGalleriesPrivateEventRouter::OnRemovableStorageDetached( |
const std::string& id) { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
EventRouter* router = |
extensions::ExtensionSystem::Get(profile_)->event_router(); |
if (!router->HasEventListener(event_names::kOnDetachEventName)) |
@@ -84,6 +112,7 @@ void MediaGalleriesPrivateEventRouter::OnRemovableStorageDetached( |
void MediaGalleriesPrivateEventRouter::DispatchEvent( |
const std::string& event_name, |
scoped_ptr<base::ListValue> event_args) { |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
EventRouter* router = |
extensions::ExtensionSystem::Get(profile_)->event_router(); |
if (!router) |