OLD | NEW |
---|---|
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/event_router.h" | 5 #include "chrome/browser/extensions/event_router.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
11 #include "chrome/browser/browser_process.h" | 11 #include "chrome/browser/browser_process.h" |
12 #include "chrome/browser/extensions/api/runtime/runtime_api.h" | 12 #include "chrome/browser/extensions/api/runtime/runtime_api.h" |
13 #include "chrome/browser/extensions/api/web_request/web_request_api.h" | 13 #include "chrome/browser/extensions/api/web_request/web_request_api.h" |
14 #include "chrome/browser/extensions/extension_devtools_manager.h" | 14 #include "chrome/browser/extensions/extension_devtools_manager.h" |
15 #include "chrome/browser/extensions/extension_host.h" | 15 #include "chrome/browser/extensions/extension_host.h" |
16 #include "chrome/browser/extensions/extension_tab_util.h" | |
16 #include "chrome/browser/extensions/extension_process_manager.h" | 17 #include "chrome/browser/extensions/extension_process_manager.h" |
17 #include "chrome/browser/extensions/extension_processes_api.h" | 18 #include "chrome/browser/extensions/extension_processes_api.h" |
18 #include "chrome/browser/extensions/extension_processes_api_constants.h" | 19 #include "chrome/browser/extensions/extension_processes_api_constants.h" |
19 #include "chrome/browser/extensions/extension_service.h" | 20 #include "chrome/browser/extensions/extension_service.h" |
20 #include "chrome/browser/extensions/extension_system.h" | 21 #include "chrome/browser/extensions/extension_system.h" |
21 #include "chrome/browser/extensions/lazy_background_task_queue.h" | 22 #include "chrome/browser/extensions/lazy_background_task_queue.h" |
22 #include "chrome/browser/extensions/process_map.h" | 23 #include "chrome/browser/extensions/process_map.h" |
23 #include "chrome/browser/profiles/profile.h" | 24 #include "chrome/browser/profiles/profile.h" |
24 #include "chrome/browser/profiles/profile_manager.h" | 25 #include "chrome/browser/profiles/profile_manager.h" |
25 #include "chrome/common/chrome_notification_types.h" | 26 #include "chrome/common/chrome_notification_types.h" |
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
436 !process_map->Contains(extension->id(), process->GetID())) { | 437 !process_map->Contains(extension->id(), process->GetID())) { |
437 return; | 438 return; |
438 } | 439 } |
439 | 440 |
440 ListValue* event_args = NULL; | 441 ListValue* event_args = NULL; |
441 if (!CanDispatchEventToProfile(listener_profile, extension, | 442 if (!CanDispatchEventToProfile(listener_profile, extension, |
442 event, &event_args)) { | 443 event, &event_args)) { |
443 return; | 444 return; |
444 } | 445 } |
445 | 446 |
447 // If the "tabs" permission is not present, we need to strip the Tab argument | |
448 // of sensitive data. | |
449 ExtensionTabUtil::MaybeStripEventArgsOfSensitiveData( | |
Aaron Boodman
2012/08/30 05:45:48
Can we go back to only adding it in the first plac
chebert
2012/08/30 23:17:20
Done.
| |
450 event->event_name, extension, event_args); | |
451 | |
446 DispatchExtensionMessage(process, extension_id, | 452 DispatchExtensionMessage(process, extension_id, |
447 event->event_name, event_args, | 453 event->event_name, event_args, |
448 event->event_url, event->user_gesture, | 454 event->event_url, event->user_gesture, |
449 event->info); | 455 event->info); |
450 IncrementInFlightEvents(listener_profile, extension); | 456 IncrementInFlightEvents(listener_profile, extension); |
451 } | 457 } |
452 | 458 |
453 bool EventRouter::CanDispatchEventToProfile(Profile* profile, | 459 bool EventRouter::CanDispatchEventToProfile(Profile* profile, |
454 const Extension* extension, | 460 const Extension* extension, |
455 const linked_ptr<Event>& event, | 461 const linked_ptr<Event>& event, |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
516 if (host->extension() && host->extension()->has_lazy_background_page()) | 522 if (host->extension() && host->extension()->has_lazy_background_page()) |
517 pm->DecrementLazyKeepaliveCount(host->extension()); | 523 pm->DecrementLazyKeepaliveCount(host->extension()); |
518 } | 524 } |
519 | 525 |
520 void EventRouter::DispatchPendingEvent(const linked_ptr<Event>& event, | 526 void EventRouter::DispatchPendingEvent(const linked_ptr<Event>& event, |
521 ExtensionHost* host) { | 527 ExtensionHost* host) { |
522 if (!host) | 528 if (!host) |
523 return; | 529 return; |
524 | 530 |
525 if (listeners_.HasProcessListener(host->render_process_host(), | 531 if (listeners_.HasProcessListener(host->render_process_host(), |
526 host->extension()->id())) | 532 host->extension()->id())) { |
527 DispatchEventToProcess(host->extension()->id(), | 533 DispatchEventToProcess(host->extension()->id(), |
528 host->render_process_host(), event); | 534 host->render_process_host(), event); |
535 } | |
529 } | 536 } |
530 | 537 |
531 void EventRouter::Observe(int type, | 538 void EventRouter::Observe(int type, |
532 const content::NotificationSource& source, | 539 const content::NotificationSource& source, |
533 const content::NotificationDetails& details) { | 540 const content::NotificationDetails& details) { |
534 switch (type) { | 541 switch (type) { |
535 case content::NOTIFICATION_RENDERER_PROCESS_TERMINATED: | 542 case content::NOTIFICATION_RENDERER_PROCESS_TERMINATED: |
536 case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: { | 543 case content::NOTIFICATION_RENDERER_PROCESS_CLOSED: { |
537 content::RenderProcessHost* renderer = | 544 content::RenderProcessHost* renderer = |
538 content::Source<content::RenderProcessHost>(source).ptr(); | 545 content::Source<content::RenderProcessHost>(source).ptr(); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
602 event_args(event_args.Pass()), | 609 event_args(event_args.Pass()), |
603 event_url(event_url), | 610 event_url(event_url), |
604 restrict_to_profile(restrict_to_profile), | 611 restrict_to_profile(restrict_to_profile), |
605 cross_incognito_args(NULL), | 612 cross_incognito_args(NULL), |
606 user_gesture(user_gesture), | 613 user_gesture(user_gesture), |
607 info(info) {} | 614 info(info) {} |
608 | 615 |
609 Event::~Event() {} | 616 Event::~Event() {} |
610 | 617 |
611 } // namespace extensions | 618 } // namespace extensions |
OLD | NEW |