Commit 00e86ade authored by aurimas's avatar aurimas Committed by Commit bot

Remove WebsiteSettingsPopupLegacy.

WebsiteSettingsPopupLegacy was replaced with WebsiteSettingsPopup.
This change removes the old dialog and it's dependencies.

BUG=456167

Review URL: https://codereview.chromium.org/878413008

Cr-Commit-Position: refs/heads/master@{#315377}
parent 64c23723
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (c) 2013 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/website_settings_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/website_settings_text_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="@dimen/certificate_viewer_padding_thin" >
<TextView
android:id="@+id/website_settings_headline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/certificate_viewer_padding_thin"
android:textStyle="bold" />
<TextView
android:id="@+id/website_settings_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
...@@ -36,10 +36,6 @@ ...@@ -36,10 +36,6 @@
<color name="app_banner_open_button_fg">#777777</color> <color name="app_banner_open_button_fg">#777777</color>
<color name="app_banner_card_highlight">#33999999</color> <color name="app_banner_card_highlight">#33999999</color>
<!-- Website Settings Popup Legacy colors -->
<color name="website_settings_popup_text_link">#5595fe</color>
<color name="website_settings_popup_reset_cert_decisions_button">#000000</color>
<!-- Website Settings Popup colors --> <!-- Website Settings Popup colors -->
<color name="website_settings_popup_button_text">#444444</color> <color name="website_settings_popup_button_text">#444444</color>
<color name="website_settings_connection_broken_leading_text">#db4437</color> <color name="website_settings_connection_broken_leading_text">#db4437</color>
......
...@@ -5,10 +5,6 @@ ...@@ -5,10 +5,6 @@
--> -->
<resources> <resources>
<!-- Certificate Viewer Dimensions -->
<dimen name="certificate_viewer_padding_wide">24dp</dimen>
<dimen name="certificate_viewer_padding_thin">16dp</dimen>
<!-- Website Settings Popup Dimensions --> <!-- Website Settings Popup Dimensions -->
<dimen name="website_settings_popup_padding_sides">16dp</dimen> <dimen name="website_settings_popup_padding_sides">16dp</dimen>
<dimen name="website_settings_popup_button_text_size">14sp</dimen> <dimen name="website_settings_popup_button_text_size">14sp</dimen>
......
...@@ -15,12 +15,6 @@ public abstract class ChromeSwitches { ...@@ -15,12 +15,6 @@ public abstract class ChromeSwitches {
/** Testing: pretend that the switch value is the name of a child account. */ /** Testing: pretend that the switch value is the name of a child account. */
public static final String CHILD_ACCOUNT = "child-account"; public static final String CHILD_ACCOUNT = "child-account";
// Disables the new Website Settings dialog, which replaces the old one.
// TODO(sashab): Once the new WebsiteSettingsPopup is ready to be permanent,
// remove this flag and delete WebsiteSettingsLegacyPopup and all it's
// dependencies.
public static final String DISABLE_NEW_WEBSITE_SETTINGS = "disable-new-website-settings";
/** Mimic a low end device */ /** Mimic a low end device */
public static final String ENABLE_ACCESSIBILITY_TAB_SWITCHER = public static final String ENABLE_ACCESSIBILITY_TAB_SWITCHER =
"enable-accessibility-tab-switcher"; "enable-accessibility-tab-switcher";
......
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Typeface;
import android.net.http.SslCertificate;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.Spinner;
import android.widget.TextView;
import org.chromium.chrome.R;
import java.io.ByteArrayInputStream;
import java.security.MessageDigest;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
/**
* UI component for displaying certificate information.
*/
class CertificateViewer implements OnItemSelectedListener {
private static final String X_509 = "X.509";
private final Context mContext;
private final ArrayList<LinearLayout> mViews;
private final ArrayList<String> mTitles;
private final int mPadding;
private CertificateFactory mCertificateFactory;
/**
* Show a dialog with the provided certificate information.
*
* @param context The context this view should display in.
* @param derData DER-encoded data representing a X509 certificate chain.
*/
public static void showCertificateChain(Context context, byte[][] derData) {
CertificateViewer viewer = new CertificateViewer(context);
viewer.showCertificateChain(derData);
}
private CertificateViewer(Context context) {
mContext = context;
mViews = new ArrayList<LinearLayout>();
mTitles = new ArrayList<String>();
mPadding = (int) context.getResources().getDimension(
R.dimen.certificate_viewer_padding_wide) / 2;
}
// Show information about an array of DER-encoded data representing a X509 certificate chain.
// A spinner will be displayed allowing the user to select which certificate to display.
private void showCertificateChain(byte[][] derData) {
for (int i = 0; i < derData.length; i++) {
addCertificate(derData[i]);
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(mContext,
android.R.layout.simple_spinner_item,
mTitles);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner = new Spinner(mContext);
spinner.setAdapter(arrayAdapter);
spinner.setOnItemSelectedListener(this);
LinearLayout container = new LinearLayout(mContext);
container.setOrientation(LinearLayout.VERTICAL);
container.addView(spinner);
for (int i = 0; i < mViews.size(); ++i) {
LinearLayout certificateView = mViews.get(i);
if (i != 0) {
certificateView.setVisibility(LinearLayout.GONE);
}
container.addView(certificateView);
}
showDialogForView(container);
}
// Displays a dialog with scrolling for the given view.
private void showDialogForView(View view) {
Dialog dialog = new Dialog(mContext);
dialog.setTitle(R.string.certtitle);
ScrollView scrollView = new ScrollView(mContext);
scrollView.addView(view);
dialog.addContentView(scrollView,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
dialog.show();
}
private void addCertificate(byte[] derData) {
try {
if (mCertificateFactory == null) {
mCertificateFactory = CertificateFactory.getInstance(X_509);
}
Certificate cert = mCertificateFactory.generateCertificate(
new ByteArrayInputStream(derData));
addCertificateDetails(cert, getDigest(derData, "SHA-256"), getDigest(derData, "SHA-1"));
} catch (CertificateException e) {
Log.e("CertViewer", "Error parsing certificate" + e.toString());
}
}
private void addCertificateDetails(Certificate cert, byte[] sha256Digest, byte[] sha1Digest) {
LinearLayout certificateView = new LinearLayout(mContext);
mViews.add(certificateView);
certificateView.setOrientation(LinearLayout.VERTICAL);
X509Certificate x509 = (X509Certificate) cert;
SslCertificate sslCert = new SslCertificate(x509);
mTitles.add(sslCert.getIssuedTo().getCName());
addSectionTitle(certificateView, nativeGetCertIssuedToText());
addItem(certificateView, nativeGetCertInfoCommonNameText(),
sslCert.getIssuedTo().getCName());
addItem(certificateView, nativeGetCertInfoOrganizationText(),
sslCert.getIssuedTo().getOName());
addItem(certificateView, nativeGetCertInfoOrganizationUnitText(),
sslCert.getIssuedTo().getUName());
addItem(certificateView, nativeGetCertInfoSerialNumberText(),
formatBytes(x509.getSerialNumber().toByteArray(), ':'));
addSectionTitle(certificateView, nativeGetCertIssuedByText());
addItem(certificateView, nativeGetCertInfoCommonNameText(),
sslCert.getIssuedBy().getCName());
addItem(certificateView, nativeGetCertInfoOrganizationText(),
sslCert.getIssuedBy().getOName());
addItem(certificateView, nativeGetCertInfoOrganizationUnitText(),
sslCert.getIssuedBy().getUName());
addSectionTitle(certificateView, nativeGetCertValidityText());
java.text.DateFormat dateFormat = DateFormat.getDateFormat(mContext);
addItem(certificateView, nativeGetCertIssuedOnText(),
dateFormat.format(sslCert.getValidNotBeforeDate()));
addItem(certificateView, nativeGetCertExpiresOnText(),
dateFormat.format(sslCert.getValidNotAfterDate()));
addSectionTitle(certificateView, nativeGetCertFingerprintsText());
addItem(certificateView, nativeGetCertSHA256FingerprintText(),
formatBytes(sha256Digest, ' '));
addItem(certificateView, nativeGetCertSHA1FingerprintText(),
formatBytes(sha1Digest, ' '));
}
private void addSectionTitle(LinearLayout certificateView, String label) {
TextView title = addLabel(certificateView, label);
title.setAllCaps(true);
}
private void addItem(LinearLayout certificateView, String label, String value) {
if (value.isEmpty()) return;
addLabel(certificateView, label);
addValue(certificateView, value);
}
private TextView addLabel(LinearLayout certificateView, String label) {
TextView t = new TextView(mContext);
t.setPadding(mPadding, mPadding / 2, mPadding, 0);
t.setText(label);
t.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
certificateView.addView(t);
return t;
}
private void addValue(LinearLayout certificateView, String value) {
TextView t = new TextView(mContext);
t.setText(value);
t.setPadding(mPadding, 0, mPadding, mPadding / 2);
certificateView.addView(t);
}
private static String formatBytes(byte[] bytes, char separator) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
sb.append(String.format("%02X", bytes[i]));
if (i != bytes.length - 1) {
sb.append(separator);
}
}
return sb.toString();
}
private static byte[] getDigest(byte[] bytes, String algorithm) {
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
md.update(bytes);
return md.digest();
} catch (java.security.NoSuchAlgorithmException e) {
return null;
}
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
for (int i = 0; i < mViews.size(); ++i) {
mViews.get(i).setVisibility(
i == position ? LinearLayout.VISIBLE : LinearLayout.GONE);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
private static native String nativeGetCertIssuedToText();
private static native String nativeGetCertInfoCommonNameText();
private static native String nativeGetCertInfoOrganizationText();
private static native String nativeGetCertInfoSerialNumberText();
private static native String nativeGetCertInfoOrganizationUnitText();
private static native String nativeGetCertIssuedByText();
private static native String nativeGetCertValidityText();
private static native String nativeGetCertIssuedOnText();
private static native String nativeGetCertExpiresOnText();
private static native String nativeGetCertFingerprintsText();
private static native String nativeGetCertSHA256FingerprintText();
private static native String nativeGetCertSHA1FingerprintText();
}
...@@ -32,8 +32,6 @@ import android.widget.Spinner; ...@@ -32,8 +32,6 @@ import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import org.chromium.base.CalledByNative; import org.chromium.base.CalledByNative;
import org.chromium.base.CommandLine;
import org.chromium.chrome.ChromeSwitches;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.omnibox.OmniboxUrlEmphasizer; import org.chromium.chrome.browser.omnibox.OmniboxUrlEmphasizer;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
...@@ -526,11 +524,7 @@ public class WebsiteSettingsPopup implements OnClickListener, OnItemSelectedList ...@@ -526,11 +524,7 @@ public class WebsiteSettingsPopup implements OnClickListener, OnItemSelectedList
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
public static void show(Context context, Profile profile, WebContents webContents) { public static void show(Context context, Profile profile, WebContents webContents) {
if (!CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_NEW_WEBSITE_SETTINGS)) { new WebsiteSettingsPopup(context, profile, webContents);
new WebsiteSettingsPopup(context, profile, webContents);
} else {
WebsiteSettingsPopupLegacy.show(context, webContents);
}
} }
private static native long nativeInit(WebsiteSettingsPopup popup, WebContents webContents); private static native long nativeInit(WebsiteSettingsPopup popup, WebContents webContents);
......
...@@ -93,7 +93,6 @@ ...@@ -93,7 +93,6 @@
#include "chrome/browser/ui/android/tab_model/tab_model_jni_bridge.h" #include "chrome/browser/ui/android/tab_model/tab_model_jni_bridge.h"
#include "chrome/browser/ui/android/toolbar/toolbar_model_android.h" #include "chrome/browser/ui/android/toolbar/toolbar_model_android.h"
#include "chrome/browser/ui/android/website_settings_popup_android.h" #include "chrome/browser/ui/android/website_settings_popup_android.h"
#include "chrome/browser/ui/android/website_settings_popup_legacy_android.h"
#include "components/bookmarks/common/android/component_jni_registrar.h" #include "components/bookmarks/common/android/component_jni_registrar.h"
#include "components/dom_distiller/android/component_jni_registrar.h" #include "components/dom_distiller/android/component_jni_registrar.h"
#include "components/gcm_driver/android/component_jni_registrar.h" #include "components/gcm_driver/android/component_jni_registrar.h"
...@@ -106,8 +105,6 @@ ...@@ -106,8 +105,6 @@
#include "printing/printing_context_android.h" #include "printing/printing_context_android.h"
#endif #endif
bool RegisterCertificateViewer(JNIEnv* env);
namespace chrome { namespace chrome {
namespace android { namespace android {
...@@ -144,7 +141,6 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = { ...@@ -144,7 +141,6 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
{"AutofillProfileBridge", autofill::RegisterAutofillProfileBridge}, {"AutofillProfileBridge", autofill::RegisterAutofillProfileBridge},
{"BookmarksBridge", BookmarksBridge::RegisterBookmarksBridge}, {"BookmarksBridge", BookmarksBridge::RegisterBookmarksBridge},
{"CardUnmaskPrompt", autofill::CardUnmaskPromptViewAndroid::Register}, {"CardUnmaskPrompt", autofill::CardUnmaskPromptViewAndroid::Register},
{"CertificateViewer", RegisterCertificateViewer},
{"ChildAccountFeedbackReporter", RegisterChildAccountFeedbackReporter}, {"ChildAccountFeedbackReporter", RegisterChildAccountFeedbackReporter},
{"ChildAccountService", RegisterChildAccountService}, {"ChildAccountService", RegisterChildAccountService},
{"ChromeBrowserProvider", {"ChromeBrowserProvider",
...@@ -233,9 +229,6 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = { ...@@ -233,9 +229,6 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
{"WebsitePreferenceBridge", RegisterWebsitePreferenceBridge}, {"WebsitePreferenceBridge", RegisterWebsitePreferenceBridge},
{"WebsiteSettingsPopupAndroid", {"WebsiteSettingsPopupAndroid",
WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid}, WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid},
{"WebsiteSettingsPopupLegacyAndroid",
WebsiteSettingsPopupLegacyAndroid::
RegisterWebsiteSettingsPopupLegacyAndroid},
#if defined(ENABLE_PRINTING) && !defined(ENABLE_PRINT_PREVIEW) #if defined(ENABLE_PRINTING) && !defined(ENABLE_PRINT_PREVIEW)
{"PrintingContext", {"PrintingContext",
printing::PrintingContextAndroid::RegisterPrintingContext}, printing::PrintingContextAndroid::RegisterPrintingContext},
......
...@@ -33,17 +33,6 @@ DEFINE_RESOURCE_ID(IDR_INFOBAR_WARNING, R.drawable.infobar_warning) ...@@ -33,17 +33,6 @@ DEFINE_RESOURCE_ID(IDR_INFOBAR_WARNING, R.drawable.infobar_warning)
DEFINE_RESOURCE_ID(IDR_INFOBAR_TRANSLATE, R.drawable.infobar_translate) DEFINE_RESOURCE_ID(IDR_INFOBAR_TRANSLATE, R.drawable.infobar_translate)
DEFINE_RESOURCE_ID(IDR_BLOCKED_POPUPS, R.drawable.infobar_blocked_popups) DEFINE_RESOURCE_ID(IDR_BLOCKED_POPUPS, R.drawable.infobar_blocked_popups)
// WebsiteSettingsUI images.
DEFINE_RESOURCE_ID(IDR_PAGEINFO_ENTERPRISE_MANAGED,\
R.drawable.pageinfo_enterprise_managed)
DEFINE_RESOURCE_ID(IDR_PAGEINFO_BAD, R.drawable.pageinfo_bad)
DEFINE_RESOURCE_ID(IDR_PAGEINFO_GOOD, R.drawable.pageinfo_good)
DEFINE_RESOURCE_ID(IDR_PAGEINFO_INFO, R.drawable.pageinfo_info)
DEFINE_RESOURCE_ID(IDR_PAGEINFO_WARNING_MAJOR,\
R.drawable.pageinfo_warning_major)
DEFINE_RESOURCE_ID(IDR_PAGEINFO_WARNING_MINOR,\
R.drawable.pageinfo_warning_minor)
// Autofill popup images. // Autofill popup images.
DEFINE_RESOURCE_ID(IDR_AUTOFILL_CC_AMEX, R.drawable.amex_card) DEFINE_RESOURCE_ID(IDR_AUTOFILL_CC_AMEX, R.drawable.amex_card)
DEFINE_RESOURCE_ID(IDR_AUTOFILL_CC_DISCOVER, R.drawable.discover_card) DEFINE_RESOURCE_ID(IDR_AUTOFILL_CC_DISCOVER, R.drawable.discover_card)
......
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/certificate_viewer.h"
#include "base/android/jni_string.h"
#include "base/logging.h"
#include "chrome/grit/generated_resources.h"
#include "jni/CertificateViewer_jni.h"
#include "net/cert/x509_certificate.h"
#include "ui/base/l10n/l10n_util.h"
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
void ShowCertificateViewer(content::WebContents* web_contents,
gfx::NativeWindow parent,
net::X509Certificate* cert) {
// For Android, showing the certificate is always handled in Java.
NOTREACHED();
}
static jstring GetCertIssuedToText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(IDS_CERT_INFO_SUBJECT_GROUP)).Release();
}
static jstring GetCertInfoCommonNameText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(IDS_CERT_INFO_COMMON_NAME_LABEL)).Release();
}
static jstring GetCertInfoOrganizationText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(
IDS_CERT_INFO_ORGANIZATION_LABEL)).Release();
}
static jstring GetCertInfoSerialNumberText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(
IDS_CERT_INFO_SERIAL_NUMBER_LABEL)).Release();
}
static jstring GetCertInfoOrganizationUnitText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(
IDS_CERT_INFO_ORGANIZATIONAL_UNIT_LABEL)).Release();
}
static jstring GetCertIssuedByText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(IDS_CERT_INFO_ISSUER_GROUP)).Release();
}
static jstring GetCertValidityText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(IDS_CERT_INFO_VALIDITY_GROUP)).Release();
}
static jstring GetCertIssuedOnText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(IDS_CERT_INFO_ISSUED_ON_LABEL)).Release();
}
static jstring GetCertExpiresOnText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(IDS_CERT_INFO_EXPIRES_ON_LABEL)).Release();
}
static jstring GetCertFingerprintsText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(
IDS_CERT_INFO_FINGERPRINTS_GROUP)).Release();
}
static jstring GetCertSHA256FingerprintText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(
IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL)).Release();
}
static jstring GetCertSHA1FingerprintText(JNIEnv* env, jclass) {
return ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(
IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL)).Release();
}
bool RegisterCertificateViewer(JNIEnv* env) {
return RegisterNativesImpl(env);
}
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/android/website_settings_popup_legacy_android.h"
#include "base/android/jni_android.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
#include "chrome/browser/android/resource_mapper.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/website_settings/website_settings.h"
#include "chrome/grit/generated_resources.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/cert_store.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/ssl_status.h"
#include "jni/WebsiteSettingsPopupLegacy_jni.h"
#include "net/cert/x509_certificate.h"
#include "ui/base/l10n/l10n_util.h"
using base::android::CheckException;
using base::android::ConvertUTF8ToJavaString;
using base::android::ConvertUTF16ToJavaString;
using base::android::GetClass;
using base::android::ScopedJavaLocalRef;
using content::CertStore;
using content::WebContents;
static jobjectArray GetCertificateChain(JNIEnv* env,
jobject obj,
jobject java_web_contents) {
content::WebContents* web_contents =
content::WebContents::FromJavaWebContents(java_web_contents);
if (!web_contents)
return NULL;
int cert_id =
web_contents->GetController().GetVisibleEntry()->GetSSL().cert_id;
scoped_refptr<net::X509Certificate> cert;
bool ok = CertStore::GetInstance()->RetrieveCert(cert_id, &cert);
CHECK(ok);
std::vector<std::string> cert_chain;
net::X509Certificate::OSCertHandles cert_handles =
cert->GetIntermediateCertificates();
// Make sure the peer's own cert is the first in the chain, if it's not
// already there.
if (cert_handles.empty() || cert_handles[0] != cert->os_cert_handle())
cert_handles.insert(cert_handles.begin(), cert->os_cert_handle());
cert_chain.reserve(cert_handles.size());
for (net::X509Certificate::OSCertHandles::const_iterator it =
cert_handles.begin();
it != cert_handles.end();
++it) {
std::string cert_bytes;
net::X509Certificate::GetDEREncoded(*it, &cert_bytes);
cert_chain.push_back(cert_bytes);
}
// OK to release, JNI binding.
return base::android::ToJavaArrayOfByteArray(env, cert_chain).Release();
}
// static
static jlong Init(JNIEnv* env,
jclass clazz,
jobject obj,
jobject java_web_contents) {
content::WebContents* web_contents =
content::WebContents::FromJavaWebContents(java_web_contents);
return reinterpret_cast<intptr_t>(
new WebsiteSettingsPopupLegacyAndroid(env, obj, web_contents));
}
WebsiteSettingsPopupLegacyAndroid::WebsiteSettingsPopupLegacyAndroid(
JNIEnv* env,
jobject java_website_settings_pop,
WebContents* web_contents) {
// Important to use GetVisibleEntry to match what's showing in the omnibox.
content::NavigationEntry* nav_entry =
web_contents->GetController().GetVisibleEntry();
if (nav_entry == NULL)
return;
popup_jobject_.Reset(env, java_website_settings_pop);
presenter_.reset(new WebsiteSettings(
this,
Profile::FromBrowserContext(web_contents->GetBrowserContext()),
TabSpecificContentSettings::FromWebContents(web_contents),
InfoBarService::FromWebContents(web_contents),
nav_entry->GetURL(),
nav_entry->GetSSL(),
content::CertStore::GetInstance()));
}
WebsiteSettingsPopupLegacyAndroid::~WebsiteSettingsPopupLegacyAndroid() {
}
void WebsiteSettingsPopupLegacyAndroid::Destroy(JNIEnv* env, jobject obj) {
delete this;
}
void WebsiteSettingsPopupLegacyAndroid::ResetCertDecisions(
JNIEnv* env,
jobject obj,
jobject java_web_contents) {
presenter_->OnRevokeSSLErrorBypassButtonPressed();
}
void WebsiteSettingsPopupLegacyAndroid::SetIdentityInfo(
const IdentityInfo& identity_info) {
JNIEnv* env = base::android::AttachCurrentThread();
{
int icon_id = ResourceMapper::MapFromChromiumId(
WebsiteSettingsUI::GetIdentityIconID(identity_info.identity_status));
// The headline and the certificate dialog link of the site's identity
// section is only displayed if the site's identity was verified. If the
// site's identity was verified, then the headline contains the organization
// name from the provided certificate. If the organization name is not
// available than the hostname of the site is used instead.
std::string headline;
if (identity_info.cert_id) {
headline = identity_info.site_identity;
}
ScopedJavaLocalRef<jstring> description =
ConvertUTF8ToJavaString(env, identity_info.identity_status_description);
base::string16 certificate_label =
l10n_util::GetStringUTF16(IDS_PAGEINFO_CERT_INFO_BUTTON);
Java_WebsiteSettingsPopupLegacy_addCertificateSection(
env,
popup_jobject_.obj(),
icon_id,
ConvertUTF8ToJavaString(env, headline).obj(),
description.obj(),
ConvertUTF16ToJavaString(env, certificate_label).obj());
if (identity_info.show_ssl_decision_revoke_button) {
base::string16 reset_button_label = l10n_util::GetStringUTF16(
IDS_PAGEINFO_RESET_INVALID_CERTIFICATE_DECISIONS_BUTTON);
Java_WebsiteSettingsPopupLegacy_addResetCertDecisionsButton(
env,
popup_jobject_.obj(),
ConvertUTF16ToJavaString(env, reset_button_label).obj());
}
}
{
int icon_id = ResourceMapper::MapFromChromiumId(
WebsiteSettingsUI::GetConnectionIconID(
identity_info.connection_status));
ScopedJavaLocalRef<jstring> description = ConvertUTF8ToJavaString(
env, identity_info.connection_status_description);
Java_WebsiteSettingsPopupLegacy_addDescriptionSection(
env, popup_jobject_.obj(), icon_id, NULL, description.obj());
}
Java_WebsiteSettingsPopupLegacy_addMoreInfoLink(
env,
popup_jobject_.obj(),
ConvertUTF8ToJavaString(
env, l10n_util::GetStringUTF8(IDS_PAGE_INFO_HELP_CENTER_LINK)).obj());
Java_WebsiteSettingsPopupLegacy_showDialog(env, popup_jobject_.obj());
}
void WebsiteSettingsPopupLegacyAndroid::SetCookieInfo(
const CookieInfoList& cookie_info_list) {
NOTIMPLEMENTED();
}
void WebsiteSettingsPopupLegacyAndroid::SetPermissionInfo(
const PermissionInfoList& permission_info_list) {
NOTIMPLEMENTED();
}
void WebsiteSettingsPopupLegacyAndroid::SetSelectedTab(
WebsiteSettingsUI::TabId tab_id) {
// There's no tab UI on Android - only connection info is shown.
NOTIMPLEMENTED();
}
void WebsiteSettingsPopupLegacyAndroid::SetFirstVisit(
const base::string16& first_visit) {
NOTIMPLEMENTED();
}
// static
bool
WebsiteSettingsPopupLegacyAndroid::RegisterWebsiteSettingsPopupLegacyAndroid(
JNIEnv* env) {
return RegisterNativesImpl(env);
}
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_UI_ANDROID_WEBSITE_SETTINGS_POPUP_LEGACY_ANDROID_H_
#define CHROME_BROWSER_UI_ANDROID_WEBSITE_SETTINGS_POPUP_LEGACY_ANDROID_H_
#include <jni.h>
#include "base/android/scoped_java_ref.h"
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "chrome/browser/ui/website_settings/website_settings_ui.h"
namespace content {
class WebContents;
}
// Android implementation of the website settings UI.
class WebsiteSettingsPopupLegacyAndroid : public WebsiteSettingsUI {
public:
WebsiteSettingsPopupLegacyAndroid(JNIEnv* env,
jobject java_website_settings,
content::WebContents* web_contents);
~WebsiteSettingsPopupLegacyAndroid() override;
void Destroy(JNIEnv* env, jobject obj);
// Revokes any current user exceptions for bypassing SSL error interstitials
// on this page.
void ResetCertDecisions(JNIEnv* env, jobject obj, jobject java_web_contents);
// WebsiteSettingsUI implementations.
void SetCookieInfo(const CookieInfoList& cookie_info_list) override;
void SetPermissionInfo(
const PermissionInfoList& permission_info_list) override;
void SetIdentityInfo(const IdentityInfo& identity_info) override;
void SetFirstVisit(const base::string16& first_visit) override;
void SetSelectedTab(WebsiteSettingsUI::TabId tab_id) override;
static bool RegisterWebsiteSettingsPopupLegacyAndroid(JNIEnv* env);
private:
// The presenter that controlls the Website Settings UI.
scoped_ptr<WebsiteSettings> presenter_;
// The java prompt implementation.
base::android::ScopedJavaGlobalRef<jobject> popup_jobject_;
DISALLOW_COPY_AND_ASSIGN(WebsiteSettingsPopupLegacyAndroid);
};
#endif // CHROME_BROWSER_UI_ANDROID_WEBSITE_SETTINGS_POPUP_LEGACY_ANDROID_H_
...@@ -1554,7 +1554,6 @@ ...@@ -1554,7 +1554,6 @@
'android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java', 'android/java/src/org/chromium/chrome/browser/autofill/PersonalDataManager.java',
'android/java/src/org/chromium/chrome/browser/BookmarksBridge.java', 'android/java/src/org/chromium/chrome/browser/BookmarksBridge.java',
'android/java/src/org/chromium/chrome/browser/banners/AppBannerManager.java', 'android/java/src/org/chromium/chrome/browser/banners/AppBannerManager.java',
'android/java/src/org/chromium/chrome/browser/CertificateViewer.java',
'android/java/src/org/chromium/chrome/browser/child_accounts/ChildAccountService.java', 'android/java/src/org/chromium/chrome/browser/child_accounts/ChildAccountService.java',
'android/java/src/org/chromium/chrome/browser/child_accounts/ChildAccountFeedbackReporter.java', 'android/java/src/org/chromium/chrome/browser/child_accounts/ChildAccountFeedbackReporter.java',
'android/java/src/org/chromium/chrome/browser/ChromiumApplication.java', 'android/java/src/org/chromium/chrome/browser/ChromiumApplication.java',
...@@ -1620,7 +1619,6 @@ ...@@ -1620,7 +1619,6 @@
'android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java', 'android/java/src/org/chromium/chrome/browser/util/FeatureUtilities.java',
'android/java/src/org/chromium/chrome/browser/VoiceSearchTabHelper.java', 'android/java/src/org/chromium/chrome/browser/VoiceSearchTabHelper.java',
'android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java', 'android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopup.java',
'android/java/src/org/chromium/chrome/browser/WebsiteSettingsPopupLegacy.java',
'android/java/src/org/chromium/chrome/browser/infobar/AppBannerInfoBar.java', 'android/java/src/org/chromium/chrome/browser/infobar/AppBannerInfoBar.java',
'android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBarDelegate.java', 'android/java/src/org/chromium/chrome/browser/infobar/ConfirmInfoBarDelegate.java',
'android/java/src/org/chromium/chrome/browser/infobar/DataReductionProxyInfoBarDelegate.java', 'android/java/src/org/chromium/chrome/browser/infobar/DataReductionProxyInfoBarDelegate.java',
......
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
'browser/ui/android/infobars/infobar_container_android.h', 'browser/ui/android/infobars/infobar_container_android.h',
'browser/ui/android/infobars/translate_infobar.cc', 'browser/ui/android/infobars/translate_infobar.cc',
'browser/ui/android/infobars/translate_infobar.h', 'browser/ui/android/infobars/translate_infobar.h',
'browser/ui/android/certificate_viewer_android.cc',
'browser/ui/android/chrome_http_auth_handler.cc', 'browser/ui/android/chrome_http_auth_handler.cc',
'browser/ui/android/chrome_http_auth_handler.h', 'browser/ui/android/chrome_http_auth_handler.h',
'browser/ui/android/color_chooser_dialog_android.cc', 'browser/ui/android/color_chooser_dialog_android.cc',
...@@ -65,8 +64,6 @@ ...@@ -65,8 +64,6 @@
'browser/ui/android/tab_restore_service_delegate_android.cc', 'browser/ui/android/tab_restore_service_delegate_android.cc',
'browser/ui/android/website_settings_popup_android.cc', 'browser/ui/android/website_settings_popup_android.cc',
'browser/ui/android/website_settings_popup_android.h', 'browser/ui/android/website_settings_popup_android.h',
'browser/ui/android/website_settings_popup_legacy_android.cc',
'browser/ui/android/website_settings_popup_legacy_android.h',
'browser/ui/android/window_android_helper.cc', 'browser/ui/android/window_android_helper.cc',
'browser/ui/android/window_android_helper.h', 'browser/ui/android/window_android_helper.h',
'browser/ui/app_list/app_list_util.cc', 'browser/ui/app_list/app_list_util.cc',
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_below="@id/top_view" android:layout_below="@id/top_view"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:src="@drawable/pageinfo_warning_major" /> android:src="@drawable/ic_warning" />
<LinearLayout <LinearLayout
android:id="@id/text_wrapper" android:id="@id/text_wrapper"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment