| Index: components/offline_pages/core/snapshot_controller.cc
|
| diff --git a/components/offline_pages/core/snapshot_controller.cc b/components/offline_pages/core/snapshot_controller.cc
|
| index c683a1a9b1056a0e039db12074f9bb48cd36c51b..9d62297fb7b62b60c99628df69417f082f799ce5 100644
|
| --- a/components/offline_pages/core/snapshot_controller.cc
|
| +++ b/components/offline_pages/core/snapshot_controller.cc
|
| @@ -11,6 +11,8 @@
|
| #include "components/offline_pages/core/offline_page_feature.h"
|
|
|
| namespace {
|
| +const bool kDocumentAvailableTriggersSnapshot = true;
|
| +
|
| // Default delay, in milliseconds, between the main document parsed event and
|
| // snapshot. Note: this snapshot might not occur if the OnLoad event and
|
| // OnLoad delay elapses first to trigger a final snapshot.
|
| @@ -18,7 +20,8 @@ const int64_t kDefaultDelayAfterDocumentAvailableMs = 7000;
|
|
|
| // Default delay, in milliseconds, between the main document OnLoad event and
|
| // snapshot.
|
| -const int64_t kDelayAfterDocumentOnLoadCompletedMs = 1000;
|
| +const int64_t kDelayAfterDocumentOnLoadCompletedMsForeground = 1000;
|
| +const int64_t kDelayAfterDocumentOnLoadCompletedMsBackground = 2000;
|
|
|
| // Delay for testing to keep polling times reasonable.
|
| const int64_t kDelayForTests = 0;
|
| @@ -27,25 +30,42 @@ const int64_t kDelayForTests = 0;
|
|
|
| namespace offline_pages {
|
|
|
| -SnapshotController::SnapshotController(
|
| +// static
|
| +std::unique_ptr<SnapshotController>
|
| +SnapshotController::CreateForForegroundOfflining(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| + SnapshotController::Client* client) {
|
| + return std::unique_ptr<SnapshotController>(new SnapshotController(
|
| + task_runner, client, kDefaultDelayAfterDocumentAvailableMs,
|
| + kDelayAfterDocumentOnLoadCompletedMsForeground,
|
| + kDocumentAvailableTriggersSnapshot));
|
| +}
|
| +
|
| +// static
|
| +std::unique_ptr<SnapshotController>
|
| +SnapshotController::CreateForBackgroundOfflining(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| - SnapshotController::Client* client)
|
| - : SnapshotController(task_runner,
|
| - client,
|
| - kDefaultDelayAfterDocumentAvailableMs,
|
| - kDelayAfterDocumentOnLoadCompletedMs) {}
|
| + SnapshotController::Client* client) {
|
| + return std::unique_ptr<SnapshotController>(new SnapshotController(
|
| + task_runner, client, kDefaultDelayAfterDocumentAvailableMs,
|
| + kDelayAfterDocumentOnLoadCompletedMsBackground,
|
| + !kDocumentAvailableTriggersSnapshot));
|
| +}
|
|
|
| SnapshotController::SnapshotController(
|
| const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
|
| SnapshotController::Client* client,
|
| int64_t delay_after_document_available_ms,
|
| - int64_t delay_after_document_on_load_completed_ms)
|
| + int64_t delay_after_document_on_load_completed_ms,
|
| + bool document_available_triggers_snapshot)
|
| : task_runner_(task_runner),
|
| client_(client),
|
| state_(State::READY),
|
| delay_after_document_available_ms_(delay_after_document_available_ms),
|
| delay_after_document_on_load_completed_ms_(
|
| delay_after_document_on_load_completed_ms),
|
| + document_available_triggers_snapshot_(
|
| + document_available_triggers_snapshot),
|
| weak_ptr_factory_(this) {
|
| if (offline_pages::ShouldUseTestingSnapshotDelay()) {
|
| delay_after_document_available_ms_ = kDelayForTests;
|
| @@ -75,13 +95,16 @@ void SnapshotController::PendingSnapshotCompleted() {
|
| }
|
|
|
| void SnapshotController::DocumentAvailableInMainFrame() {
|
| - DCHECK_EQ(PageQuality::POOR, current_page_quality_);
|
| - // Post a delayed task to snapshot.
|
| - task_runner_->PostDelayedTask(
|
| - FROM_HERE, base::Bind(&SnapshotController::MaybeStartSnapshot,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - PageQuality::FAIR_AND_IMPROVING),
|
| - base::TimeDelta::FromMilliseconds(delay_after_document_available_ms_));
|
| + if (document_available_triggers_snapshot_) {
|
| + DCHECK_EQ(PageQuality::POOR, current_page_quality_);
|
| + // Post a delayed task to snapshot.
|
| + task_runner_->PostDelayedTask(
|
| + FROM_HERE,
|
| + base::Bind(&SnapshotController::MaybeStartSnapshot,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + PageQuality::FAIR_AND_IMPROVING),
|
| + base::TimeDelta::FromMilliseconds(delay_after_document_available_ms_));
|
| + }
|
| }
|
|
|
| void SnapshotController::DocumentOnLoadCompletedInMainFrame() {
|
|
|