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

Side by Side Diff: net/ssl/default_channel_id_store_unittest.cc

Issue 2259823002: Re-write many calls to WrapUnique() with MakeUnique() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 3 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
« no previous file with comments | « net/spdy/spdy_test_util_common.cc ('k') | net/ssl/ssl_platform_key_chromecast.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "net/ssl/default_channel_id_store.h" 5 #include "net/ssl/default_channel_id_store.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 95
96 void MockPersistentStore::Load(const LoadedCallback& loaded_callback) { 96 void MockPersistentStore::Load(const LoadedCallback& loaded_callback) {
97 std::unique_ptr< 97 std::unique_ptr<
98 std::vector<std::unique_ptr<DefaultChannelIDStore::ChannelID>>> 98 std::vector<std::unique_ptr<DefaultChannelIDStore::ChannelID>>>
99 channel_ids( 99 channel_ids(
100 new std::vector<std::unique_ptr<DefaultChannelIDStore::ChannelID>>()); 100 new std::vector<std::unique_ptr<DefaultChannelIDStore::ChannelID>>());
101 ChannelIDMap::iterator it; 101 ChannelIDMap::iterator it;
102 102
103 for (it = channel_ids_.begin(); it != channel_ids_.end(); ++it) { 103 for (it = channel_ids_.begin(); it != channel_ids_.end(); ++it) {
104 channel_ids->push_back( 104 channel_ids->push_back(
105 base::WrapUnique(new DefaultChannelIDStore::ChannelID(it->second))); 105 base::MakeUnique<DefaultChannelIDStore::ChannelID>(it->second));
106 } 106 }
107 107
108 base::ThreadTaskRunnerHandle::Get()->PostTask( 108 base::ThreadTaskRunnerHandle::Get()->PostTask(
109 FROM_HERE, base::Bind(loaded_callback, base::Passed(&channel_ids))); 109 FROM_HERE, base::Bind(loaded_callback, base::Passed(&channel_ids)));
110 } 110 }
111 111
112 void MockPersistentStore::AddChannelID( 112 void MockPersistentStore::AddChannelID(
113 const DefaultChannelIDStore::ChannelID& channel_id) { 113 const DefaultChannelIDStore::ChannelID& channel_id) {
114 channel_ids_[channel_id.server_identifier()] = channel_id; 114 channel_ids_[channel_id.server_identifier()] = channel_id;
115 } 115 }
(...skipping 22 matching lines...) Expand all
138 138
139 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID( 139 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID(
140 "google.com", base::Time(), crypto::ECPrivateKey::Create())); 140 "google.com", base::Time(), crypto::ECPrivateKey::Create()));
141 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID( 141 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID(
142 "verisign.com", base::Time(), crypto::ECPrivateKey::Create())); 142 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
143 143
144 // Make sure channel_ids load properly. 144 // Make sure channel_ids load properly.
145 DefaultChannelIDStore store(persistent_store.get()); 145 DefaultChannelIDStore store(persistent_store.get());
146 // Load has not occurred yet. 146 // Load has not occurred yet.
147 EXPECT_EQ(0, store.GetChannelIDCount()); 147 EXPECT_EQ(0, store.GetChannelIDCount());
148 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 148 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
149 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()))); 149 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
150 // Wait for load & queued set task. 150 // Wait for load & queued set task.
151 base::RunLoop().RunUntilIdle(); 151 base::RunLoop().RunUntilIdle();
152 EXPECT_EQ(2, store.GetChannelIDCount()); 152 EXPECT_EQ(2, store.GetChannelIDCount());
153 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 153 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
154 "twitter.com", base::Time(), crypto::ECPrivateKey::Create()))); 154 "twitter.com", base::Time(), crypto::ECPrivateKey::Create()));
155 // Set should be synchronous now that load is done. 155 // Set should be synchronous now that load is done.
156 EXPECT_EQ(3, store.GetChannelIDCount()); 156 EXPECT_EQ(3, store.GetChannelIDCount());
157 } 157 }
158 158
159 //TODO(mattm): add more tests of without a persistent store? 159 //TODO(mattm): add more tests of without a persistent store?
160 TEST(DefaultChannelIDStoreTest, TestSettingAndGetting) { 160 TEST(DefaultChannelIDStoreTest, TestSettingAndGetting) {
161 // No persistent store, all calls will be synchronous. 161 // No persistent store, all calls will be synchronous.
162 DefaultChannelIDStore store(NULL); 162 DefaultChannelIDStore store(NULL);
163 std::unique_ptr<crypto::ECPrivateKey> expected_key( 163 std::unique_ptr<crypto::ECPrivateKey> expected_key(
164 crypto::ECPrivateKey::Create()); 164 crypto::ECPrivateKey::Create());
(...skipping 13 matching lines...) Expand all
178 } 178 }
179 179
180 TEST(DefaultChannelIDStoreTest, TestDuplicateChannelIds) { 180 TEST(DefaultChannelIDStoreTest, TestDuplicateChannelIds) {
181 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 181 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
182 DefaultChannelIDStore store(persistent_store.get()); 182 DefaultChannelIDStore store(persistent_store.get());
183 std::unique_ptr<crypto::ECPrivateKey> expected_key( 183 std::unique_ptr<crypto::ECPrivateKey> expected_key(
184 crypto::ECPrivateKey::Create()); 184 crypto::ECPrivateKey::Create());
185 185
186 std::unique_ptr<crypto::ECPrivateKey> key; 186 std::unique_ptr<crypto::ECPrivateKey> key;
187 EXPECT_EQ(0, store.GetChannelIDCount()); 187 EXPECT_EQ(0, store.GetChannelIDCount());
188 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 188 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
189 "verisign.com", base::Time::FromInternalValue(123), 189 "verisign.com", base::Time::FromInternalValue(123),
190 crypto::ECPrivateKey::Create()))); 190 crypto::ECPrivateKey::Create()));
191 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 191 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
192 "verisign.com", base::Time::FromInternalValue(456), 192 "verisign.com", base::Time::FromInternalValue(456),
193 expected_key->Copy()))); 193 expected_key->Copy()));
194 194
195 // Wait for load & queued set tasks. 195 // Wait for load & queued set tasks.
196 base::RunLoop().RunUntilIdle(); 196 base::RunLoop().RunUntilIdle();
197 EXPECT_EQ(1, store.GetChannelIDCount()); 197 EXPECT_EQ(1, store.GetChannelIDCount());
198 EXPECT_EQ(OK, store.GetChannelID("verisign.com", &key, 198 EXPECT_EQ(OK, store.GetChannelID("verisign.com", &key,
199 base::Bind(&GetChannelIDCallbackNotCalled))); 199 base::Bind(&GetChannelIDCallbackNotCalled)));
200 EXPECT_TRUE(KeysEqual(expected_key.get(), key.get())); 200 EXPECT_TRUE(KeysEqual(expected_key.get(), key.get()));
201 } 201 }
202 202
203 TEST(DefaultChannelIDStoreTest, TestAsyncGet) { 203 TEST(DefaultChannelIDStoreTest, TestAsyncGet) {
(...skipping 20 matching lines...) Expand all
224 EXPECT_TRUE(helper.called_); 224 EXPECT_TRUE(helper.called_);
225 EXPECT_THAT(helper.err_, IsOk()); 225 EXPECT_THAT(helper.err_, IsOk());
226 EXPECT_EQ("verisign.com", helper.server_identifier_); 226 EXPECT_EQ("verisign.com", helper.server_identifier_);
227 EXPECT_TRUE(KeysEqual(expected_key.get(), helper.key_.get())); 227 EXPECT_TRUE(KeysEqual(expected_key.get(), helper.key_.get()));
228 } 228 }
229 229
230 TEST(DefaultChannelIDStoreTest, TestDeleteAll) { 230 TEST(DefaultChannelIDStoreTest, TestDeleteAll) {
231 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 231 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
232 DefaultChannelIDStore store(persistent_store.get()); 232 DefaultChannelIDStore store(persistent_store.get());
233 233
234 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 234 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
235 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()))); 235 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
236 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 236 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
237 "google.com", base::Time(), crypto::ECPrivateKey::Create()))); 237 "google.com", base::Time(), crypto::ECPrivateKey::Create()));
238 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 238 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
239 "harvard.com", base::Time(), crypto::ECPrivateKey::Create()))); 239 "harvard.com", base::Time(), crypto::ECPrivateKey::Create()));
240 // Wait for load & queued set tasks. 240 // Wait for load & queued set tasks.
241 base::RunLoop().RunUntilIdle(); 241 base::RunLoop().RunUntilIdle();
242 242
243 EXPECT_EQ(3, store.GetChannelIDCount()); 243 EXPECT_EQ(3, store.GetChannelIDCount());
244 int delete_finished = 0; 244 int delete_finished = 0;
245 store.DeleteAll(base::Bind(&CallCounter, &delete_finished)); 245 store.DeleteAll(base::Bind(&CallCounter, &delete_finished));
246 ASSERT_EQ(1, delete_finished); 246 ASSERT_EQ(1, delete_finished);
247 EXPECT_EQ(0, store.GetChannelIDCount()); 247 EXPECT_EQ(0, store.GetChannelIDCount());
248 } 248 }
249 249
250 TEST(DefaultChannelIDStoreTest, TestDeleteForDomains) { 250 TEST(DefaultChannelIDStoreTest, TestDeleteForDomains) {
251 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 251 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
252 DefaultChannelIDStore store(persistent_store.get()); 252 DefaultChannelIDStore store(persistent_store.get());
253 253
254 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 254 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
255 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()))); 255 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
256 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 256 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
257 "google.com", base::Time(), crypto::ECPrivateKey::Create()))); 257 "google.com", base::Time(), crypto::ECPrivateKey::Create()));
258 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 258 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
259 "harvard.com", base::Time(), crypto::ECPrivateKey::Create()))); 259 "harvard.com", base::Time(), crypto::ECPrivateKey::Create()));
260 // Wait for load & queued set tasks. 260 // Wait for load & queued set tasks.
261 base::RunLoop().RunUntilIdle(); 261 base::RunLoop().RunUntilIdle();
262 EXPECT_EQ(3, store.GetChannelIDCount()); 262 EXPECT_EQ(3, store.GetChannelIDCount());
263 263
264 // Whitelist deletion. 264 // Whitelist deletion.
265 int deletions_finished = 0; 265 int deletions_finished = 0;
266 store.DeleteForDomainsCreatedBetween( 266 store.DeleteForDomainsCreatedBetween(
267 base::Bind(&DomainEquals, base::ConstRef(std::string("verisign.com"))), 267 base::Bind(&DomainEquals, base::ConstRef(std::string("verisign.com"))),
268 base::Time(), base::Time(), 268 base::Time(), base::Time(),
269 base::Bind(&CallCounter, &deletions_finished)); 269 base::Bind(&CallCounter, &deletions_finished));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 EXPECT_EQ(2u, pre_channel_ids.size()); 308 EXPECT_EQ(2u, pre_channel_ids.size());
309 EXPECT_EQ(0u, post_channel_ids.size()); 309 EXPECT_EQ(0u, post_channel_ids.size());
310 } 310 }
311 311
312 TEST(DefaultChannelIDStoreTest, TestDelete) { 312 TEST(DefaultChannelIDStoreTest, TestDelete) {
313 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 313 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
314 DefaultChannelIDStore store(persistent_store.get()); 314 DefaultChannelIDStore store(persistent_store.get());
315 315
316 std::unique_ptr<crypto::ECPrivateKey> key; 316 std::unique_ptr<crypto::ECPrivateKey> key;
317 EXPECT_EQ(0, store.GetChannelIDCount()); 317 EXPECT_EQ(0, store.GetChannelIDCount());
318 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 318 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
319 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()))); 319 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
320 // Wait for load & queued set task. 320 // Wait for load & queued set task.
321 base::RunLoop().RunUntilIdle(); 321 base::RunLoop().RunUntilIdle();
322 322
323 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 323 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
324 "google.com", base::Time(), crypto::ECPrivateKey::Create()))); 324 "google.com", base::Time(), crypto::ECPrivateKey::Create()));
325 325
326 EXPECT_EQ(2, store.GetChannelIDCount()); 326 EXPECT_EQ(2, store.GetChannelIDCount());
327 int delete_finished = 0; 327 int delete_finished = 0;
328 store.DeleteChannelID("verisign.com", 328 store.DeleteChannelID("verisign.com",
329 base::Bind(&CallCounter, &delete_finished)); 329 base::Bind(&CallCounter, &delete_finished));
330 ASSERT_EQ(1, delete_finished); 330 ASSERT_EQ(1, delete_finished);
331 EXPECT_EQ(1, store.GetChannelIDCount()); 331 EXPECT_EQ(1, store.GetChannelIDCount());
332 EXPECT_EQ(ERR_FILE_NOT_FOUND, 332 EXPECT_EQ(ERR_FILE_NOT_FOUND,
333 store.GetChannelID("verisign.com", &key, 333 store.GetChannelID("verisign.com", &key,
334 base::Bind(&GetChannelIDCallbackNotCalled))); 334 base::Bind(&GetChannelIDCallbackNotCalled)));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 EXPECT_THAT(b_helper.err_, IsOk()); 387 EXPECT_THAT(b_helper.err_, IsOk());
388 EXPECT_EQ("b.com", b_helper.server_identifier_); 388 EXPECT_EQ("b.com", b_helper.server_identifier_);
389 EXPECT_TRUE(KeysEqual(expected_key.get(), b_helper.key_.get())); 389 EXPECT_TRUE(KeysEqual(expected_key.get(), b_helper.key_.get()));
390 } 390 }
391 391
392 TEST(DefaultChannelIDStoreTest, TestGetAll) { 392 TEST(DefaultChannelIDStoreTest, TestGetAll) {
393 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 393 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
394 DefaultChannelIDStore store(persistent_store.get()); 394 DefaultChannelIDStore store(persistent_store.get());
395 395
396 EXPECT_EQ(0, store.GetChannelIDCount()); 396 EXPECT_EQ(0, store.GetChannelIDCount());
397 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 397 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
398 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()))); 398 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
399 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 399 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
400 "google.com", base::Time(), crypto::ECPrivateKey::Create()))); 400 "google.com", base::Time(), crypto::ECPrivateKey::Create()));
401 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 401 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
402 "harvard.com", base::Time(), crypto::ECPrivateKey::Create()))); 402 "harvard.com", base::Time(), crypto::ECPrivateKey::Create()));
403 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 403 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
404 "mit.com", base::Time(), crypto::ECPrivateKey::Create()))); 404 "mit.com", base::Time(), crypto::ECPrivateKey::Create()));
405 // Wait for load & queued set tasks. 405 // Wait for load & queued set tasks.
406 base::RunLoop().RunUntilIdle(); 406 base::RunLoop().RunUntilIdle();
407 407
408 EXPECT_EQ(4, store.GetChannelIDCount()); 408 EXPECT_EQ(4, store.GetChannelIDCount());
409 ChannelIDStore::ChannelIDList channel_ids; 409 ChannelIDStore::ChannelIDList channel_ids;
410 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids)); 410 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids));
411 EXPECT_EQ(4u, channel_ids.size()); 411 EXPECT_EQ(4u, channel_ids.size());
412 } 412 }
413 413
414 TEST(DefaultChannelIDStoreTest, TestInitializeFrom) { 414 TEST(DefaultChannelIDStoreTest, TestInitializeFrom) {
415 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 415 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
416 DefaultChannelIDStore store(persistent_store.get()); 416 DefaultChannelIDStore store(persistent_store.get());
417 std::unique_ptr<crypto::ECPrivateKey> preexisting_key( 417 std::unique_ptr<crypto::ECPrivateKey> preexisting_key(
418 crypto::ECPrivateKey::Create()); 418 crypto::ECPrivateKey::Create());
419 std::unique_ptr<crypto::ECPrivateKey> both_key( 419 std::unique_ptr<crypto::ECPrivateKey> both_key(
420 crypto::ECPrivateKey::Create()); 420 crypto::ECPrivateKey::Create());
421 std::unique_ptr<crypto::ECPrivateKey> copied_key( 421 std::unique_ptr<crypto::ECPrivateKey> copied_key(
422 crypto::ECPrivateKey::Create()); 422 crypto::ECPrivateKey::Create());
423 423
424 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 424 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
425 "preexisting.com", base::Time(), preexisting_key->Copy()))); 425 "preexisting.com", base::Time(), preexisting_key->Copy()));
426 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 426 store.SetChannelID(base::MakeUnique<ChannelIDStore::ChannelID>(
427 "both.com", base::Time(), crypto::ECPrivateKey::Create()))); 427 "both.com", base::Time(), crypto::ECPrivateKey::Create()));
428 // Wait for load & queued set tasks. 428 // Wait for load & queued set tasks.
429 base::RunLoop().RunUntilIdle(); 429 base::RunLoop().RunUntilIdle();
430 EXPECT_EQ(2, store.GetChannelIDCount()); 430 EXPECT_EQ(2, store.GetChannelIDCount());
431 431
432 ChannelIDStore::ChannelIDList source_channel_ids; 432 ChannelIDStore::ChannelIDList source_channel_ids;
433 source_channel_ids.push_back(ChannelIDStore::ChannelID( 433 source_channel_ids.push_back(ChannelIDStore::ChannelID(
434 "both.com", base::Time(), 434 "both.com", base::Time(),
435 // Key differs from above to test that existing entries are overwritten. 435 // Key differs from above to test that existing entries are overwritten.
436 both_key->Copy())); 436 both_key->Copy()));
437 source_channel_ids.push_back(ChannelIDStore::ChannelID( 437 source_channel_ids.push_back(ChannelIDStore::ChannelID(
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 ++channel_id; 495 ++channel_id;
496 EXPECT_EQ("copied.com", channel_id->server_identifier()); 496 EXPECT_EQ("copied.com", channel_id->server_identifier());
497 EXPECT_TRUE(KeysEqual(copied_key.get(), channel_id->key())); 497 EXPECT_TRUE(KeysEqual(copied_key.get(), channel_id->key()));
498 498
499 ++channel_id; 499 ++channel_id;
500 EXPECT_EQ("preexisting.com", channel_id->server_identifier()); 500 EXPECT_EQ("preexisting.com", channel_id->server_identifier());
501 EXPECT_TRUE(KeysEqual(preexisting_key.get(), channel_id->key())); 501 EXPECT_TRUE(KeysEqual(preexisting_key.get(), channel_id->key()));
502 } 502 }
503 503
504 } // namespace net 504 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_test_util_common.cc ('k') | net/ssl/ssl_platform_key_chromecast.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698