Chromium Code Reviews| 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); |
| + } |
| } |