| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/process.h" | 6 #include "base/process.h" |
| 7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "chrome/browser/extensions/extension_function.h" | 9 #include "chrome/browser/extensions/extension_function.h" |
| 10 #include "chrome/browser/extensions/extensions_quota_service.h" | 10 #include "chrome/browser/extensions/extensions_quota_service.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 }; | 49 }; |
| 50 | 50 |
| 51 class MockMapper : public QuotaLimitHeuristic::BucketMapper { | 51 class MockMapper : public QuotaLimitHeuristic::BucketMapper { |
| 52 public: | 52 public: |
| 53 virtual void GetBucketsForArgs(const ListValue* args, BucketList* buckets) {} | 53 virtual void GetBucketsForArgs(const ListValue* args, BucketList* buckets) {} |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 class MockFunction : public ExtensionFunction { | 56 class MockFunction : public ExtensionFunction { |
| 57 public: | 57 public: |
| 58 explicit MockFunction(const std::string& name) { set_name(name); } | 58 explicit MockFunction(const std::string& name) { set_name(name); } |
| 59 |
| 59 virtual void SetArgs(const ListValue* args) OVERRIDE {} | 60 virtual void SetArgs(const ListValue* args) OVERRIDE {} |
| 60 virtual const std::string GetError() OVERRIDE { return std::string(); } | 61 virtual const std::string GetError() OVERRIDE { return std::string(); } |
| 61 virtual void SetError(const std::string& error) OVERRIDE {} | 62 virtual void SetError(const std::string& error) OVERRIDE {} |
| 62 virtual void Run() OVERRIDE {} | 63 virtual void Run() OVERRIDE {} |
| 63 virtual void Destruct() const OVERRIDE { delete this; } | 64 virtual void Destruct() const OVERRIDE { delete this; } |
| 64 virtual bool RunImpl() OVERRIDE { return true; } | 65 virtual bool RunImpl() OVERRIDE { return true; } |
| 65 virtual void SendResponse(bool) OVERRIDE { } | 66 virtual void SendResponse(bool) OVERRIDE { } |
| 67 |
| 68 protected: |
| 69 virtual ~MockFunction() {} |
| 66 }; | 70 }; |
| 67 | 71 |
| 68 class TimedLimitMockFunction : public MockFunction { | 72 class TimedLimitMockFunction : public MockFunction { |
| 69 public: | 73 public: |
| 70 explicit TimedLimitMockFunction(const std::string& name) | 74 explicit TimedLimitMockFunction(const std::string& name) |
| 71 : MockFunction(name) {} | 75 : MockFunction(name) {} |
| 72 virtual void GetQuotaLimitHeuristics( | 76 virtual void GetQuotaLimitHeuristics( |
| 73 QuotaLimitHeuristics* heuristics) const { | 77 QuotaLimitHeuristics* heuristics) const { |
| 74 heuristics->push_back(new TimedLimit(k2PerMinute, new Mapper())); | 78 heuristics->push_back(new TimedLimit(k2PerMinute, new Mapper())); |
| 75 } | 79 } |
| 80 |
| 81 private: |
| 82 virtual ~TimedLimitMockFunction() {} |
| 76 }; | 83 }; |
| 77 | 84 |
| 78 class ChainedLimitsMockFunction : public MockFunction { | 85 class ChainedLimitsMockFunction : public MockFunction { |
| 79 public: | 86 public: |
| 80 explicit ChainedLimitsMockFunction(const std::string& name) | 87 explicit ChainedLimitsMockFunction(const std::string& name) |
| 81 : MockFunction(name) {} | 88 : MockFunction(name) {} |
| 82 virtual void GetQuotaLimitHeuristics( | 89 virtual void GetQuotaLimitHeuristics( |
| 83 QuotaLimitHeuristics* heuristics) const { | 90 QuotaLimitHeuristics* heuristics) const { |
| 84 // No more than 2 per minute sustained over 5 minutes. | 91 // No more than 2 per minute sustained over 5 minutes. |
| 85 heuristics->push_back(new SustainedLimit(TimeDelta::FromMinutes(5), | 92 heuristics->push_back(new SustainedLimit(TimeDelta::FromMinutes(5), |
| 86 k2PerMinute, new Mapper())); | 93 k2PerMinute, new Mapper())); |
| 87 // No more than 20 per hour. | 94 // No more than 20 per hour. |
| 88 heuristics->push_back(new TimedLimit(k20PerHour, new Mapper())); | 95 heuristics->push_back(new TimedLimit(k20PerHour, new Mapper())); |
| 89 } | 96 } |
| 97 |
| 98 private: |
| 99 virtual ~ChainedLimitsMockFunction() {} |
| 90 }; | 100 }; |
| 91 | 101 |
| 92 class FrozenMockFunction : public MockFunction { | 102 class FrozenMockFunction : public MockFunction { |
| 93 public: | 103 public: |
| 94 explicit FrozenMockFunction(const std::string& name) : MockFunction(name) {} | 104 explicit FrozenMockFunction(const std::string& name) : MockFunction(name) {} |
| 95 virtual void GetQuotaLimitHeuristics( | 105 virtual void GetQuotaLimitHeuristics( |
| 96 QuotaLimitHeuristics* heuristics) const { | 106 QuotaLimitHeuristics* heuristics) const { |
| 97 heuristics->push_back(new TimedLimit(kFrozenConfig, new Mapper())); | 107 heuristics->push_back(new TimedLimit(kFrozenConfig, new Mapper())); |
| 98 } | 108 } |
| 109 |
| 110 private: |
| 111 virtual ~FrozenMockFunction() {} |
| 99 }; | 112 }; |
| 100 } // namespace | 113 } // namespace |
| 101 | 114 |
| 102 class ExtensionsQuotaServiceTest : public testing::Test { | 115 class ExtensionsQuotaServiceTest : public testing::Test { |
| 103 public: | 116 public: |
| 104 ExtensionsQuotaServiceTest() | 117 ExtensionsQuotaServiceTest() |
| 105 : extension_a_("a"), | 118 : extension_a_("a"), |
| 106 extension_b_("b"), | 119 extension_b_("b"), |
| 107 extension_c_("c"), | 120 extension_c_("c"), |
| 108 loop_(), | 121 loop_(), |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, | 323 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, |
| 311 kStartTime + TimeDelta::FromSeconds(15))); | 324 kStartTime + TimeDelta::FromSeconds(15))); |
| 312 | 325 |
| 313 // We don't allow this extension to use quota limited functions even if they | 326 // We don't allow this extension to use quota limited functions even if they |
| 314 // wait a while. | 327 // wait a while. |
| 315 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, | 328 EXPECT_FALSE(service_->Assess(extension_a_, f, &arg, |
| 316 kStartTime + TimeDelta::FromDays(1))); | 329 kStartTime + TimeDelta::FromDays(1))); |
| 317 EXPECT_FALSE(service_->Assess(extension_a_, g, &arg, | 330 EXPECT_FALSE(service_->Assess(extension_a_, g, &arg, |
| 318 kStartTime + TimeDelta::FromDays(1))); | 331 kStartTime + TimeDelta::FromDays(1))); |
| 319 } | 332 } |
| OLD | NEW |