Index: chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestHeader.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestHeader.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..429da2fc138984f9e2d8938a6c3b51afd7ab2e05 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/payments/ui/PaymentRequestHeader.java |
@@ -0,0 +1,74 @@ |
+// Copyright 2017 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.payments.ui; |
+ |
+import android.content.Context; |
+import android.graphics.Bitmap; |
+import android.text.Spannable; |
+import android.text.SpannableString; |
+import android.text.style.ForegroundColorSpan; |
+import android.util.AttributeSet; |
+import android.widget.FrameLayout; |
+import android.widget.ImageView; |
+import android.widget.TextView; |
+ |
+import org.chromium.base.ApiCompatibilityUtils; |
+import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.UrlConstants; |
+import org.chromium.chrome.browser.widget.TintedDrawable; |
+ |
+/** This class represents a bar to display at the top of the payment request UI. */ |
+public class PaymentRequestHeader extends FrameLayout { |
+ private Context mContext; |
+ |
+ public PaymentRequestHeader(Context context, AttributeSet attrs) { |
+ super(context, attrs); |
+ mContext = context; |
+ } |
+ |
+ /** |
+ * Sets the bitmap of the icon on the left of the header. |
+ * |
+ * @param bitmap The bitmap to display. |
+ */ |
+ public void setTitleBitmap(Bitmap bitmap) { |
+ ((ImageView) findViewById(R.id.icon_view)).setImageBitmap(bitmap); |
+ } |
+ |
+ /** |
+ * Sets the title and origin on the header. |
+ * |
+ * @param title The title to display on the header. |
+ * @param origin The origin to display on the header. |
+ */ |
+ public void setTitleAndOrigin(String title, String origin) { |
+ ((TextView) findViewById(R.id.page_title)).setText(title); |
+ |
+ TextView hostName = (TextView) findViewById(R.id.hostname); |
+ if (origin.startsWith(UrlConstants.HTTPS_URL_PREFIX)) { |
+ // Tint https scheme and add compound drawable for security display. |
+ hostName.setText(tintUrlSchemeForSecurityDisplay(origin)); |
+ ApiCompatibilityUtils.setCompoundDrawablesRelativeWithIntrinsicBounds(hostName, |
+ TintedDrawable.constructTintedDrawable(mContext.getResources(), |
+ R.drawable.omnibox_https_valid, R.color.google_green_700), |
+ null, null, null); |
+ |
+ // Remove left padding to align left compound drawable with the title. Note that the |
+ // left compound drawable has transparent boundary. |
+ hostName.setPaddingRelative(0, 0, 0, 0); |
+ } else { |
+ hostName.setText(origin); |
+ } |
+ } |
+ |
+ private CharSequence tintUrlSchemeForSecurityDisplay(String uri) { |
+ SpannableString spannableUri = new SpannableString(uri); |
+ int color = |
+ ApiCompatibilityUtils.getColor(mContext.getResources(), R.color.google_green_700); |
+ spannableUri.setSpan(new ForegroundColorSpan(color), 0, |
+ spannableUri.toString().indexOf(":"), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); |
+ return spannableUri; |
+ } |
+} |