OLD | NEW |
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 #include "base/stl_util.h" | 5 #include "base/stl_util.h" |
6 #include "base/string_util.h" | 6 #include "base/string_util.h" |
7 #include "chrome/browser/extensions/extension_function.h" | 7 #include "chrome/browser/extensions/extension_function.h" |
8 #include "chrome/browser/extensions/extensions_quota_service.h" | 8 #include "chrome/browser/extensions/extensions_quota_service.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 | 194 |
195 TEST_F(ExtensionsQuotaServiceTest, NoHeuristic) { | 195 TEST_F(ExtensionsQuotaServiceTest, NoHeuristic) { |
196 scoped_refptr<MockFunction> f(new MockFunction("foo")); | 196 scoped_refptr<MockFunction> f(new MockFunction("foo")); |
197 ListValue args; | 197 ListValue args; |
198 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, kStartTime)); | 198 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, kStartTime)); |
199 } | 199 } |
200 | 200 |
201 TEST_F(ExtensionsQuotaServiceTest, FrozenHeuristic) { | 201 TEST_F(ExtensionsQuotaServiceTest, FrozenHeuristic) { |
202 scoped_refptr<MockFunction> f(new FrozenMockFunction("foo")); | 202 scoped_refptr<MockFunction> f(new FrozenMockFunction("foo")); |
203 ListValue args; | 203 ListValue args; |
204 args.Append(new FundamentalValue(1)); | 204 args.Append(new base::FundamentalValue(1)); |
205 EXPECT_FALSE(service_->Assess(extension_a_, f, &args, kStartTime)); | 205 EXPECT_FALSE(service_->Assess(extension_a_, f, &args, kStartTime)); |
206 } | 206 } |
207 | 207 |
208 TEST_F(ExtensionsQuotaServiceTest, SingleHeuristic) { | 208 TEST_F(ExtensionsQuotaServiceTest, SingleHeuristic) { |
209 scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); | 209 scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); |
210 ListValue args; | 210 ListValue args; |
211 args.Append(new FundamentalValue(1)); | 211 args.Append(new base::FundamentalValue(1)); |
212 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, kStartTime)); | 212 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, kStartTime)); |
213 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, | 213 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, |
214 kStartTime + TimeDelta::FromSeconds(10))); | 214 kStartTime + TimeDelta::FromSeconds(10))); |
215 EXPECT_FALSE(service_->Assess(extension_a_, f, &args, | 215 EXPECT_FALSE(service_->Assess(extension_a_, f, &args, |
216 kStartTime + TimeDelta::FromSeconds(15))); | 216 kStartTime + TimeDelta::FromSeconds(15))); |
217 | 217 |
218 ListValue args2; | 218 ListValue args2; |
219 args2.Append(new FundamentalValue(1)); | 219 args2.Append(new base::FundamentalValue(1)); |
220 args2.Append(new FundamentalValue(2)); | 220 args2.Append(new base::FundamentalValue(2)); |
221 EXPECT_TRUE(service_->Assess(extension_b_, f, &args2, kStartTime)); | 221 EXPECT_TRUE(service_->Assess(extension_b_, f, &args2, kStartTime)); |
222 EXPECT_TRUE(service_->Assess(extension_b_, f, &args2, | 222 EXPECT_TRUE(service_->Assess(extension_b_, f, &args2, |
223 kStartTime + TimeDelta::FromSeconds(10))); | 223 kStartTime + TimeDelta::FromSeconds(10))); |
224 | 224 |
225 TimeDelta peace = TimeDelta::FromMinutes(30); | 225 TimeDelta peace = TimeDelta::FromMinutes(30); |
226 EXPECT_TRUE(service_->Assess(extension_b_, f, &args, kStartTime + peace)); | 226 EXPECT_TRUE(service_->Assess(extension_b_, f, &args, kStartTime + peace)); |
227 EXPECT_TRUE(service_->Assess(extension_b_, f, &args, | 227 EXPECT_TRUE(service_->Assess(extension_b_, f, &args, |
228 kStartTime + peace + TimeDelta::FromSeconds(10))); | 228 kStartTime + peace + TimeDelta::FromSeconds(10))); |
229 EXPECT_FALSE(service_->Assess(extension_b_, f, &args2, | 229 EXPECT_FALSE(service_->Assess(extension_b_, f, &args2, |
230 kStartTime + peace + TimeDelta::FromSeconds(15))); | 230 kStartTime + peace + TimeDelta::FromSeconds(15))); |
231 | 231 |
232 // Test that items are independent. | 232 // Test that items are independent. |
233 ListValue args3; | 233 ListValue args3; |
234 args3.Append(new FundamentalValue(3)); | 234 args3.Append(new base::FundamentalValue(3)); |
235 EXPECT_TRUE(service_->Assess(extension_c_, f, &args, kStartTime)); | 235 EXPECT_TRUE(service_->Assess(extension_c_, f, &args, kStartTime)); |
236 EXPECT_TRUE(service_->Assess(extension_c_, f, &args3, | 236 EXPECT_TRUE(service_->Assess(extension_c_, f, &args3, |
237 kStartTime + TimeDelta::FromSeconds(10))); | 237 kStartTime + TimeDelta::FromSeconds(10))); |
238 EXPECT_TRUE(service_->Assess(extension_c_, f, &args, | 238 EXPECT_TRUE(service_->Assess(extension_c_, f, &args, |
239 kStartTime + TimeDelta::FromSeconds(15))); | 239 kStartTime + TimeDelta::FromSeconds(15))); |
240 EXPECT_TRUE(service_->Assess(extension_c_, f, &args3, | 240 EXPECT_TRUE(service_->Assess(extension_c_, f, &args3, |
241 kStartTime + TimeDelta::FromSeconds(20))); | 241 kStartTime + TimeDelta::FromSeconds(20))); |
242 EXPECT_FALSE(service_->Assess(extension_c_, f, &args, | 242 EXPECT_FALSE(service_->Assess(extension_c_, f, &args, |
243 kStartTime + TimeDelta::FromSeconds(25))); | 243 kStartTime + TimeDelta::FromSeconds(25))); |
244 EXPECT_FALSE(service_->Assess(extension_c_, f, &args3, | 244 EXPECT_FALSE(service_->Assess(extension_c_, f, &args3, |
245 kStartTime + TimeDelta::FromSeconds(30))); | 245 kStartTime + TimeDelta::FromSeconds(30))); |
246 } | 246 } |
247 | 247 |
248 TEST_F(ExtensionsQuotaServiceTest, ChainedHeuristics) { | 248 TEST_F(ExtensionsQuotaServiceTest, ChainedHeuristics) { |
249 scoped_refptr<MockFunction> f(new ChainedLimitsMockFunction("foo")); | 249 scoped_refptr<MockFunction> f(new ChainedLimitsMockFunction("foo")); |
250 ListValue args; | 250 ListValue args; |
251 args.Append(new FundamentalValue(1)); | 251 args.Append(new base::FundamentalValue(1)); |
252 | 252 |
253 // First, test that the low limit can be avoided but the higher one is hit. | 253 // First, test that the low limit can be avoided but the higher one is hit. |
254 // One event per minute for 20 minutes comes in under the sustained limit, | 254 // One event per minute for 20 minutes comes in under the sustained limit, |
255 // but is equal to the timed limit. | 255 // but is equal to the timed limit. |
256 for (int i = 0; i < 20; i++) { | 256 for (int i = 0; i < 20; i++) { |
257 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, | 257 EXPECT_TRUE(service_->Assess(extension_a_, f, &args, |
258 kStartTime + TimeDelta::FromSeconds(10 + i * 60))); | 258 kStartTime + TimeDelta::FromSeconds(10 + i * 60))); |
259 } | 259 } |
260 | 260 |
261 // This will bring us to 21 events in an hour, which is a violation. | 261 // This will bring us to 21 events in an hour, which is a violation. |
(...skipping 13 matching lines...) Expand all Loading... |
275 EXPECT_FALSE(service_->Assess(extension_b_, f, &args, | 275 EXPECT_FALSE(service_->Assess(extension_b_, f, &args, |
276 kStartTime + TimeDelta::FromMinutes(6))); | 276 kStartTime + TimeDelta::FromMinutes(6))); |
277 } | 277 } |
278 | 278 |
279 TEST_F(ExtensionsQuotaServiceTest, MultipleFunctionsDontInterfere) { | 279 TEST_F(ExtensionsQuotaServiceTest, MultipleFunctionsDontInterfere) { |
280 scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); | 280 scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); |
281 scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar")); | 281 scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar")); |
282 | 282 |
283 ListValue args_f; | 283 ListValue args_f; |
284 ListValue args_g; | 284 ListValue args_g; |
285 args_f.Append(new FundamentalValue(1)); | 285 args_f.Append(new base::FundamentalValue(1)); |
286 args_g.Append(new FundamentalValue(2)); | 286 args_g.Append(new base::FundamentalValue(2)); |
287 | 287 |
288 EXPECT_TRUE(service_->Assess(extension_a_, f, &args_f, kStartTime)); | 288 EXPECT_TRUE(service_->Assess(extension_a_, f, &args_f, kStartTime)); |
289 EXPECT_TRUE(service_->Assess(extension_a_, g, &args_g, kStartTime)); | 289 EXPECT_TRUE(service_->Assess(extension_a_, g, &args_g, kStartTime)); |
290 EXPECT_TRUE(service_->Assess(extension_a_, f, &args_f, | 290 EXPECT_TRUE(service_->Assess(extension_a_, f, &args_f, |
291 kStartTime + TimeDelta::FromSeconds(10))); | 291 kStartTime + TimeDelta::FromSeconds(10))); |
292 EXPECT_TRUE(service_->Assess(extension_a_, g, &args_g, | 292 EXPECT_TRUE(service_->Assess(extension_a_, g, &args_g, |
293 kStartTime + TimeDelta::FromSeconds(10))); | 293 kStartTime + TimeDelta::FromSeconds(10))); |
294 EXPECT_FALSE(service_->Assess(extension_a_, f, &args_f, | 294 EXPECT_FALSE(service_->Assess(extension_a_, f, &args_f, |
295 kStartTime + TimeDelta::FromSeconds(15))); | 295 kStartTime + TimeDelta::FromSeconds(15))); |
296 EXPECT_FALSE(service_->Assess(extension_a_, g, &args_g, | 296 EXPECT_FALSE(service_->Assess(extension_a_, g, &args_g, |
297 kStartTime + TimeDelta::FromSeconds(15))); | 297 kStartTime + TimeDelta::FromSeconds(15))); |
298 } | 298 } |
299 | 299 |
300 TEST_F(ExtensionsQuotaServiceTest, ViolatorsWillBeViolators) { | 300 TEST_F(ExtensionsQuotaServiceTest, ViolatorsWillBeViolators) { |
301 scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); | 301 scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); |
302 scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar")); | 302 scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar")); |
303 ListValue arg; | 303 ListValue arg; |
304 arg.Append(new FundamentalValue(1)); | 304 arg.Append(new base::FundamentalValue(1)); |
305 EXPECT_TRUE(service_->Assess(extension_a_, f, &arg, kStartTime)); | 305 EXPECT_TRUE(service_->Assess(extension_a_, f, &arg, kStartTime)); |
306 EXPECT_TRUE(service_->Assess(extension_a_, f, &arg, | 306 EXPECT_TRUE(service_->Assess(extension_a_, f, &arg, |
307 kStartTime + TimeDelta::FromSeconds(10))); | 307 kStartTime + TimeDelta::FromSeconds(10))); |
308 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, | 308 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, |
309 kStartTime + TimeDelta::FromSeconds(15))); | 309 kStartTime + TimeDelta::FromSeconds(15))); |
310 | 310 |
311 // We don't allow this extension to use quota limited functions even if they | 311 // We don't allow this extension to use quota limited functions even if they |
312 // wait a while. | 312 // wait a while. |
313 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, | 313 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, |
314 kStartTime + TimeDelta::FromDays(1))); | 314 kStartTime + TimeDelta::FromDays(1))); |
315 EXPECT_FALSE(service_->Assess(extension_a_, g, &arg, | 315 EXPECT_FALSE(service_->Assess(extension_a_, g, &arg, |
316 kStartTime + TimeDelta::FromDays(1))); | 316 kStartTime + TimeDelta::FromDays(1))); |
317 } | 317 } |
OLD | NEW |