New issue
Advanced search Search tips

Issue 910878 link

Starred by 2 users

Issue metadata

Status: Started
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug



Sign in to add a comment

Download auto-resumptions : Implement auto-resumption handler in native

Project Member Reported by shaktisahu@chromium.org, Dec 1

Issue description

Implement an auto-resumption handler which will probably be owned by download service factory or download manager delegate. This should observe the network connectivity and do the resumptions automatically when network is back on. Also it should use a task scheduler to schedule a task for resumptions. We should call this handler after the start of chrome with some delay to resume all pending downloads.
Design doc : http://go/download-auto-resumptions
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jan 2

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/96f52874ca850dae338f819e4cb6dea193666ba9

commit 96f52874ca850dae338f819e4cb6dea193666ba9
Author: Shakti Sahu <shaktisahu@chromium.org>
Date: Wed Jan 02 21:05:13 2019

Added AutoResumptionHandler with task scheduling in native

Added AutoResumptionHandler to handle downloads auto-resumption in native.
This class will observe all download items and also listen to network changes.
Based on the current network conditions and download network requirements, it
will use a task scheduler to schedule a resumption task with the OS. It is expected
to handle download completions/interruptions etc correctly and based on the state of downloads,
either notify about task completion with cleaning up any already scheduled
tasks or scheduling a new task for resumption when network conditions are met.

Bug: 910878
Change-Id: Ia4aabc21e85afee523e78f10956df99e7e02c9dc
Reviewed-on: https://chromium-review.googlesource.com/c/1356311
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Reviewed-by: Min Qin <qinmin@chromium.org>
Reviewed-by: Peter Beverloo <peter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619491}
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadBroadcastManager.java
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/android/java/src/org/chromium/chrome/browser/download/service/DownloadBackgroundTask.java
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/android/java/src/org/chromium/chrome/browser/download/service/DownloadTaskScheduler.java
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/browser/android/download/download_controller.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/browser/android/download/download_manager_service.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/browser/android/download/download_utils.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/browser/android/download/download_utils.h
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/browser/android/download/service/download_background_task.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/chrome/browser/download/download_task_scheduler_impl.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUma.java
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUmaTest.java
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/internal/background_service/controller_impl.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/internal/background_service/stats.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/internal/common/download_item_impl.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/internal/common/download_item_impl_delegate.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/internal/common/in_progress_download_manager.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/public/background_service/download_task_types.h
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/public/common/BUILD.gn
[add] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/public/common/auto_resumption_handler.cc
[add] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/public/common/auto_resumption_handler.h
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/components/download/public/common/in_progress_download_manager.h
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/content/browser/download/download_manager_impl.cc
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/content/browser/download/download_manager_impl.h
[modify] https://crrev.com/96f52874ca850dae338f819e4cb6dea193666ba9/tools/metrics/histograms/enums.xml

Project Member

Comment 2 by bugdroid1@chromium.org, Jan 5

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/13e28fa2e0cc72a5c2029379e36b342723fa0885

commit 13e28fa2e0cc72a5c2029379e36b342723fa0885
Author: Shakti Sahu <shaktisahu@chromium.org>
Date: Sat Jan 05 01:19:43 2019

Revert "Added AutoResumptionHandler with task scheduling in native"

This reverts commit 96f52874ca850dae338f819e4cb6dea193666ba9.

Reason for revert: Crash

Original change's description:
> Added AutoResumptionHandler with task scheduling in native
> 
> Added AutoResumptionHandler to handle downloads auto-resumption in native.
> This class will observe all download items and also listen to network changes.
> Based on the current network conditions and download network requirements, it
> will use a task scheduler to schedule a resumption task with the OS. It is expected
> to handle download completions/interruptions etc correctly and based on the state of downloads,
> either notify about task completion with cleaning up any already scheduled
> tasks or scheduling a new task for resumption when network conditions are met.
> 
> Bug: 910878
> Change-Id: Ia4aabc21e85afee523e78f10956df99e7e02c9dc
> Reviewed-on: https://chromium-review.googlesource.com/c/1356311
> Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
> Reviewed-by: Min Qin <qinmin@chromium.org>
> Reviewed-by: Peter Beverloo <peter@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#619491}

TBR=peter@chromium.org,qinmin@chromium.org,shaktisahu@chromium.org,xingliu@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 910878
Change-Id: I691d3c1d61a3fa4de9ddcd85d4b9f19b7285f3ab
Reviewed-on: https://chromium-review.googlesource.com/c/1395830
Reviewed-by: Shakti Sahu <shaktisahu@chromium.org>
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#620140}
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadBroadcastManager.java
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/android/java/src/org/chromium/chrome/browser/download/service/DownloadBackgroundTask.java
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/android/java/src/org/chromium/chrome/browser/download/service/DownloadTaskScheduler.java
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/browser/android/download/download_controller.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/browser/android/download/download_manager_service.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/browser/android/download/download_utils.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/browser/android/download/download_utils.h
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/browser/android/download/service/download_background_task.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/chrome/browser/download/download_task_scheduler_impl.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUma.java
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUmaTest.java
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/internal/background_service/controller_impl.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/internal/background_service/stats.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/internal/common/download_item_impl.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/internal/common/download_item_impl_delegate.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/internal/common/in_progress_download_manager.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/public/background_service/download_task_types.h
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/public/common/BUILD.gn
[delete] https://crrev.com/23bb8a089bf0401230c5317aa106d25178b2aefe/components/download/public/common/auto_resumption_handler.cc
[delete] https://crrev.com/23bb8a089bf0401230c5317aa106d25178b2aefe/components/download/public/common/auto_resumption_handler.h
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/components/download/public/common/in_progress_download_manager.h
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/content/browser/download/download_manager_impl.cc
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/content/browser/download/download_manager_impl.h
[modify] https://crrev.com/13e28fa2e0cc72a5c2029379e36b342723fa0885/tools/metrics/histograms/enums.xml

Project Member

Comment 3 by bugdroid1@chromium.org, Jan 8

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/258cd1957f6b57fff9df62737ce22193bf434ffa

commit 258cd1957f6b57fff9df62737ce22193bf434ffa
Author: Shakti Sahu <shaktisahu@chromium.org>
Date: Tue Jan 08 20:53:49 2019

Reland "Added AutoResumptionHandler with task scheduling in native"

This is a reland of 96f52874ca850dae338f819e4cb6dea193666ba9

Original change's description:
> Added AutoResumptionHandler with task scheduling in native
>
> Added AutoResumptionHandler to handle downloads auto-resumption in native.
> This class will observe all download items and also listen to network changes.
> Based on the current network conditions and download network requirements, it
> will use a task scheduler to schedule a resumption task with the OS. It is expected
> to handle download completions/interruptions etc correctly and based on the state of downloads,
> either notify about task completion with cleaning up any already scheduled
> tasks or scheduling a new task for resumption when network conditions are met.
>
> Bug: 910878
> Change-Id: Ia4aabc21e85afee523e78f10956df99e7e02c9dc
> Reviewed-on: https://chromium-review.googlesource.com/c/1356311
> Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
> Reviewed-by: Min Qin <qinmin@chromium.org>
> Reviewed-by: Peter Beverloo <peter@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#619491}

TBR=peter@chromium.org,qinmin@chromium.org,shaktisahu@chromium.org,xingliu@chromium.org

Bug: 910878
Change-Id: Iff9d162b6f0de35bc8542464c6805a236a73b8e1
Reviewed-on: https://chromium-review.googlesource.com/c/1398314
Commit-Queue: Shakti Sahu <shaktisahu@chromium.org>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Cr-Commit-Position: refs/heads/master@{#620868}
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadBroadcastManager.java
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/android/java/src/org/chromium/chrome/browser/download/service/DownloadBackgroundTask.java
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/android/java/src/org/chromium/chrome/browser/download/service/DownloadTaskScheduler.java
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/browser/android/download/download_controller.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/browser/android/download/download_manager_service.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/browser/android/download/download_manager_service.h
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/browser/android/download/download_utils.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/browser/android/download/download_utils.h
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/browser/android/download/service/download_background_task.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/chrome/browser/download/download_task_scheduler_impl.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUma.java
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/background_task_scheduler/android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/background_task_scheduler/android/junit/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerUmaTest.java
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/internal/background_service/controller_impl.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/internal/background_service/stats.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/internal/common/download_item_impl.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/internal/common/download_item_impl_delegate.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/internal/common/in_progress_download_manager.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/public/background_service/download_task_types.h
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/public/common/BUILD.gn
[add] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/public/common/auto_resumption_handler.cc
[add] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/public/common/auto_resumption_handler.h
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/components/download/public/common/in_progress_download_manager.h
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/content/browser/download/download_browsertest.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/content/browser/download/download_manager_impl.cc
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/content/browser/download/download_manager_impl.h
[modify] https://crrev.com/258cd1957f6b57fff9df62737ce22193bf434ffa/tools/metrics/histograms/enums.xml

Sign in to add a comment