Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.chrome.browser; | |
| 6 | |
| 7 import android.app.Dialog; | |
| 8 import android.content.Context; | |
| 9 import android.content.DialogInterface; | |
| 10 import android.content.Intent; | |
| 11 import android.graphics.Bitmap; | |
| 12 import android.graphics.Color; | |
| 13 import android.graphics.Typeface; | |
| 14 import android.provider.Browser; | |
| 15 import android.text.Html; | |
| 16 import android.view.LayoutInflater; | |
| 17 import android.view.View; | |
| 18 import android.view.View.OnClickListener; | |
| 19 import android.view.ViewGroup.LayoutParams; | |
| 20 import android.view.Window; | |
| 21 import android.widget.ImageView; | |
| 22 import android.widget.LinearLayout; | |
| 23 import android.widget.ScrollView; | |
| 24 import android.widget.TextView; | |
| 25 | |
| 26 import org.chromium.base.CalledByNative; | |
| 27 import org.chromium.chrome.R; | |
| 28 import org.chromium.content.browser.ContentViewCore; | |
| 29 | |
| 30 import java.net.URISyntaxException; | |
| 31 | |
| 32 /** | |
| 33 * Java side of Android implementation of the website settings UI. | |
| 34 */ | |
| 35 public class WebsiteSettingsPopup implements OnClickListener { | |
| 36 private static final String HELP_URL = | |
| 37 "http://www.google.com/support/chrome/bin/answer.py?answer=95617"; | |
| 38 private final Context mContext; | |
| 39 private final Dialog mDialog; | |
| 40 private final LinearLayout mContainer; | |
| 41 private TextView mCertificateViewer, mMoreInfoLink; | |
| 42 private String mLinkUrl; | |
| 43 ContentViewCore mContentViewCore; | |
|
Ted C
2013/01/25 02:04:05
private?
Yaron
2013/01/25 19:25:17
Done.
| |
| 44 private final int mPadding; | |
| 45 | |
| 46 WebsiteSettingsPopup(Context context, ContentViewCore contentViewCore, | |
| 47 final int nativeWebsiteSettingsPopup) { | |
| 48 mContext = context; | |
| 49 mDialog = new Dialog(mContext); | |
| 50 mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); | |
| 51 mDialog.setCanceledOnTouchOutside(true); | |
| 52 mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { | |
| 53 @Override | |
| 54 public void onCancel(DialogInterface dialogInterface) { | |
| 55 assert nativeWebsiteSettingsPopup != 0; | |
| 56 nativeDestroy(nativeWebsiteSettingsPopup); | |
| 57 } | |
| 58 }); | |
| 59 mContainer = new LinearLayout(mContext); | |
| 60 mContainer.setOrientation(LinearLayout.VERTICAL); | |
| 61 mContentViewCore = contentViewCore; | |
| 62 mPadding = (int) context.getResources().getDimension(R.dimen.certificate _viewer_padding); | |
| 63 mContainer.setPadding(mPadding, 0, mPadding, 0); | |
| 64 } | |
| 65 | |
| 66 /** Adds a section, which contains an icon, a headline, and a description. * / | |
| 67 @CalledByNative | |
| 68 void addSection(Bitmap icon, String headline, String description) { | |
| 69 View section = LayoutInflater.from(mContext).inflate(R.layout.website_se ttings, null); | |
| 70 ImageView i = (ImageView) section.findViewById(R.id.website_settings_ico n); | |
| 71 i.setImageBitmap(icon); | |
| 72 TextView h = (TextView) section.findViewById(R.id.website_settings_headl ine); | |
| 73 h.setText(headline); | |
| 74 h.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); | |
|
Ted C
2013/01/25 02:04:05
any reason it's not configured to be bold in the x
Yaron
2013/01/25 19:25:17
Done.
| |
| 75 if (headline == null || headline.length() == 0) h.setVisibility(View.GON E); | |
|
Ted C
2013/01/25 02:04:05
TextUtils.isEmpty(headline)
Yaron
2013/01/25 19:25:17
Done.
| |
| 76 | |
| 77 TextView d = (TextView) section.findViewById(R.id.website_settings_descr iption); | |
| 78 d.setText(description); | |
| 79 if (description == null || description.length() == 0) d.setVisibility(Vi ew.GONE); | |
|
Ted C
2013/01/25 02:04:05
same thing here about TextUtils.
Yaron
2013/01/25 19:25:17
Done.
| |
| 80 | |
| 81 mContainer.addView(section); | |
| 82 } | |
| 83 | |
| 84 /** Adds a horizontal dividing line to separate sections. */ | |
| 85 @CalledByNative | |
| 86 void addDivider() { | |
|
Ted C
2013/01/25 02:04:05
private?
Yaron
2013/01/25 19:25:17
Done.
| |
| 87 View divider = new View(mContext); | |
| 88 divider.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 2)); | |
|
Ted C
2013/01/25 02:04:05
should the 2 be in DP or pixels?
Yaron
2013/01/25 19:25:17
I guess dp?
| |
| 89 divider.setBackgroundColor(Color.GRAY); | |
| 90 mContainer.addView(divider); | |
| 91 } | |
| 92 | |
| 93 @CalledByNative | |
| 94 private void setCertificateViewer(String label) { | |
| 95 assert mCertificateViewer == null; | |
| 96 mCertificateViewer = new TextView(mContext); | |
| 97 mCertificateViewer.setText(Html.fromHtml("<a href='#'>" + label + "</a>" )); | |
| 98 mCertificateViewer.setOnClickListener(this); | |
| 99 mCertificateViewer.setPadding(0, 0, 0, mPadding); | |
| 100 mContainer.addView(mCertificateViewer); | |
| 101 } | |
| 102 | |
| 103 @CalledByNative | |
| 104 private void addMoreInfoLink() { | |
| 105 addUrl(mContext.getResources().getString(R.string.website_settings_more_ info), | |
| 106 HELP_URL); | |
|
Ted C
2013/01/25 02:04:05
I think this is only indented 7 instead of 8.
Yaron
2013/01/25 19:25:17
Done.
| |
| 107 } | |
| 108 | |
| 109 /** Adds a section containing a description and a hyperlink. */ | |
| 110 void addUrl(String label, String url) { | |
|
Ted C
2013/01/25 02:04:05
private?
Yaron
2013/01/25 19:25:17
Done.
| |
| 111 mMoreInfoLink = new TextView(mContext); | |
| 112 mLinkUrl = url; | |
| 113 mMoreInfoLink.setText(Html.fromHtml("<a href='#'>" + label + "</a>")); | |
| 114 mMoreInfoLink.setPadding(0, mPadding, 0, mPadding); | |
| 115 mMoreInfoLink.setOnClickListener(this); | |
| 116 mContainer.addView(mMoreInfoLink); | |
| 117 } | |
| 118 | |
| 119 /** Displays the WebsiteSettingsPopup. */ | |
| 120 @CalledByNative | |
| 121 void show() { | |
|
Ted C
2013/01/25 02:04:05
private
Yaron
2013/01/25 19:25:17
Done.
| |
| 122 ScrollView scrollView = new ScrollView(mContext); | |
| 123 scrollView.addView(mContainer); | |
| 124 mDialog.addContentView(scrollView, | |
| 125 new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PA RENT, | |
| 126 LinearLayout.LayoutParams.MATCH_PA RENT)); | |
|
Ted C
2013/01/25 02:04:05
same thing here too..should be indented 8 from pre
Yaron
2013/01/25 19:25:17
Done.
| |
| 127 mDialog.show(); | |
| 128 } | |
| 129 | |
| 130 @Override | |
| 131 public void onClick(View v) { | |
| 132 mDialog.dismiss(); | |
| 133 if (mCertificateViewer == v) { | |
| 134 byte[][] certChain = nativeGetCertChain(mContentViewCore); | |
| 135 CertificateViewer.showCertChain(mContext, certChain); | |
| 136 } else if (mMoreInfoLink == v) { | |
| 137 try { | |
| 138 Intent i = Intent.parseUri(mLinkUrl, Intent.URI_INTENT_SCHEME); | |
| 139 i.putExtra(Browser.EXTRA_CREATE_NEW_TAB, true); | |
| 140 i.putExtra(Browser.EXTRA_APPLICATION_ID, mContext.getPackageName ()); | |
| 141 mContext.startActivity(i); | |
| 142 } catch (URISyntaxException ex) {} | |
| 143 } | |
| 144 } | |
| 145 | |
| 146 @CalledByNative | |
| 147 private static WebsiteSettingsPopup create(Context context, ContentViewCore contentViewCore, | |
| 148 int nativeWebsiteSettingsPopup) { | |
| 149 return new WebsiteSettingsPopup(context, contentViewCore, nativeWebsiteS ettingsPopup); | |
| 150 } | |
| 151 | |
| 152 private native void nativeDestroy(int nativeWebsiteSettingsPopupAndroid); | |
| 153 private native byte[][] nativeGetCertChain(ContentViewCore contentViewCore); | |
| 154 } | |
| OLD | NEW |