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

Unified Diff: components/offline_pages/snapshot_controller.h

Issue 2489443002: Move all components/offline_pages/ files into component/offline_pages/core (Closed)
Patch Set: rebase Created 4 years 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/snapshot_controller.h
diff --git a/components/offline_pages/snapshot_controller.h b/components/offline_pages/snapshot_controller.h
deleted file mode 100644
index c3ec36e7ec9ebaa4db12288f9da9302110a76d40..0000000000000000000000000000000000000000
--- a/components/offline_pages/snapshot_controller.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_OFFLINE_PAGES_SNAPSHOT_CONTROLLER_H_
-#define COMPONENTS_OFFLINE_PAGES_SNAPSHOT_CONTROLLER_H_
-
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "base/single_thread_task_runner.h"
-
-namespace offline_pages {
-
-// Takes various signals and produces StartSnapshot calls following a specific
-// policy. Can request snapshots multiple times per 'session'. Session can be
-// ended and another one started by calling Reset().
-// Main invariants:
-// - It never starts overlapping snapshots, Client reports when previous
-// snapshot is done.
-// - The currently worked on (pending) snapshot is always allowed to complete,
-// the new attempts to start a snapshot are ignored until it does.
-// - Some signals prevent more snapshots to be taken.
-// OnLoad is currently such signal.
-// - Once Reset() is called on the SnapshotController, the delayed tasks are
-// reset so no StartSnapshot calls is made 'cross-session'.
-class SnapshotController {
- public:
- enum class State {
- READY, // Listening to input, will start snapshot when needed.
- SNAPSHOT_PENDING, // Snapshot is in progress, don't start another.
- STOPPED, // Terminal state, no snapshots until reset.
- };
-
- // Client of the SnapshotController.
- class Client {
- public:
- // Invoked at a good moment to start a snapshot. May be invoked multiple
- // times, but not in overlapping manner - waits until
- // PreviousSnapshotCompleted() before the next StatrSnapshot().
- // Client should overwrite the result of previous snapshot with the new one,
- // it is assumed that later snapshots are better then previous.
- virtual void StartSnapshot() = 0;
-
- protected:
- virtual ~Client() {}
- };
-
- SnapshotController(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
- SnapshotController::Client* client);
- SnapshotController(
- const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
- SnapshotController::Client* client,
- size_t delay_after_document_available_ms,
- size_t delay_after_document_on_load_completed_ms);
- virtual ~SnapshotController();
-
- // Resets the 'session', returning controller to initial state.
- void Reset();
-
- // Stops current session, no more Client::StartSnapshot calls will be
- // invoked from the SnapshotController until current session is Reset().
- // Called by Client, for example when it encounters an error loading the page.
- void Stop();
-
- // The way for Client to report that previously started snapshot is
- // now completed (so the next one can be started).
- void PendingSnapshotCompleted();
-
- // Invoked from WebContentObserver::DocumentAvailableInMainFrame
- void DocumentAvailableInMainFrame();
-
- // Invoked from WebContentObserver::DocumentOnLoadCompletedInMainFrame
- void DocumentOnLoadCompletedInMainFrame();
-
- size_t GetDelayAfterDocumentAvailableForTest();
- size_t GetDelayAfterDocumentOnLoadCompletedForTest();
-
- private:
- void MaybeStartSnapshot();
- void MaybeStartSnapshotThenStop();
-
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
- // Client owns this class.
- SnapshotController::Client* client_;
- SnapshotController::State state_;
- size_t delay_after_document_available_ms_;
- size_t delay_after_document_on_load_completed_ms_;
-
- base::WeakPtrFactory<SnapshotController> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(SnapshotController);
-};
-
-} // namespace offline_pages
-
-#endif // COMPONENTS_OFFLINE_PAGES_SNAPSHOT_CONTROLLER_H_

Powered by Google App Engine
This is Rietveld 408576698