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

Side by Side Diff: components/offline_pages/offline_page_client_policy.h

Issue 2289143005: [Offline pages] Add a builder and feature struct to policy (Closed)
Patch Set: POD to constructor 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 unified diff | Download patch
« no previous file with comments | « components/offline_pages/client_policy_controller_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_CLIENT_POLICY_H_ 5 #ifndef COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_CLIENT_POLICY_H_
6 #define COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_CLIENT_POLICY_H_ 6 #define COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_CLIENT_POLICY_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 13 matching lines...) Expand all
24 // Type of the client, indicating where the archived page would be saved 24 // Type of the client, indicating where the archived page would be saved
25 // and whether it could be kept indefinitely. 25 // and whether it could be kept indefinitely.
26 enum class LifetimeType { 26 enum class LifetimeType {
27 TEMPORARY, 27 TEMPORARY,
28 PERSISTENT, 28 PERSISTENT,
29 }; 29 };
30 30
31 // Type of the page generated by the client. 31 // Type of the page generated by the client.
32 LifetimeType lifetime_type; 32 LifetimeType lifetime_type;
33 33
34 // The time after which the page expires. 34 // The time after which the page expires.
dewittj 2016/09/13 16:56:35 nit: please document that a TimeDelta of 0 means n
chili 2016/09/13 17:47:55 Done.
35 base::TimeDelta expiration_period; 35 base::TimeDelta expiration_period;
36 36
37 // The maximum number of pages allowed to be saved by the namespace. 37 // The maximum number of pages allowed to be saved by the namespace.
38 // kUnlimitedPages (defined above) means no limit set. 38 // kUnlimitedPages (defined above) means no limit set.
39 size_t page_limit; 39 size_t page_limit;
40
41 LifetimePolicy(LifetimeType init_lifetime_type, size_t init_page_limit) :
42 lifetime_type(init_lifetime_type),
43 expiration_period(base::TimeDelta::FromDays(0)),
44 page_limit(init_page_limit) {};
45 };
46
47 // The struct describing feature set of the offline pages.
48 struct FeaturePolicy {
49 // Whether pages are shown in download ui.
50 bool is_supported_by_download;
51 // Whether pages are removed on user-initiated cache reset. Defaults to true.
52 bool is_removed_on_cache_reset;
53
54 FeaturePolicy() :
55 is_supported_by_download(false),
56 is_removed_on_cache_reset(true) {};
40 }; 57 };
41 58
42 // The struct describing policies for various namespaces (Bookmark, Last-N etc.) 59 // The struct describing policies for various namespaces (Bookmark, Last-N etc.)
43 // used by offline page model. The name_space is supposed to be key, so that 60 // used by offline page model. The name_space is supposed to be key, so that
44 // it's sufficient to compare name_space only when doing comparisons. 61 // it's sufficient to compare name_space only when doing comparisons.
45 struct OfflinePageClientPolicy { 62 struct OfflinePageClientPolicy {
46 // Namespace to which the policy applied. 63 // Namespace to which the policy applied.
47 std::string name_space; 64 std::string name_space;
48 65
49 // Policy to control the lifetime of a page generated by this namespace. 66 // Policy to control the lifetime of a page generated by this namespace.
50 LifetimePolicy lifetime_policy; 67 LifetimePolicy lifetime_policy;
51 68
52 // How many pages for the same online URL can be stored at any time. 69 // How many pages for the same online URL can be stored at any time.
53 // kUnlimitedPages means there's no limit. 70 // kUnlimitedPages means there's no limit.
54 size_t pages_allowed_per_url; 71 size_t pages_allowed_per_url;
72
73 FeaturePolicy feature_policy;
74
75 OfflinePageClientPolicy(std::string namespace_val,
76 LifetimePolicy lifetime_policy_val,
77 size_t pages_allowed_per_url_val,
78 FeaturePolicy feature_policy_val) :
79 name_space(namespace_val),
80 lifetime_policy(lifetime_policy_val),
81 pages_allowed_per_url(pages_allowed_per_url_val),
82 feature_policy(feature_policy_val) {};
83
84 OfflinePageClientPolicy(std::string namespace_val,
85 LifetimePolicy lifetime_policy_val,
86 size_t pages_allowed_per_url_val) :
87 name_space(namespace_val),
dewittj 2016/09/13 16:56:35 possible optimization: delegated constructors (htt
chili 2016/09/13 17:47:55 Done.
88 lifetime_policy(lifetime_policy_val),
89 pages_allowed_per_url(pages_allowed_per_url_val),
90 feature_policy(FeaturePolicy()) {};
91 };
92
93 class OfflinePageClientPolicyBuilder {
94 public:
95 OfflinePageClientPolicyBuilder(const std::string& name_space,
96 LifetimePolicy::LifetimeType lifetime_type,
97 size_t page_limit,
98 size_t pages_allowed_per_url) :
99 policy_(OfflinePageClientPolicy(
100 name_space,
101 LifetimePolicy(lifetime_type, page_limit),
102 pages_allowed_per_url)) {};
103
104 ~OfflinePageClientPolicyBuilder() {}
105
106 // Calling build does not reset the object inside.
107 const OfflinePageClientPolicy Build() const { return policy_; }
108
109 OfflinePageClientPolicyBuilder& SetExpirePeriod(
110 const base::TimeDelta& expire_period) {
111 policy_.lifetime_policy.expiration_period = expire_period;
112 return *this;
113 }
114
115 OfflinePageClientPolicyBuilder& SetIsSupportedByDownload(
116 const bool is_downloaded) {
117 policy_.feature_policy.is_supported_by_download = is_downloaded;
118 return *this;
119 }
120
121 OfflinePageClientPolicyBuilder& SetIsRemovedOnCacheReset(
122 const bool removed_on_cache_reset) {
123 policy_.feature_policy.is_removed_on_cache_reset = removed_on_cache_reset;
124 return *this;
125 }
126
127 private:
128 OfflinePageClientPolicy policy_;
129
130 DISALLOW_COPY_AND_ASSIGN(OfflinePageClientPolicyBuilder);
55 }; 131 };
56 132
57 } // namespace offline_pages 133 } // namespace offline_pages
58 134
59 #endif // COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_CLIENT_POLICY_H_ 135 #endif // COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_CLIENT_POLICY_H_
OLDNEW
« no previous file with comments | « components/offline_pages/client_policy_controller_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698