Commit a453f986 authored by Collin Baker's avatar Collin Baker Committed by Commit Bot

[Offline pages] Change SnapshotController interface for renovations.

Adds methods to SnapshotController and SnapshotController::Client for
the renovation framework. Also adds basic implementations to all
SnapshotController::Client implementors. This doesn't change the
behavior of the SnapshotController yet.

Design doc:
https://docs.google.com/document/d/1WuwRJaxBKAwVpeAHG0xhq5uRxMTB-j4LFleT4QEqANU

Bug: 736933
Change-Id: Iee15c54fa4524b1c09a87f6e6c43a8df8ea630ee
Reviewed-on: https://chromium-review.googlesource.com/580692Reviewed-by: default avatarPeter Williamson <petewil@chromium.org>
Reviewed-by: default avatarDmitry Titov <dimich@chromium.org>
Reviewed-by: default avatarYafei Duan <romax@chromium.org>
Commit-Queue: Collin Baker <collinbaker@google.com>
Cr-Commit-Position: refs/heads/master@{#488696}
parent 80e92e76
......@@ -469,6 +469,11 @@ void BackgroundLoaderOffliner::StartSnapshot() {
weak_ptr_factory_.GetWeakPtr()));
}
void BackgroundLoaderOffliner::RunRenovations() {
// TODO(collinbaker): run renovations from here.
snapshot_controller_->RenovationsCompleted();
}
void BackgroundLoaderOffliner::OnPageSaved(SavePageResult save_result,
int64_t offline_id) {
if (!pending_request_)
......
......@@ -69,6 +69,7 @@ class BackgroundLoaderOffliner : public Offliner,
// SnapshotController::Client implementation.
void StartSnapshot() override;
void RunRenovations() override;
void SetSnapshotControllerForTest(
std::unique_ptr<SnapshotController> controller);
......
......@@ -195,6 +195,10 @@ void PrerenderingLoader::StartSnapshot() {
HandleLoadEvent();
}
void PrerenderingLoader::RunRenovations() {
snapshot_controller_->RenovationsCompleted();
}
bool PrerenderingLoader::IsLowbarMet() {
return is_lowbar_met_;
}
......
......@@ -81,6 +81,7 @@ class PrerenderingLoader : public PrerenderAdapter::Observer,
// SnapshotController::Client implementation:
void StartSnapshot() override;
void RunRenovations() override;
// Returns true if the lowbar of snapshotting a page is met.
virtual bool IsLowbarMet();
......
......@@ -374,6 +374,10 @@ void RecentTabHelper::StartSnapshot() {
snapshot_controller_->PendingSnapshotCompleted();
}
void RecentTabHelper::RunRenovations() {
snapshot_controller_->RenovationsCompleted();
}
void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) {
DCHECK_NE(PageQuality::POOR, snapshot_controller_->current_page_quality());
......
......@@ -48,6 +48,7 @@ class RecentTabHelper
// SnapshotController::Client
void StartSnapshot() override;
void RunRenovations() override;
// Delegate that is used by RecentTabHelper to get external dependencies.
// Default implementation lives in .cc file, while tests provide an override.
......
......@@ -94,6 +94,11 @@ void SnapshotController::PendingSnapshotCompleted() {
state_ = State::READY;
}
void SnapshotController::RenovationsCompleted() {
// Do nothing for now.
// TODO(collinbaker): delay snapshot until this signal is received.
}
void SnapshotController::DocumentAvailableInMainFrame() {
if (document_available_triggers_snapshot_) {
DCHECK_EQ(PageQuality::POOR, current_page_quality_);
......
......@@ -56,6 +56,11 @@ class SnapshotController {
// it is assumed that later snapshots are better then previous.
virtual void StartSnapshot() = 0;
// Invoked when the page is sufficiently loaded for running
// renovations. The client should call the RenovationsCompleted()
// when they finish.
virtual void RunRenovations() = 0;
protected:
virtual ~Client() {}
};
......@@ -91,6 +96,9 @@ class SnapshotController {
// now completed (so the next one can be started).
void PendingSnapshotCompleted();
// The Client calls this when renovations have completed.
void RenovationsCompleted();
// Invoked from WebContentObserver::DocumentAvailableInMainFrame
void DocumentAvailableInMainFrame();
......
......@@ -29,6 +29,7 @@ class SnapshotControllerTest : public testing::Test,
// SnapshotController::Client
void StartSnapshot() override;
void RunRenovations() override;
// Utility methods.
// Runs until all of the tasks that are not delayed are gone from the task
......@@ -66,6 +67,10 @@ void SnapshotControllerTest::StartSnapshot() {
snapshot_count_++;
}
void SnapshotControllerTest::RunRenovations() {
controller_->RenovationsCompleted();
}
void SnapshotControllerTest::PumpLoop() {
task_runner_->RunUntilIdle();
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment