| Index: chrome/browser/budget_service/budget_database.h
|
| diff --git a/chrome/browser/budget_service/budget_database.h b/chrome/browser/budget_service/budget_database.h
|
| index 4303bb5934ae80169355df7280de2e571d182241..0e70b34e2724be02ef610e3110ee26b562702609 100644
|
| --- a/chrome/browser/budget_service/budget_database.h
|
| +++ b/chrome/browser/budget_service/budget_database.h
|
| @@ -16,6 +16,7 @@
|
| #include "components/leveldb_proto/proto_database.h"
|
|
|
| namespace base {
|
| +class Clock;
|
| class SequencedTaskRunner;
|
| }
|
|
|
| @@ -32,13 +33,8 @@ class BudgetDatabase {
|
| // Data structure for returing the budget decay expectations to the caller.
|
| using BudgetExpectation = std::list<std::pair<double, double>>;
|
|
|
| - // Callback for the basic GetBudget call.
|
| - using GetValueCallback =
|
| - base::Callback<void(bool success,
|
| - std::unique_ptr<budget_service::Budget>)>;
|
| -
|
| // Callback for setting a budget value.
|
| - using SetValueCallback = base::Callback<void(bool success)>;
|
| + using StoreBudgetCallback = base::Callback<void(bool success)>;
|
|
|
| // Callback for getting a list of all budget chunks.
|
| using GetBudgetDetailsCallback = base::Callback<
|
| @@ -51,18 +47,25 @@ class BudgetDatabase {
|
| const scoped_refptr<base::SequencedTaskRunner>& task_runner);
|
| ~BudgetDatabase();
|
|
|
| - void GetValue(const GURL& origin, const GetValueCallback& callback);
|
| - void SetValue(const GURL& origin,
|
| - const budget_service::Budget& budget,
|
| - const SetValueCallback& callback);
|
| -
|
| // Get the full budget expectation for the origin. This will return any
|
| // debt as well as a sequence of time points and the expected budget at
|
| // those times.
|
| void GetBudgetDetails(const GURL& origin,
|
| const GetBudgetDetailsCallback& callback);
|
|
|
| + // Add budget for an origin. The caller specifies the amount, and the method
|
| + // adds the amount to the cache with the correct expiration. Callback is
|
| + // invoked only after the newly cached value is written to storage.
|
| + void AddBudget(const GURL& origin,
|
| + double amount,
|
| + const StoreBudgetCallback& callback);
|
| +
|
| private:
|
| + friend class BudgetDatabaseTest;
|
| +
|
| + // Used to allow tests to change time for testing.
|
| + void SetClockForTesting(std::unique_ptr<base::Clock> clock);
|
| +
|
| // Data structure for caching budget information.
|
| using BudgetChunks = std::vector<std::pair<double, double>>;
|
| using BudgetInfo = std::pair<double, BudgetChunks>;
|
| @@ -80,12 +83,18 @@ class BudgetDatabase {
|
| const GetBudgetDetailsCallback& callback,
|
| bool success);
|
|
|
| + void WriteCachedValuesToDatabase(const GURL& origin,
|
| + const StoreBudgetCallback& callback);
|
| +
|
| // The database for storing budget information.
|
| std::unique_ptr<leveldb_proto::ProtoDatabase<budget_service::Budget>> db_;
|
|
|
| // Cached data for the origins which have been loaded.
|
| std::unordered_map<std::string, BudgetInfo> budget_map_;
|
|
|
| + // The clock used to vend times.
|
| + std::unique_ptr<base::Clock> clock_;
|
| +
|
| base::WeakPtrFactory<BudgetDatabase> weak_ptr_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(BudgetDatabase);
|
|
|