Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(590)

Side by Side Diff: components/feature_engagement_tracker/internal/model_impl.cc

Issue 2877243002: Support IPH NotifyEvent calls before Initialize (Closed)
Patch Set: Fixed build.gn Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "components/feature_engagement_tracker/internal/model_impl.h" 5 #include "components/feature_engagement_tracker/internal/model_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 const Event* ModelImpl::GetEvent(const std::string& event_name) const { 43 const Event* ModelImpl::GetEvent(const std::string& event_name) const {
44 auto search = events_.find(event_name); 44 auto search = events_.find(event_name);
45 if (search == events_.end()) 45 if (search == events_.end())
46 return nullptr; 46 return nullptr;
47 47
48 return &search->second; 48 return &search->second;
49 } 49 }
50 50
51 void ModelImpl::IncrementEvent(const std::string& event_name, 51 void ModelImpl::IncrementEvent(const std::string& event_name,
52 uint32_t current_day) { 52 uint32_t current_day) {
53 // TODO(nyquist): Add support for pending events.
54 // TODO(nyquist): Track this event in UMA. 53 // TODO(nyquist): Track this event in UMA.
55 DCHECK(ready_); 54 DCHECK(ready_);
56 55
57 if (!storage_validator_->ShouldStore(event_name)) 56 if (!storage_validator_->ShouldStore(event_name))
58 return; 57 return;
59 58
60 Event& event = GetNonConstEvent(event_name); 59 Event& event = GetNonConstEvent(event_name);
61 for (int i = 0; i < event.events_size(); ++i) { 60 for (int i = 0; i < event.events_size(); ++i) {
62 Event_Count* event_count = event.mutable_events(i); 61 Event_Count* event_count = event.mutable_events(i);
63 DCHECK(event_count->has_day()); 62 DCHECK(event_count->has_day());
(...skipping 10 matching lines...) Expand all
74 event_count->set_day(current_day); 73 event_count->set_day(current_day);
75 event_count->set_count(1u); 74 event_count->set_count(1u);
76 store_->WriteEvent(event); 75 store_->WriteEvent(event);
77 } 76 }
78 77
79 void ModelImpl::OnStoreLoaded(const OnModelInitializationFinished& callback, 78 void ModelImpl::OnStoreLoaded(const OnModelInitializationFinished& callback,
80 uint32_t current_day, 79 uint32_t current_day,
81 bool success, 80 bool success,
82 std::unique_ptr<std::vector<Event>> events) { 81 std::unique_ptr<std::vector<Event>> events) {
83 if (!success) { 82 if (!success) {
84 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 83 callback.Run(false);
85 base::Bind(callback, false));
86 return; 84 return;
87 } 85 }
88 86
89 for (auto& event : *events) { 87 for (auto& event : *events) {
90 DCHECK_NE("", event.name()); 88 DCHECK_NE("", event.name());
91 89
92 Event new_event; 90 Event new_event;
93 for (const auto& event_count : event.events()) { 91 for (const auto& event_count : event.events()) {
94 if (!storage_validator_->ShouldKeep(event.name(), event_count.day(), 92 if (!storage_validator_->ShouldKeep(event.name(), event_count.day(),
95 current_day)) { 93 current_day)) {
(...skipping 13 matching lines...) Expand all
109 // If the number of events is not the same, overwrite DB entry. 107 // If the number of events is not the same, overwrite DB entry.
110 if (new_event.events_size() != event.events_size()) 108 if (new_event.events_size() != event.events_size())
111 store_->WriteEvent(new_event); 109 store_->WriteEvent(new_event);
112 } else { 110 } else {
113 // If there are no more activity for an Event, delete the whole event. 111 // If there are no more activity for an Event, delete the whole event.
114 store_->DeleteEvent(event.name()); 112 store_->DeleteEvent(event.name());
115 } 113 }
116 } 114 }
117 115
118 ready_ = true; 116 ready_ = true;
119 117 callback.Run(true);
120 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
121 base::Bind(callback, true));
122 } 118 }
123 119
124 Event& ModelImpl::GetNonConstEvent(const std::string& event_name) { 120 Event& ModelImpl::GetNonConstEvent(const std::string& event_name) {
125 if (events_.find(event_name) == events_.end()) { 121 if (events_.find(event_name) == events_.end()) {
126 // Event does not exist yet, so create it. 122 // Event does not exist yet, so create it.
127 events_[event_name].set_name(event_name); 123 events_[event_name].set_name(event_name);
128 store_->WriteEvent(events_[event_name]); 124 store_->WriteEvent(events_[event_name]);
129 } 125 }
130 return events_[event_name]; 126 return events_[event_name];
131 } 127 }
132 128
133 } // namespace feature_engagement_tracker 129 } // namespace feature_engagement_tracker
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698