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

Side by Side Diff: chrome/browser/extensions/event_router.cc

Issue 12189018: <webview>: Implement WebRequest API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with ToT + cleanup Created 7 years, 7 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 | Annotate | Revision Log
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/event_router.h" 5 #include "chrome/browser/extensions/event_router.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 void EventRouter::DispatchEvent(IPC::Sender* ipc_sender, 157 void EventRouter::DispatchEvent(IPC::Sender* ipc_sender,
158 void* profile_id, 158 void* profile_id,
159 const std::string& extension_id, 159 const std::string& extension_id,
160 const std::string& event_name, 160 const std::string& event_name,
161 scoped_ptr<ListValue> event_args, 161 scoped_ptr<ListValue> event_args,
162 const GURL& event_url, 162 const GURL& event_url,
163 UserGestureState user_gesture, 163 UserGestureState user_gesture,
164 const EventFilteringInfo& info) { 164 const EventFilteringInfo& info) {
165 DispatchExtensionMessage(ipc_sender, profile_id, extension_id, event_name, 165 DispatchExtensionMessage(ipc_sender, profile_id, extension_id, event_name,
166 event_args.get(), event_url, user_gesture, info); 166 event_args.get(), event_url, user_gesture, info);
167
168 BrowserThread::PostTask(
169 BrowserThread::UI,
170 FROM_HERE,
171 base::Bind(&EventRouter::IncrementInFlightEventsOnUI,
172 profile_id,
173 extension_id));
167 } 174 }
168 175
169 EventRouter::EventRouter(Profile* profile, ExtensionPrefs* extension_prefs) 176 EventRouter::EventRouter(Profile* profile, ExtensionPrefs* extension_prefs)
170 : profile_(profile), 177 : profile_(profile),
171 listeners_(this), 178 listeners_(this),
172 activity_log_(ActivityLog::GetInstance(profile)), 179 activity_log_(ActivityLog::GetInstance(profile)),
173 dispatch_chrome_updated_event_(false) { 180 dispatch_chrome_updated_event_(false) {
174 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED, 181 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
175 content::NotificationService::AllSources()); 182 content::NotificationService::AllSources());
176 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, 183 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 551
545 queue->AddPendingTask(profile, extension->id(), 552 queue->AddPendingTask(profile, extension->id(),
546 base::Bind(&EventRouter::DispatchPendingEvent, 553 base::Bind(&EventRouter::DispatchPendingEvent,
547 base::Unretained(this), dispatched_event)); 554 base::Unretained(this), dispatched_event));
548 return true; 555 return true;
549 } 556 }
550 557
551 return false; 558 return false;
552 } 559 }
553 560
561 // static
562 void EventRouter::IncrementInFlightEventsOnUI(
563 void* profile_id,
564 const std::string& extension_id) {
565 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
566 Profile* profile = reinterpret_cast<Profile*>(profile_id);
567 extensions::EventRouter* event_router =
568 extensions::ExtensionSystem::Get(profile)->event_router();
569 ExtensionService* extension_service =
570 extensions::ExtensionSystem::Get(profile)->extension_service();
571 const Extension* extension =
572 extension_service->extensions()->GetByID(extension_id);
573 if (!extension)
574 return;
575 event_router->IncrementInFlightEvents(profile, extension);
576 }
577
554 void EventRouter::IncrementInFlightEvents(Profile* profile, 578 void EventRouter::IncrementInFlightEvents(Profile* profile,
555 const Extension* extension) { 579 const Extension* extension) {
556 // Only increment in-flight events if the lazy background page is active, 580 // Only increment in-flight events if the lazy background page is active,
557 // because that's the only time we'll get an ACK. 581 // because that's the only time we'll get an ACK.
558 if (BackgroundInfo::HasLazyBackgroundPage(extension)) { 582 if (BackgroundInfo::HasLazyBackgroundPage(extension)) {
559 ExtensionProcessManager* pm = 583 ExtensionProcessManager* pm =
560 ExtensionSystem::Get(profile)->process_manager(); 584 ExtensionSystem::Get(profile)->process_manager();
561 ExtensionHost* host = pm->GetBackgroundHostForExtension(extension->id()); 585 ExtensionHost* host = pm->GetBackgroundHostForExtension(extension->id());
562 if (host) 586 if (host)
563 pm->IncrementLazyKeepaliveCount(extension); 587 pm->IncrementLazyKeepaliveCount(extension);
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 copy->will_dispatch_callback = will_dispatch_callback; 743 copy->will_dispatch_callback = will_dispatch_callback;
720 return copy; 744 return copy;
721 } 745 }
722 746
723 EventListenerInfo::EventListenerInfo(const std::string& event_name, 747 EventListenerInfo::EventListenerInfo(const std::string& event_name,
724 const std::string& extension_id) 748 const std::string& extension_id)
725 : event_name(event_name), 749 : event_name(event_name),
726 extension_id(extension_id) {} 750 extension_id(extension_id) {}
727 751
728 } // namespace extensions 752 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698