Commit d2b90c75 authored by Min Qin's avatar Min Qin Committed by Commit Bot

Fix an issue that new download backend don't report background download UMA correctly

This CL makes DownloadManagerService to report the UMAs when new
download backend expriment are turned on

BUG=989970

Change-Id: Iff088709dc2ca373139f8e2e3e7858ea3cae6254
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1730952Reviewed-by: default avatarShakti Sahu <shaktisahu@chromium.org>
Commit-Queue: Min Qin <qinmin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683320}
parent 33a1db0f
......@@ -39,6 +39,7 @@ import org.chromium.chrome.browser.download.DownloadManagerBridge.DownloadEnqueu
import org.chromium.chrome.browser.download.DownloadMetrics.DownloadOpenSource;
import org.chromium.chrome.browser.download.DownloadNotificationUmaHelper.UmaBackgroundDownload;
import org.chromium.chrome.browser.download.DownloadNotificationUmaHelper.UmaDownloadResumption;
import org.chromium.chrome.browser.download.items.OfflineContentAggregatorFactory;
import org.chromium.chrome.browser.download.ui.BackendProvider;
import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl;
import org.chromium.chrome.browser.feature_engagement.TrackerFactory;
......@@ -54,7 +55,11 @@ import org.chromium.components.feature_engagement.Tracker;
import org.chromium.components.offline_items_collection.ContentId;
import org.chromium.components.offline_items_collection.FailState;
import org.chromium.components.offline_items_collection.LegacyHelpers;
import org.chromium.components.offline_items_collection.OfflineContentProvider;
import org.chromium.components.offline_items_collection.OfflineItem;
import org.chromium.components.offline_items_collection.OfflineItemState;
import org.chromium.components.offline_items_collection.PendingState;
import org.chromium.components.offline_items_collection.UpdateDelta;
import org.chromium.content_public.browser.BrowserStartupController;
import org.chromium.net.ConnectionType;
import org.chromium.net.NetworkChangeNotifierAutoDetect;
......@@ -226,6 +231,44 @@ public class DownloadManagerService
}
}
private class BackgroundDownloadUmaRecorder implements OfflineContentProvider.Observer {
BackgroundDownloadUmaRecorder() {
OfflineContentAggregatorFactory.get().addObserver(this);
}
@Override
public void onItemUpdated(OfflineItem item, UpdateDelta updateDelta) {
if (!LegacyHelpers.isLegacyDownload(item.id)) return;
switch (item.state) {
case OfflineItemState.COMPLETE:
maybeRecordBackgroundDownload(UmaBackgroundDownload.COMPLETED, item.id.id);
break;
case OfflineItemState.CANCELLED:
maybeRecordBackgroundDownload(UmaBackgroundDownload.CANCELLED, item.id.id);
break;
case OfflineItemState.INTERRUPTED:
maybeRecordBackgroundDownload(UmaBackgroundDownload.INTERRUPTED, item.id.id);
break;
case OfflineItemState.FAILED:
maybeRecordBackgroundDownload(UmaBackgroundDownload.FAILED, item.id.id);
break;
case OfflineItemState.PENDING:
case OfflineItemState.PAUSED:
case OfflineItemState.IN_PROGRESS:
default:
break;
}
}
@Override
public void onItemsAdded(ArrayList<OfflineItem> items) {}
@Override
public void onItemRemoved(ContentId id) {}
}
private BackgroundDownloadUmaRecorder mBackgroundDownloadUmaRecorder;
/**
* Creates DownloadManagerService.
*/
......@@ -1978,6 +2021,9 @@ public class DownloadManagerService
nativeRecordFirstBackgroundInterruptReason(getNativeDownloadManagerService(),
mFirstBackgroundDownloadId, true /* downloadStarted */);
}
if (ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_OFFLINE_CONTENT_PROVIDER)) {
mBackgroundDownloadUmaRecorder = new BackgroundDownloadUmaRecorder();
}
}
/**
......
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