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

Side by Side Diff: chrome/browser/ui/webui/certificate_viewer_webui.cc

Issue 2816513002: Revert of Change base::Value::ListStorage to std::vector<base::Value> (Closed)
Patch Set: Created 3 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/ui/webui/certificate_viewer_webui.h" 5 #include "chrome/browser/ui/webui/certificate_viewer_webui.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 } 284 }
285 285
286 void CertificateViewerDialogHandler::RequestCertificateFields( 286 void CertificateViewerDialogHandler::RequestCertificateFields(
287 const base::ListValue* args) { 287 const base::ListValue* args) {
288 int cert_index = GetCertificateIndex(args); 288 int cert_index = GetCertificateIndex(args);
289 if (cert_index < 0) 289 if (cert_index < 0)
290 return; 290 return;
291 291
292 net::X509Certificate::OSCertHandle cert = cert_chain_[cert_index]; 292 net::X509Certificate::OSCertHandle cert = cert_chain_[cert_index];
293 293
294 base::ListValue root_list;
295 base::DictionaryValue* node_details;
296 base::DictionaryValue* alt_node_details;
297 base::ListValue* cert_sub_fields;
298 root_list.Append(
299 base::WrapUnique(node_details = new base::DictionaryValue()));
300 node_details->SetString("label", x509_certificate_model::GetTitle(cert));
301
302 base::ListValue* cert_fields;
303 node_details->Set("children", cert_fields = new base::ListValue());
304 cert_fields->Append(
305 base::WrapUnique(node_details = new base::DictionaryValue()));
306
307 node_details->SetString("label",
308 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
309 node_details->Set("children", cert_fields = new base::ListValue());
310
294 // Main certificate fields. 311 // Main certificate fields.
295 auto cert_fields = base::MakeUnique<base::ListValue>(); 312 cert_fields->Append(
296 auto node_details = base::MakeUnique<base::DictionaryValue>(); 313 base::WrapUnique(node_details = new base::DictionaryValue()));
297 node_details->SetString("label", 314 node_details->SetString("label",
298 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION)); 315 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION));
299 std::string version = x509_certificate_model::GetVersion(cert); 316 std::string version = x509_certificate_model::GetVersion(cert);
300 if (!version.empty()) { 317 if (!version.empty())
301 node_details->SetString("payload.val", 318 node_details->SetString("payload.val",
302 l10n_util::GetStringFUTF8(IDS_CERT_DETAILS_VERSION_FORMAT, 319 l10n_util::GetStringFUTF8(IDS_CERT_DETAILS_VERSION_FORMAT,
303 base::UTF8ToUTF16(version))); 320 base::UTF8ToUTF16(version)));
304 }
305 cert_fields->Append(std::move(node_details));
306 321
307 node_details = base::MakeUnique<base::DictionaryValue>(); 322 cert_fields->Append(
323 base::WrapUnique(node_details = new base::DictionaryValue()));
308 node_details->SetString("label", 324 node_details->SetString("label",
309 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER)); 325 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER));
310 node_details->SetString("payload.val", 326 node_details->SetString("payload.val",
311 x509_certificate_model::GetSerialNumberHexified(cert, 327 x509_certificate_model::GetSerialNumberHexified(cert,
312 l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT))); 328 l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT)));
313 cert_fields->Append(std::move(node_details));
314 329
315 node_details = base::MakeUnique<base::DictionaryValue>(); 330 cert_fields->Append(
331 base::WrapUnique(node_details = new base::DictionaryValue()));
316 node_details->SetString("label", 332 node_details->SetString("label",
317 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); 333 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
318 node_details->SetString("payload.val", 334 node_details->SetString("payload.val",
319 x509_certificate_model::ProcessSecAlgorithmSignature(cert)); 335 x509_certificate_model::ProcessSecAlgorithmSignature(cert));
320 cert_fields->Append(std::move(node_details));
321 336
322 node_details = base::MakeUnique<base::DictionaryValue>(); 337 cert_fields->Append(
338 base::WrapUnique(node_details = new base::DictionaryValue()));
323 node_details->SetString("label", 339 node_details->SetString("label",
324 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER)); 340 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER));
325 node_details->SetString("payload.val", 341 node_details->SetString("payload.val",
326 x509_certificate_model::GetIssuerName(cert)); 342 x509_certificate_model::GetIssuerName(cert));
327 cert_fields->Append(std::move(node_details));
328 343
329 // Validity period. 344 // Validity period.
330 auto cert_sub_fields = base::MakeUnique<base::ListValue>(); 345 cert_fields->Append(
346 base::WrapUnique(node_details = new base::DictionaryValue()));
347 node_details->SetString("label",
348 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
331 349
332 auto sub_node_details = base::MakeUnique<base::DictionaryValue>(); 350 node_details->Set("children", cert_sub_fields = new base::ListValue());
333 sub_node_details->SetString( 351 cert_sub_fields->Append(
334 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE)); 352 base::WrapUnique(node_details = new base::DictionaryValue()));
335 353 node_details->SetString("label",
336 auto alt_node_details = base::MakeUnique<base::DictionaryValue>(); 354 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE));
355 cert_sub_fields->Append(
356 base::WrapUnique(alt_node_details = new base::DictionaryValue()));
337 alt_node_details->SetString("label", 357 alt_node_details->SetString("label",
338 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER)); 358 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER));
339
340 base::Time issued, expires; 359 base::Time issued, expires;
341 if (x509_certificate_model::GetTimes(cert, &issued, &expires)) { 360 if (x509_certificate_model::GetTimes(cert, &issued, &expires)) {
342 sub_node_details->SetString( 361 node_details->SetString(
343 "payload.val", 362 "payload.val",
344 base::UTF16ToUTF8( 363 base::UTF16ToUTF8(
345 base::TimeFormatShortDateAndTimeWithTimeZone(issued))); 364 base::TimeFormatShortDateAndTimeWithTimeZone(issued)));
346 alt_node_details->SetString( 365 alt_node_details->SetString(
347 "payload.val", 366 "payload.val",
348 base::UTF16ToUTF8( 367 base::UTF16ToUTF8(
349 base::TimeFormatShortDateAndTimeWithTimeZone(expires))); 368 base::TimeFormatShortDateAndTimeWithTimeZone(expires)));
350 } 369 }
351 cert_sub_fields->Append(std::move(sub_node_details));
352 cert_sub_fields->Append(std::move(alt_node_details));
353 370
354 node_details = base::MakeUnique<base::DictionaryValue>(); 371 cert_fields->Append(
355 node_details->SetString("label", 372 base::WrapUnique(node_details = new base::DictionaryValue()));
356 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
357 node_details->Set("children", std::move(cert_sub_fields));
358 cert_fields->Append(std::move(node_details));
359
360 node_details = base::MakeUnique<base::DictionaryValue>();
361 node_details->SetString("label", 373 node_details->SetString("label",
362 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT)); 374 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT));
363 node_details->SetString("payload.val", 375 node_details->SetString("payload.val",
364 x509_certificate_model::GetSubjectName(cert)); 376 x509_certificate_model::GetSubjectName(cert));
365 cert_fields->Append(std::move(node_details));
366 377
367 // Subject key information. 378 // Subject key information.
368 cert_sub_fields = base::MakeUnique<base::ListValue>(); 379 cert_fields->Append(
380 base::WrapUnique(node_details = new base::DictionaryValue()));
381 node_details->SetString("label",
382 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
369 383
370 sub_node_details = base::MakeUnique<base::DictionaryValue>(); 384 node_details->Set("children", cert_sub_fields = new base::ListValue());
371 sub_node_details->SetString( 385 cert_sub_fields->Append(
372 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG)); 386 base::WrapUnique(node_details = new base::DictionaryValue()));
373 sub_node_details->SetString( 387 node_details->SetString("label",
374 "payload.val", 388 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG));
389 node_details->SetString("payload.val",
375 x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert)); 390 x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert));
376 cert_sub_fields->Append(std::move(sub_node_details)); 391 cert_sub_fields->Append(
377 392 base::WrapUnique(node_details = new base::DictionaryValue()));
378 sub_node_details = base::MakeUnique<base::DictionaryValue>(); 393 node_details->SetString("label",
379 sub_node_details->SetString( 394 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY));
380 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY)); 395 node_details->SetString("payload.val",
381 sub_node_details->SetString( 396 x509_certificate_model::ProcessSubjectPublicKeyInfo(cert));
382 "payload.val", x509_certificate_model::ProcessSubjectPublicKeyInfo(cert));
383 cert_sub_fields->Append(std::move(sub_node_details));
384
385 node_details = base::MakeUnique<base::DictionaryValue>();
386 node_details->SetString(
387 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
388 node_details->Set("children", std::move(cert_sub_fields));
389 cert_fields->Append(std::move(node_details));
390 397
391 // Extensions. 398 // Extensions.
392 x509_certificate_model::Extensions extensions; 399 x509_certificate_model::Extensions extensions;
393 x509_certificate_model::GetExtensions( 400 x509_certificate_model::GetExtensions(
394 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_CRITICAL), 401 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_CRITICAL),
395 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_NON_CRITICAL), 402 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_NON_CRITICAL),
396 cert, &extensions); 403 cert, &extensions);
397 404
398 if (!extensions.empty()) { 405 if (!extensions.empty()) {
399 cert_sub_fields = base::MakeUnique<base::ListValue>(); 406 cert_fields->Append(
407 base::WrapUnique(node_details = new base::DictionaryValue()));
408 node_details->SetString("label",
409 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
400 410
411 node_details->Set("children", cert_sub_fields = new base::ListValue());
401 for (x509_certificate_model::Extensions::const_iterator i = 412 for (x509_certificate_model::Extensions::const_iterator i =
402 extensions.begin(); i != extensions.end(); ++i) { 413 extensions.begin(); i != extensions.end(); ++i) {
403 sub_node_details = base::MakeUnique<base::DictionaryValue>(); 414 cert_sub_fields->Append(
404 sub_node_details->SetString("label", i->name); 415 base::WrapUnique(node_details = new base::DictionaryValue()));
405 sub_node_details->SetString("payload.val", i->value); 416 node_details->SetString("label", i->name);
406 cert_sub_fields->Append(std::move(sub_node_details)); 417 node_details->SetString("payload.val", i->value);
407 } 418 }
408
409 node_details = base::MakeUnique<base::DictionaryValue>();
410 node_details->SetString(
411 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
412 node_details->Set("children", std::move(cert_sub_fields));
413 cert_fields->Append(std::move(node_details));
414 } 419 }
415 420
416 // Details certificate information. 421 cert_fields->Append(
417 node_details = base::MakeUnique<base::DictionaryValue>(); 422 base::WrapUnique(node_details = new base::DictionaryValue()));
418 node_details->SetString("label", 423 node_details->SetString("label",
419 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); 424 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
420 node_details->SetString("payload.val", 425 node_details->SetString("payload.val",
421 x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert)); 426 x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert));
422 cert_fields->Append(std::move(node_details));
423 427
424 node_details = base::MakeUnique<base::DictionaryValue>(); 428 cert_fields->Append(
429 base::WrapUnique(node_details = new base::DictionaryValue()));
425 node_details->SetString("label", 430 node_details->SetString("label",
426 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE)); 431 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE));
427 node_details->SetString("payload.val", 432 node_details->SetString("payload.val",
428 x509_certificate_model::ProcessRawBitsSignatureWrap(cert)); 433 x509_certificate_model::ProcessRawBitsSignatureWrap(cert));
429 cert_fields->Append(std::move(node_details));
430 434
431 // Fingerprint information. 435 cert_fields->Append(
432 cert_sub_fields = base::MakeUnique<base::ListValue>(); 436 base::WrapUnique(node_details = new base::DictionaryValue()));
437 node_details->SetString("label",
438 l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP));
439 node_details->Set("children", cert_sub_fields = new base::ListValue());
433 440
434 sub_node_details = base::MakeUnique<base::DictionaryValue>(); 441 cert_sub_fields->Append(
435 sub_node_details->SetString( 442 base::WrapUnique(node_details = new base::DictionaryValue()));
436 "label", 443 node_details->SetString("label",
437 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL)); 444 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL));
438 sub_node_details->SetString("payload.val", 445 node_details->SetString("payload.val",
439 x509_certificate_model::HashCertSHA256(cert)); 446 x509_certificate_model::HashCertSHA256(cert));
440 cert_sub_fields->Append(std::move(sub_node_details)); 447 cert_sub_fields->Append(
441 448 base::WrapUnique(node_details = new base::DictionaryValue()));
442 sub_node_details = base::MakeUnique<base::DictionaryValue>(); 449 node_details->SetString("label",
443 sub_node_details->SetString( 450 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL));
444 "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL)); 451 node_details->SetString("payload.val",
445 sub_node_details->SetString("payload.val", 452 x509_certificate_model::HashCertSHA1(cert));
446 x509_certificate_model::HashCertSHA1(cert));
447 cert_sub_fields->Append(std::move(sub_node_details));
448
449 node_details = base::MakeUnique<base::DictionaryValue>();
450 node_details->SetString(
451 "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP));
452 node_details->Set("children", std::move(cert_sub_fields));
453 cert_fields->Append(std::move(node_details));
454
455 // Certificate information.
456 node_details = base::MakeUnique<base::DictionaryValue>();
457 node_details->SetString(
458 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
459 node_details->Set("children", std::move(cert_fields));
460 cert_fields = base::MakeUnique<base::ListValue>();
461 cert_fields->Append(std::move(node_details));
462
463 // Top level information.
464 base::ListValue root_list;
465 node_details = base::MakeUnique<base::DictionaryValue>();
466 node_details->SetString("label", x509_certificate_model::GetTitle(cert));
467 node_details->Set("children", std::move(cert_fields));
468 root_list.Append(std::move(node_details));
469 453
470 // Send certificate information to javascript. 454 // Send certificate information to javascript.
471 web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields", 455 web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields",
472 root_list); 456 root_list);
473 } 457 }
474 458
475 int CertificateViewerDialogHandler::GetCertificateIndex( 459 int CertificateViewerDialogHandler::GetCertificateIndex(
476 const base::ListValue* args) const { 460 const base::ListValue* args) const {
477 int cert_index; 461 int cert_index;
478 double val; 462 double val;
479 if (!(args->GetDouble(0, &val))) 463 if (!(args->GetDouble(0, &val)))
480 return -1; 464 return -1;
481 cert_index = static_cast<int>(val); 465 cert_index = static_cast<int>(val);
482 if (cert_index < 0 || cert_index >= static_cast<int>(cert_chain_.size())) 466 if (cert_index < 0 || cert_index >= static_cast<int>(cert_chain_.size()))
483 return -1; 467 return -1;
484 return cert_index; 468 return cert_index;
485 } 469 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698