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() { ...@@ -469,6 +469,11 @@ void BackgroundLoaderOffliner::StartSnapshot() {
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
void BackgroundLoaderOffliner::RunRenovations() {
// TODO(collinbaker): run renovations from here.
snapshot_controller_->RenovationsCompleted();
}
void BackgroundLoaderOffliner::OnPageSaved(SavePageResult save_result, void BackgroundLoaderOffliner::OnPageSaved(SavePageResult save_result,
int64_t offline_id) { int64_t offline_id) {
if (!pending_request_) if (!pending_request_)
......
...@@ -69,6 +69,7 @@ class BackgroundLoaderOffliner : public Offliner, ...@@ -69,6 +69,7 @@ class BackgroundLoaderOffliner : public Offliner,
// SnapshotController::Client implementation. // SnapshotController::Client implementation.
void StartSnapshot() override; void StartSnapshot() override;
void RunRenovations() override;
void SetSnapshotControllerForTest( void SetSnapshotControllerForTest(
std::unique_ptr<SnapshotController> controller); std::unique_ptr<SnapshotController> controller);
......
...@@ -195,6 +195,10 @@ void PrerenderingLoader::StartSnapshot() { ...@@ -195,6 +195,10 @@ void PrerenderingLoader::StartSnapshot() {
HandleLoadEvent(); HandleLoadEvent();
} }
void PrerenderingLoader::RunRenovations() {
snapshot_controller_->RenovationsCompleted();
}
bool PrerenderingLoader::IsLowbarMet() { bool PrerenderingLoader::IsLowbarMet() {
return is_lowbar_met_; return is_lowbar_met_;
} }
......
...@@ -81,6 +81,7 @@ class PrerenderingLoader : public PrerenderAdapter::Observer, ...@@ -81,6 +81,7 @@ class PrerenderingLoader : public PrerenderAdapter::Observer,
// SnapshotController::Client implementation: // SnapshotController::Client implementation:
void StartSnapshot() override; void StartSnapshot() override;
void RunRenovations() override;
// Returns true if the lowbar of snapshotting a page is met. // Returns true if the lowbar of snapshotting a page is met.
virtual bool IsLowbarMet(); virtual bool IsLowbarMet();
......
...@@ -374,6 +374,10 @@ void RecentTabHelper::StartSnapshot() { ...@@ -374,6 +374,10 @@ void RecentTabHelper::StartSnapshot() {
snapshot_controller_->PendingSnapshotCompleted(); snapshot_controller_->PendingSnapshotCompleted();
} }
void RecentTabHelper::RunRenovations() {
snapshot_controller_->RenovationsCompleted();
}
void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) { void RecentTabHelper::SaveSnapshotForDownloads(bool replace_latest) {
DCHECK_NE(PageQuality::POOR, snapshot_controller_->current_page_quality()); DCHECK_NE(PageQuality::POOR, snapshot_controller_->current_page_quality());
......
...@@ -48,6 +48,7 @@ class RecentTabHelper ...@@ -48,6 +48,7 @@ class RecentTabHelper
// SnapshotController::Client // SnapshotController::Client
void StartSnapshot() override; void StartSnapshot() override;
void RunRenovations() override;
// Delegate that is used by RecentTabHelper to get external dependencies. // Delegate that is used by RecentTabHelper to get external dependencies.
// Default implementation lives in .cc file, while tests provide an override. // Default implementation lives in .cc file, while tests provide an override.
......
...@@ -94,6 +94,11 @@ void SnapshotController::PendingSnapshotCompleted() { ...@@ -94,6 +94,11 @@ void SnapshotController::PendingSnapshotCompleted() {
state_ = State::READY; state_ = State::READY;
} }
void SnapshotController::RenovationsCompleted() {
// Do nothing for now.
// TODO(collinbaker): delay snapshot until this signal is received.
}
void SnapshotController::DocumentAvailableInMainFrame() { void SnapshotController::DocumentAvailableInMainFrame() {
if (document_available_triggers_snapshot_) { if (document_available_triggers_snapshot_) {
DCHECK_EQ(PageQuality::POOR, current_page_quality_); DCHECK_EQ(PageQuality::POOR, current_page_quality_);
......
...@@ -56,6 +56,11 @@ class SnapshotController { ...@@ -56,6 +56,11 @@ class SnapshotController {
// it is assumed that later snapshots are better then previous. // it is assumed that later snapshots are better then previous.
virtual void StartSnapshot() = 0; 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: protected:
virtual ~Client() {} virtual ~Client() {}
}; };
...@@ -91,6 +96,9 @@ class SnapshotController { ...@@ -91,6 +96,9 @@ class SnapshotController {
// now completed (so the next one can be started). // now completed (so the next one can be started).
void PendingSnapshotCompleted(); void PendingSnapshotCompleted();
// The Client calls this when renovations have completed.
void RenovationsCompleted();
// Invoked from WebContentObserver::DocumentAvailableInMainFrame // Invoked from WebContentObserver::DocumentAvailableInMainFrame
void DocumentAvailableInMainFrame(); void DocumentAvailableInMainFrame();
......
...@@ -29,6 +29,7 @@ class SnapshotControllerTest : public testing::Test, ...@@ -29,6 +29,7 @@ class SnapshotControllerTest : public testing::Test,
// SnapshotController::Client // SnapshotController::Client
void StartSnapshot() override; void StartSnapshot() override;
void RunRenovations() override;
// Utility methods. // Utility methods.
// Runs until all of the tasks that are not delayed are gone from the task // Runs until all of the tasks that are not delayed are gone from the task
...@@ -66,6 +67,10 @@ void SnapshotControllerTest::StartSnapshot() { ...@@ -66,6 +67,10 @@ void SnapshotControllerTest::StartSnapshot() {
snapshot_count_++; snapshot_count_++;
} }
void SnapshotControllerTest::RunRenovations() {
controller_->RenovationsCompleted();
}
void SnapshotControllerTest::PumpLoop() { void SnapshotControllerTest::PumpLoop() {
task_runner_->RunUntilIdle(); 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