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

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 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 } 452 }
453 } 453 }
454 454
455 void ExtensionProcessManager::OnExtensionHostCreated(ExtensionHost* host, 455 void ExtensionProcessManager::OnExtensionHostCreated(ExtensionHost* host,
456 bool is_background) { 456 bool is_background) {
457 DCHECK_EQ(browsing_instance_->browser_context(), host->profile()); 457 DCHECK_EQ(browsing_instance_->browser_context(), host->profile());
458 458
459 all_hosts_.insert(host); 459 all_hosts_.insert(host);
460 if (is_background) 460 if (is_background)
461 background_hosts_.insert(host); 461 background_hosts_.insert(host);
462 NotificationService::current()->Notify( 462 content::NotificationService::current()->Notify(
463 chrome::NOTIFICATION_EXTENSION_HOST_CREATED, 463 chrome::NOTIFICATION_EXTENSION_HOST_CREATED,
464 content::Source<ExtensionProcessManager>(this), 464 content::Source<ExtensionProcessManager>(this),
465 content::Details<ExtensionHost>(host)); 465 content::Details<ExtensionHost>(host));
466 } 466 }
467 467
468 void ExtensionProcessManager::CloseBackgroundHosts() { 468 void ExtensionProcessManager::CloseBackgroundHosts() {
469 for (ExtensionHostSet::iterator iter = background_hosts_.begin(); 469 for (ExtensionHostSet::iterator iter = background_hosts_.begin();
470 iter != background_hosts_.end(); ) { 470 iter != background_hosts_.end(); ) {
471 ExtensionHostSet::iterator current = iter++; 471 ExtensionHostSet::iterator current = iter++;
472 delete *current; 472 delete *current;
473 } 473 }
474 } 474 }
475 475
476 // 476 //
477 // IncognitoExtensionProcessManager 477 // IncognitoExtensionProcessManager
478 // 478 //
479 479
480 IncognitoExtensionProcessManager::IncognitoExtensionProcessManager( 480 IncognitoExtensionProcessManager::IncognitoExtensionProcessManager(
481 Profile* profile) 481 Profile* profile)
482 : ExtensionProcessManager(profile), 482 : ExtensionProcessManager(profile),
483 original_manager_(profile->GetOriginalProfile()-> 483 original_manager_(profile->GetOriginalProfile()->
484 GetExtensionProcessManager()) { 484 GetExtensionProcessManager()) {
485 DCHECK(profile->IsOffTheRecord()); 485 DCHECK(profile->IsOffTheRecord());
486 486
487 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_WINDOW_READY, 487 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_WINDOW_READY,
488 NotificationService::AllSources()); 488 content::NotificationService::AllSources());
489 } 489 }
490 490
491 ExtensionHost* IncognitoExtensionProcessManager::CreateViewHost( 491 ExtensionHost* IncognitoExtensionProcessManager::CreateViewHost(
492 const Extension* extension, 492 const Extension* extension,
493 const GURL& url, 493 const GURL& url,
494 Browser* browser, 494 Browser* browser,
495 content::ViewType view_type) { 495 content::ViewType view_type) {
496 if (extension->incognito_split_mode()) { 496 if (extension->incognito_split_mode()) {
497 if (IsIncognitoEnabled(extension)) { 497 if (IsIncognitoEnabled(extension)) {
498 return ExtensionProcessManager::CreateViewHost(extension, url, 498 return ExtensionProcessManager::CreateViewHost(extension, url,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 if (service && service->is_ready()) 594 if (service && service->is_ready())
595 CreateBackgroundHostsForProfileStartup(this, service->extensions()); 595 CreateBackgroundHostsForProfileStartup(this, service->extensions());
596 } 596 }
597 break; 597 break;
598 } 598 }
599 default: 599 default:
600 ExtensionProcessManager::Observe(type, source, details); 600 ExtensionProcessManager::Observe(type, source, details);
601 break; 601 break;
602 } 602 }
603 } 603 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698