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

Side by Side Diff: chrome/browser/extensions/extensions_quota_service.h

Issue 7477008: Remove explicit keyword from multi-argument constructors (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 ExtensionsQuotaService uses heuristics to limit abusive requests 5 // The ExtensionsQuotaService 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
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // In most cases, this should simply extract item IDs from the arguments 135 // In most cases, this should simply extract item IDs from the arguments
136 // (e.g for bookmark operations involving an existing item). If a problem 136 // (e.g for bookmark operations involving an existing item). If a problem
137 // occurs while parsing |args|, the function aborts - buckets may be non- 137 // occurs while parsing |args|, the function aborts - buckets may be non-
138 // empty). The expectation is that invalid args and associated errors are 138 // empty). The expectation is that invalid args and associated errors are
139 // handled by the ExtensionFunction itself so we don't concern ourselves. 139 // handled by the ExtensionFunction itself so we don't concern ourselves.
140 virtual void GetBucketsForArgs(const ListValue* args, 140 virtual void GetBucketsForArgs(const ListValue* args,
141 BucketList* buckets) = 0; 141 BucketList* buckets) = 0;
142 }; 142 };
143 143
144 // Ownership of |mapper| is given to the new QuotaLimitHeuristic. 144 // Ownership of |mapper| is given to the new QuotaLimitHeuristic.
145 explicit QuotaLimitHeuristic(const Config& config, BucketMapper* map); 145 QuotaLimitHeuristic(const Config& config, BucketMapper* map);
146 virtual ~QuotaLimitHeuristic(); 146 virtual ~QuotaLimitHeuristic();
147 147
148 // Determines if sufficient quota exists (according to the Apply 148 // Determines if sufficient quota exists (according to the Apply
149 // implementation of a derived class) to perform an operation with |args|, 149 // implementation of a derived class) to perform an operation with |args|,
150 // based on the history of similar operations with similar arguments (which 150 // based on the history of similar operations with similar arguments (which
151 // is retrieved using the BucketMapper). 151 // is retrieved using the BucketMapper).
152 bool ApplyToArgs(const ListValue* args, const base::TimeTicks& event_time); 152 bool ApplyToArgs(const ListValue* args, const base::TimeTicks& event_time);
153 153
154 protected: 154 protected:
155 const Config& config() { return config_; } 155 const Config& config() { return config_; }
(...skipping 10 matching lines...) Expand all
166 // The mapper used in Map. Cannot be NULL. 166 // The mapper used in Map. Cannot be NULL.
167 scoped_ptr<BucketMapper> bucket_mapper_; 167 scoped_ptr<BucketMapper> bucket_mapper_;
168 168
169 DISALLOW_COPY_AND_ASSIGN(QuotaLimitHeuristic); 169 DISALLOW_COPY_AND_ASSIGN(QuotaLimitHeuristic);
170 }; 170 };
171 171
172 // A simple per-item heuristic to limit the number of events that can occur in 172 // A simple per-item heuristic to limit the number of events that can occur in
173 // a given period of time; e.g "no more than 100 events in an hour". 173 // a given period of time; e.g "no more than 100 events in an hour".
174 class ExtensionsQuotaService::TimedLimit : public QuotaLimitHeuristic { 174 class ExtensionsQuotaService::TimedLimit : public QuotaLimitHeuristic {
175 public: 175 public:
176 explicit TimedLimit(const Config& config, BucketMapper* map) 176 TimedLimit(const Config& config, BucketMapper* map)
177 : QuotaLimitHeuristic(config, map) {} 177 : QuotaLimitHeuristic(config, map) {}
178 virtual bool Apply(Bucket* bucket, const base::TimeTicks& event_time); 178 virtual bool Apply(Bucket* bucket, const base::TimeTicks& event_time);
179 }; 179 };
180 180
181 // A per-item heuristic to limit the number of events that can occur in a 181 // A per-item heuristic to limit the number of events that can occur in a
182 // period of time over a sustained longer interval. E.g "no more than two 182 // period of time over a sustained longer interval. E.g "no more than two
183 // events per minute, sustained over 10 minutes". 183 // events per minute, sustained over 10 minutes".
184 class ExtensionsQuotaService::SustainedLimit : public QuotaLimitHeuristic { 184 class ExtensionsQuotaService::SustainedLimit : public QuotaLimitHeuristic {
185 public: 185 public:
186 SustainedLimit(const base::TimeDelta& sustain, 186 SustainedLimit(const base::TimeDelta& sustain,
187 const Config& config, 187 const Config& config,
188 BucketMapper* map); 188 BucketMapper* map);
189 virtual bool Apply(Bucket* bucket, const base::TimeTicks& event_time); 189 virtual bool Apply(Bucket* bucket, const base::TimeTicks& event_time);
190 private: 190 private:
191 // Specifies how long exhaustion of buckets is allowed to continue before 191 // Specifies how long exhaustion of buckets is allowed to continue before
192 // denying requests. 192 // denying requests.
193 const int64 repeat_exhaustion_allowance_; 193 const int64 repeat_exhaustion_allowance_;
194 int64 num_available_repeat_exhaustions_; 194 int64 num_available_repeat_exhaustions_;
195 }; 195 };
196 196
197 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSIONS_QUOTA_SERVICE_H_ 197 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSIONS_QUOTA_SERVICE_H_
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_web_ui.h ('k') | chrome/browser/history/text_database_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698