Index: chrome/browser/extensions/api/tabs/windows_event_router.cc |
diff --git a/chrome/browser/extensions/api/tabs/windows_event_router.cc b/chrome/browser/extensions/api/tabs/windows_event_router.cc |
index b9f8d1410e0705f9a28145cf757d30dcb99272a2..92db025cb2db8d867bde533d70868c527664df12 100644 |
--- a/chrome/browser/extensions/api/tabs/windows_event_router.cc |
+++ b/chrome/browser/extensions/api/tabs/windows_event_router.cc |
@@ -142,12 +142,16 @@ void WindowsEventRouter::Observe( |
} |
static bool WillDispatchWindowFocusedEvent( |
- BrowserContext* new_active_context, |
- int window_id, |
+ WindowController* window_controller, |
BrowserContext* context, |
const Extension* extension, |
base::ListValue* event_args, |
const base::DictionaryValue* listener_filter) { |
+ int window_id = window_controller ? window_controller->GetWindowId() |
+ : extension_misc::kUnknownWindowId; |
+ Profile* new_active_context = |
+ window_controller ? window_controller->profile() : nullptr; |
+ |
// When switching between windows in the default and incognito profiles, |
// dispatch WINDOW_ID_NONE to extensions whose profile lost focus that |
// can't see the new focused window across the incognito boundary. |
@@ -189,9 +193,15 @@ void WindowsEventRouter::OnActiveWindowChanged( |
windows::OnFocusChanged::kEventName, |
make_scoped_ptr(new base::ListValue()))); |
event->will_dispatch_callback = |
- base::Bind(&WillDispatchWindowFocusedEvent, |
- static_cast<BrowserContext*>(window_profile), |
- window_id); |
+ base::Bind(&WillDispatchWindowFocusedEvent, window_controller); |
+ |
+ // Set the window type to 'normal' if we don't have a window |
+ // controller, so the event is not filtered. |
+ EventFilteringInfo info; |
+ info.SetWindowType(window_controller ? window_controller->GetWindowTypeText() |
+ : keys::kWindowTypeValueNormal); |
+ event->filter_info = info; |
stevenjb
2015/07/30 19:00:37
nit: I think this can be just: event->filter_info.
llandwerlin-old
2015/07/31 13:58:32
Done.
|
+ |
EventRouter::Get(profile_)->BroadcastEvent(event.Pass()); |
} |
@@ -201,6 +211,11 @@ void WindowsEventRouter::DispatchEvent(events::HistogramValue histogram_value, |
scoped_ptr<base::ListValue> args) { |
scoped_ptr<Event> event(new Event(histogram_value, event_name, args.Pass())); |
event->restrict_to_browser_context = window_controller->profile(); |
+ |
+ EventFilteringInfo info; |
+ info.SetWindowType(window_controller->GetWindowTypeText()); |
+ event->filter_info = info; |
stevenjb
2015/07/30 19:00:37
Same here
llandwerlin-old
2015/07/31 13:58:32
Done.
|
+ |
EventRouter::Get(profile_)->BroadcastEvent(event.Pass()); |
} |