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

Unified Diff: components/offline_pages/request_header/offline_page_header.h

Issue 2337363002: Load live version when reloading an offline page on connected network (Closed)
Patch Set: Update BUILD.gn Created 4 years, 3 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/request_header/offline_page_header.h
diff --git a/components/offline_pages/request_header/offline_page_header.h b/components/offline_pages/request_header/offline_page_header.h
new file mode 100644
index 0000000000000000000000000000000000000000..370fe667817795d3d694b8cb2cd28e85b28a02c0
--- /dev/null
+++ b/components/offline_pages/request_header/offline_page_header.h
@@ -0,0 +1,80 @@
+// 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_REQUEST_HEADER_OFFLINE_PAGE_HEADER_H_
+#define COMPONENTS_OFFLINE_PAGES_REQUEST_HEADER_OFFLINE_PAGE_HEADER_H_
+
+#include <string>
+
+namespace offline_pages {
+
+// Header that defines the custom behavior to load offline pages. Its value is a
+// comma/space separated name-value pair.
+extern const char kOfflinePageHeader[];
+
+// The name used in name-value pair of kOfflinePageHeader to tell if the offline
+// info in this header should be persisted across session restore.
+extern const char kOfflinePageHeaderPersistKey[];
+
+// The name used in name-value pair of kOfflinePageHeader to denote the reason
+// for loading offline page.
+extern const char kOfflinePageHeaderReasonKey[];
+// Possible values in name-value pair that denote the reason for loading offline
+// page.
+// The offline page should be loaded even when the network is connected. This is
+// because the live version failed to load due to certain net error.
+extern const char kOfflinePageHeaderReasonValueDueToNetError[];
+// The offline page should be loaded because the user clicks to open the
+// downloaded page explicitly.
+extern const char kOfflinePageHeaderReasonValueFromDownload[];
+// This only happens after the offline page is loaded due to above reason and
+// then the user reload current page. The network condition should be checked
+// this time to decide if a live version should be tried again.
+extern const char kOfflinePageHeaderReasonValueReload[];
+
+// The name used in name-value pair of kOfflinePageHeader to denote the offline
+// ID of the offline page to load.
+extern const char kOfflinePageHeaderIDKey[];
+
+// Used to parse the extra request header string that defines offline page
+// loading behaviors.
+struct OfflinePageHeader {
+ public:
+ enum class Reason {
+ NONE,
+ NET_ERROR,
+ DOWNLOAD,
+ RELOAD
+ };
+
+ OfflinePageHeader();
+
+ // Constructed from a request header value string.
+ // The struct members will be cleared if the parsing failed.
+ explicit OfflinePageHeader(const std::string& header_value);
+
+ ~OfflinePageHeader();
+
+ // Returns the full header string, including both key and value, that could be
+ // passed to set extra request header.
+ std::string GetCompleteHeaderString() const;
+
+ void Clear();
+
+ // Set if failed to parse a request header value string. For testing only.
+ bool did_fail_parsing_for_test;
+
+ // Flag to indicate if the header should be persisted across session restore.
+ bool need_to_persist;
+
+ // Describes the reason to load offline page.
+ Reason reason;
+
+ // The offline ID of the page to load.
+ std::string id;
+};
+
+} // namespace offline_pages
+
+#endif // COMPONENTS_OFFLINE_PAGES_REQUEST_HEADER_OFFLINE_PAGE_HEADER_H_
« no previous file with comments | « components/offline_pages/request_header/BUILD.gn ('k') | components/offline_pages/request_header/offline_page_header.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698