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..2247915eddcb36ce09d22cc23e3d58c501cca6c7 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 |
@@ -7,8 +7,11 @@ |
#include "chrome/browser/extensions/api/media_galleries_private/media_galleries_private_event_router.h" |
#include <map> |
+#include <set> |
+#include "base/memory/scoped_ptr.h" |
#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 +19,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 "chrome/common/extensions/extension.h" |
Lei Zhang
2012/12/15 01:11:54
Is this include needed?
kmadhusu
2012/12/17 23:58:05
Not required.
|
namespace extensions { |
@@ -31,6 +35,7 @@ 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::ModifiedGalleryDetails; |
MediaGalleriesPrivateEventRouter::MediaGalleriesPrivateEventRouter( |
Profile* profile) |
@@ -43,11 +48,34 @@ MediaGalleriesPrivateEventRouter::MediaGalleriesPrivateEventRouter( |
} |
MediaGalleriesPrivateEventRouter::~MediaGalleriesPrivateEventRouter() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
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(thread_checker_.CalledOnValidThread()); |
+ 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) { |
+ ModifiedGalleryDetails 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( |
+ event_names::kOnGalleryChangedEventName, |
+ args.Pass())); |
+ router->DispatchEventToExtension(*it, event.Pass()); |
+ } |
+} |
+ |
void MediaGalleriesPrivateEventRouter::OnRemovableStorageAttached( |
const std::string& id, |
const string16& name, |
@@ -68,6 +96,7 @@ void MediaGalleriesPrivateEventRouter::OnRemovableStorageAttached( |
void MediaGalleriesPrivateEventRouter::OnRemovableStorageDetached( |
const std::string& id) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
Lei Zhang
2012/12/15 01:11:54
Why not DCHECK() OnRemovableStorageAttached() as w
kmadhusu
2012/12/17 23:58:05
Fixed. Forgot to add the DCHECK in that function.
|
EventRouter* router = |
extensions::ExtensionSystem::Get(profile_)->event_router(); |
if (!router->HasEventListener(event_names::kOnDetachEventName)) |
@@ -84,6 +113,7 @@ void MediaGalleriesPrivateEventRouter::OnRemovableStorageDetached( |
void MediaGalleriesPrivateEventRouter::DispatchEvent( |
const std::string& event_name, |
scoped_ptr<base::ListValue> event_args) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
EventRouter* router = |
extensions::ExtensionSystem::Get(profile_)->event_router(); |
if (!router) |