Disallow extensions on the Chrome signin page.

We recognize the signin page by:
- in the browser on the UI thread, checking the renderer's process_id against SigninManager::signin_process_id.
- in the browser on the IO thread, checking the renderer's process_id against ExtensionInfoMap::signin_process_id (a cache of SigninManager's value).
- in the renderer, checking for a --signin_process command line flag.

This means we can still allow extensions on non-chrome-signin pages hosted on accounts.google.com.

BUG=220039
TEST=In a fresh Chrome profile, install the extension listed in bug comment #49. Click Hotdog menu -> Sign in to Chrome. The signin page should not be redirected away from the accounts.google.com page, and it should not have a red background. But if you navigate directly to accounts.google.com, it *should* either be redirected or have a red background.

Review URL: https://chromiumcodereview.appspot.com/15030008

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201444 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 361ad7b..5d1fec5 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -34,6 +34,7 @@
 #include "chrome/browser/download/download_util.h"
 #include "chrome/browser/extensions/activity_log/activity_log.h"
 #include "chrome/browser/extensions/api/web_request/web_request_api.h"
+#include "chrome/browser/extensions/browser_permissions_policy_delegate.h"
 #include "chrome/browser/extensions/extension_host.h"
 #include "chrome/browser/extensions/extension_info_map.h"
 #include "chrome/browser/extensions/extension_process_manager.h"
@@ -479,6 +480,9 @@
 ChromeContentBrowserClient::ChromeContentBrowserClient() {
   for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i)
     allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]);
+
+  permissions_policy_delegate_.reset(
+      new extensions::BrowserPermissionsPolicyDelegate());
 }
 
 ChromeContentBrowserClient::~ChromeContentBrowserClient() {
@@ -1045,6 +1049,11 @@
         SigninManagerFactory::GetForProfile(profile);
     if (signin_manager)
       signin_manager->SetSigninProcess(site_instance->GetProcess()->GetID());
+    BrowserThread::PostTask(
+        BrowserThread::IO, FROM_HERE,
+        base::Bind(&ExtensionInfoMap::SetSigninProcess,
+                   extensions::ExtensionSystem::Get(profile)->info_map(),
+                   site_instance->GetProcess()->GetID()));
   }
 #endif