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

Side by Side Diff: google_apis/gcm/engine/gcm_store_impl.cc

Issue 1873663002: Convert //google_apis from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "google_apis/gcm/engine/gcm_store_impl.h" 5 #include "google_apis/gcm/engine/gcm_store_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 return leveldb::Slice(s.begin(), s.size()); 178 return leveldb::Slice(s.begin(), s.size());
179 } 179 }
180 180
181 } // namespace 181 } // namespace
182 182
183 class GCMStoreImpl::Backend 183 class GCMStoreImpl::Backend
184 : public base::RefCountedThreadSafe<GCMStoreImpl::Backend> { 184 : public base::RefCountedThreadSafe<GCMStoreImpl::Backend> {
185 public: 185 public:
186 Backend(const base::FilePath& path, 186 Backend(const base::FilePath& path,
187 scoped_refptr<base::SequencedTaskRunner> foreground_runner, 187 scoped_refptr<base::SequencedTaskRunner> foreground_runner,
188 scoped_ptr<Encryptor> encryptor); 188 std::unique_ptr<Encryptor> encryptor);
189 189
190 // Blocking implementations of GCMStoreImpl methods. 190 // Blocking implementations of GCMStoreImpl methods.
191 void Load(StoreOpenMode open_mode, const LoadCallback& callback); 191 void Load(StoreOpenMode open_mode, const LoadCallback& callback);
192 void Close(); 192 void Close();
193 void Destroy(const UpdateCallback& callback); 193 void Destroy(const UpdateCallback& callback);
194 void SetDeviceCredentials(uint64_t device_android_id, 194 void SetDeviceCredentials(uint64_t device_android_id,
195 uint64_t device_security_token, 195 uint64_t device_security_token,
196 const UpdateCallback& callback); 196 const UpdateCallback& callback);
197 void AddRegistration(const std::string& serialized_key, 197 void AddRegistration(const std::string& serialized_key,
198 const std::string& serialized_value, 198 const std::string& serialized_value,
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 std::set<std::string>* accounts); 255 std::set<std::string>* accounts);
256 bool LoadGServicesSettings(std::map<std::string, std::string>* settings, 256 bool LoadGServicesSettings(std::map<std::string, std::string>* settings,
257 std::string* digest); 257 std::string* digest);
258 bool LoadAccountMappingInfo(AccountMappings* account_mappings); 258 bool LoadAccountMappingInfo(AccountMappings* account_mappings);
259 bool LoadLastTokenFetchTime(base::Time* last_token_fetch_time); 259 bool LoadLastTokenFetchTime(base::Time* last_token_fetch_time);
260 bool LoadHeartbeatIntervals(std::map<std::string, int>* heartbeat_intervals); 260 bool LoadHeartbeatIntervals(std::map<std::string, int>* heartbeat_intervals);
261 bool LoadInstanceIDData(std::map<std::string, std::string>* instance_id_data); 261 bool LoadInstanceIDData(std::map<std::string, std::string>* instance_id_data);
262 262
263 const base::FilePath path_; 263 const base::FilePath path_;
264 scoped_refptr<base::SequencedTaskRunner> foreground_task_runner_; 264 scoped_refptr<base::SequencedTaskRunner> foreground_task_runner_;
265 scoped_ptr<Encryptor> encryptor_; 265 std::unique_ptr<Encryptor> encryptor_;
266 266
267 scoped_ptr<leveldb::DB> db_; 267 std::unique_ptr<leveldb::DB> db_;
268 }; 268 };
269 269
270 GCMStoreImpl::Backend::Backend( 270 GCMStoreImpl::Backend::Backend(
271 const base::FilePath& path, 271 const base::FilePath& path,
272 scoped_refptr<base::SequencedTaskRunner> foreground_task_runner, 272 scoped_refptr<base::SequencedTaskRunner> foreground_task_runner,
273 scoped_ptr<Encryptor> encryptor) 273 std::unique_ptr<Encryptor> encryptor)
274 : path_(path), 274 : path_(path),
275 foreground_task_runner_(foreground_task_runner), 275 foreground_task_runner_(foreground_task_runner),
276 encryptor_(std::move(encryptor)) {} 276 encryptor_(std::move(encryptor)) {}
277 277
278 GCMStoreImpl::Backend::~Backend() {} 278 GCMStoreImpl::Backend::~Backend() {}
279 279
280 LoadStatus GCMStoreImpl::Backend::OpenStoreAndLoadData(StoreOpenMode open_mode, 280 LoadStatus GCMStoreImpl::Backend::OpenStoreAndLoadData(StoreOpenMode open_mode,
281 LoadResult* result) { 281 LoadResult* result) {
282 LoadStatus load_status; 282 LoadStatus load_status;
283 if (db_.get()) { 283 if (db_.get()) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 if (!LoadHeartbeatIntervals(&result->heartbeat_intervals)) 334 if (!LoadHeartbeatIntervals(&result->heartbeat_intervals))
335 return LOADING_HEARTBEAT_INTERVALS_FAILED; 335 return LOADING_HEARTBEAT_INTERVALS_FAILED;
336 if (!LoadInstanceIDData(&result->instance_id_data)) 336 if (!LoadInstanceIDData(&result->instance_id_data))
337 return LOADING_INSTANCE_ID_DATA_FAILED; 337 return LOADING_INSTANCE_ID_DATA_FAILED;
338 338
339 return LOADING_SUCCEEDED; 339 return LOADING_SUCCEEDED;
340 } 340 }
341 341
342 void GCMStoreImpl::Backend::Load(StoreOpenMode open_mode, 342 void GCMStoreImpl::Backend::Load(StoreOpenMode open_mode,
343 const LoadCallback& callback) { 343 const LoadCallback& callback) {
344 scoped_ptr<LoadResult> result(new LoadResult()); 344 std::unique_ptr<LoadResult> result(new LoadResult());
345 LoadStatus load_status = OpenStoreAndLoadData(open_mode, result.get()); 345 LoadStatus load_status = OpenStoreAndLoadData(open_mode, result.get());
346 UMA_HISTOGRAM_ENUMERATION("GCM.LoadStatus", load_status, LOAD_STATUS_COUNT); 346 UMA_HISTOGRAM_ENUMERATION("GCM.LoadStatus", load_status, LOAD_STATUS_COUNT);
347 if (load_status != LOADING_SUCCEEDED) { 347 if (load_status != LOADING_SUCCEEDED) {
348 result->Reset(); 348 result->Reset();
349 result->store_does_not_exist = (load_status == STORE_DOES_NOT_EXIST); 349 result->store_does_not_exist = (load_status == STORE_DOES_NOT_EXIST);
350 foreground_task_runner_->PostTask(FROM_HERE, 350 foreground_task_runner_->PostTask(FROM_HERE,
351 base::Bind(callback, 351 base::Bind(callback,
352 base::Passed(&result))); 352 base::Passed(&result)));
353 return; 353 return;
354 } 354 }
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 687
688 void GCMStoreImpl::Backend::SetGServicesSettings( 688 void GCMStoreImpl::Backend::SetGServicesSettings(
689 const std::map<std::string, std::string>& settings, 689 const std::map<std::string, std::string>& settings,
690 const std::string& settings_digest, 690 const std::string& settings_digest,
691 const UpdateCallback& callback) { 691 const UpdateCallback& callback) {
692 leveldb::WriteBatch write_batch; 692 leveldb::WriteBatch write_batch;
693 693
694 // Remove all existing settings. 694 // Remove all existing settings.
695 leveldb::ReadOptions read_options; 695 leveldb::ReadOptions read_options;
696 read_options.verify_checksums = true; 696 read_options.verify_checksums = true;
697 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 697 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
698 for (iter->Seek(MakeSlice(kGServiceSettingKeyStart)); 698 for (iter->Seek(MakeSlice(kGServiceSettingKeyStart));
699 iter->Valid() && iter->key().ToString() < kGServiceSettingKeyEnd; 699 iter->Valid() && iter->key().ToString() < kGServiceSettingKeyEnd;
700 iter->Next()) { 700 iter->Next()) {
701 write_batch.Delete(iter->key()); 701 write_batch.Delete(iter->key());
702 } 702 }
703 703
704 // Add the new settings. 704 // Add the new settings.
705 for (std::map<std::string, std::string>::const_iterator iter = 705 for (std::map<std::string, std::string>::const_iterator iter =
706 settings.begin(); 706 settings.begin();
707 iter != settings.end(); ++iter) { 707 iter != settings.end(); ++iter) {
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 932
933 LOG(ERROR) << "Error reading credentials from store."; 933 LOG(ERROR) << "Error reading credentials from store.";
934 return false; 934 return false;
935 } 935 }
936 936
937 bool GCMStoreImpl::Backend::LoadRegistrations( 937 bool GCMStoreImpl::Backend::LoadRegistrations(
938 std::map<std::string, std::string>* registrations) { 938 std::map<std::string, std::string>* registrations) {
939 leveldb::ReadOptions read_options; 939 leveldb::ReadOptions read_options;
940 read_options.verify_checksums = true; 940 read_options.verify_checksums = true;
941 941
942 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 942 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
943 for (iter->Seek(MakeSlice(kRegistrationKeyStart)); 943 for (iter->Seek(MakeSlice(kRegistrationKeyStart));
944 iter->Valid() && iter->key().ToString() < kRegistrationKeyEnd; 944 iter->Valid() && iter->key().ToString() < kRegistrationKeyEnd;
945 iter->Next()) { 945 iter->Next()) {
946 leveldb::Slice s = iter->value(); 946 leveldb::Slice s = iter->value();
947 if (s.size() <= 1) { 947 if (s.size() <= 1) {
948 LOG(ERROR) << "Error reading registration with key " << s.ToString(); 948 LOG(ERROR) << "Error reading registration with key " << s.ToString();
949 return false; 949 return false;
950 } 950 }
951 std::string app_id = ParseRegistrationKey(iter->key().ToString()); 951 std::string app_id = ParseRegistrationKey(iter->key().ToString());
952 DVLOG(1) << "Found registration with app id " << app_id; 952 DVLOG(1) << "Found registration with app id " << app_id;
953 (*registrations)[app_id] = iter->value().ToString(); 953 (*registrations)[app_id] = iter->value().ToString();
954 } 954 }
955 955
956 return true; 956 return true;
957 } 957 }
958 958
959 bool GCMStoreImpl::Backend::LoadIncomingMessages( 959 bool GCMStoreImpl::Backend::LoadIncomingMessages(
960 std::vector<std::string>* incoming_messages) { 960 std::vector<std::string>* incoming_messages) {
961 leveldb::ReadOptions read_options; 961 leveldb::ReadOptions read_options;
962 read_options.verify_checksums = true; 962 read_options.verify_checksums = true;
963 963
964 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 964 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
965 for (iter->Seek(MakeSlice(kIncomingMsgKeyStart)); 965 for (iter->Seek(MakeSlice(kIncomingMsgKeyStart));
966 iter->Valid() && iter->key().ToString() < kIncomingMsgKeyEnd; 966 iter->Valid() && iter->key().ToString() < kIncomingMsgKeyEnd;
967 iter->Next()) { 967 iter->Next()) {
968 leveldb::Slice s = iter->value(); 968 leveldb::Slice s = iter->value();
969 if (s.empty()) { 969 if (s.empty()) {
970 LOG(ERROR) << "Error reading incoming message with key " 970 LOG(ERROR) << "Error reading incoming message with key "
971 << iter->key().ToString(); 971 << iter->key().ToString();
972 return false; 972 return false;
973 } 973 }
974 DVLOG(1) << "Found incoming message with id " << s.ToString(); 974 DVLOG(1) << "Found incoming message with id " << s.ToString();
975 incoming_messages->push_back(s.ToString()); 975 incoming_messages->push_back(s.ToString());
976 } 976 }
977 977
978 return true; 978 return true;
979 } 979 }
980 980
981 bool GCMStoreImpl::Backend::LoadOutgoingMessages( 981 bool GCMStoreImpl::Backend::LoadOutgoingMessages(
982 OutgoingMessageMap* outgoing_messages) { 982 OutgoingMessageMap* outgoing_messages) {
983 leveldb::ReadOptions read_options; 983 leveldb::ReadOptions read_options;
984 read_options.verify_checksums = true; 984 read_options.verify_checksums = true;
985 985
986 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 986 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
987 for (iter->Seek(MakeSlice(kOutgoingMsgKeyStart)); 987 for (iter->Seek(MakeSlice(kOutgoingMsgKeyStart));
988 iter->Valid() && iter->key().ToString() < kOutgoingMsgKeyEnd; 988 iter->Valid() && iter->key().ToString() < kOutgoingMsgKeyEnd;
989 iter->Next()) { 989 iter->Next()) {
990 leveldb::Slice s = iter->value(); 990 leveldb::Slice s = iter->value();
991 if (s.size() <= 1) { 991 if (s.size() <= 1) {
992 LOG(ERROR) << "Error reading incoming message with key " << s.ToString(); 992 LOG(ERROR) << "Error reading incoming message with key " << s.ToString();
993 return false; 993 return false;
994 } 994 }
995 uint8_t tag = iter->value().data()[0]; 995 uint8_t tag = iter->value().data()[0];
996 std::string id = ParseOutgoingKey(iter->key().ToString()); 996 std::string id = ParseOutgoingKey(iter->key().ToString());
997 scoped_ptr<google::protobuf::MessageLite> message( 997 std::unique_ptr<google::protobuf::MessageLite> message(
998 BuildProtobufFromTag(tag)); 998 BuildProtobufFromTag(tag));
999 if (!message.get() || 999 if (!message.get() ||
1000 !message->ParseFromString(iter->value().ToString().substr(1))) { 1000 !message->ParseFromString(iter->value().ToString().substr(1))) {
1001 LOG(ERROR) << "Failed to parse outgoing message with id " << id 1001 LOG(ERROR) << "Failed to parse outgoing message with id " << id
1002 << " and tag " << tag; 1002 << " and tag " << tag;
1003 return false; 1003 return false;
1004 } 1004 }
1005 DVLOG(1) << "Found outgoing message with id " << id << " of type " 1005 DVLOG(1) << "Found outgoing message with id " << id << " of type "
1006 << base::UintToString(tag); 1006 << base::UintToString(tag);
1007 (*outgoing_messages)[id] = make_linked_ptr(message.release()); 1007 (*outgoing_messages)[id] = make_linked_ptr(message.release());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 return true; 1042 return true;
1043 } 1043 }
1044 1044
1045 bool GCMStoreImpl::Backend::LoadGServicesSettings( 1045 bool GCMStoreImpl::Backend::LoadGServicesSettings(
1046 std::map<std::string, std::string>* settings, 1046 std::map<std::string, std::string>* settings,
1047 std::string* digest) { 1047 std::string* digest) {
1048 leveldb::ReadOptions read_options; 1048 leveldb::ReadOptions read_options;
1049 read_options.verify_checksums = true; 1049 read_options.verify_checksums = true;
1050 1050
1051 // Load all of the GServices settings. 1051 // Load all of the GServices settings.
1052 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 1052 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
1053 for (iter->Seek(MakeSlice(kGServiceSettingKeyStart)); 1053 for (iter->Seek(MakeSlice(kGServiceSettingKeyStart));
1054 iter->Valid() && iter->key().ToString() < kGServiceSettingKeyEnd; 1054 iter->Valid() && iter->key().ToString() < kGServiceSettingKeyEnd;
1055 iter->Next()) { 1055 iter->Next()) {
1056 std::string value = iter->value().ToString(); 1056 std::string value = iter->value().ToString();
1057 if (value.empty()) { 1057 if (value.empty()) {
1058 LOG(ERROR) << "Error reading GService Settings " << value; 1058 LOG(ERROR) << "Error reading GService Settings " << value;
1059 return false; 1059 return false;
1060 } 1060 }
1061 std::string id = ParseGServiceSettingKey(iter->key().ToString()); 1061 std::string id = ParseGServiceSettingKey(iter->key().ToString());
1062 (*settings)[id] = value; 1062 (*settings)[id] = value;
1063 DVLOG(1) << "Found G Service setting with key: " << id 1063 DVLOG(1) << "Found G Service setting with key: " << id
1064 << ", and value: " << value; 1064 << ", and value: " << value;
1065 } 1065 }
1066 1066
1067 // Load the settings digest. It's ok if it is empty. 1067 // Load the settings digest. It's ok if it is empty.
1068 db_->Get(read_options, MakeSlice(kGServiceSettingsDigestKey), digest); 1068 db_->Get(read_options, MakeSlice(kGServiceSettingsDigestKey), digest);
1069 1069
1070 return true; 1070 return true;
1071 } 1071 }
1072 1072
1073 bool GCMStoreImpl::Backend::LoadAccountMappingInfo( 1073 bool GCMStoreImpl::Backend::LoadAccountMappingInfo(
1074 AccountMappings* account_mappings) { 1074 AccountMappings* account_mappings) {
1075 leveldb::ReadOptions read_options; 1075 leveldb::ReadOptions read_options;
1076 read_options.verify_checksums = true; 1076 read_options.verify_checksums = true;
1077 1077
1078 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 1078 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
1079 for (iter->Seek(MakeSlice(kAccountKeyStart)); 1079 for (iter->Seek(MakeSlice(kAccountKeyStart));
1080 iter->Valid() && iter->key().ToString() < kAccountKeyEnd; 1080 iter->Valid() && iter->key().ToString() < kAccountKeyEnd;
1081 iter->Next()) { 1081 iter->Next()) {
1082 AccountMapping account_mapping; 1082 AccountMapping account_mapping;
1083 account_mapping.account_id = ParseAccountKey(iter->key().ToString()); 1083 account_mapping.account_id = ParseAccountKey(iter->key().ToString());
1084 if (!account_mapping.ParseFromString(iter->value().ToString())) { 1084 if (!account_mapping.ParseFromString(iter->value().ToString())) {
1085 DVLOG(1) << "Failed to parse account info with ID: " 1085 DVLOG(1) << "Failed to parse account info with ID: "
1086 << account_mapping.account_id; 1086 << account_mapping.account_id;
1087 return false; 1087 return false;
1088 } 1088 }
(...skipping 23 matching lines...) Expand all
1112 *last_token_fetch_time = base::Time::FromInternalValue(time_internal); 1112 *last_token_fetch_time = base::Time::FromInternalValue(time_internal);
1113 1113
1114 return true; 1114 return true;
1115 } 1115 }
1116 1116
1117 bool GCMStoreImpl::Backend::LoadHeartbeatIntervals( 1117 bool GCMStoreImpl::Backend::LoadHeartbeatIntervals(
1118 std::map<std::string, int>* heartbeat_intervals) { 1118 std::map<std::string, int>* heartbeat_intervals) {
1119 leveldb::ReadOptions read_options; 1119 leveldb::ReadOptions read_options;
1120 read_options.verify_checksums = true; 1120 read_options.verify_checksums = true;
1121 1121
1122 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 1122 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
1123 for (iter->Seek(MakeSlice(kHeartbeatKeyStart)); 1123 for (iter->Seek(MakeSlice(kHeartbeatKeyStart));
1124 iter->Valid() && iter->key().ToString() < kHeartbeatKeyEnd; 1124 iter->Valid() && iter->key().ToString() < kHeartbeatKeyEnd;
1125 iter->Next()) { 1125 iter->Next()) {
1126 std::string scope = ParseHeartbeatKey(iter->key().ToString()); 1126 std::string scope = ParseHeartbeatKey(iter->key().ToString());
1127 int interval_ms; 1127 int interval_ms;
1128 if (!base::StringToInt(iter->value().ToString(), &interval_ms)) { 1128 if (!base::StringToInt(iter->value().ToString(), &interval_ms)) {
1129 DVLOG(1) << "Failed to parse heartbeat interval info with scope: " 1129 DVLOG(1) << "Failed to parse heartbeat interval info with scope: "
1130 << scope; 1130 << scope;
1131 return false; 1131 return false;
1132 } 1132 }
1133 DVLOG(1) << "Found heartbeat interval with scope: " << scope 1133 DVLOG(1) << "Found heartbeat interval with scope: " << scope
1134 << " interval: " << interval_ms << "ms."; 1134 << " interval: " << interval_ms << "ms.";
1135 (*heartbeat_intervals)[scope] = interval_ms; 1135 (*heartbeat_intervals)[scope] = interval_ms;
1136 } 1136 }
1137 1137
1138 return true; 1138 return true;
1139 } 1139 }
1140 1140
1141 bool GCMStoreImpl::Backend::LoadInstanceIDData( 1141 bool GCMStoreImpl::Backend::LoadInstanceIDData(
1142 std::map<std::string, std::string>* instance_id_data) { 1142 std::map<std::string, std::string>* instance_id_data) {
1143 leveldb::ReadOptions read_options; 1143 leveldb::ReadOptions read_options;
1144 read_options.verify_checksums = true; 1144 read_options.verify_checksums = true;
1145 1145
1146 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options)); 1146 std::unique_ptr<leveldb::Iterator> iter(db_->NewIterator(read_options));
1147 for (iter->Seek(MakeSlice(kInstanceIDKeyStart)); 1147 for (iter->Seek(MakeSlice(kInstanceIDKeyStart));
1148 iter->Valid() && iter->key().ToString() < kInstanceIDKeyEnd; 1148 iter->Valid() && iter->key().ToString() < kInstanceIDKeyEnd;
1149 iter->Next()) { 1149 iter->Next()) {
1150 leveldb::Slice s = iter->value(); 1150 leveldb::Slice s = iter->value();
1151 if (s.size() <= 1) { 1151 if (s.size() <= 1) {
1152 LOG(ERROR) << "Error reading IID data with key " << s.ToString(); 1152 LOG(ERROR) << "Error reading IID data with key " << s.ToString();
1153 return false; 1153 return false;
1154 } 1154 }
1155 std::string app_id = ParseInstanceIDKey(iter->key().ToString()); 1155 std::string app_id = ParseInstanceIDKey(iter->key().ToString());
1156 DVLOG(1) << "Found IID data with app id " << app_id; 1156 DVLOG(1) << "Found IID data with app id " << app_id;
1157 (*instance_id_data)[app_id] = s.ToString(); 1157 (*instance_id_data)[app_id] = s.ToString();
1158 } 1158 }
1159 1159
1160 return true; 1160 return true;
1161 } 1161 }
1162 1162
1163 GCMStoreImpl::GCMStoreImpl( 1163 GCMStoreImpl::GCMStoreImpl(
1164 const base::FilePath& path, 1164 const base::FilePath& path,
1165 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner, 1165 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner,
1166 scoped_ptr<Encryptor> encryptor) 1166 std::unique_ptr<Encryptor> encryptor)
1167 : backend_(new Backend(path, 1167 : backend_(new Backend(path,
1168 base::ThreadTaskRunnerHandle::Get(), 1168 base::ThreadTaskRunnerHandle::Get(),
1169 std::move(encryptor))), 1169 std::move(encryptor))),
1170 blocking_task_runner_(blocking_task_runner), 1170 blocking_task_runner_(blocking_task_runner),
1171 weak_ptr_factory_(this) {} 1171 weak_ptr_factory_(this) {}
1172 1172
1173 GCMStoreImpl::~GCMStoreImpl() {} 1173 GCMStoreImpl::~GCMStoreImpl() {}
1174 1174
1175 void GCMStoreImpl::Load(StoreOpenMode open_mode, const LoadCallback& callback) { 1175 void GCMStoreImpl::Load(StoreOpenMode open_mode, const LoadCallback& callback) {
1176 blocking_task_runner_->PostTask( 1176 blocking_task_runner_->PostTask(
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 blocking_task_runner_->PostTask( 1417 blocking_task_runner_->PostTask(
1418 FROM_HERE, 1418 FROM_HERE,
1419 base::Bind(&GCMStoreImpl::Backend::SetValue, 1419 base::Bind(&GCMStoreImpl::Backend::SetValue,
1420 backend_, 1420 backend_,
1421 key, 1421 key,
1422 value, 1422 value,
1423 callback)); 1423 callback));
1424 } 1424 }
1425 1425
1426 void GCMStoreImpl::LoadContinuation(const LoadCallback& callback, 1426 void GCMStoreImpl::LoadContinuation(const LoadCallback& callback,
1427 scoped_ptr<LoadResult> result) { 1427 std::unique_ptr<LoadResult> result) {
1428 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. 1428 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed.
1429 tracked_objects::ScopedTracker tracking_profile( 1429 tracked_objects::ScopedTracker tracking_profile(
1430 FROM_HERE_WITH_EXPLICIT_FUNCTION( 1430 FROM_HERE_WITH_EXPLICIT_FUNCTION(
1431 "477117 GCMStoreImpl::LoadContinuation")); 1431 "477117 GCMStoreImpl::LoadContinuation"));
1432 if (!result->success) { 1432 if (!result->success) {
1433 callback.Run(std::move(result)); 1433 callback.Run(std::move(result));
1434 return; 1434 return;
1435 } 1435 }
1436 int num_throttled_apps = 0; 1436 int num_throttled_apps = 0;
1437 for (OutgoingMessageMap::const_iterator 1437 for (OutgoingMessageMap::const_iterator
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 removed_message_counts.begin(); 1474 removed_message_counts.begin();
1475 iter != removed_message_counts.end(); ++iter) { 1475 iter != removed_message_counts.end(); ++iter) {
1476 DCHECK_NE(app_message_counts_.count(iter->first), 0U); 1476 DCHECK_NE(app_message_counts_.count(iter->first), 0U);
1477 app_message_counts_[iter->first] -= iter->second; 1477 app_message_counts_[iter->first] -= iter->second;
1478 DCHECK_GE(app_message_counts_[iter->first], 0); 1478 DCHECK_GE(app_message_counts_[iter->first], 0);
1479 } 1479 }
1480 callback.Run(true); 1480 callback.Run(true);
1481 } 1481 }
1482 1482
1483 } // namespace gcm 1483 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698