Chromium Code Reviews| 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..ef9f8cb6b45c0de14c7e8c4def1a2bd7ad98648f 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,9 +56,22 @@ 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) { |
| + background_scheduled_processing_time_budget_ = |
| + kNonDozeDefaultBackgroundProcessingTimeBudgetSeconds; |
| + has_doze_mode_ = false; |
|
romax
2017/03/17 02:58:34
not sure if it's worth to have a member variable h
Pete Williamson
2017/03/17 21:05:55
I think I'd prefer checking this the first time th
romax
2017/03/23 21:56:37
Generally i wouldn't think this would fail. Even i
Pete Williamson
2017/03/23 22:52:53
OK, I took a look at the function, it doesn't seem
|
| + } else { |
| + background_scheduled_processing_time_budget_ = |
| + kDefaultBackgroundProcessingTimeBudgetSeconds; |
| + has_doze_mode_ = true; |
| + } |
| + } |
| // Constructor for unit tests. |
| OfflinerPolicy(bool prefer_untried, |
| @@ -121,7 +145,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,6 +165,7 @@ 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_; |