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

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

Issue 2812953002: Stop passing raw pointers to base::Value API in c/b/ui (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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 } 162 }
163 cert_info.SetString("general.issue-date", issued_str); 163 cert_info.SetString("general.issue-date", issued_str);
164 cert_info.SetString("general.expiry-date", expires_str); 164 cert_info.SetString("general.expiry-date", expires_str);
165 165
166 cert_info.SetString("general.sha256", 166 cert_info.SetString("general.sha256",
167 x509_certificate_model::HashCertSHA256(cert_hnd)); 167 x509_certificate_model::HashCertSHA256(cert_hnd));
168 cert_info.SetString("general.sha1", 168 cert_info.SetString("general.sha1",
169 x509_certificate_model::HashCertSHA1(cert_hnd)); 169 x509_certificate_model::HashCertSHA1(cert_hnd));
170 170
171 // Certificate hierarchy is constructed from bottom up. 171 // Certificate hierarchy is constructed from bottom up.
172 base::ListValue* children = NULL; 172 std::unique_ptr<base::ListValue> children;
173 int index = 0; 173 int index = 0;
174 for (net::X509Certificate::OSCertHandles::const_iterator i = 174 for (net::X509Certificate::OSCertHandles::const_iterator i =
175 cert_chain.begin(); i != cert_chain.end(); ++i, ++index) { 175 cert_chain.begin(); i != cert_chain.end(); ++i, ++index) {
176 std::unique_ptr<base::DictionaryValue> cert_node( 176 std::unique_ptr<base::DictionaryValue> cert_node(
177 new base::DictionaryValue()); 177 new base::DictionaryValue());
178 base::ListValue cert_details; 178 base::ListValue cert_details;
179 cert_node->SetString("label", x509_certificate_model::GetTitle(*i).c_str()); 179 cert_node->SetString("label", x509_certificate_model::GetTitle(*i).c_str());
180 cert_node->SetDouble("payload.index", index); 180 cert_node->SetDouble("payload.index", index);
181 // Add the child from the previous iteration. 181 // Add the child from the previous iteration.
182 if (children) 182 if (children)
183 cert_node->Set("children", children); 183 cert_node->Set("children", std::move(children));
184 184
185 // Add this node to the children list for the next iteration. 185 // Add this node to the children list for the next iteration.
186 children = new base::ListValue(); 186 children = base::MakeUnique<base::ListValue>();
187 children->Append(std::move(cert_node)); 187 children->Append(std::move(cert_node));
188 } 188 }
189 // Set the last node as the top of the certificate hierarchy. 189 // Set the last node as the top of the certificate hierarchy.
190 cert_info.Set("hierarchy", children); 190 cert_info.Set("hierarchy", std::move(children));
191 191
192 base::JSONWriter::Write(cert_info, &data); 192 base::JSONWriter::Write(cert_info, &data);
193 193
194 return data; 194 return data;
195 } 195 }
196 196
197 void CertificateViewerModalDialog::OnDialogShown( 197 void CertificateViewerModalDialog::OnDialogShown(
198 content::WebUI* webui, 198 content::WebUI* webui,
199 content::RenderViewHost* render_view_host) { 199 content::RenderViewHost* render_view_host) {
200 webui_ = webui; 200 webui_ = webui;
(...skipping 83 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; 294 auto root_node_details = base::MakeUnique<base::DictionaryValue>();
295 base::DictionaryValue* node_details; 295 root_node_details->SetString("label", x509_certificate_model::GetTitle(cert));
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 296
302 base::ListValue* cert_fields; 297 auto root_cert_fields = base::MakeUnique<base::ListValue>();
303 node_details->Set("children", cert_fields = new base::ListValue()); 298 auto root_cert_field = base::MakeUnique<base::DictionaryValue>();
304 cert_fields->Append( 299 root_cert_field->SetString(
305 base::WrapUnique(node_details = new base::DictionaryValue())); 300 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
306 301
307 node_details->SetString("label", 302 auto cert_fields = base::MakeUnique<base::ListValue>();
308 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE));
309 node_details->Set("children", cert_fields = new base::ListValue());
310 303
311 // Main certificate fields. 304 // Main certificate fields.
312 cert_fields->Append( 305 auto cert_field = base::MakeUnique<base::DictionaryValue>();
313 base::WrapUnique(node_details = new base::DictionaryValue())); 306 cert_field->SetString("label",
314 node_details->SetString("label", 307 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION));
315 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VERSION));
316 std::string version = x509_certificate_model::GetVersion(cert); 308 std::string version = x509_certificate_model::GetVersion(cert);
317 if (!version.empty()) 309 if (!version.empty()) {
318 node_details->SetString("payload.val", 310 cert_field->SetString("payload.val", l10n_util::GetStringFUTF8(
319 l10n_util::GetStringFUTF8(IDS_CERT_DETAILS_VERSION_FORMAT, 311 IDS_CERT_DETAILS_VERSION_FORMAT,
320 base::UTF8ToUTF16(version))); 312 base::UTF8ToUTF16(version)));
313 }
314 cert_fields->Append(std::move(cert_field));
321 315
322 cert_fields->Append( 316 cert_field = base::MakeUnique<base::DictionaryValue>();
323 base::WrapUnique(node_details = new base::DictionaryValue())); 317 cert_field->SetString(
324 node_details->SetString("label", 318 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER));
325 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SERIAL_NUMBER)); 319 cert_field->SetString(
326 node_details->SetString("payload.val", 320 "payload.val",
327 x509_certificate_model::GetSerialNumberHexified(cert, 321 x509_certificate_model::GetSerialNumberHexified(
328 l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT))); 322 cert, l10n_util::GetStringUTF8(IDS_CERT_INFO_FIELD_NOT_PRESENT)));
323 cert_fields->Append(std::move(cert_field));
329 324
330 cert_fields->Append( 325 cert_field = base::MakeUnique<base::DictionaryValue>();
331 base::WrapUnique(node_details = new base::DictionaryValue())); 326 cert_field->SetString(
332 node_details->SetString("label", 327 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
333 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); 328 cert_field->SetString(
334 node_details->SetString("payload.val", 329 "payload.val",
335 x509_certificate_model::ProcessSecAlgorithmSignature(cert)); 330 x509_certificate_model::ProcessSecAlgorithmSignature(cert));
331 cert_fields->Append(std::move(cert_field));
336 332
337 cert_fields->Append( 333 cert_field = base::MakeUnique<base::DictionaryValue>();
338 base::WrapUnique(node_details = new base::DictionaryValue())); 334 cert_field->SetString("label",
339 node_details->SetString("label", 335 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER));
340 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_ISSUER)); 336 cert_field->SetString("payload.val",
341 node_details->SetString("payload.val", 337 x509_certificate_model::GetIssuerName(cert));
342 x509_certificate_model::GetIssuerName(cert)); 338 cert_fields->Append(std::move(cert_field));
343 339
344 // Validity period. 340 // Validity period.
345 cert_fields->Append( 341 cert_field = base::MakeUnique<base::DictionaryValue>();
346 base::WrapUnique(node_details = new base::DictionaryValue())); 342 cert_field->SetString("label",
347 node_details->SetString("label", 343 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
348 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_VALIDITY));
349 344
350 node_details->Set("children", cert_sub_fields = new base::ListValue());
351 cert_sub_fields->Append(
352 base::WrapUnique(node_details = new base::DictionaryValue()));
353 node_details->SetString("label",
354 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE));
355 cert_sub_fields->Append(
356 base::WrapUnique(alt_node_details = new base::DictionaryValue()));
357 alt_node_details->SetString("label",
358 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER));
359 base::Time issued, expires; 345 base::Time issued, expires;
360 if (x509_certificate_model::GetTimes(cert, &issued, &expires)) { 346 bool obtained_times =
361 node_details->SetString( 347 x509_certificate_model::GetTimes(cert, &issued, &expires);
348 auto cert_sub_fields = base::MakeUnique<base::ListValue>();
349 auto cert_sub_field = base::MakeUnique<base::DictionaryValue>();
350 cert_sub_field->SetString(
351 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_BEFORE));
352 if (obtained_times) {
353 cert_sub_field->SetString(
362 "payload.val", 354 "payload.val",
363 base::UTF16ToUTF8( 355 base::UTF16ToUTF8(
364 base::TimeFormatShortDateAndTimeWithTimeZone(issued))); 356 base::TimeFormatShortDateAndTimeWithTimeZone(issued)));
365 alt_node_details->SetString( 357 }
358 cert_sub_fields->Append(std::move(cert_sub_field));
359 cert_sub_field = base::MakeUnique<base::DictionaryValue>();
360 cert_sub_field->SetString(
361 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_NOT_AFTER));
362 if (obtained_times) {
363 cert_sub_field->SetString(
366 "payload.val", 364 "payload.val",
367 base::UTF16ToUTF8( 365 base::UTF16ToUTF8(
368 base::TimeFormatShortDateAndTimeWithTimeZone(expires))); 366 base::TimeFormatShortDateAndTimeWithTimeZone(expires)));
369 } 367 }
368 cert_sub_fields->Append(std::move(cert_sub_field));
369 cert_field->Set("children", std::move(cert_sub_fields));
370 cert_fields->Append(std::move(cert_field));
370 371
371 cert_fields->Append( 372 cert_field = base::MakeUnique<base::DictionaryValue>();
372 base::WrapUnique(node_details = new base::DictionaryValue())); 373 cert_field->SetString("label",
373 node_details->SetString("label", 374 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT));
374 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT)); 375 cert_field->SetString("payload.val",
375 node_details->SetString("payload.val", 376 x509_certificate_model::GetSubjectName(cert));
376 x509_certificate_model::GetSubjectName(cert)); 377 cert_fields->Append(std::move(cert_field));
377 378
378 // Subject key information. 379 // Subject key information.
379 cert_fields->Append( 380 cert_field = base::MakeUnique<base::DictionaryValue>();
380 base::WrapUnique(node_details = new base::DictionaryValue())); 381 cert_field->SetString(
381 node_details->SetString("label", 382 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
382 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_INFO));
383 383
384 node_details->Set("children", cert_sub_fields = new base::ListValue()); 384 cert_sub_fields = base::MakeUnique<base::ListValue>();
385 cert_sub_fields->Append( 385 cert_sub_field = base::MakeUnique<base::DictionaryValue>();
386 base::WrapUnique(node_details = new base::DictionaryValue())); 386 cert_sub_field->SetString(
387 node_details->SetString("label", 387 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG));
388 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY_ALG)); 388 cert_sub_field->SetString(
389 node_details->SetString("payload.val", 389 "payload.val",
390 x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert)); 390 x509_certificate_model::ProcessSecAlgorithmSubjectPublicKey(cert));
391 cert_sub_fields->Append( 391 cert_sub_fields->Append(std::move(cert_sub_field));
392 base::WrapUnique(node_details = new base::DictionaryValue())); 392 cert_sub_field = base::MakeUnique<base::DictionaryValue>();
393 node_details->SetString("label", 393 cert_sub_field->SetString(
394 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY)); 394 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_SUBJECT_KEY));
395 node_details->SetString("payload.val", 395 cert_sub_field->SetString(
396 x509_certificate_model::ProcessSubjectPublicKeyInfo(cert)); 396 "payload.val", x509_certificate_model::ProcessSubjectPublicKeyInfo(cert));
397 cert_sub_fields->Append(std::move(cert_sub_field));
398 cert_field->Set("children", std::move(cert_sub_fields));
399 cert_fields->Append(std::move(cert_field));
397 400
398 // Extensions. 401 // Extensions.
399 x509_certificate_model::Extensions extensions; 402 x509_certificate_model::Extensions extensions;
400 x509_certificate_model::GetExtensions( 403 x509_certificate_model::GetExtensions(
401 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_CRITICAL), 404 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_CRITICAL),
402 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_NON_CRITICAL), 405 l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_NON_CRITICAL),
403 cert, &extensions); 406 cert, &extensions);
404 407
405 if (!extensions.empty()) { 408 if (!extensions.empty()) {
406 cert_fields->Append( 409 cert_field = base::MakeUnique<base::DictionaryValue>();
407 base::WrapUnique(node_details = new base::DictionaryValue())); 410 cert_field->SetString(
408 node_details->SetString("label", 411 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
409 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_EXTENSIONS));
410 412
411 node_details->Set("children", cert_sub_fields = new base::ListValue()); 413 cert_sub_fields = base::MakeUnique<base::ListValue>();
412 for (x509_certificate_model::Extensions::const_iterator i = 414 for (x509_certificate_model::Extensions::const_iterator i =
413 extensions.begin(); i != extensions.end(); ++i) { 415 extensions.begin();
414 cert_sub_fields->Append( 416 i != extensions.end(); ++i) {
415 base::WrapUnique(node_details = new base::DictionaryValue())); 417 cert_sub_field = base::MakeUnique<base::DictionaryValue>();
416 node_details->SetString("label", i->name); 418 cert_sub_field->SetString("label", i->name);
417 node_details->SetString("payload.val", i->value); 419 cert_sub_field->SetString("payload.val", i->value);
420 cert_sub_fields->Append(std::move(cert_sub_field));
418 } 421 }
422 cert_field->Set("children", std::move(cert_sub_fields));
423 cert_fields->Append(std::move(cert_field));
419 } 424 }
420 425
421 cert_fields->Append( 426 cert_field = base::MakeUnique<base::DictionaryValue>();
422 base::WrapUnique(node_details = new base::DictionaryValue())); 427 cert_field->SetString(
423 node_details->SetString("label", 428 "label", l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG));
424 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_ALG)); 429 cert_field->SetString(
425 node_details->SetString("payload.val", 430 "payload.val",
426 x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert)); 431 x509_certificate_model::ProcessSecAlgorithmSignatureWrap(cert));
432 cert_fields->Append(std::move(cert_field));
427 433
428 cert_fields->Append( 434 cert_field = base::MakeUnique<base::DictionaryValue>();
429 base::WrapUnique(node_details = new base::DictionaryValue())); 435 cert_field->SetString("label", l10n_util::GetStringUTF8(
430 node_details->SetString("label", 436 IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE));
431 l10n_util::GetStringUTF8(IDS_CERT_DETAILS_CERTIFICATE_SIG_VALUE)); 437 cert_field->SetString(
432 node_details->SetString("payload.val", 438 "payload.val", x509_certificate_model::ProcessRawBitsSignatureWrap(cert));
433 x509_certificate_model::ProcessRawBitsSignatureWrap(cert)); 439 cert_fields->Append(std::move(cert_field));
434 440
435 cert_fields->Append( 441 cert_field = base::MakeUnique<base::DictionaryValue>();
436 base::WrapUnique(node_details = new base::DictionaryValue())); 442 cert_field->SetString(
437 node_details->SetString("label", 443 "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP));
438 l10n_util::GetStringUTF8(IDS_CERT_INFO_FINGERPRINTS_GROUP)); 444 cert_field->Set("children", std::move(cert_sub_fields));
vabr (Chromium) 2017/04/11 19:20:19 This line needs to be deleted.
439 node_details->Set("children", cert_sub_fields = new base::ListValue());
440 445
441 cert_sub_fields->Append( 446 cert_sub_fields = base::MakeUnique<base::ListValue>();
442 base::WrapUnique(node_details = new base::DictionaryValue())); 447 cert_sub_field = base::MakeUnique<base::DictionaryValue>();
443 node_details->SetString("label", 448 cert_sub_field->SetString(
449 "label",
444 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL)); 450 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA256_FINGERPRINT_LABEL));
445 node_details->SetString("payload.val", 451 cert_sub_field->SetString("payload.val",
446 x509_certificate_model::HashCertSHA256(cert)); 452 x509_certificate_model::HashCertSHA256(cert));
447 cert_sub_fields->Append( 453 cert_sub_fields->Append(std::move(cert_sub_field));
448 base::WrapUnique(node_details = new base::DictionaryValue())); 454 cert_sub_field = base::MakeUnique<base::DictionaryValue>();
449 node_details->SetString("label", 455 cert_sub_field->SetString(
450 l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL)); 456 "label", l10n_util::GetStringUTF8(IDS_CERT_INFO_SHA1_FINGERPRINT_LABEL));
451 node_details->SetString("payload.val", 457 cert_sub_field->SetString("payload.val",
452 x509_certificate_model::HashCertSHA1(cert)); 458 x509_certificate_model::HashCertSHA1(cert));
459 cert_sub_fields->Append(std::move(cert_sub_field));
460 cert_field->Set("children", std::move(cert_sub_fields));
461 cert_fields->Append(std::move(cert_field));
453 462
463 root_cert_field->Set("children", std::move(cert_fields));
464 root_cert_fields->Append(std::move(root_cert_field));
465 root_node_details->Set("children", std::move(root_cert_fields));
466
467 base::ListValue root_list;
468 root_list.Append(std::move(root_node_details));
454 // Send certificate information to javascript. 469 // Send certificate information to javascript.
455 web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields", 470 web_ui()->CallJavascriptFunctionUnsafe("cert_viewer.getCertificateFields",
456 root_list); 471 root_list);
457 } 472 }
458 473
459 int CertificateViewerDialogHandler::GetCertificateIndex( 474 int CertificateViewerDialogHandler::GetCertificateIndex(
460 const base::ListValue* args) const { 475 const base::ListValue* args) const {
461 int cert_index; 476 int cert_index;
462 double val; 477 double val;
463 if (!(args->GetDouble(0, &val))) 478 if (!(args->GetDouble(0, &val)))
464 return -1; 479 return -1;
465 cert_index = static_cast<int>(val); 480 cert_index = static_cast<int>(val);
466 if (cert_index < 0 || cert_index >= static_cast<int>(cert_chain_.size())) 481 if (cert_index < 0 || cert_index >= static_cast<int>(cert_chain_.size()))
467 return -1; 482 return -1;
468 return cert_index; 483 return cert_index;
469 } 484 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/browsing_history_handler.cc ('k') | chrome/browser/ui/webui/chromeos/drive_internals_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698