| Index: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
|
| index 863b012d1be8cde26ec5787d18f15f8b251396ec..36c32ed21e6d6e2e88dc60844266d888df398bc8 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java
|
| @@ -19,9 +19,11 @@ import android.support.v7.widget.RecyclerView.OnScrollListener;
|
| import android.support.v7.widget.Toolbar.OnMenuItemClickListener;
|
| import android.view.LayoutInflater;
|
| import android.view.MenuItem;
|
| +import android.view.View;
|
| import android.view.ViewGroup;
|
| import android.widget.TextView;
|
|
|
| +import org.chromium.base.ApiCompatibilityUtils;
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| import org.chromium.base.metrics.RecordUserAction;
|
| @@ -35,8 +37,10 @@ import org.chromium.chrome.browser.profiles.Profile;
|
| import org.chromium.chrome.browser.signin.SigninManager;
|
| import org.chromium.chrome.browser.signin.SigninManager.SignInStateObserver;
|
| import org.chromium.chrome.browser.util.IntentUtils;
|
| +import org.chromium.chrome.browser.widget.FadingShadowView;
|
| import org.chromium.chrome.browser.widget.selection.SelectableListLayout;
|
| import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
| +import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver;
|
| import org.chromium.ui.base.DeviceFormFactor;
|
|
|
| import java.util.List;
|
| @@ -44,7 +48,8 @@ import java.util.List;
|
| /**
|
| * Displays and manages the UI for browsing history.
|
| */
|
| -public class HistoryManager implements OnMenuItemClickListener, SignInStateObserver {
|
| +public class HistoryManager implements OnMenuItemClickListener, SignInStateObserver,
|
| + SelectionObserver<HistoryItem> {
|
| private static final int FAVICON_MAX_CACHE_SIZE_BYTES = 10 * 1024 * 1024; // 10MB
|
| private static final int MEGABYTES_TO_BYTES = 1024 * 1024;
|
| private static final String METRICS_PREFIX = "Android.HistoryPage.";
|
| @@ -57,6 +62,8 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
|
| private final SelectionDelegate<HistoryItem> mSelectionDelegate;
|
| private final HistoryManagerToolbar mToolbar;
|
| private final TextView mEmptyView;
|
| + private final FadingShadowView mToolbarShadow;
|
| + private final RecyclerView mRecyclerView;
|
| private LargeIconBridge mLargeIconBridge;
|
|
|
| private boolean mIsSearching;
|
| @@ -69,28 +76,39 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
|
| mActivity = activity;
|
|
|
| mSelectionDelegate = new SelectionDelegate<>();
|
| + mSelectionDelegate.addObserver(this);
|
| mHistoryAdapter = new HistoryAdapter(mSelectionDelegate, this,
|
| sProviderForTests != null ? sProviderForTests : new BrowsingHistoryBridge());
|
|
|
| mSelectableListLayout =
|
| (SelectableListLayout<HistoryItem>) LayoutInflater.from(activity).inflate(
|
| R.layout.history_main, null);
|
| - RecyclerView recyclerView = mSelectableListLayout.initializeRecyclerView(mHistoryAdapter);
|
| + mRecyclerView = mSelectableListLayout.initializeRecyclerView(mHistoryAdapter);
|
| +
|
| mToolbar = (HistoryManagerToolbar) mSelectableListLayout.initializeToolbar(
|
| R.layout.history_toolbar, mSelectionDelegate, R.string.menu_history, null,
|
| - R.id.normal_menu_group, R.id.selection_mode_menu_group, this);
|
| + R.id.normal_menu_group, R.id.selection_mode_menu_group,
|
| + R.color.default_primary_color, false, this);
|
| mToolbar.setManager(this);
|
| + mToolbarShadow = (FadingShadowView) mSelectableListLayout.findViewById(R.id.shadow);
|
| + mToolbarShadow.setVisibility(View.GONE);
|
| +
|
| mEmptyView = mSelectableListLayout.initializeEmptyView(
|
| VectorDrawableCompat.create(
|
| mActivity.getResources(), R.drawable.history_big,
|
| mActivity.getTheme()),
|
| R.string.history_manager_empty);
|
| + // TODO(twellington): remove this after unifying bookmarks and downloads UI with history.
|
| + mEmptyView.setTextColor(ApiCompatibilityUtils.getColor(mActivity.getResources(),
|
| + R.color.google_grey_500));
|
|
|
| mHistoryAdapter.initialize();
|
|
|
| - recyclerView.addOnScrollListener(new OnScrollListener() {
|
| + mRecyclerView.addOnScrollListener(new OnScrollListener() {
|
| @Override
|
| public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
|
| + setToolbarShadowVisibility();
|
| +
|
| if (!mHistoryAdapter.canLoadMoreItems()) return;
|
|
|
| // Load more items if the scroll position is close to the bottom of the list.
|
| @@ -140,6 +158,7 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
|
| return true;
|
| } else if (item.getItemId() == R.id.search_menu_id) {
|
| mToolbar.showSearchView();
|
| + mToolbarShadow.setVisibility(View.VISIBLE);
|
| mSelectableListLayout.setEmptyViewText(R.string.history_manager_no_results);
|
| recordUserAction("Search");
|
| mIsSearching = true;
|
| @@ -247,6 +266,7 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
|
| mHistoryAdapter.onEndSearch();
|
| mSelectableListLayout.setEmptyViewText(R.string.history_manager_empty);
|
| mIsSearching = false;
|
| + setToolbarShadowVisibility();
|
| }
|
|
|
| /**
|
| @@ -293,6 +313,11 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
|
| return mHistoryAdapter;
|
| }
|
|
|
| + @VisibleForTesting
|
| + View getToolbarShadowForTests() {
|
| + return mToolbarShadow;
|
| + }
|
| +
|
| /**
|
| * @param action The user action string to record.
|
| */
|
| @@ -329,4 +354,16 @@ public class HistoryManager implements OnMenuItemClickListener, SignInStateObser
|
| mToolbar.onSignInStateChange();
|
| mHistoryAdapter.onSignInStateChange();
|
| }
|
| +
|
| + @Override
|
| + public void onSelectionStateChange(List<HistoryItem> selectedItems) {
|
| + mHistoryAdapter.onSelectionStateChange(mSelectionDelegate.isSelectionEnabled());
|
| + setToolbarShadowVisibility();
|
| + }
|
| +
|
| + private void setToolbarShadowVisibility() {
|
| + boolean showShadow = mRecyclerView.computeVerticalScrollOffset() != 0
|
| + || mIsSearching || mSelectionDelegate.isSelectionEnabled();
|
| + mToolbarShadow.setVisibility(showShadow ? View.VISIBLE : View.GONE);
|
| + }
|
| }
|
|
|