Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: components/offline_pages/core/snapshot_controller.cc

Issue 2861583007: [Offline pages]: Move logic for whether to consider the DocumentAvailableInMainFrame signal to the … (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {
« no previous file with comments | « components/offline_pages/core/snapshot_controller.h ('k') | components/offline_pages/core/snapshot_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698