1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/extensions/chrome_notification_observer.h" 6 7 #include "chrome/common/extensions/features/feature_channel.h" 8 #include "content/public/browser/notification_service.h" 9 #include "content/public/browser/notification_types.h" 10 #include "content/public/browser/render_process_host.h" 11 #include "extensions/common/extension_messages.h" 12 13 namespace extensions { 14 ChromeNotificationObserver()15ChromeNotificationObserver::ChromeNotificationObserver() { 16 registrar_.Add(this, 17 content::NOTIFICATION_RENDERER_PROCESS_CREATED, 18 content::NotificationService::AllBrowserContextsAndSources()); 19 } 20 ~ChromeNotificationObserver()21ChromeNotificationObserver::~ChromeNotificationObserver() {} 22 OnRendererProcessCreated(content::RenderProcessHost * process)23void ChromeNotificationObserver::OnRendererProcessCreated( 24 content::RenderProcessHost* process) { 25 // Extensions need to know the channel for API restrictions. Send the channel 26 // to all renderers, as the non-extension renderers may have content scripts. 27 process->Send(new ExtensionMsg_SetChannel(GetCurrentChannel())); 28 } 29 Observe(int type,const content::NotificationSource & source,const content::NotificationDetails & details)30void ChromeNotificationObserver::Observe(int type, 31 const content::NotificationSource& source, 32 const content::NotificationDetails& details) { 33 switch (type) { 34 case content::NOTIFICATION_RENDERER_PROCESS_CREATED: { 35 content::RenderProcessHost* process = 36 content::Source<content::RenderProcessHost>(source).ptr(); 37 OnRendererProcessCreated(process); 38 break; 39 } 40 41 default: 42 NOTREACHED(); 43 } 44 } 45 46 } // namespace extensions 47