 Chromium Code Reviews
 Chromium Code Reviews Issue 2562123003:
  [Android History] Add clear browsing data button and privacy disclaimers  (Closed)
    
  
    Issue 2562123003:
  [Android History] Add clear browsing data button and privacy disclaimers  (Closed) 
  | 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..f6071f372ffc8aabdd687f17622f87379812e16f 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,49 @@ | 
| 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.Button; | 
| +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 +122,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 +136,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; | 
| + | 
| + Button cbdButton = (Button) v.findViewById(R.id.clear_browsing_data_button); | 
| 
gone
2016/12/12 19:14:13
I think you can get by with just View cbdButton.
 
Theresa
2016/12/12 20:09:04
Done.
 | 
| + 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); | 
| + } | 
| } |