Commit 0ff820c1 authored by Natalie Chouinard's avatar Natalie Chouinard Committed by Commit Bot

[Chromeshine] Initialize Usage Stats databases.

Initialize all ProtoDatabases on construction of UsageStatsDatabase.

Initialization is asynchronous, so in the event that a
UsageStatsDatabase function is called when the underlying
ProtoDatabases are not yet initialized, store a base::Closure in a
queue for later execution.

Bug: 931476
Change-Id: I76399c3ceb1ad92075af70d5976fa182cb8dfb45
Reviewed-on: https://chromium-review.googlesource.com/c/1474540
Commit-Queue: Natalie Chouinard <chouinard@chromium.org>
Reviewed-by: default avatarPatrick Noland <pnoland@chromium.org>
Cr-Commit-Position: refs/heads/master@{#632685}
parent 40c5fcf2
...@@ -10,9 +10,12 @@ ...@@ -10,9 +10,12 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "base/callback.h"
#include "base/containers/flat_set.h" #include "base/containers/flat_set.h"
#include "base/containers/queue.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/android/usage_stats/website_event.pb.h" #include "chrome/browser/android/usage_stats/website_event.pb.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "components/leveldb_proto/public/proto_database.h" #include "components/leveldb_proto/public/proto_database.h"
...@@ -81,6 +84,17 @@ class UsageStatsDatabase { ...@@ -81,6 +84,17 @@ class UsageStatsDatabase {
void SetTokenMappings(TokenMap mappings, StatusCallback callback); void SetTokenMappings(TokenMap mappings, StatusCallback callback);
private: private:
void InitializeDBs();
void OnWebsiteEventInitDone(bool retry,
leveldb_proto::Enums::InitStatus status);
void OnSuspensionInitDone(bool retry,
leveldb_proto::Enums::InitStatus status);
void OnTokenMappingInitDone(bool retry,
leveldb_proto::Enums::InitStatus status);
void OnUpdateEntries(StatusCallback callback, bool isSuccess); void OnUpdateEntries(StatusCallback callback, bool isSuccess);
void OnLoadEntriesForGetAllEvents( void OnLoadEntriesForGetAllEvents(
...@@ -112,6 +126,16 @@ class UsageStatsDatabase { ...@@ -112,6 +126,16 @@ class UsageStatsDatabase {
std::unique_ptr<ProtoDatabase<Suspension>> suspension_db_; std::unique_ptr<ProtoDatabase<Suspension>> suspension_db_;
std::unique_ptr<ProtoDatabase<TokenMapping>> token_mapping_db_; std::unique_ptr<ProtoDatabase<TokenMapping>> token_mapping_db_;
// Track initialization state of proto databases.
bool website_event_db_initialized_;
bool suspension_db_initialized_;
bool token_mapping_db_initialized_;
// Store callbacks for delayed execution once database is initialized.
base::queue<base::OnceClosure> website_event_db_callbacks_;
base::queue<base::OnceClosure> suspension_db_callbacks_;
base::queue<base::OnceClosure> token_mapping_db_callbacks_;
base::WeakPtrFactory<UsageStatsDatabase> weak_ptr_factory_; base::WeakPtrFactory<UsageStatsDatabase> weak_ptr_factory_;
DISALLOW_COPY_AND_ASSIGN(UsageStatsDatabase); DISALLOW_COPY_AND_ASSIGN(UsageStatsDatabase);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment