Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2124)

Unified Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java

Issue 1206673003: Merge java_staging/src into java/src. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java
deleted file mode 100644
index 709d47ec4312c3e481525b822277cdb883e44820..0000000000000000000000000000000000000000
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.ntp;
-
-import android.app.Activity;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.os.SystemClock;
-import android.view.ContextMenu;
-import android.view.ContextMenu.ContextMenuInfo;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ExpandableListView;
-
-import org.chromium.base.ActivityState;
-import org.chromium.base.ApplicationStatus;
-import org.chromium.base.metrics.RecordHistogram;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.NativePage;
-import org.chromium.chrome.browser.UrlConstants;
-import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareThumbnailProvider;
-import org.chromium.chrome.browser.util.ViewUtils;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * The native recent tabs page. Lists recently closed tabs, open windows and tabs from the user's
- * synced devices, and snapshot documents sent from Chrome to Mobile in an expandable list view.
- */
-public class RecentTabsPage
- implements NativePage, ApplicationStatus.ActivityStateListener,
- ExpandableListView.OnChildClickListener,
- ExpandableListView.OnGroupCollapseListener,
- ExpandableListView.OnGroupExpandListener, RecentTabsManager.UpdatedCallback,
- View.OnAttachStateChangeListener, View.OnCreateContextMenuListener,
- InvalidationAwareThumbnailProvider {
- private final Activity mActivity;
- private final ExpandableListView mListView;
- private final String mTitle;
- private final ViewGroup mView;
-
- private RecentTabsManager mRecentTabsManager;
- private RecentTabsRowAdapter mAdapter;
-
- private boolean mSnapshotContentChanged;
- private int mSnapshotListPosition;
- private int mSnapshotListTop;
- private int mSnapshotWidth;
- private int mSnapshotHeight;
-
- /**
- * Whether the page is in the foreground and is visible.
- */
- private boolean mInForeground;
-
- /**
- * Whether {@link #mView} is attached to the application window.
- */
- private boolean mIsAttachedToWindow;
-
- /**
- * The time, whichever is most recent, that the page:
- * - Moved to the foreground
- * - Became visible
- */
- private long mForegroundTimeMs;
-
- /**
- * Constructor returns an instance of RecentTabsPage.
- *
- * @param activity The activity this view belongs to.
- * @param recentTabsManager The RecentTabsManager which provides the model data.
- */
- public RecentTabsPage(Activity activity, RecentTabsManager recentTabsManager) {
- mActivity = activity;
- mRecentTabsManager = recentTabsManager;
-
- mTitle = activity.getResources().getString(R.string.recent_tabs);
- mRecentTabsManager.setUpdatedCallback(this);
- LayoutInflater inflater = LayoutInflater.from(activity);
- mView = (ViewGroup) inflater.inflate(R.layout.recent_tabs_page, null);
- mListView = (ExpandableListView) mView.findViewById(R.id.odp_listview);
- mAdapter = buildAdapter(activity, recentTabsManager);
- mListView.setAdapter(mAdapter);
- mListView.setOnChildClickListener(this);
- mListView.setGroupIndicator(null);
- mListView.setOnGroupCollapseListener(this);
- mListView.setOnGroupExpandListener(this);
- mListView.setOnCreateContextMenuListener(this);
-
- mView.addOnAttachStateChangeListener(this);
- ApplicationStatus.registerStateListenerForActivity(this, activity);
- // {@link #mInForeground} will be updated once the view is attached to the window.
-
- onUpdated();
- }
-
- private static RecentTabsRowAdapter buildAdapter(Activity activity,
- RecentTabsManager recentTabsManager) {
- return new RecentTabsRowAdapter(activity, recentTabsManager);
- }
-
- /**
- * Updates whether the page is in the foreground based on whether the application is in the
- * foreground and whether {@link #mView} is attached to the application window. If the page is
- * no longer in the foreground, records the time that the page spent in the foreground to UMA.
- */
- private void updateForegroundState() {
- boolean inForeground = mIsAttachedToWindow
- && ApplicationStatus.getStateForActivity(mActivity) == ActivityState.RESUMED;
- if (mInForeground == inForeground) {
- return;
- }
-
- mInForeground = inForeground;
- if (mInForeground) {
- mForegroundTimeMs = SystemClock.elapsedRealtime();
- } else {
- RecordHistogram.recordTimesHistogram("NewTabPage.RecentTabsPage.TimeVisibleAndroid",
- SystemClock.elapsedRealtime() - mForegroundTimeMs, TimeUnit.MILLISECONDS);
- }
- }
-
- // NativePage overrides
-
- @Override
- public String getUrl() {
- return UrlConstants.RECENT_TABS_URL;
- }
-
- @Override
- public String getTitle() {
- return mTitle;
- }
-
- @Override
- public int getBackgroundColor() {
- return Color.WHITE;
- }
-
- @Override
- public View getView() {
- return mView;
- }
-
- @Override
- public String getHost() {
- return UrlConstants.RECENT_TABS_HOST;
- }
-
- @Override
- public void destroy() {
- assert getView().getParent() == null : "Destroy called before removed from window";
- mRecentTabsManager.destroy();
- mRecentTabsManager = null;
- mAdapter.notifyDataSetInvalidated();
- mAdapter = null;
- mListView.setAdapter((RecentTabsRowAdapter) null);
-
- mView.removeOnAttachStateChangeListener(this);
- ApplicationStatus.unregisterActivityStateListener(this);
- }
-
- @Override
- public void updateForUrl(String url) {
- }
-
- // ApplicationStatus.ActivityStateListener
- @Override
- public void onActivityStateChange(Activity activity, int state) {
- // Called when the user locks the screen or moves Chrome to the background via the task
- // switcher.
- updateForegroundState();
- }
-
- // View.OnAttachStateChangeListener
- @Override
- public void onViewAttachedToWindow(View view) {
- // Called when the user opens the RecentTabsPage or switches back to the RecentTabsPage from
- // another tab.
- mIsAttachedToWindow = true;
- updateForegroundState();
- }
-
- @Override
- public void onViewDetachedFromWindow(View view) {
- // Called when the user navigates from the RecentTabsPage or switches to another tab.
- mIsAttachedToWindow = false;
- updateForegroundState();
- }
-
- // ExpandableListView.OnChildClickedListener
- @Override
- public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
- int childPosition, long id) {
- return mAdapter.getGroup(groupPosition).onChildClick(childPosition);
- }
-
- // ExpandableListView.OnGroupExpandedListener
- @Override
- public void onGroupExpand(int groupPosition) {
- mAdapter.getGroup(groupPosition).setCollapsed(false);
- mSnapshotContentChanged = true;
- }
-
- // ExpandableListView.OnGroupCollapsedListener
- @Override
- public void onGroupCollapse(int groupPosition) {
- mAdapter.getGroup(groupPosition).setCollapsed(true);
- mSnapshotContentChanged = true;
- }
-
- // RecentTabsManager.UpdatedCallback
- @Override
- public void onUpdated() {
- mAdapter.notifyDataSetChanged();
- for (int i = 0; i < mAdapter.getGroupCount(); i++) {
- if (mAdapter.getGroup(i).isCollapsed()) {
- mListView.collapseGroup(i);
- } else {
- mListView.expandGroup(i);
- }
- }
- mSnapshotContentChanged = true;
- }
-
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
- // Would prefer to have this context menu view managed internal to RecentTabsGroupView
- // Unfortunately, setting either onCreateContextMenuListener or onLongClickListener
- // disables the native onClick (expand/collapse) behaviour of the group view.
- ExpandableListView.ExpandableListContextMenuInfo info =
- (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;
-
- int type = ExpandableListView.getPackedPositionType(info.packedPosition);
- int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition);
-
- if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
- mAdapter.getGroup(groupPosition).onCreateContextMenuForGroup(menu, mActivity);
- } else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
- int childPosition = ExpandableListView.getPackedPositionChild(info.packedPosition);
- mAdapter.getGroup(groupPosition).onCreateContextMenuForChild(childPosition, menu,
- mActivity);
- }
- }
-
- // InvalidationAwareThumbnailProvider
-
- @Override
- public boolean shouldCaptureThumbnail() {
- if (mView.getWidth() == 0 || mView.getHeight() == 0) return false;
-
- View topItem = mListView.getChildAt(0);
- return mSnapshotContentChanged
- || mSnapshotListPosition != mListView.getFirstVisiblePosition()
- || mSnapshotListTop != (topItem == null ? 0 : topItem.getTop())
- || mView.getWidth() != mSnapshotWidth
- || mView.getHeight() != mSnapshotHeight;
- }
-
- @Override
- public void captureThumbnail(Canvas canvas) {
- ViewUtils.captureBitmap(mView, canvas);
- mSnapshotContentChanged = false;
- mSnapshotListPosition = mListView.getFirstVisiblePosition();
- View topItem = mListView.getChildAt(0);
- mSnapshotListTop = topItem == null ? 0 : topItem.getTop();
- mSnapshotWidth = mView.getWidth();
- mSnapshotHeight = mView.getHeight();
- }
-}

Powered by Google App Engine
This is Rietveld 408576698