| 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 70487af91c97dcef3c76af6252276d0fe8513667..da30057b74c1e3de58fec2b16eed55ab01b32c31 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
|
| @@ -4,6 +4,7 @@
|
|
|
| package org.chromium.chrome.browser.history;
|
|
|
| +import android.content.res.Resources;
|
| import android.support.v7.widget.RecyclerView.ViewHolder;
|
| import android.text.SpannableString;
|
| import android.text.method.LinkMovementMethod;
|
| @@ -12,13 +13,17 @@ import android.view.View;
|
| import android.view.View.OnClickListener;
|
| import android.view.ViewGroup;
|
| import android.widget.Button;
|
| +import android.widget.FrameLayout;
|
| import android.widget.TextView;
|
|
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.history.HistoryProvider.BrowsingHistoryObserver;
|
| +import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
| import org.chromium.chrome.browser.widget.DateDividedAdapter;
|
| +import org.chromium.chrome.browser.widget.DateDividedAdapter.DateViewHolder;
|
| +import org.chromium.chrome.browser.widget.displaystyle.MarginResizer;
|
| import org.chromium.chrome.browser.widget.selection.SelectableItemViewHolder;
|
| import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
| import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver;
|
| @@ -42,12 +47,14 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
|
|
| private final SelectionDelegate<HistoryItem> mSelectionDelegate;
|
| private final HistoryProvider mHistoryProvider;
|
| - private final HistoryManager mManager;
|
| + private final HistoryManager mHistoryManager;
|
| + private final ArrayList<HistoryItemView> mItemViews;
|
|
|
| private TextView mSignedInNotSyncedTextView;
|
| private TextView mSignedInSyncedTextView;
|
| private TextView mOtherFormsOfBrowsingHistoryTextView;
|
| private Button mClearBrowsingDataButton;
|
| + private FrameLayout mClearBrowsingDataButtonContainer;
|
|
|
| private boolean mHasOtherFormsOfBrowsingData;
|
| private boolean mHasSyncedData;
|
| @@ -60,8 +67,7 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| private boolean mClearOnNextQueryComplete;
|
| private long mNextQueryEndTime;
|
| private String mQueryText = EMPTY_QUERY;
|
| -
|
| - private final ArrayList<HistoryItemView> mItemViews;
|
| + private int mDefaultTextMargin;
|
|
|
| public HistoryAdapter(SelectionDelegate<HistoryItem> delegate, HistoryManager manager,
|
| HistoryProvider provider) {
|
| @@ -69,7 +75,7 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| mSelectionDelegate = delegate;
|
| mHistoryProvider = provider;
|
| mHistoryProvider.setObserver(this);
|
| - mManager = manager;
|
| + mHistoryManager = manager;
|
| mItemViews = new ArrayList<>();
|
| }
|
|
|
| @@ -155,6 +161,12 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| */
|
| public void removeItems() {
|
| mHistoryProvider.removeItems();
|
| +
|
| + // TODO(twellington): this could be optimized by only setting the background for item views
|
| + // in a group that has changed.
|
| + for (HistoryItemView itemView : mItemViews) {
|
| + itemView.setBackgroundResourceForGroupPosition();
|
| + }
|
| }
|
|
|
| /**
|
| @@ -164,6 +176,7 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| for (HistoryItemView itemView : mItemViews) {
|
| itemView.onSignInStateChange();
|
| }
|
| + updateClearBrowsingDataButtonVisibility();
|
| }
|
|
|
| /**
|
| @@ -195,12 +208,12 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| SelectableItemViewHolder<HistoryItem> holder =
|
| (SelectableItemViewHolder<HistoryItem>) current;
|
| holder.displayItem(item);
|
| - ((HistoryItemView) holder.itemView).setHistoryManager(mManager);
|
| + ((HistoryItemView) holder.itemView).setHistoryManager(mHistoryManager);
|
| }
|
|
|
| @Override
|
| protected int getTimedItemViewResId() {
|
| - return R.layout.date_view;
|
| + return R.layout.history_date_view;
|
| }
|
|
|
| @Override
|
| @@ -248,28 +261,43 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| protected BasicViewHolder createHeader(ViewGroup parent) {
|
| ViewGroup v = (ViewGroup) LayoutInflater.from(parent.getContext()).inflate(
|
| R.layout.history_header, parent, false);
|
| + Resources resources = v.getResources();
|
| mIsHeaderInflated = true;
|
|
|
| mClearBrowsingDataButton = (Button) v.findViewById(R.id.clear_browsing_data_button);
|
| mClearBrowsingDataButton.setOnClickListener(new OnClickListener() {
|
| @Override
|
| public void onClick(View v) {
|
| - mManager.openClearBrowsingDataPreference();
|
| + mHistoryManager.openClearBrowsingDataPreference();
|
| }
|
| });
|
| + mClearBrowsingDataButtonContainer = (FrameLayout) mClearBrowsingDataButton.getParent();
|
| + MarginResizer.createWithViewAdapter(mClearBrowsingDataButtonContainer,
|
| + mHistoryManager.getSelectableListLayout().getUiConfig(),
|
| + mHistoryManager.getDefaultLateralListItemMarginPx(), 0);
|
| + updateClearBrowsingDataButtonVisibility();
|
|
|
| mSignedInNotSyncedTextView = (TextView) v.findViewById(R.id.signed_in_not_synced);
|
| setPrivacyDisclaimerText(mSignedInNotSyncedTextView,
|
| R.string.android_history_no_synced_results, LEARN_MORE_LINK);
|
| + MarginResizer.createWithViewAdapter(mSignedInNotSyncedTextView,
|
| + mHistoryManager.getSelectableListLayout().getUiConfig(),
|
| + getDefaultTextMargin(resources), mHistoryManager.getListItemLateralShadowSizePx());
|
|
|
| mSignedInSyncedTextView = (TextView) v.findViewById(R.id.signed_in_synced);
|
| setPrivacyDisclaimerText(mSignedInSyncedTextView,
|
| R.string.android_history_has_synced_results, LEARN_MORE_LINK);
|
| + MarginResizer.createWithViewAdapter(mSignedInSyncedTextView,
|
| + mHistoryManager.getSelectableListLayout().getUiConfig(),
|
| + getDefaultTextMargin(resources), mHistoryManager.getListItemLateralShadowSizePx());
|
|
|
| mOtherFormsOfBrowsingHistoryTextView = (TextView) v.findViewById(
|
| R.id.other_forms_of_browsing_history);
|
| setPrivacyDisclaimerText(mOtherFormsOfBrowsingHistoryTextView,
|
| R.string.android_history_other_forms_of_history, GOOGLE_HISTORY_LINK);
|
| + MarginResizer.createWithViewAdapter(mOtherFormsOfBrowsingHistoryTextView,
|
| + mHistoryManager.getSelectableListLayout().getUiConfig(),
|
| + getDefaultTextMargin(resources), mHistoryManager.getListItemLateralShadowSizePx());
|
|
|
| setPrivacyDisclaimerVisibility();
|
|
|
| @@ -282,11 +310,21 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| R.layout.indeterminate_progress_view, parent, false));
|
| }
|
|
|
| + @Override
|
| + protected DateViewHolder createDateViewHolder(ViewGroup parent) {
|
| + DateViewHolder viewHolder = super.createDateViewHolder(parent);
|
| + MarginResizer.createWithViewAdapter(viewHolder.itemView,
|
| + mHistoryManager.getSelectableListLayout().getUiConfig(),
|
| + getDefaultTextMargin(parent.getResources()),
|
| + mHistoryManager.getListItemLateralShadowSizePx());
|
| + return viewHolder;
|
| + }
|
| +
|
| 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);
|
| + mHistoryManager.openUrl(url, null, true);
|
| }
|
| };
|
| SpannableString spannable = SpanApplier.applySpans(
|
| @@ -308,6 +346,20 @@ public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistor
|
| mHasOtherFormsOfBrowsingData ? View.VISIBLE : View.GONE);
|
| }
|
|
|
| + private void updateClearBrowsingDataButtonVisibility() {
|
| + mClearBrowsingDataButtonContainer.setVisibility(
|
| + !PrefServiceBridge.getInstance().canDeleteBrowsingHistory() ? View.GONE :
|
| + View.VISIBLE);
|
| + }
|
| +
|
| + private int getDefaultTextMargin(Resources resources) {
|
| + if (mDefaultTextMargin == 0) {
|
| + mDefaultTextMargin = resources.getDimensionPixelSize(
|
| + R.dimen.history_default_text_margin);
|
| + }
|
| + return mDefaultTextMargin;
|
| + }
|
| +
|
| @VisibleForTesting
|
| TextView getSignedInNotSyncedViewForTests() {
|
| return mSignedInNotSyncedTextView;
|
|
|