diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-17 13:57:45 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-19 13:44:40 +0000 |
commit | 6ec7b8da05d21a3878bd21c691b41e675d74bb1c (patch) | |
tree | b87f250bc19413750b9bb9cdbf2da20ef5014820 /chromium/components/feature_engagement_tracker/internal/init_aware_model.cc | |
parent | ec02ee4181c49b61fce1c8fb99292dbb8139cc90 (diff) | |
download | qtwebengine-chromium-6ec7b8da05d21a3878bd21c691b41e675d74bb1c.tar.gz |
BASELINE: Update Chromium to 60.0.3112.70
Change-Id: I9911c2280a014d4632f254857876a395d4baed2d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/components/feature_engagement_tracker/internal/init_aware_model.cc')
-rw-r--r-- | chromium/components/feature_engagement_tracker/internal/init_aware_model.cc | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/chromium/components/feature_engagement_tracker/internal/init_aware_model.cc b/chromium/components/feature_engagement_tracker/internal/init_aware_model.cc new file mode 100644 index 00000000000..c514a705f05 --- /dev/null +++ b/chromium/components/feature_engagement_tracker/internal/init_aware_model.cc @@ -0,0 +1,65 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/feature_engagement_tracker/internal/init_aware_model.h" + +#include "base/bind.h" + +namespace feature_engagement_tracker { + +InitAwareModel::InitAwareModel(std::unique_ptr<Model> model) + : model_(std::move(model)), + initialization_complete_(false), + weak_ptr_factory_(this) { + DCHECK(model_); +} + +InitAwareModel::~InitAwareModel() = default; + +void InitAwareModel::Initialize(const OnModelInitializationFinished& callback, + uint32_t current_day) { + model_->Initialize(base::Bind(&InitAwareModel::OnInitializeComplete, + weak_ptr_factory_.GetWeakPtr(), callback), + current_day); +} + +bool InitAwareModel::IsReady() const { + return model_->IsReady(); +} + +const Event* InitAwareModel::GetEvent(const std::string& event_name) const { + return model_->GetEvent(event_name); +} + +void InitAwareModel::IncrementEvent(const std::string& event_name, + uint32_t current_day) { + if (IsReady()) { + model_->IncrementEvent(event_name, current_day); + return; + } + + if (initialization_complete_) + return; + + queued_events_.push_back(std::tie(event_name, current_day)); +} + +void InitAwareModel::OnInitializeComplete( + const OnModelInitializationFinished& callback, + bool success) { + initialization_complete_ = true; + if (success) { + for (auto& event : queued_events_) + model_->IncrementEvent(std::get<0>(event), std::get<1>(event)); + } + queued_events_.clear(); + + callback.Run(success); +} + +size_t InitAwareModel::GetQueuedEventCountForTesting() { + return queued_events_.size(); +} + +} // namespace feature_engagement_tracker |