summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-15 22:52:37 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-15 22:52:37 +0000
commit5f70001c0b926fb51d926f4554efce83371e3cd3 (patch)
tree693fc69766b41d86c957364df17a23703425df94
parente9c1d6ea8f886821ada956d363dc4099aacce255 (diff)
downloadchromium_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.cc5
-rw-r--r--apps/shell/shell_extensions_browser_client.h2
-rw-r--r--chrome/browser/extensions/chrome_extensions_browser_client.cc19
-rw-r--r--chrome/browser/extensions/chrome_extensions_browser_client.h2
-rw-r--r--chrome/browser/profiles/profile_manager.cc7
-rw-r--r--extensions/browser/extensions_browser_client.h3
-rw-r--r--extensions/browser/process_manager.cc10
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();