blob: 9b29dc798cc07cb92188f81f3f61d647bcafaf1b [file] [log] [blame]
// Copyright 2020 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.feed.v2;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.content_public.browser.test.util.TestThreadUtils;
import java.util.HashMap;
import java.util.Map;
class FeedV2TestHelper {
private FeedV2TestHelper() {}
private static Map<String, Integer> getEnumHistogramValues(
String histogramName, Map<String, Integer> enumNames) {
HashMap<String, Integer> counts = new HashMap<>();
TestThreadUtils.runOnUiThreadBlocking(() -> {
for (Map.Entry<String, Integer> entry : enumNames.entrySet()) {
int count = RecordHistogram.getHistogramValueCountForTesting(
histogramName, entry.getValue());
if (count > 0) {
counts.put(entry.getKey(), count);
}
}
});
return counts;
}
public static Map<String, Integer> getFeedUserActionsHistogramValues() {
// Histogram enum values from components/feed/core/v2/metrics_reporter.h.
HashMap<String, Integer> enumNames = new HashMap<>();
enumNames.put("kTappedOnCard", 0);
enumNames.put("kShownCard", 1);
enumNames.put("kTappedSendFeedback", 2);
enumNames.put("kTappedLearnMore", 3);
enumNames.put("kTappedHideStory", 4);
enumNames.put("kTappedNotInterestedIn", 5);
enumNames.put("kTappedManageInterests", 6);
enumNames.put("kTappedDownload", 7);
enumNames.put("kTappedOpenInNewTab", 8);
enumNames.put("kOpenedContextMenu", 9);
enumNames.put("kOpenedFeedSurface", 10);
enumNames.put("kTappedOpenInNewIncognitoTab", 11);
enumNames.put("kEphemeralChange", 12);
enumNames.put("kEphemeralChangeRejected", 13);
enumNames.put("kTappedTurnOn", 14);
enumNames.put("kTappedTurnOff", 15);
enumNames.put("kTappedManageActivity", 16);
enumNames.put("kAddedToReadLater", 17);
enumNames.put("kClosedContextMenu", 18);
enumNames.put("kEphemeralChangeCommited", 19);
enumNames.put("kOpenedDialog", 20);
enumNames.put("kClosedDialog", 21);
enumNames.put("kShowSnackbar", 22);
enumNames.put("kOpenedNativeContextMenu", 23);
return getEnumHistogramValues("ContentSuggestions.Feed.UserActions", enumNames);
}
public static Map<String, Integer> getUploadActionsStatusValues() {
// Histogram enum values from UploadActionsStatus in components/feed/core/v2/enums.h.
HashMap<String, Integer> enumNames = new HashMap<>();
enumNames.put("kNoStatus", 0);
enumNames.put("kNoPendingActions", 1);
enumNames.put("kFailedToStorePendingAction", 2);
enumNames.put("kStoredPendingAction", 3);
enumNames.put("kUpdatedConsistencyToken", 4);
enumNames.put("kFinishedWithoutUpdatingConsistencyToken", 5);
enumNames.put("kAbortUploadForSignedOutUser", 6);
enumNames.put("kAbortUploadBecauseDisabled", 7);
return getEnumHistogramValues("ContentSuggestions.Feed.UploadActionsStatus", enumNames);
}
public static Map<String, Integer> getLoadStreamStatusInitialValues() {
return getEnumHistogramValues(
"ContentSuggestions.Feed.LoadStreamStatus.Initial", loadStreamEnums());
}
private static HashMap<String, Integer> loadStreamEnums() {
HashMap<String, Integer> enumNames = new HashMap<>();
enumNames.put("kNoStatus", 0);
enumNames.put("kLoadedFromStore", 1);
enumNames.put("kLoadedFromNetwork", 2);
enumNames.put("kFailedWithStoreError", 3);
enumNames.put("kNoStreamDataInStore", 4);
enumNames.put("kModelAlreadyLoaded", 5);
enumNames.put("kNoResponseBody", 6);
enumNames.put("kProtoTranslationFailed", 7);
enumNames.put("kDataInStoreIsStale", 8);
enumNames.put("kDataInStoreIsStaleTimestampInFuture", 9);
enumNames.put("kCannotLoadFromNetworkSupressedForHistoryDelete_DEPRECATED", 10);
enumNames.put("kCannotLoadFromNetworkOffline", 11);
enumNames.put("kCannotLoadFromNetworkThrottled", 12);
enumNames.put("kLoadNotAllowedEulaNotAccepted", 13);
enumNames.put("kLoadNotAllowedArticlesListHidden", 14);
enumNames.put("kCannotParseNetworkResponseBody", 15);
enumNames.put("kLoadMoreModelIsNotLoaded", 16);
enumNames.put("kLoadNotAllowedDisabledByEnterprisePolicy", 17);
enumNames.put("kNetworkFetchFailed", 18);
enumNames.put("kCannotLoadMoreNoNextPageToken", 19);
enumNames.put("kDataInStoreStaleMissedLastRefresh", 20);
enumNames.put("kLoadedStaleDataFromStoreDueToNetworkFailure", 21);
enumNames.put("kDataInStoreIsExpired", 22);
return enumNames;
}
}