Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/OtherFormsOfHistoryDialogFragment.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/OtherFormsOfHistoryDialogFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/OtherFormsOfHistoryDialogFragment.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e0d3a4fcc71cf4f981c33063159ac969c075e2c0 |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/OtherFormsOfHistoryDialogFragment.java |
@@ -0,0 +1,133 @@ |
+// Copyright 2016 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.preferences.privacy; |
+ |
+import android.app.Activity; |
+import android.app.Dialog; |
+import android.app.DialogFragment; |
+import android.content.Context; |
+import android.content.DialogInterface; |
+import android.content.SharedPreferences; |
+import android.os.Bundle; |
+import android.preference.PreferenceManager; |
+import android.support.v7.app.AlertDialog; |
+import android.text.SpannableString; |
+import android.text.method.LinkMovementMethod; |
+import android.view.LayoutInflater; |
+import android.view.View; |
+import android.widget.TextView; |
+ |
+import org.chromium.base.VisibleForTesting; |
+import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
+import org.chromium.chrome.browser.tabmodel.document.TabDelegate; |
+import org.chromium.ui.text.NoUnderlineClickableSpan; |
+import org.chromium.ui.text.SpanApplier; |
+ |
+/** |
+ * Informs the user about the existence of other forms of browsing history. |
+ */ |
+public class OtherFormsOfHistoryDialogFragment extends DialogFragment implements |
+ DialogInterface.OnClickListener { |
+ |
+ public static final String PREF_OTHER_FORMS_OF_HISTORY_DIALOG_SHOWN = |
+ "org.chromium.chrome.browser.preferences.privacy." |
+ + "PREF_OTHER_FORMS_OF_HISTORY_DIALOG_SHOWN"; |
+ |
+ /** The my activity URL. */ |
+ private static final String WEB_HISTORY_URL = |
+ "https://history.google.com/history/?utm_source=chrome_n"; |
+ |
+ private static final String TAG = "OtherFormsOfHistoryDialogFragment"; |
+ |
+ /** |
+ * Create and show the dialog. |
+ */ |
+ public static OtherFormsOfHistoryDialogFragment show(Activity activity) { |
+ OtherFormsOfHistoryDialogFragment dialog = new OtherFormsOfHistoryDialogFragment(); |
+ dialog.show(activity.getFragmentManager(), TAG); |
+ return dialog; |
+ } |
+ |
+ private OtherFormsOfHistoryDialogFragment() { |
+ super(); |
+ } |
+ |
+ @Override |
+ public Dialog onCreateDialog(Bundle savedInstanceState) { |
+ super.onCreateDialog(savedInstanceState); |
+ LayoutInflater inflater = getActivity().getLayoutInflater(); |
+ View view = inflater.inflate(R.layout.other_forms_of_history_dialog, null); |
+ |
+ // Linkify the <link></link> span in the dialog text. |
+ TextView textView = (TextView) view.findViewById(R.id.text); |
+ final SpannableString textWithLink = SpanApplier.applySpans( |
+ textView.getText().toString(), |
+ new SpanApplier.SpanInfo("<link>", "</link>", new NoUnderlineClickableSpan() { |
+ @Override |
+ public void onClick(View widget) { |
+ new TabDelegate(false /* incognito */).launchUrl( |
+ WEB_HISTORY_URL, TabLaunchType.FROM_CHROME_UI); |
+ } |
+ })); |
+ |
+ textView.setText(textWithLink); |
+ textView.setMovementMethod(LinkMovementMethod.getInstance()); |
+ |
+ // Construct the dialog. |
+ AlertDialog dialog = new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme) |
+ .setView(view) |
+ .setTitle(R.string.clear_browsing_data_history_dialog_title) |
+ .setPositiveButton( |
+ R.string.ok_got_it, this) |
+ .create(); |
+ |
+ dialog.setCanceledOnTouchOutside(false); |
+ return dialog; |
+ } |
+ |
+ @Override |
+ public void onClick(DialogInterface dialog, int which) { |
+ assert which == AlertDialog.BUTTON_POSITIVE; |
+ |
+ // Remember that the dialog about other forms of browsing history has been shown |
+ // to the user. |
+ recordDialogWasShown(getActivity(), true); |
+ |
+ // Finishes the ClearBrowsingDataPreferences activity that created this dialog. |
+ getActivity().finish(); |
+ } |
+ |
+ /** |
+ * Sets the preference indicating whether this dialog was already shown. |
+ * @param activity The Activity storing the preference. |
+ * @param shown Whether the dialog was shown. |
+ */ |
+ private static void recordDialogWasShown(Activity activity, boolean shown) { |
+ SharedPreferences preferences = |
+ PreferenceManager.getDefaultSharedPreferences(activity); |
+ SharedPreferences.Editor editor = preferences.edit(); |
+ editor.putBoolean(PREF_OTHER_FORMS_OF_HISTORY_DIALOG_SHOWN, shown); |
+ editor.apply(); |
+ } |
+ |
+ /** |
+ * @return Whether the dialog has already been shown to the user before. |
+ */ |
+ static boolean wasDialogShown(Context context) { |
+ return PreferenceManager.getDefaultSharedPreferences(context).getBoolean( |
+ PREF_OTHER_FORMS_OF_HISTORY_DIALOG_SHOWN, false); |
+ } |
+ |
+ /** |
+ * For testing purposes, resets the preference indicating that this dialog has been shown |
+ * to false. |
+ * @param activity The Activity storing the preference. |
+ */ |
+ @VisibleForTesting |
+ static void clearShownPreferenceForTesting(Activity activity) { |
+ recordDialogWasShown(activity, false); |
+ } |
+} |