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

Side by Side Diff: chrome/browser/extensions/api/tabs/windows_event_router.cc

Issue 1099553002: extensions: windows: list all windows from the current profile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: AppWindowController extracted Created 5 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 unified diff | Download patch
OLDNEW
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/extensions/api/tabs/windows_event_router.h" 5 #include "chrome/browser/extensions/api/tabs/windows_event_router.h"
6 6
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/chrome_notification_types.h" 8 #include "chrome/browser/chrome_notification_types.h"
9 #include "chrome/browser/extensions/api/tabs/app_base_window.h" 9 #include "chrome/browser/extensions/api/tabs/app_base_window.h"
10 #include "chrome/browser/extensions/api/tabs/app_window_controller.h" 10 #include "chrome/browser/extensions/api/tabs/app_window_controller.h"
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 const content::NotificationDetails& details) { 135 const content::NotificationDetails& details) {
136 #if defined(OS_MACOSX) 136 #if defined(OS_MACOSX)
137 if (chrome::NOTIFICATION_NO_KEY_WINDOW == type) { 137 if (chrome::NOTIFICATION_NO_KEY_WINDOW == type) {
138 OnActiveWindowChanged(NULL); 138 OnActiveWindowChanged(NULL);
139 return; 139 return;
140 } 140 }
141 #endif 141 #endif
142 } 142 }
143 143
144 static bool WillDispatchWindowFocusedEvent( 144 static bool WillDispatchWindowFocusedEvent(
145 BrowserContext* new_active_context, 145 WindowController* window_controller,
146 int window_id,
147 BrowserContext* context, 146 BrowserContext* context,
148 const Extension* extension, 147 const Extension* extension,
149 base::ListValue* event_args, 148 base::ListValue* event_args,
150 const base::DictionaryValue* listener_filter) { 149 const base::DictionaryValue* listener_filter) {
150 int window_id = window_controller ? window_controller->GetWindowId()
151 : extension_misc::kUnknownWindowId;
152 Profile* new_active_context =
153 window_controller ? window_controller->profile() : nullptr;
154
151 // When switching between windows in the default and incognito profiles, 155 // When switching between windows in the default and incognito profiles,
152 // dispatch WINDOW_ID_NONE to extensions whose profile lost focus that 156 // dispatch WINDOW_ID_NONE to extensions whose profile lost focus that
153 // can't see the new focused window across the incognito boundary. 157 // can't see the new focused window across the incognito boundary.
154 // See crbug.com/46610. 158 // See crbug.com/46610.
155 if (new_active_context && new_active_context != context && 159 if (new_active_context && new_active_context != context &&
156 !util::CanCrossIncognito(extension, context)) { 160 !util::CanCrossIncognito(extension, context)) {
157 event_args->Clear(); 161 event_args->Clear();
158 event_args->Append(new base::FundamentalValue( 162 event_args->Append(new base::FundamentalValue(
159 extension_misc::kUnknownWindowId)); 163 extension_misc::kUnknownWindowId));
160 } else { 164 } else {
(...skipping 21 matching lines...) Expand all
182 focused_profile_ = window_profile; 186 focused_profile_ = window_profile;
183 focused_window_id_ = window_id; 187 focused_window_id_ = window_id;
184 188
185 if (!HasEventListener(windows::OnFocusChanged::kEventName)) 189 if (!HasEventListener(windows::OnFocusChanged::kEventName))
186 return; 190 return;
187 191
188 scoped_ptr<Event> event(new Event(events::WINDOWS_ON_FOCUS_CHANGED, 192 scoped_ptr<Event> event(new Event(events::WINDOWS_ON_FOCUS_CHANGED,
189 windows::OnFocusChanged::kEventName, 193 windows::OnFocusChanged::kEventName,
190 make_scoped_ptr(new base::ListValue()))); 194 make_scoped_ptr(new base::ListValue())));
191 event->will_dispatch_callback = 195 event->will_dispatch_callback =
192 base::Bind(&WillDispatchWindowFocusedEvent, 196 base::Bind(&WillDispatchWindowFocusedEvent, window_controller);
193 static_cast<BrowserContext*>(window_profile), 197
194 window_id); 198 // Set the window type to 'normal' if we don't have a window
199 // controller, so the event is not filtered.
200 EventFilteringInfo info;
201 info.SetWindowType(window_controller ? window_controller->GetWindowTypeText()
202 : keys::kWindowTypeValueNormal);
203 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.
204
195 EventRouter::Get(profile_)->BroadcastEvent(event.Pass()); 205 EventRouter::Get(profile_)->BroadcastEvent(event.Pass());
196 } 206 }
197 207
198 void WindowsEventRouter::DispatchEvent(events::HistogramValue histogram_value, 208 void WindowsEventRouter::DispatchEvent(events::HistogramValue histogram_value,
199 const std::string& event_name, 209 const std::string& event_name,
200 WindowController* window_controller, 210 WindowController* window_controller,
201 scoped_ptr<base::ListValue> args) { 211 scoped_ptr<base::ListValue> args) {
202 scoped_ptr<Event> event(new Event(histogram_value, event_name, args.Pass())); 212 scoped_ptr<Event> event(new Event(histogram_value, event_name, args.Pass()));
203 event->restrict_to_browser_context = window_controller->profile(); 213 event->restrict_to_browser_context = window_controller->profile();
214
215 EventFilteringInfo info;
216 info.SetWindowType(window_controller->GetWindowTypeText());
217 event->filter_info = info;
stevenjb 2015/07/30 19:00:37 Same here
llandwerlin-old 2015/07/31 13:58:32 Done.
218
204 EventRouter::Get(profile_)->BroadcastEvent(event.Pass()); 219 EventRouter::Get(profile_)->BroadcastEvent(event.Pass());
205 } 220 }
206 221
207 bool WindowsEventRouter::HasEventListener(const std::string& event_name) { 222 bool WindowsEventRouter::HasEventListener(const std::string& event_name) {
208 return EventRouter::Get(profile_)->HasEventListener(event_name); 223 return EventRouter::Get(profile_)->HasEventListener(event_name);
209 } 224 }
210 225
211 } // namespace extensions 226 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698