Commit 7b8b4248 authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Remove TabModelSelectorUma, which is mostly dead code

Inline action "MobileTabSwitched". All other code is to record
"Tab.RestoreUserPersistence", which is obsolete.

Bug: 1138653
Change-Id: I86b0701713a541d2d448cfb602b86c9b043ee632
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2476958Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#821389}
parent 85c2a515
...@@ -1533,7 +1533,6 @@ chrome_java_sources = [ ...@@ -1533,7 +1533,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java", "java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java",
"java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java", "java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java",
"java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier.java", "java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorProfileSupplier.java",
"java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorUma.java",
"java/src/org/chromium/chrome/browser/tabmodel/TabPersistencePolicy.java", "java/src/org/chromium/chrome/browser/tabmodel/TabPersistencePolicy.java",
"java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java", "java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java",
"java/src/org/chromium/chrome/browser/tabmodel/TabPersister.java", "java/src/org/chromium/chrome/browser/tabmodel/TabPersister.java",
......
...@@ -22,7 +22,6 @@ import org.chromium.ui.base.WindowAndroid; ...@@ -22,7 +22,6 @@ import org.chromium.ui.base.WindowAndroid;
class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate { class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate {
private final TabCreator mRegularTabCreator; private final TabCreator mRegularTabCreator;
private final TabCreator mIncognitoTabCreator; private final TabCreator mIncognitoTabCreator;
private final TabModelSelectorUma mUma;
private final TabModelOrderController mOrderController; private final TabModelOrderController mOrderController;
private final TabContentManager mTabContentManager; private final TabContentManager mTabContentManager;
private final TabPersistentStore mTabSaver; private final TabPersistentStore mTabSaver;
...@@ -45,7 +44,6 @@ class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate { ...@@ -45,7 +44,6 @@ class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate {
* @param windowAndroidSupplier The supplier to the {@link WindowAndroid} instance. * @param windowAndroidSupplier The supplier to the {@link WindowAndroid} instance.
* @param regularTabCreator Creates regular tabs. * @param regularTabCreator Creates regular tabs.
* @param incognitoTabCreator Creates incognito tabs. * @param incognitoTabCreator Creates incognito tabs.
* @param uma Handles UMA tracking for the model.
* @param orderController Determines the order for inserting new Tabs. * @param orderController Determines the order for inserting new Tabs.
* @param tabContentManager Manages the display content of the tab. * @param tabContentManager Manages the display content of the tab.
* @param tabSaver Handler for saving tabs. * @param tabSaver Handler for saving tabs.
...@@ -54,14 +52,13 @@ class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate { ...@@ -54,14 +52,13 @@ class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate {
* @param modelDelegate Delegate to handle external dependencies and interactions. * @param modelDelegate Delegate to handle external dependencies and interactions.
*/ */
public IncognitoTabModelImplCreator(@Nullable Supplier<WindowAndroid> windowAndroidSupplier, public IncognitoTabModelImplCreator(@Nullable Supplier<WindowAndroid> windowAndroidSupplier,
TabCreator regularTabCreator, TabCreator incognitoTabCreator, TabModelSelectorUma uma, TabCreator regularTabCreator, TabCreator incognitoTabCreator,
TabModelOrderController orderController, TabContentManager tabContentManager, TabModelOrderController orderController, TabContentManager tabContentManager,
TabPersistentStore tabSaver, NextTabPolicySupplier nextTabPolicySupplier, TabPersistentStore tabSaver, NextTabPolicySupplier nextTabPolicySupplier,
AsyncTabParamsManager asyncTabParamsManager, TabModelDelegate modelDelegate) { AsyncTabParamsManager asyncTabParamsManager, TabModelDelegate modelDelegate) {
mWindowAndroidSupplier = windowAndroidSupplier; mWindowAndroidSupplier = windowAndroidSupplier;
mRegularTabCreator = regularTabCreator; mRegularTabCreator = regularTabCreator;
mIncognitoTabCreator = incognitoTabCreator; mIncognitoTabCreator = incognitoTabCreator;
mUma = uma;
mOrderController = orderController; mOrderController = orderController;
mTabContentManager = tabContentManager; mTabContentManager = tabContentManager;
mTabSaver = tabSaver; mTabSaver = tabSaver;
...@@ -91,7 +88,7 @@ class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate { ...@@ -91,7 +88,7 @@ class IncognitoTabModelImplCreator implements IncognitoTabModelDelegate {
@Override @Override
public TabModel createTabModel() { public TabModel createTabModel() {
Profile otrProfile = getOTRProfile(); Profile otrProfile = getOTRProfile();
return new TabModelImpl(otrProfile, false, mRegularTabCreator, mIncognitoTabCreator, mUma, return new TabModelImpl(otrProfile, false, mRegularTabCreator, mIncognitoTabCreator,
mOrderController, mTabContentManager, mTabSaver, mNextTabPolicySupplier, mOrderController, mTabContentManager, mTabSaver, mNextTabPolicySupplier,
mAsyncTabParamsManager, mModelDelegate, false); mAsyncTabParamsManager, mModelDelegate, false);
} }
......
...@@ -10,6 +10,7 @@ import androidx.annotation.Nullable; ...@@ -10,6 +10,7 @@ import androidx.annotation.Nullable;
import org.chromium.base.MathUtils; import org.chromium.base.MathUtils;
import org.chromium.base.ObserverList; import org.chromium.base.ObserverList;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.homepage.HomepageManager;
...@@ -55,7 +56,6 @@ public class TabModelImpl extends TabModelJniBridge { ...@@ -55,7 +56,6 @@ public class TabModelImpl extends TabModelJniBridge {
private final TabCreator mRegularTabCreator; private final TabCreator mRegularTabCreator;
private final TabCreator mIncognitoTabCreator; private final TabCreator mIncognitoTabCreator;
private final TabModelSelectorUma mUma;
private final TabModelOrderController mOrderController; private final TabModelOrderController mOrderController;
private final TabContentManager mTabContentManager; private final TabContentManager mTabContentManager;
private final TabPersistentStore mTabSaver; private final TabPersistentStore mTabSaver;
...@@ -86,7 +86,7 @@ public class TabModelImpl extends TabModelJniBridge { ...@@ -86,7 +86,7 @@ public class TabModelImpl extends TabModelJniBridge {
private boolean mIsUndoSupported = true; private boolean mIsUndoSupported = true;
public TabModelImpl(@NonNull Profile profile, boolean isTabbedActivity, public TabModelImpl(@NonNull Profile profile, boolean isTabbedActivity,
TabCreator regularTabCreator, TabCreator incognitoTabCreator, TabModelSelectorUma uma, TabCreator regularTabCreator, TabCreator incognitoTabCreator,
TabModelOrderController orderController, TabContentManager tabContentManager, TabModelOrderController orderController, TabContentManager tabContentManager,
TabPersistentStore tabSaver, NextTabPolicySupplier nextTabPolicySupplier, TabPersistentStore tabSaver, NextTabPolicySupplier nextTabPolicySupplier,
AsyncTabParamsManager asyncTabParamsManager, TabModelDelegate modelDelegate, AsyncTabParamsManager asyncTabParamsManager, TabModelDelegate modelDelegate,
...@@ -94,7 +94,6 @@ public class TabModelImpl extends TabModelJniBridge { ...@@ -94,7 +94,6 @@ public class TabModelImpl extends TabModelJniBridge {
super(profile, isTabbedActivity); super(profile, isTabbedActivity);
mRegularTabCreator = regularTabCreator; mRegularTabCreator = regularTabCreator;
mIncognitoTabCreator = incognitoTabCreator; mIncognitoTabCreator = incognitoTabCreator;
mUma = uma;
mOrderController = orderController; mOrderController = orderController;
mTabContentManager = tabContentManager; mTabContentManager = tabContentManager;
mTabSaver = tabSaver; mTabSaver = tabSaver;
...@@ -564,9 +563,9 @@ public class TabModelImpl extends TabModelJniBridge { ...@@ -564,9 +563,9 @@ public class TabModelImpl extends TabModelJniBridge {
for (TabModelObserver obs : mObservers) obs.didSelectTab(tab, type, lastId); for (TabModelObserver obs : mObservers) obs.didSelectTab(tab, type, lastId);
boolean wasAlreadySelected = tab.getId() == lastId; boolean wasAlreadySelected = tab.getId() == lastId;
if (!wasAlreadySelected && type == TabSelectionType.FROM_USER && mUma != null) { if (!wasAlreadySelected && type == TabSelectionType.FROM_USER) {
// We only want to record when the user actively switches to a different tab. // We only want to record when the user actively switches to a different tab.
mUma.userSwitchedToTab(); RecordUserAction.record("MobileTabSwitched");
} }
} }
} finally { } finally {
......
...@@ -54,8 +54,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ...@@ -54,8 +54,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
private Tab mVisibleTab; private Tab mVisibleTab;
private final TabModelSelectorUma mUma;
private CloseAllTabsDelegate mCloseAllTabsDelegate; private CloseAllTabsDelegate mCloseAllTabsDelegate;
private final Supplier<WindowAndroid> mWindowAndroidSupplier; private final Supplier<WindowAndroid> mWindowAndroidSupplier;
...@@ -81,7 +79,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ...@@ -81,7 +79,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
boolean isTabbedActivity, boolean startIncognito) { boolean isTabbedActivity, boolean startIncognito) {
super(tabCreatorManager, tabModelFilterFactory, startIncognito); super(tabCreatorManager, tabModelFilterFactory, startIncognito);
mWindowAndroidSupplier = windowAndroidSupplier; mWindowAndroidSupplier = windowAndroidSupplier;
mUma = new TabModelSelectorUma(activity);
final TabPersistentStoreObserver persistentStoreObserver = final TabPersistentStoreObserver persistentStoreObserver =
new TabPersistentStoreObserver() { new TabPersistentStoreObserver() {
@Override @Override
...@@ -122,7 +119,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ...@@ -122,7 +119,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
* Should be called when the app starts showing a view with multiple tabs. * Should be called when the app starts showing a view with multiple tabs.
*/ */
public void onTabsViewShown() { public void onTabsViewShown() {
mUma.onTabsViewShown();
} }
/** /**
...@@ -138,14 +134,14 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ...@@ -138,14 +134,14 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
ChromeTabCreator incognitoTabCreator = ChromeTabCreator incognitoTabCreator =
(ChromeTabCreator) getTabCreatorManager().getTabCreator(true); (ChromeTabCreator) getTabCreatorManager().getTabCreator(true);
TabModelImpl normalModel = new TabModelImpl(Profile.getLastUsedRegularProfile(), TabModelImpl normalModel = new TabModelImpl(Profile.getLastUsedRegularProfile(),
mIsTabbedActivityForSync, regularTabCreator, incognitoTabCreator, mUma, mIsTabbedActivityForSync, regularTabCreator, incognitoTabCreator, mOrderController,
mOrderController, mTabContentManager, mTabSaver, mNextTabPolicySupplier, mTabContentManager, mTabSaver, mNextTabPolicySupplier, mAsyncTabParamsManager, this,
mAsyncTabParamsManager, this, mIsUndoSupported); mIsUndoSupported);
regularTabCreator.setTabModel(normalModel, mOrderController); regularTabCreator.setTabModel(normalModel, mOrderController);
IncognitoTabModel incognitoModel = new IncognitoTabModelImpl( IncognitoTabModel incognitoModel = new IncognitoTabModelImpl(
new IncognitoTabModelImplCreator(mWindowAndroidSupplier, regularTabCreator, new IncognitoTabModelImplCreator(mWindowAndroidSupplier, regularTabCreator,
incognitoTabCreator, mUma, mOrderController, mTabContentManager, mTabSaver, incognitoTabCreator, mOrderController, mTabContentManager, mTabSaver,
mNextTabPolicySupplier, mAsyncTabParamsManager, this)); mNextTabPolicySupplier, mAsyncTabParamsManager, this));
incognitoTabCreator.setTabModel(incognitoModel, mOrderController); incognitoTabCreator.setTabModel(incognitoModel, mOrderController);
onNativeLibraryReadyInternal(tabContentProvider, normalModel, incognitoModel); onNativeLibraryReadyInternal(tabContentProvider, normalModel, incognitoModel);
...@@ -194,18 +190,18 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ...@@ -194,18 +190,18 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
@Override @Override
public void onPageLoadFinished(Tab tab, String url) { public void onPageLoadFinished(Tab tab, String url) {
mUma.onPageLoadFinished(tab.getId()); tab.getId();
} }
@Override @Override
public void onPageLoadFailed(Tab tab, int errorCode) { public void onPageLoadFailed(Tab tab, int errorCode) {
mUma.onPageLoadFailed(tab.getId()); tab.getId();
} }
@Override @Override
public void onCrash(Tab tab) { public void onCrash(Tab tab) {
if (SadTab.isShowing(tab)) mTabContentManager.removeTabThumbnail(tab.getId()); if (SadTab.isShowing(tab)) mTabContentManager.removeTabThumbnail(tab.getId());
mUma.onTabCrashed(tab.getId()); tab.getId();
} }
@Override @Override
...@@ -345,7 +341,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ...@@ -345,7 +341,6 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
@Override @Override
public void destroy() { public void destroy() {
mTabSaver.destroy(); mTabSaver.destroy();
mUma.destroy();
super.destroy(); super.destroy();
} }
...@@ -400,7 +395,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ...@@ -400,7 +395,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod
// http://crbug.com/316166. // http://crbug.com/316166.
if (type != TabSelectionType.FROM_EXIT) { if (type != TabSelectionType.FROM_EXIT) {
tab.show(type); tab.show(type);
mUma.onShowTab(tab.getId(), tab.isBeingRestored()); tab.getId();
tab.isBeingRestored();
} }
} }
......
// 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.tabmodel;
import android.app.Activity;
import android.os.SystemClock;
import org.chromium.base.ActivityState;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.RecordUserAction;
/**
* Centralizes UMA data collection for TabModelSelector. All calls must be made from the UI thread.
*/
public final class TabModelSelectorUma implements ApplicationStatus.ActivityStateListener {
// TabRestoreUserAction defined in tools/metrics/histograms/histograms.xml.
private static final int USER_WAITED_FOR_RESTORE_COMPLETION = 0;
private static final int USER_LEFT_TAB_DURING_RESTORE = 1;
private static final int USER_LEFT_CHROME_DURING_RESTORE = 2;
private static final int USER_ACTION_DURING_RESTORE_MAX = 3;
// Id of the active tab being restored. Equals -1 when the active tab is not being restored.
private int mRestoredTabId = -1;
// Timestamp of the beginning of the most recent tab restore.
private long mRestoreStartedAtMsec = -1;
TabModelSelectorUma(Activity activity) {
ApplicationStatus.registerStateListenerForActivity(this, activity);
}
/**
* Cleans up any external dependencies of this class.
*/
public void destroy() {
ApplicationStatus.unregisterActivityStateListener(this);
}
@Override
public void onActivityStateChange(Activity activity, int newState) {
if (newState != ActivityState.STOPPED) return;
if (mRestoredTabId != -1) {
recordUserActionDuringTabRestore(USER_LEFT_CHROME_DURING_RESTORE);
mRestoredTabId = -1;
}
}
void userSwitchedToTab() {
RecordUserAction.record("MobileTabSwitched");
}
void onShowTab(int tabId, boolean isBeingRestored) {
if (mRestoredTabId != -1 && tabId != mRestoredTabId) {
recordUserActionDuringTabRestore(USER_LEFT_TAB_DURING_RESTORE);
mRestoredTabId = -1;
}
if (isBeingRestored) {
mRestoredTabId = tabId;
mRestoreStartedAtMsec = nowMsec();
}
}
void onTabClosing(int tabId) {
if (mRestoredTabId != -1 && tabId == mRestoredTabId) {
recordUserActionDuringTabRestore(USER_LEFT_TAB_DURING_RESTORE);
mRestoredTabId = -1;
}
}
void onTabCrashed(int tabId) {
if (mRestoredTabId != -1 && tabId == mRestoredTabId) {
mRestoredTabId = -1;
}
}
void onPageLoadFinished(int tabId) {
if (mRestoredTabId != -1 && tabId == mRestoredTabId) {
recordUserActionDuringTabRestore(USER_WAITED_FOR_RESTORE_COMPLETION);
mRestoredTabId = -1;
}
}
void onPageLoadFailed(int tabId) {
if (mRestoredTabId != -1 && tabId == mRestoredTabId) {
assert mRestoreStartedAtMsec != -1;
// If the pageload fails very quickly we cannot argue that the user "waited for
// completion".
if (nowMsec() - mRestoreStartedAtMsec >= 5000) {
recordUserActionDuringTabRestore(USER_WAITED_FOR_RESTORE_COMPLETION);
}
mRestoredTabId = -1;
}
}
void onTabsViewShown() {
if (mRestoredTabId != -1) {
recordUserActionDuringTabRestore(USER_LEFT_TAB_DURING_RESTORE);
mRestoredTabId = -1;
}
}
private static long nowMsec() {
return SystemClock.elapsedRealtime();
}
/**
* Logs action to a UMA histogram.
*/
private void recordUserActionDuringTabRestore(int action) {
assert action >= 0 && action < USER_ACTION_DURING_RESTORE_MAX;
RecordHistogram.recordEnumeratedHistogram(
"Tab.RestoreUserPersistence", action, USER_ACTION_DURING_RESTORE_MAX);
}
}
...@@ -141,7 +141,7 @@ public class TabModelSelectorObserverTestRule extends ChromeBrowserTestRule { ...@@ -141,7 +141,7 @@ public class TabModelSelectorObserverTestRule extends ChromeBrowserTestRule {
TabModelOrderController orderController, TabContentManager tabContentManager, TabModelOrderController orderController, TabContentManager tabContentManager,
TabPersistentStore tabPersistentStore, NextTabPolicySupplier nextTabPolicySupplier, TabPersistentStore tabPersistentStore, NextTabPolicySupplier nextTabPolicySupplier,
AsyncTabParamsManager asyncTabParamsManager, TabModelDelegate modelDelegate) { AsyncTabParamsManager asyncTabParamsManager, TabModelDelegate modelDelegate) {
super(profile, false, null, null, null, orderController, tabContentManager, super(profile, false, null, null, orderController, tabContentManager,
tabPersistentStore, nextTabPolicySupplier, asyncTabParamsManager, modelDelegate, tabPersistentStore, nextTabPolicySupplier, asyncTabParamsManager, modelDelegate,
false); false);
} }
......
...@@ -120,20 +120,19 @@ public class TabPersistentStoreTest { ...@@ -120,20 +120,19 @@ public class TabPersistentStoreTest {
public TabModelImpl call() { public TabModelImpl call() {
return new TabModelImpl(Profile.getLastUsedRegularProfile(), false, return new TabModelImpl(Profile.getLastUsedRegularProfile(), false,
getTabCreatorManager().getTabCreator(false), getTabCreatorManager().getTabCreator(false),
getTabCreatorManager().getTabCreator(true), null, getTabCreatorManager().getTabCreator(true), mTabModelOrderController,
mTabModelOrderController, null, mTabPersistentStore, null, mTabPersistentStore, nextTabPolicySupplier,
nextTabPolicySupplier, AsyncTabParamsManagerSingleton.getInstance(), AsyncTabParamsManagerSingleton.getInstance(), TestTabModelSelector.this,
TestTabModelSelector.this, true); true);
} }
}; };
TabModelImpl regularTabModel = TestThreadUtils.runOnUiThreadBlocking(callable); TabModelImpl regularTabModel = TestThreadUtils.runOnUiThreadBlocking(callable);
IncognitoTabModel incognitoTabModel = IncognitoTabModel incognitoTabModel =
new IncognitoTabModelImpl(new IncognitoTabModelImplCreator(null, new IncognitoTabModelImpl(new IncognitoTabModelImplCreator(null,
getTabCreatorManager().getTabCreator(false), getTabCreatorManager().getTabCreator(false),
getTabCreatorManager().getTabCreator(true), null, getTabCreatorManager().getTabCreator(true), mTabModelOrderController,
mTabModelOrderController, null, mTabPersistentStore, null, mTabPersistentStore, nextTabPolicySupplier,
nextTabPolicySupplier, AsyncTabParamsManagerSingleton.getInstance(), AsyncTabParamsManagerSingleton.getInstance(), this));
this));
initialize(regularTabModel, incognitoTabModel); initialize(regularTabModel, incognitoTabModel);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment