| 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 |