Add UI notifications for admin-provided SSL certificates.

This change adds the necktie icon to the omnibox and a warning to the
website settings dropdown notifying the user that they have accessed
data through an admin-provided SSL certificate.

BUG=216495

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@196510 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/ui/website_settings/website_settings.cc b/chrome/browser/ui/website_settings/website_settings.cc
index 8a37c39..28362e7 100644
--- a/chrome/browser/ui/website_settings/website_settings.cc
+++ b/chrome/browser/ui/website_settings/website_settings.cc
@@ -45,6 +45,10 @@
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
 
+#if defined(ENABLE_CONFIGURATION_POLICY)
+#include "chrome/browser/policy/browser_policy_connector.h"
+#endif
+
 using content::BrowserThread;
 
 namespace {
@@ -257,7 +261,17 @@
       (!net::IsCertStatusError(ssl.cert_status) ||
        net::IsCertStatusMinorError(ssl.cert_status))) {
     // There are no major errors. Check for minor errors.
-    if (net::IsCertStatusMinorError(ssl.cert_status)) {
+    bool used_policy_certificates = false;
+#if defined(ENABLE_CONFIGURATION_POLICY)
+    used_policy_certificates =
+        policy::BrowserPolicyConnector::UsedPolicyCertificates(profile);
+#endif
+    if (used_policy_certificates) {
+      site_identity_status_ = SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT;
+      site_identity_details_ =
+          l10n_util::GetStringFUTF16(IDS_CERT_POLICY_PROVIDED_CERT_MESSAGE,
+                                     UTF8ToUTF16(url.host()));
+    } else if (net::IsCertStatusMinorError(ssl.cert_status)) {
       site_identity_status_ = SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN;
       string16 issuer_name(UTF8ToUTF16(cert->issuer().GetDisplayName()));
       if (issuer_name.empty()) {
@@ -443,7 +457,8 @@
   if (site_connection_status_ == SITE_CONNECTION_STATUS_ENCRYPTED_ERROR ||
       site_connection_status_ == SITE_CONNECTION_STATUS_MIXED_CONTENT ||
       site_identity_status_ == SITE_IDENTITY_STATUS_ERROR ||
-      site_identity_status_ == SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN)
+      site_identity_status_ == SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN ||
+      site_identity_status_ == SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT)
     tab_id = WebsiteSettingsUI::TAB_ID_CONNECTION;
   ui_->SetSelectedTab(tab_id);
 }