Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3467)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java

Issue 2562123003: [Android History] Add clear browsing data button and privacy disclaimers (Closed)
Patch Set: [Android History] Add clear browsing data button and privacy disclaimers Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
index 5ad87ce0f99839ea0df1fc639bdbe31837356f1a..6d53e9796173b9cc1eb1319c97f8cfefb89bfd40 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
@@ -5,28 +5,48 @@
package org.chromium.chrome.browser.history;
import android.support.v7.widget.RecyclerView.ViewHolder;
+import android.text.SpannableString;
+import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.widget.TextView;
+import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.history.BrowsingHistoryBridge.BrowsingHistoryObserver;
import org.chromium.chrome.browser.widget.DateDividedAdapter;
import org.chromium.chrome.browser.widget.selection.SelectableItemViewHolder;
import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
+import org.chromium.components.signin.ChromeSigninController;
+import org.chromium.ui.text.NoUnderlineClickableSpan;
+import org.chromium.ui.text.SpanApplier;
import java.util.List;
+import java.util.Locale;
/**
* Bridges the user's browsing history and the UI used to display it.
*/
public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistoryObserver {
private static final String EMPTY_QUERY = "";
+ private static final String LEARN_MORE_LINK =
+ "https://support.google.com/chrome/?p=sync_history&hl="
+ + Locale.getDefault().toString();
+ private static final String GOOGLE_HISTORY_LINK = "history.google.com";
private final SelectionDelegate<HistoryItem> mSelectionDelegate;
private final BrowsingHistoryBridge mBridge;
private final HistoryManager mManager;
+ private TextView mSignedInNotSyncedTextView;
+ private TextView mSignedInSyncedTextView;
+ private TextView mOtherFormsOfBrowsingHistoryTextView;
+
+ private boolean mHasOtherFormsOfBrowsingData;
+ private boolean mHasSyncedData;
+ private boolean mHeaderInflated;
private boolean mDestroyed;
public HistoryAdapter(SelectionDelegate<HistoryItem> delegate, HistoryManager manager) {
@@ -101,7 +121,11 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
// destroyed to avoid unnecessary work.
if (mDestroyed) return;
- loadItems(items);
+ clear(true);
+ if (items.size() > 0) {
+ addHeader();
+ loadItems(items);
+ }
}
@Override
@@ -111,4 +135,69 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
// This currently removes all items and re-issues a query.
initialize();
}
+
+ @Override
+ public void hasOtherFormsOfBrowsingData(boolean hasOtherForms, boolean hasSyncedResults) {
+ mHasOtherFormsOfBrowsingData = hasOtherForms;
+ mHasSyncedData = hasSyncedResults;
+ setPrivacyDisclaimerVisibility();
+ }
+
+ @Override
+ protected HeaderViewHolder createHeader(ViewGroup parent) {
+ ViewGroup v = (ViewGroup) LayoutInflater.from(parent.getContext()).inflate(
+ R.layout.history_header, parent, false);
+ mHeaderInflated = true;
+
+ View cbdButton = v.findViewById(R.id.clear_browsing_data_button);
+ cbdButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mManager.openClearBrowsingDataPreference();
+ }
+ });
+
+ mSignedInNotSyncedTextView = (TextView) v.findViewById(R.id.signed_in_not_synced);
+ setPrivacyDisclaimerText(mSignedInNotSyncedTextView,
+ R.string.android_history_no_synced_results, LEARN_MORE_LINK);
+
+ mSignedInSyncedTextView = (TextView) v.findViewById(R.id.signed_in_synced);
+ setPrivacyDisclaimerText(mSignedInSyncedTextView,
+ R.string.android_history_has_synced_results, LEARN_MORE_LINK);
+
+ mOtherFormsOfBrowsingHistoryTextView = (TextView) v.findViewById(
+ R.id.other_forms_of_browsing_history);
+ setPrivacyDisclaimerText(mOtherFormsOfBrowsingHistoryTextView,
+ R.string.android_history_other_forms_of_history, GOOGLE_HISTORY_LINK);
+
+ setPrivacyDisclaimerVisibility();
+
+ return new HeaderViewHolder(v);
+ }
+
+ private void setPrivacyDisclaimerText(TextView view, int stringId, final String url) {
+ NoUnderlineClickableSpan link = new NoUnderlineClickableSpan() {
+ @Override
+ public void onClick(View view) {
+ mManager.openUrl(url, null, true);
+ }
+ };
+ SpannableString spannable = SpanApplier.applySpans(
+ view.getResources().getString(stringId),
+ new SpanApplier.SpanInfo("<link>", "</link>", link));
+ view.setText(spannable);
+ view.setMovementMethod(LinkMovementMethod.getInstance());
+ }
+
+ private void setPrivacyDisclaimerVisibility() {
+ if (!mHeaderInflated) return;
+
+ boolean isSignedIn =
+ ChromeSigninController.get(ContextUtils.getApplicationContext()).isSignedIn();
+ mSignedInNotSyncedTextView.setVisibility(
+ !mHasSyncedData && isSignedIn ? View.VISIBLE : View.GONE);
+ mSignedInSyncedTextView.setVisibility(mHasSyncedData ? View.VISIBLE : View.GONE);
+ mOtherFormsOfBrowsingHistoryTextView.setVisibility(
+ mHasOtherFormsOfBrowsingData ? View.VISIBLE : View.GONE);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698