| Index: components/offline_pages/core/background/offliner_policy.h
|
| diff --git a/components/offline_pages/core/background/offliner_policy.h b/components/offline_pages/core/background/offliner_policy.h
|
| index d828d4c6ea6ba5992bad1b020b6c41bc5ddf0509..b4fc28c0f7e88fff7f79046ac12de603acfe9be1 100644
|
| --- a/components/offline_pages/core/background/offliner_policy.h
|
| +++ b/components/offline_pages/core/background/offliner_policy.h
|
| @@ -5,6 +5,8 @@
|
| #ifndef COMPONENTS_OFFLINE_PAGES_CORE_BACKGROUND_OFFLINER_POLICY_H_
|
| #define COMPONENTS_OFFLINE_PAGES_CORE_BACKGROUND_OFFLINER_POLICY_H_
|
|
|
| +#include "base/sys_info.h"
|
| +
|
| namespace {
|
| // The max number of started tries is to guard against pages that make the
|
| // prerenderer crash. It should be greater than or equal to the max number of
|
| @@ -17,13 +19,22 @@ const int kMaxCompletedTries = 3;
|
| // By the time we get to a week, the user has forgotten asking for a page.
|
| const int kRequestExpirationTimeInSeconds = 60 * 60 * 24 * 7;
|
|
|
| -// Scheduled background processing time limits.
|
| +// Scheduled background processing time limits for doze mode, which requires
|
| +// Android version >= 6.0 (API level >= 23). Otherwise the scheduled background
|
| +// processing time should be the same as immediate loading (4 min 50 secs), it's
|
| +// capped by the Prerenderer's 5 minute timeout.
|
| const int kDozeModeBackgroundServiceWindowSeconds = 60 * 3;
|
| const int kDefaultBackgroundProcessingTimeBudgetSeconds =
|
| kDozeModeBackgroundServiceWindowSeconds - 10;
|
| const int kSinglePageTimeLimitWhenBackgroundScheduledSeconds =
|
| kDozeModeBackgroundServiceWindowSeconds - 10;
|
|
|
| +const int kNonDozeModeBackgroundServiceWindowSeconds = 60 * 5;
|
| +const int kNonDozeDefaultBackgroundProcessingTimeBudgetSeconds =
|
| + kNonDozeModeBackgroundServiceWindowSeconds - 10;
|
| +const int kNonDozeSinglePageTimeLimitWhenBackgroundScheduledSeconds =
|
| + kNonDozeModeBackgroundServiceWindowSeconds - 10;
|
| +
|
| // Immediate processing time limits. Note: experiments on GIN-2g-poor show many
|
| // page requests took 3 or 4 attempts in background scheduled mode with timeout
|
| // of 2 minutes. So for immediate processing mode, give page requests just under
|
| @@ -45,24 +56,29 @@ class OfflinerPolicy {
|
| prefer_earlier_requests_(true),
|
| retry_count_is_more_important_than_recency_(true),
|
| max_started_tries_(kMaxStartedTries),
|
| - max_completed_tries_(kMaxCompletedTries),
|
| - background_scheduled_processing_time_budget_(
|
| - kDefaultBackgroundProcessingTimeBudgetSeconds) {}
|
| + max_completed_tries_(kMaxCompletedTries) {
|
| + int32_t os_major_version = 0;
|
| + int32_t os_minor_version = 0;
|
| + int32_t os_bugfix_version = 0;
|
| + base::SysInfo::OperatingSystemVersionNumbers(
|
| + &os_major_version, &os_minor_version, &os_bugfix_version);
|
| + if (os_major_version < 6)
|
| + has_doze_mode_ = false;
|
| + else
|
| + has_doze_mode_ = true;
|
| + }
|
|
|
| // Constructor for unit tests.
|
| OfflinerPolicy(bool prefer_untried,
|
| bool prefer_earlier,
|
| bool prefer_retry_count,
|
| int max_started_tries,
|
| - int max_completed_tries,
|
| - int background_processing_time_budget)
|
| + int max_completed_tries)
|
| : prefer_untried_requests_(prefer_untried),
|
| prefer_earlier_requests_(prefer_earlier),
|
| retry_count_is_more_important_than_recency_(prefer_retry_count),
|
| max_started_tries_(max_started_tries),
|
| - max_completed_tries_(max_completed_tries),
|
| - background_scheduled_processing_time_budget_(
|
| - background_processing_time_budget) {}
|
| + max_completed_tries_(max_completed_tries) {}
|
|
|
| // TODO(petewil): Numbers here are chosen arbitrarily, do the proper studies
|
| // to get good policy numbers. Eventually this should get data from a finch
|
| @@ -109,7 +125,9 @@ class OfflinerPolicy {
|
| // TODO(dougarnett): Consider parameterizing these time limit/budget
|
| // calls with processing mode.
|
| int GetProcessingTimeBudgetWhenBackgroundScheduledInSeconds() const {
|
| - return background_scheduled_processing_time_budget_;
|
| + if (has_doze_mode_)
|
| + return kDefaultBackgroundProcessingTimeBudgetSeconds;
|
| + return kNonDozeDefaultBackgroundProcessingTimeBudgetSeconds;
|
| }
|
|
|
| // How many seconds to keep trying new pages for, before we give up, when
|
| @@ -121,7 +139,9 @@ class OfflinerPolicy {
|
| // How long do we allow a page to load before giving up on it when
|
| // background loading was scheduled.
|
| int GetSinglePageTimeLimitWhenBackgroundScheduledInSeconds() const {
|
| - return kSinglePageTimeLimitWhenBackgroundScheduledSeconds;
|
| + if (has_doze_mode_)
|
| + return kSinglePageTimeLimitWhenBackgroundScheduledSeconds;
|
| + return kNonDozeSinglePageTimeLimitWhenBackgroundScheduledSeconds;
|
| }
|
|
|
| // How long do we allow a page to load before giving up on it when
|
| @@ -139,9 +159,9 @@ class OfflinerPolicy {
|
| bool prefer_untried_requests_;
|
| bool prefer_earlier_requests_;
|
| bool retry_count_is_more_important_than_recency_;
|
| + bool has_doze_mode_;
|
| int max_started_tries_;
|
| int max_completed_tries_;
|
| - int background_scheduled_processing_time_budget_;
|
| };
|
| } // namespace offline_pages
|
|
|
|
|