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

Side by Side Diff: extensions/browser/quota_service.h

Issue 1549643002: Switch to standard integer types in extensions/browser/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@clean
Patch Set: Created 4 years, 12 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 | « extensions/browser/process_map_factory.h ('k') | extensions/browser/quota_service_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 // The QuotaService uses heuristics to limit abusive requests 5 // The QuotaService uses heuristics to limit abusive requests
6 // made by extensions. In this model 'items' (e.g individual bookmarks) are 6 // made by extensions. In this model 'items' (e.g individual bookmarks) are
7 // represented by a 'Bucket' that holds state for that item for one single 7 // represented by a 'Bucket' that holds state for that item for one single
8 // interval of time. The interval of time is defined as 'how long we need to 8 // interval of time. The interval of time is defined as 'how long we need to
9 // watch an item (for a particular heuristic) before making a decision about 9 // watch an item (for a particular heuristic) before making a decision about
10 // quota violations'. A heuristic is two functions: one mapping input 10 // quota violations'. A heuristic is two functions: one mapping input
11 // arguments to a unique Bucket (the BucketMapper), and another to determine 11 // arguments to a unique Bucket (the BucketMapper), and another to determine
12 // if a new request involving such an item at a given time is a violation. 12 // if a new request involving such an item at a given time is a violation.
13 13
14 #ifndef EXTENSIONS_BROWSER_QUOTA_SERVICE_H_ 14 #ifndef EXTENSIONS_BROWSER_QUOTA_SERVICE_H_
15 #define EXTENSIONS_BROWSER_QUOTA_SERVICE_H_ 15 #define EXTENSIONS_BROWSER_QUOTA_SERVICE_H_
16 16
17 #include <stdint.h>
18
17 #include <list> 19 #include <list>
18 #include <map> 20 #include <map>
19 #include <string> 21 #include <string>
20 22
21 #include "base/compiler_specific.h" 23 #include "base/compiler_specific.h"
22 #include "base/containers/hash_tables.h" 24 #include "base/containers/hash_tables.h"
25 #include "base/macros.h"
23 #include "base/memory/scoped_ptr.h" 26 #include "base/memory/scoped_ptr.h"
24 #include "base/threading/non_thread_safe.h" 27 #include "base/threading/non_thread_safe.h"
25 #include "base/time/time.h" 28 #include "base/time/time.h"
26 #include "base/timer/timer.h" 29 #include "base/timer/timer.h"
27 #include "base/values.h" 30 #include "base/values.h"
28 31
29 class ExtensionFunction; 32 class ExtensionFunction;
30 33
31 namespace extensions { 34 namespace extensions {
32 class QuotaLimitHeuristic; 35 class QuotaLimitHeuristic;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // function arguments to corresponding Buckets for each input arg, and 2) a 88 // function arguments to corresponding Buckets for each input arg, and 2) a
86 // heuristic for determining if a new event involving a particular item 89 // heuristic for determining if a new event involving a particular item
87 // (represented by its Bucket) constitutes a quota violation. 90 // (represented by its Bucket) constitutes a quota violation.
88 class QuotaLimitHeuristic { 91 class QuotaLimitHeuristic {
89 public: 92 public:
90 // Parameters to configure the amount of tokens allotted to individual 93 // Parameters to configure the amount of tokens allotted to individual
91 // Bucket objects (see Below) and how often they are replenished. 94 // Bucket objects (see Below) and how often they are replenished.
92 struct Config { 95 struct Config {
93 // The maximum number of tokens a bucket can contain, and is refilled to 96 // The maximum number of tokens a bucket can contain, and is refilled to
94 // every epoch. 97 // every epoch.
95 int64 refill_token_count; 98 int64_t refill_token_count;
96 99
97 // Specifies how frequently the bucket is logically refilled with tokens. 100 // Specifies how frequently the bucket is logically refilled with tokens.
98 base::TimeDelta refill_interval; 101 base::TimeDelta refill_interval;
99 }; 102 };
100 103
101 // A Bucket is how the heuristic portrays an individual item (since quota 104 // A Bucket is how the heuristic portrays an individual item (since quota
102 // limits are per item) and all associated state for an item that needs to 105 // limits are per item) and all associated state for an item that needs to
103 // carry through multiple calls to Apply. It "holds" tokens, which are 106 // carry through multiple calls to Apply. It "holds" tokens, which are
104 // debited and credited in response to new events involving the item being 107 // debited and credited in response to new events involving the item being
105 // being represented. For convenience, instead of actually periodically 108 // being represented. For convenience, instead of actually periodically
(...skipping 13 matching lines...) Expand all
119 // valid from |start| until the first refill interval elapses and it needs 122 // valid from |start| until the first refill interval elapses and it needs
120 // to be reset again. 123 // to be reset again.
121 void Reset(const Config& config, const base::TimeTicks& start); 124 void Reset(const Config& config, const base::TimeTicks& start);
122 125
123 // The time at which the token count and next expiration should be reset, 126 // The time at which the token count and next expiration should be reset,
124 // via a call to Reset. 127 // via a call to Reset.
125 const base::TimeTicks& expiration() { return expiration_; } 128 const base::TimeTicks& expiration() { return expiration_; }
126 129
127 private: 130 private:
128 base::TimeTicks expiration_; 131 base::TimeTicks expiration_;
129 int64 num_tokens_; 132 int64_t num_tokens_;
130 DISALLOW_COPY_AND_ASSIGN(Bucket); 133 DISALLOW_COPY_AND_ASSIGN(Bucket);
131 }; 134 };
132 typedef std::list<Bucket*> BucketList; 135 typedef std::list<Bucket*> BucketList;
133 136
134 // A helper interface to retrieve the bucket corresponding to |args| from 137 // A helper interface to retrieve the bucket corresponding to |args| from
135 // the set of buckets (which is typically stored in the BucketMapper itself) 138 // the set of buckets (which is typically stored in the BucketMapper itself)
136 // for this QuotaLimitHeuristic. 139 // for this QuotaLimitHeuristic.
137 class BucketMapper { 140 class BucketMapper {
138 public: 141 public:
139 virtual ~BucketMapper() {} 142 virtual ~BucketMapper() {}
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 class QuotaService::TimedLimit : public QuotaLimitHeuristic { 205 class QuotaService::TimedLimit : public QuotaLimitHeuristic {
203 public: 206 public:
204 TimedLimit(const Config& config, BucketMapper* map, const std::string& name) 207 TimedLimit(const Config& config, BucketMapper* map, const std::string& name)
205 : QuotaLimitHeuristic(config, map, name) {} 208 : QuotaLimitHeuristic(config, map, name) {}
206 bool Apply(Bucket* bucket, const base::TimeTicks& event_time) override; 209 bool Apply(Bucket* bucket, const base::TimeTicks& event_time) override;
207 }; 210 };
208 211
209 } // namespace extensions 212 } // namespace extensions
210 213
211 #endif // EXTENSIONS_BROWSER_QUOTA_SERVICE_H_ 214 #endif // EXTENSIONS_BROWSER_QUOTA_SERVICE_H_
OLDNEW
« no previous file with comments | « extensions/browser/process_map_factory.h ('k') | extensions/browser/quota_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698