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

Side by Side Diff: services/catalog/instance.cc

Issue 2000803003: Use std::unique_ptr for base::DictionaryValue and base::ListValue's internal store. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix various builds. Created 4 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "services/catalog/instance.h" 5 #include "services/catalog/instance.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "services/catalog/entry.h" 8 #include "services/catalog/entry.h"
9 #include "services/catalog/manifest_provider.h" 9 #include "services/catalog/manifest_provider.h"
10 #include "services/catalog/reader.h" 10 #include "services/catalog/reader.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 // Instance, private: 138 // Instance, private:
139 139
140 void Instance::DeserializeCatalog() { 140 void Instance::DeserializeCatalog() {
141 DCHECK(system_cache_); 141 DCHECK(system_cache_);
142 if (!store_) 142 if (!store_)
143 return; 143 return;
144 const base::ListValue* catalog = store_->GetStore(); 144 const base::ListValue* catalog = store_->GetStore();
145 CHECK(catalog); 145 CHECK(catalog);
146 // TODO(sky): make this handle aliases. 146 // TODO(sky): make this handle aliases.
147 // TODO(beng): implement this properly! 147 // TODO(beng): implement this properly!
148 for (auto it = catalog->begin(); it != catalog->end(); ++it) { 148 for (const auto& v : *catalog) {
149 const base::DictionaryValue* dictionary = nullptr; 149 const base::DictionaryValue* dictionary = nullptr;
150 const base::Value* v = *it;
151 CHECK(v->GetAsDictionary(&dictionary)); 150 CHECK(v->GetAsDictionary(&dictionary));
152 std::unique_ptr<Entry> entry = Entry::Deserialize(*dictionary); 151 std::unique_ptr<Entry> entry = Entry::Deserialize(*dictionary);
153 // TODO(beng): user catalog. 152 // TODO(beng): user catalog.
154 if (entry) 153 if (entry)
155 (*system_cache_)[entry->name()] = std::move(entry); 154 (*system_cache_)[entry->name()] = std::move(entry);
156 } 155 }
157 } 156 }
158 157
159 void Instance::SerializeCatalog() { 158 void Instance::SerializeCatalog() {
160 DCHECK(system_cache_); 159 DCHECK(system_cache_);
161 std::unique_ptr<base::ListValue> catalog(new base::ListValue); 160 std::unique_ptr<base::ListValue> catalog(new base::ListValue);
162 // TODO(beng): user catalog. 161 // TODO(beng): user catalog.
163 for (const auto& entry : *system_cache_) 162 for (const auto& entry : *system_cache_)
164 catalog->Append(entry.second->Serialize()); 163 catalog->Append(entry.second->Serialize());
165 if (store_) 164 if (store_)
166 store_->UpdateStore(std::move(catalog)); 165 store_->UpdateStore(std::move(catalog));
167 } 166 }
168 167
169 // static 168 // static
170 void Instance::OnReadManifest(base::WeakPtr<Instance> instance, 169 void Instance::OnReadManifest(base::WeakPtr<Instance> instance,
171 const std::string& mojo_name, 170 const std::string& mojo_name,
172 const ResolveMojoNameCallback& callback, 171 const ResolveMojoNameCallback& callback,
173 shell::mojom::ResolveResultPtr result) { 172 shell::mojom::ResolveResultPtr result) {
174 callback.Run(std::move(result)); 173 callback.Run(std::move(result));
175 if (instance) 174 if (instance)
176 instance->SerializeCatalog(); 175 instance->SerializeCatalog();
177 } 176 }
178 177
179 } // namespace catalog 178 } // namespace catalog
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698