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

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

Issue 8342048: Make NotificationService an interface in the content namespace, and switch callers to use it. Mov... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "chrome/browser/extensions/extension_process_manager.h" 7 #include "chrome/browser/extensions/extension_process_manager.h"
8 8
9 #include "chrome/browser/ui/browser_window.h" 9 #include "chrome/browser/ui/browser_window.h"
10 #include "content/browser/browsing_instance.h" 10 #include "content/browser/browsing_instance.h"
11 #if defined(OS_MACOSX) 11 #if defined(OS_MACOSX)
12 #include "chrome/browser/extensions/extension_host_mac.h" 12 #include "chrome/browser/extensions/extension_host_mac.h"
13 #endif 13 #endif
14 #include "chrome/browser/extensions/extension_host.h" 14 #include "chrome/browser/extensions/extension_host.h"
15 #include "chrome/browser/extensions/extension_info_map.h" 15 #include "chrome/browser/extensions/extension_info_map.h"
16 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
17 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/browser/ui/browser.h" 18 #include "chrome/browser/ui/browser.h"
19 #include "chrome/common/chrome_notification_types.h" 19 #include "chrome/common/chrome_notification_types.h"
20 #include "chrome/common/chrome_switches.h" 20 #include "chrome/common/chrome_switches.h"
21 #include "chrome/common/extensions/extension.h" 21 #include "chrome/common/extensions/extension.h"
22 #include "chrome/common/url_constants.h" 22 #include "chrome/common/url_constants.h"
23 #include "chrome/common/chrome_view_types.h" 23 #include "chrome/common/chrome_view_types.h"
24 #include "content/browser/browser_thread.h" 24 #include "content/browser/browser_thread.h"
25 #include "content/browser/site_instance.h" 25 #include "content/browser/site_instance.h"
26 #include "content/browser/tab_contents/tab_contents.h" 26 #include "content/browser/tab_contents/tab_contents.h"
27 #include "content/common/notification_service.h" 27 #include "content/public/browser/notification_service.h"
28 28
29 namespace { 29 namespace {
30 30
31 // Incognito profiles use this process manager. It is mostly a shim that decides 31 // Incognito profiles use this process manager. It is mostly a shim that decides
32 // whether to fall back on the original profile's ExtensionProcessManager based 32 // whether to fall back on the original profile's ExtensionProcessManager based
33 // on whether a given extension uses "split" or "spanning" incognito behavior. 33 // on whether a given extension uses "split" or "spanning" incognito behavior.
34 class IncognitoExtensionProcessManager : public ExtensionProcessManager { 34 class IncognitoExtensionProcessManager : public ExtensionProcessManager {
35 public: 35 public:
36 explicit IncognitoExtensionProcessManager(Profile* profile); 36 explicit IncognitoExtensionProcessManager(Profile* profile);
37 virtual ~IncognitoExtensionProcessManager() {} 37 virtual ~IncognitoExtensionProcessManager() {}
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 content::Source<Profile>(original_profile)); 101 content::Source<Profile>(original_profile));
102 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, 102 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED,
103 content::Source<Profile>(original_profile)); 103 content::Source<Profile>(original_profile));
104 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, 104 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED,
105 content::Source<Profile>(profile)); 105 content::Source<Profile>(profile));
106 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE, 106 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE,
107 content::Source<Profile>(profile)); 107 content::Source<Profile>(profile));
108 // We can listen to everything for SITE_INSTANCE_DELETED because we check the 108 // We can listen to everything for SITE_INSTANCE_DELETED because we check the
109 // |site_instance_id| in UnregisterExtensionSiteInstance. 109 // |site_instance_id| in UnregisterExtensionSiteInstance.
110 registrar_.Add(this, content::NOTIFICATION_SITE_INSTANCE_DELETED, 110 registrar_.Add(this, content::NOTIFICATION_SITE_INSTANCE_DELETED,
111 NotificationService::AllBrowserContextsAndSources()); 111 content::NotificationService::AllBrowserContextsAndSources());
112 registrar_.Add(this, content::NOTIFICATION_APP_TERMINATING, 112 registrar_.Add(this, content::NOTIFICATION_APP_TERMINATING,
113 NotificationService::AllSources()); 113 content::NotificationService::AllSources());
114 } 114 }
115 115
116 ExtensionProcessManager::~ExtensionProcessManager() { 116 ExtensionProcessManager::~ExtensionProcessManager() {
117 CloseBackgroundHosts(); 117 CloseBackgroundHosts();
118 DCHECK(background_hosts_.empty()); 118 DCHECK(background_hosts_.empty());
119 } 119 }
120 120
121 ExtensionHost* ExtensionProcessManager::CreateViewHost( 121 ExtensionHost* ExtensionProcessManager::CreateViewHost(
122 const Extension* extension, 122 const Extension* extension,
123 const GURL& url, 123 const GURL& url,
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 } 460 }
461 } 461 }
462 462
463 void ExtensionProcessManager::OnExtensionHostCreated(ExtensionHost* host, 463 void ExtensionProcessManager::OnExtensionHostCreated(ExtensionHost* host,
464 bool is_background) { 464 bool is_background) {
465 DCHECK_EQ(browsing_instance_->browser_context(), host->profile()); 465 DCHECK_EQ(browsing_instance_->browser_context(), host->profile());
466 466
467 all_hosts_.insert(host); 467 all_hosts_.insert(host);
468 if (is_background) 468 if (is_background)
469 background_hosts_.insert(host); 469 background_hosts_.insert(host);
470 NotificationService::current()->Notify( 470 content::NotificationService::current()->Notify(
471 chrome::NOTIFICATION_EXTENSION_HOST_CREATED, 471 chrome::NOTIFICATION_EXTENSION_HOST_CREATED,
472 content::Source<ExtensionProcessManager>(this), 472 content::Source<ExtensionProcessManager>(this),
473 content::Details<ExtensionHost>(host)); 473 content::Details<ExtensionHost>(host));
474 } 474 }
475 475
476 void ExtensionProcessManager::CloseBackgroundHosts() { 476 void ExtensionProcessManager::CloseBackgroundHosts() {
477 for (ExtensionHostSet::iterator iter = background_hosts_.begin(); 477 for (ExtensionHostSet::iterator iter = background_hosts_.begin();
478 iter != background_hosts_.end(); ) { 478 iter != background_hosts_.end(); ) {
479 ExtensionHostSet::iterator current = iter++; 479 ExtensionHostSet::iterator current = iter++;
480 delete *current; 480 delete *current;
481 } 481 }
482 } 482 }
483 483
484 // 484 //
485 // IncognitoExtensionProcessManager 485 // IncognitoExtensionProcessManager
486 // 486 //
487 487
488 IncognitoExtensionProcessManager::IncognitoExtensionProcessManager( 488 IncognitoExtensionProcessManager::IncognitoExtensionProcessManager(
489 Profile* profile) 489 Profile* profile)
490 : ExtensionProcessManager(profile), 490 : ExtensionProcessManager(profile),
491 original_manager_(profile->GetOriginalProfile()-> 491 original_manager_(profile->GetOriginalProfile()->
492 GetExtensionProcessManager()) { 492 GetExtensionProcessManager()) {
493 DCHECK(profile->IsOffTheRecord()); 493 DCHECK(profile->IsOffTheRecord());
494 494
495 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_WINDOW_READY, 495 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_WINDOW_READY,
496 NotificationService::AllSources()); 496 content::NotificationService::AllSources());
497 } 497 }
498 498
499 ExtensionHost* IncognitoExtensionProcessManager::CreateViewHost( 499 ExtensionHost* IncognitoExtensionProcessManager::CreateViewHost(
500 const Extension* extension, 500 const Extension* extension,
501 const GURL& url, 501 const GURL& url,
502 Browser* browser, 502 Browser* browser,
503 content::ViewType view_type) { 503 content::ViewType view_type) {
504 if (extension->incognito_split_mode()) { 504 if (extension->incognito_split_mode()) {
505 if (IsIncognitoEnabled(extension)) { 505 if (IsIncognitoEnabled(extension)) {
506 return ExtensionProcessManager::CreateViewHost(extension, url, 506 return ExtensionProcessManager::CreateViewHost(extension, url,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 if (service && service->is_ready()) 602 if (service && service->is_ready())
603 CreateBackgroundHostsForProfileStartup(this, service->extensions()); 603 CreateBackgroundHostsForProfileStartup(this, service->extensions());
604 } 604 }
605 break; 605 break;
606 } 606 }
607 default: 607 default:
608 ExtensionProcessManager::Observe(type, source, details); 608 ExtensionProcessManager::Observe(type, source, details);
609 break; 609 break;
610 } 610 }
611 } 611 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_prefs.cc ('k') | chrome/browser/extensions/extension_save_page_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698