Index: chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsBottomSheetContent.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsBottomSheetContent.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsBottomSheetContent.java |
index bcdcf42e32e37569f22a36ae2aa07aad25f7aa28..dcc86b233372dabb16e8a11d2e2b1989a29ce42f 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsBottomSheetContent.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsBottomSheetContent.java |
@@ -33,8 +33,6 @@ |
import org.chromium.chrome.browser.widget.FadingShadowView; |
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet; |
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetContentController; |
-import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetObserver; |
-import org.chromium.chrome.browser.widget.bottomsheet.EmptyBottomSheetObserver; |
import org.chromium.chrome.browser.widget.displaystyle.UiConfig; |
import org.chromium.ui.widget.Toast; |
@@ -54,8 +52,7 @@ |
private final ContextMenuManager mContextMenuManager; |
private final SuggestionsUiDelegateImpl mSuggestionsUiDelegate; |
private final TileGroup.Delegate mTileGroupDelegate; |
- private final BottomSheet mBottomSheet; |
- private final BottomSheetObserver mBottomSheetObserver; |
+ private final SuggestionsSheetVisibilityChangeObserver mBottomSheetObserver; |
public SuggestionsBottomSheetContent(final ChromeActivity activity, final BottomSheet sheet, |
TabModelSelector tabModelSelector, SnackbarManager snackbarManager) { |
@@ -94,30 +91,41 @@ public void onDestroy() { |
mContextMenuManager, mTileGroupDelegate); |
mRecyclerView.init(uiConfig, mContextMenuManager, adapter); |
- mBottomSheetObserver = new EmptyBottomSheetObserver() { |
+ mBottomSheetObserver = new SuggestionsSheetVisibilityChangeObserver(this, activity) { |
@Override |
public void onSheetOpened() { |
mRecyclerView.scrollToPosition(0); |
- prepareSuggestionsForReveal(adapter); |
- |
+ adapter.refreshSuggestions(); |
+ mSuggestionsUiDelegate.getEventReporter().onSurfaceOpened(); |
mRecyclerView.getScrollEventReporter().reset(); |
if (ChromeFeatureList.isEnabled( |
ChromeFeatureList.CONTEXTUAL_SUGGESTIONS_CAROUSEL)) { |
- updateContextualSuggestions(mBottomSheet.getActiveTab().getUrl()); |
+ updateContextualSuggestions(sheet.getActiveTab().getUrl()); |
} |
+ |
+ super.onSheetOpened(); |
+ } |
+ |
+ @Override |
+ public void onContentShown() { |
+ SuggestionsMetrics.recordSurfaceVisible(); |
} |
@Override |
- public void onSheetClosed() { |
+ public void onContentHidden() { |
SuggestionsMetrics.recordSurfaceHidden(); |
} |
+ @Override |
+ public void onContentStateChanged(@BottomSheet.SheetState int contentState) { |
+ if (contentState == BottomSheet.SHEET_STATE_HALF) { |
+ SuggestionsMetrics.recordSurfaceHalfVisible(); |
+ } else if (contentState == BottomSheet.SHEET_STATE_FULL) { |
+ SuggestionsMetrics.recordSurfaceFullyVisible(); |
+ } |
+ } |
}; |
- mBottomSheet = activity.getBottomSheet(); |
- mBottomSheet.addObserver(mBottomSheetObserver); |
- |
- if (mBottomSheet.isSheetOpen()) prepareSuggestionsForReveal(adapter); |
mShadowView = (FadingShadowView) mView.findViewById(R.id.shadow); |
mShadowView.init( |
@@ -169,7 +177,7 @@ public int getVerticalScrollOffset() { |
@Override |
public void destroy() { |
- mBottomSheet.removeObserver(mBottomSheetObserver); |
+ mBottomSheetObserver.onDestroy(); |
mSuggestionsUiDelegate.onDestroy(); |
mTileGroupDelegate.destroy(); |
} |
@@ -179,13 +187,6 @@ public int getType() { |
return BottomSheetContentController.TYPE_SUGGESTIONS; |
} |
- /** Called when the UI is revlealed, prepares the list of suggestions. */ |
- private void prepareSuggestionsForReveal(NewTabPageAdapter adapter) { |
- adapter.refreshSuggestions(); |
- mSuggestionsUiDelegate.getEventReporter().onSurfaceOpened(); |
- SuggestionsMetrics.recordSurfaceVisible(); |
- } |
- |
private void updateContextualSuggestions(String url) { |
mSuggestionsUiDelegate.getSuggestionsSource().fetchContextualSuggestions( |
url, new Callback<List<SnippetArticle>>() { |