OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |