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

Unified Diff: components/precache/core/precache_session_tables.h

Issue 1961153003: Add pause/resume functionality to precache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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/precache/core/precache_session_tables.h
diff --git a/components/precache/core/precache_session_tables.h b/components/precache/core/precache_session_tables.h
new file mode 100644
index 0000000000000000000000000000000000000000..31e77c190e95decba19637f7050f9fd38c3ab751
--- /dev/null
+++ b/components/precache/core/precache_session_tables.h
@@ -0,0 +1,104 @@
+// 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_PRECACHE_CORE_PRECACHE_SESSION_TABLES_H_
+#define COMPONENTS_PRECACHE_CORE_PRECACHE_SESSION_TABLES_H_
+
+#include <list>
+#include <map>
+
+#include "base/macros.h"
+#include "base/time/time.h"
+#include "url/gurl.h"
+
+namespace base {
+class TimeTicks;
+}
+
+namespace sql {
+class Connection;
+}
+
+namespace precache {
+
+enum URLType {
+ MANIFEST = 1,
+ RESOURCE = 2
+};
+
+// Denotes the type of statistics that is recorded.
+enum StatType {
sclittle 2016/05/10 00:01:27 Instead of using a Type enum, could you either use
bengr 2016/05/19 01:25:44 Done.
+ // The sum total of all bytes in precache responses.
+ TOTAL_RESPONSE_BYTES = 0,
+
+ // The total precache response bytes retrieved over the network.
+ NETWORK_RESPONSE_BYTES = 1,
+
+ // The initial number of manifest URLs to fetch.
+ NUM_MANIFEST_URLS_TO_FETCH = 2,
+
+ // The initial start time of the precache session, before any interruptions.
+ START_TIME = 3
+};
+
+class PrecacheSessionTables {
+ public:
+ PrecacheSessionTables();
+ virtual ~PrecacheSessionTables();
+
+ // Initialize the precache task URL table for use with the specified database
+ // connection. The caller keeps ownership of |db|, and |db| must not be null.
+ // Init must be called before any other methods.
+ bool Init(sql::Connection* db);
+
+ // Get the manifest and resource URLs that still need to be fetched.
+ void GetURLs(std::list<GURL>* manifests,
+ std::list<GURL>* resources);
+
+ // Get statistics from the last time the precache session state was stored.
+ void GetStatistics(int64_t* total_response_bytes,
+ int64_t* network_response_bytes,
+ int64_t* num_manifest_urls_to_fetch,
+ base::TimeTicks* start_time);
+
+ // Store outstanding manifest and resource URLs for the current precache
+ // session.
+ void StoreURLs(const std::list<GURL>& manifests,
+ const std::list<GURL>& resources);
+
+ // Store statistics for the current precache session.
+ void StoreStatistics(int64_t total_response_bytes,
+ int64_t network_response_bytes,
+ int64_t num_manifest_urls_to_fetch,
+ const base::TimeTicks& start_time);
+
+ // Remove all manifest and resource URLs from the database.
+ void ClearURLs();
+
+ // Remove all statistics from the database.
+ void ClearStatistics();
+
+ private:
+ // Adds a URL to the table. A |MANIFEST| type
+ // is a url of a manifest to be fetched; A |RESOURCE| type is a url of a
+ // page resource to be fetched. Replaces the row if one already exists.
+ void StoreURL(const GURL& url, URLType type);
+
+ // Adds a statistic of type |StatType| with a corresponding value. Overwrites
+ // the value if it already exists.
+ void StoreStatistic(StatType type, int64_t value);
+
+ // Deletes the row from the table that has the given URL, if it exists.
+ void DeleteURL(const GURL& url);
+
+ bool CreateTablesIfNonExistent();
+
+ // Non-owned pointer.
+ sql::Connection* db_;
+
+ DISALLOW_COPY_AND_ASSIGN(PrecacheSessionTables);
+};
+
+} // namespace precache
+#endif // COMPONENTS_PRECACHE_CORE_PRECACHE_SESSION_TABLES_H_

Powered by Google App Engine
This is Rietveld 408576698