diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-15 22:52:37 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-15 22:52:37 +0000 |
commit | 5f70001c0b926fb51d926f4554efce83371e3cd3 (patch) | |
tree | 693fc69766b41d86c957364df17a23703425df94 | |
parent | e9c1d6ea8f886821ada956d363dc4099aacce255 (diff) | |
download | chromium_src-5f70001c0b926fb51d926f4554efce83371e3cd3.zip chromium_src-5f70001c0b926fb51d926f4554efce83371e3cd3.tar.gz chromium_src-5f70001c0b926fb51d926f4554efce83371e3cd3.tar.bz2 |
Merge 242271 "Prevent creating background pages for non-incognit..."
> Prevent creating background pages for non-incognito profile in Guest mode
>
> BUG=329498
> TEST=manually
>
> Review URL: https://codereview.chromium.org/101413011
TBR=dpolukhin@chromium.org
Review URL: https://codereview.chromium.org/139853005
git-svn-id: svn://svn.chromium.org/chrome/branches/1750/src@245007 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | apps/shell/shell_extensions_browser_client.cc | 5 | ||||
-rw-r--r-- | apps/shell/shell_extensions_browser_client.h | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/chrome_extensions_browser_client.cc | 19 | ||||
-rw-r--r-- | chrome/browser/extensions/chrome_extensions_browser_client.h | 2 | ||||
-rw-r--r-- | chrome/browser/profiles/profile_manager.cc | 7 | ||||
-rw-r--r-- | extensions/browser/extensions_browser_client.h | 3 | ||||
-rw-r--r-- | extensions/browser/process_manager.cc | 10 |
7 files changed, 43 insertions, 5 deletions
diff --git a/apps/shell/shell_extensions_browser_client.cc b/apps/shell/shell_extensions_browser_client.cc index 1e86921..cc59069 100644 --- a/apps/shell/shell_extensions_browser_client.cc +++ b/apps/shell/shell_extensions_browser_client.cc @@ -91,6 +91,11 @@ bool ShellExtensionsBrowserClient::DeferLoadingBackgroundHosts( return false; } +bool ShellExtensionsBrowserClient::IsBackgroundPageAllowed( + BrowserContext* context) const { + return true; +} + bool ShellExtensionsBrowserClient::DidVersionUpdate(BrowserContext* context) { // TODO(jamescook): We might want to tell extensions when app_shell updates. return false; diff --git a/apps/shell/shell_extensions_browser_client.h b/apps/shell/shell_extensions_browser_client.h index d3d5ddf..13998a1c 100644 --- a/apps/shell/shell_extensions_browser_client.h +++ b/apps/shell/shell_extensions_browser_client.h @@ -38,6 +38,8 @@ class ShellExtensionsBrowserClient content::BrowserContext* context) OVERRIDE; virtual bool DeferLoadingBackgroundHosts(content::BrowserContext* context) const OVERRIDE; + virtual bool IsBackgroundPageAllowed(content::BrowserContext* context) + const OVERRIDE; virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE; virtual scoped_ptr<extensions::AppSorting> CreateAppSorting() OVERRIDE; virtual bool IsRunningInForcedAppMode() OVERRIDE; diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.cc b/chrome/browser/extensions/chrome_extensions_browser_client.cc index 69b3a96..f6b1292 100644 --- a/chrome/browser/extensions/chrome_extensions_browser_client.cc +++ b/chrome/browser/extensions/chrome_extensions_browser_client.cc @@ -18,6 +18,10 @@ #include "chrome/common/chrome_version_info.h" #include "chrome/common/pref_names.h" +#if defined(OS_CHROMEOS) +#include "chromeos/chromeos_switches.h" +#endif + namespace extensions { ChromeExtensionsBrowserClient::ChromeExtensionsBrowserClient() {} @@ -89,6 +93,21 @@ bool ChromeExtensionsBrowserClient::DeferLoadingBackgroundHosts( #endif } +bool ChromeExtensionsBrowserClient::IsBackgroundPageAllowed( + content::BrowserContext* context) const { +#if defined(OS_CHROMEOS) + // Returns true if current session is Chrome OS Guest mode session and current + // browser context is *not* off-the-record. Such context is artificial and + // background page shouldn't be created in it. + const CommandLine* command_line = CommandLine::ForCurrentProcess(); + if (command_line->HasSwitch(chromeos::switches::kGuestSession) && + !context->IsOffTheRecord()) { + return false; + } +#endif + return true; +} + bool ChromeExtensionsBrowserClient::DidVersionUpdate( content::BrowserContext* context) { Profile* profile = static_cast<Profile*>(context); diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.h b/chrome/browser/extensions/chrome_extensions_browser_client.h index 62ec9cb..0539b5b 100644 --- a/chrome/browser/extensions/chrome_extensions_browser_client.h +++ b/chrome/browser/extensions/chrome_extensions_browser_client.h @@ -48,6 +48,8 @@ class ChromeExtensionsBrowserClient : public ExtensionsBrowserClient { content::BrowserContext* context) OVERRIDE; virtual bool DeferLoadingBackgroundHosts( content::BrowserContext* context) const OVERRIDE; + virtual bool IsBackgroundPageAllowed( + content::BrowserContext* context) const OVERRIDE; virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE; virtual scoped_ptr<AppSorting> CreateAppSorting() OVERRIDE; virtual bool IsRunningInForcedAppMode() OVERRIDE; diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc index 4082919..7658aed 100644 --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc @@ -1099,9 +1099,10 @@ bool ProfileManager::ShouldGoOffTheRecord(Profile* profile) { bool go_off_the_record = false; #if defined(OS_CHROMEOS) const CommandLine& command_line = *CommandLine::ForCurrentProcess(); - if (profile->GetPath().BaseName().value() == chrome::kInitialProfile && - (!command_line.HasSwitch(switches::kTestType) || - command_line.HasSwitch(chromeos::switches::kLoginProfile))) { + if (command_line.HasSwitch(chromeos::switches::kGuestSession) || + (profile->GetPath().BaseName().value() == chrome::kInitialProfile && + (!command_line.HasSwitch(switches::kTestType) || + command_line.HasSwitch(chromeos::switches::kLoginProfile)))) { go_off_the_record = true; } #endif diff --git a/extensions/browser/extensions_browser_client.h b/extensions/browser/extensions_browser_client.h index 71b0ea6..c93b629 100644 --- a/extensions/browser/extensions_browser_client.h +++ b/extensions/browser/extensions_browser_client.h @@ -68,6 +68,9 @@ class ExtensionsBrowserClient { virtual bool DeferLoadingBackgroundHosts( content::BrowserContext* context) const = 0; + virtual bool IsBackgroundPageAllowed( + content::BrowserContext* context) const = 0; + // Returns true if the client version has updated since the last run. Called // once each time the extensions system is loaded per browser_context. The // implementation may wish to use the BrowserContext to record the current diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc index 6a57d8e..b642aef 100644 --- a/extensions/browser/process_manager.cc +++ b/extensions/browser/process_manager.cc @@ -246,8 +246,11 @@ ExtensionHost* ProcessManager::CreateBackgroundHost(const Extension* extension, const GURL& url) { // Hosted apps are taken care of from BackgroundContentsService. Ignore them // here. - if (extension->is_hosted_app()) + if (extension->is_hosted_app() || + !ExtensionsBrowserClient::Get()-> + IsBackgroundPageAllowed(GetBrowserContext())) { return NULL; + } // Don't create multiple background hosts for an extension. if (ExtensionHost* host = GetBackgroundHostForExtension(extension->id())) @@ -691,8 +694,11 @@ void ProcessManager::OnDevToolsStateChanged( } void ProcessManager::CreateBackgroundHostsForProfileStartup() { - if (startup_background_hosts_created_) + if (startup_background_hosts_created_ || + !ExtensionsBrowserClient::Get()-> + IsBackgroundPageAllowed(GetBrowserContext())) { return; + } ExtensionService* service = ExtensionSystem::GetForBrowserContext( GetBrowserContext())->extension_service(); |