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

Side by Side Diff: extensions/browser/process_manager.cc

Issue 189683002: Add TestExtensionsBrowserClient, move ProcessManagerTest to //extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 2013 The Chromium Authors. All rights reserved. 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 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 "extensions/browser/process_manager.h" 5 #include "extensions/browser/process_manager.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/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 content::Source<BrowserContext>(context), 88 content::Source<BrowserContext>(context),
89 content::Details<RenderViewHost>(render_view_host)); 89 content::Details<RenderViewHost>(render_view_host));
90 } 90 }
91 91
92 // Incognito profiles use this process manager. It is mostly a shim that decides 92 // Incognito profiles use this process manager. It is mostly a shim that decides
93 // whether to fall back on the original profile's ProcessManager based 93 // whether to fall back on the original profile's ProcessManager based
94 // on whether a given extension uses "split" or "spanning" incognito behavior. 94 // on whether a given extension uses "split" or "spanning" incognito behavior.
95 class IncognitoProcessManager : public ProcessManager { 95 class IncognitoProcessManager : public ProcessManager {
96 public: 96 public:
97 IncognitoProcessManager(BrowserContext* incognito_context, 97 IncognitoProcessManager(BrowserContext* incognito_context,
98 BrowserContext* original_context); 98 BrowserContext* original_context,
99 ProcessManager* original_manager);
99 virtual ~IncognitoProcessManager() {} 100 virtual ~IncognitoProcessManager() {}
100 virtual bool CreateBackgroundHost(const Extension* extension, 101 virtual bool CreateBackgroundHost(const Extension* extension,
101 const GURL& url) OVERRIDE; 102 const GURL& url) OVERRIDE;
102 virtual SiteInstance* GetSiteInstanceForURL(const GURL& url) OVERRIDE; 103 virtual SiteInstance* GetSiteInstanceForURL(const GURL& url) OVERRIDE;
103 104
104 private: 105 private:
105 ProcessManager* original_manager_; 106 ProcessManager* original_manager_;
106 107
107 DISALLOW_COPY_AND_ASSIGN(IncognitoProcessManager); 108 DISALLOW_COPY_AND_ASSIGN(IncognitoProcessManager);
108 }; 109 };
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 // In the guest session, there is a single off-the-record context. Unlike 183 // In the guest session, there is a single off-the-record context. Unlike
183 // a regular incognito mode, background pages of extensions must be 184 // a regular incognito mode, background pages of extensions must be
184 // created regardless of whether extensions use "spanning" or "split" 185 // created regardless of whether extensions use "spanning" or "split"
185 // incognito behavior. 186 // incognito behavior.
186 BrowserContext* original_context = client->GetOriginalContext(context); 187 BrowserContext* original_context = client->GetOriginalContext(context);
187 return new ProcessManager(context, original_context); 188 return new ProcessManager(context, original_context);
188 } 189 }
189 190
190 if (context->IsOffTheRecord()) { 191 if (context->IsOffTheRecord()) {
191 BrowserContext* original_context = client->GetOriginalContext(context); 192 BrowserContext* original_context = client->GetOriginalContext(context);
192 return new IncognitoProcessManager(context, original_context); 193 ProcessManager* original_manager =
194 ExtensionSystem::Get(original_context)->process_manager();
195 return new IncognitoProcessManager(
196 context, original_context, original_manager);
193 } 197 }
194 198
195 return new ProcessManager(context, context); 199 return new ProcessManager(context, context);
196 } 200 }
197 201
202 // static
203 ProcessManager* ProcessManager::CreateIncognitoForTesting(
204 BrowserContext* incognito_context,
205 BrowserContext* original_context,
206 ProcessManager* original_manager) {
207 DCHECK(incognito_context->IsOffTheRecord());
208 DCHECK(!original_context->IsOffTheRecord());
209 return new IncognitoProcessManager(
210 incognito_context, original_context, original_manager);
211 }
212
198 ProcessManager::ProcessManager(BrowserContext* context, 213 ProcessManager::ProcessManager(BrowserContext* context,
199 BrowserContext* original_context) 214 BrowserContext* original_context)
200 : site_instance_(SiteInstance::Create(context)), 215 : site_instance_(SiteInstance::Create(context)),
201 startup_background_hosts_created_(false), 216 startup_background_hosts_created_(false),
202 devtools_callback_(base::Bind( 217 devtools_callback_(base::Bind(
203 &ProcessManager::OnDevToolsStateChanged, 218 &ProcessManager::OnDevToolsStateChanged,
204 base::Unretained(this))), 219 base::Unretained(this))),
205 weak_ptr_factory_(this) { 220 weak_ptr_factory_(this) {
206 registrar_.Add(this, chrome::NOTIFICATION_EXTENSIONS_READY, 221 registrar_.Add(this, chrome::NOTIFICATION_EXTENSIONS_READY,
207 content::Source<BrowserContext>(original_context)); 222 content::Source<BrowserContext>(original_context));
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 return ExtensionsBrowserClient::Get()->DeferLoadingBackgroundHosts( 869 return ExtensionsBrowserClient::Get()->DeferLoadingBackgroundHosts(
855 GetBrowserContext()); 870 GetBrowserContext());
856 } 871 }
857 872
858 // 873 //
859 // IncognitoProcessManager 874 // IncognitoProcessManager
860 // 875 //
861 876
862 IncognitoProcessManager::IncognitoProcessManager( 877 IncognitoProcessManager::IncognitoProcessManager(
863 BrowserContext* incognito_context, 878 BrowserContext* incognito_context,
864 BrowserContext* original_context) 879 BrowserContext* original_context,
880 ProcessManager* original_manager)
865 : ProcessManager(incognito_context, original_context), 881 : ProcessManager(incognito_context, original_context),
866 original_manager_( 882 original_manager_(original_manager) {
867 ExtensionSystem::Get(original_context)->process_manager()) {
868 DCHECK(incognito_context->IsOffTheRecord()); 883 DCHECK(incognito_context->IsOffTheRecord());
869 884
870 // The original profile will have its own ProcessManager to 885 // The original profile will have its own ProcessManager to
871 // load the background pages of the spanning extensions. This process 886 // load the background pages of the spanning extensions. This process
872 // manager need only worry about the split mode extensions, which is handled 887 // manager need only worry about the split mode extensions, which is handled
873 // in the NOTIFICATION_BROWSER_WINDOW_READY notification handler. 888 // in the NOTIFICATION_BROWSER_WINDOW_READY notification handler.
874 registrar_.Remove(this, chrome::NOTIFICATION_EXTENSIONS_READY, 889 registrar_.Remove(this, chrome::NOTIFICATION_EXTENSIONS_READY,
875 content::Source<BrowserContext>(original_context)); 890 content::Source<BrowserContext>(original_context));
876 registrar_.Remove(this, chrome::NOTIFICATION_PROFILE_CREATED, 891 registrar_.Remove(this, chrome::NOTIFICATION_PROFILE_CREATED,
877 content::Source<BrowserContext>(original_context)); 892 content::Source<BrowserContext>(original_context));
(...skipping 18 matching lines...) Expand all
896 const Extension* extension = 911 const Extension* extension =
897 registry->enabled_extensions().GetExtensionOrAppByURL(url); 912 registry->enabled_extensions().GetExtensionOrAppByURL(url);
898 if (extension && !IncognitoInfo::IsSplitMode(extension)) { 913 if (extension && !IncognitoInfo::IsSplitMode(extension)) {
899 return original_manager_->GetSiteInstanceForURL(url); 914 return original_manager_->GetSiteInstanceForURL(url);
900 } 915 }
901 } 916 }
902 return ProcessManager::GetSiteInstanceForURL(url); 917 return ProcessManager::GetSiteInstanceForURL(url);
903 } 918 }
904 919
905 } // namespace extensions 920 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698