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

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

Issue 2822023002: [Offline pages]: Move logic for whether to consider the DocumentAvailableInMainFrame signal to the … (Closed)
Patch Set: code review changes 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..e007f9a1f9783d38a21353a5b77865211f04e998 100644
--- a/components/offline_pages/core/snapshot_controller.cc
+++ b/components/offline_pages/core/snapshot_controller.cc
@@ -11,6 +11,9 @@
#include "components/offline_pages/core/offline_page_feature.h"
namespace {
+const bool kDocumentAvailableTriggersSnapshotForeground = true;
+const bool kDocumentAvailableTriggersSnapshotBackground = false;
carlosk 2017/04/21 01:10:58 nit: it seems to me these constants are now unneed
fgorski 2017/04/21 16:05:10 Alternative (also nit): kDocumentAvailableTriggers
chili 2017/04/24 20:34:14 Done.
+
// 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 +21,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 +31,40 @@ const int64_t kDelayForTests = 0;
namespace offline_pages {
-SnapshotController::SnapshotController(
+// static
+SnapshotController* SnapshotController::CreateForForegroundOfflining(
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
+ SnapshotController::Client* client) {
+ return new SnapshotController(task_runner, client,
+ kDefaultDelayAfterDocumentAvailableMs,
+ kDelayAfterDocumentOnLoadCompletedMsForeground,
+ kDocumentAvailableTriggersSnapshotForeground);
+}
+
+// static
+SnapshotController* SnapshotController::CreateForBackgroundOfflining(
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
- SnapshotController::Client* client)
- : SnapshotController(task_runner,
- client,
- kDefaultDelayAfterDocumentAvailableMs,
- kDelayAfterDocumentOnLoadCompletedMs) {}
+ SnapshotController::Client* client) {
+ return new SnapshotController(task_runner, client,
+ kDefaultDelayAfterDocumentAvailableMs,
+ kDelayAfterDocumentOnLoadCompletedMsBackground,
+ kDocumentAvailableTriggersSnapshotBackground);
+}
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 +94,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() {

Powered by Google App Engine
This is Rietveld 408576698