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

Side by Side Diff: chrome/browser/ui/webui/options2/certificate_manager_handler2.cc

Issue 10703127: Merge 145197 - clean-up: Use an id instead of memory pointer string in webui. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1180/src/
Patch Set: Created 8 years, 5 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 | Annotate | Revision Log
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/options2/certificate_manager_handler2.h" 5 #include "chrome/browser/ui/webui/options2/certificate_manager_handler2.h"
6 6
7 #include <algorithm>
8 #include <map>
9
7 #include "base/bind.h" 10 #include "base/bind.h"
8 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
9 #include "base/file_util.h" // for FileAccessProvider 12 #include "base/file_util.h" // for FileAccessProvider
13 #include "base/id_map.h"
10 #include "base/memory/scoped_vector.h" 14 #include "base/memory/scoped_vector.h"
11 #include "base/safe_strerror_posix.h" 15 #include "base/safe_strerror_posix.h"
12 #include "base/string_number_conversions.h" 16 #include "base/string_number_conversions.h"
13 #include "base/values.h" 17 #include "base/values.h"
14 #include "chrome/browser/browser_process.h" 18 #include "chrome/browser/browser_process.h"
15 #include "chrome/browser/certificate_viewer.h" 19 #include "chrome/browser/certificate_viewer.h"
16 #include "chrome/browser/ui/certificate_dialogs.h" 20 #include "chrome/browser/ui/certificate_dialogs.h"
17 #include "chrome/browser/ui/crypto_module_password_dialog.h" 21 #include "chrome/browser/ui/crypto_module_password_dialog.h"
18 #include "content/public/browser/browser_thread.h" 22 #include "content/public/browser/browser_thread.h"
19 #include "content/public/browser/web_contents.h" 23 #include "content/public/browser/web_contents.h"
(...skipping 25 matching lines...) Expand all
45 49
46 // Enumeration of different callers of SelectFile. (Start counting at 1 so 50 // Enumeration of different callers of SelectFile. (Start counting at 1 so
47 // if SelectFile is accidentally called with params=NULL it won't match any.) 51 // if SelectFile is accidentally called with params=NULL it won't match any.)
48 enum { 52 enum {
49 EXPORT_PERSONAL_FILE_SELECTED = 1, 53 EXPORT_PERSONAL_FILE_SELECTED = 1,
50 IMPORT_PERSONAL_FILE_SELECTED, 54 IMPORT_PERSONAL_FILE_SELECTED,
51 IMPORT_SERVER_FILE_SELECTED, 55 IMPORT_SERVER_FILE_SELECTED,
52 IMPORT_CA_FILE_SELECTED, 56 IMPORT_CA_FILE_SELECTED,
53 }; 57 };
54 58
55 // TODO(mattm): These are duplicated from cookies_view_handler.cc
56 // Encodes a pointer value into a hex string.
57 std::string PointerToHexString(const void* pointer) {
58 return base::HexEncode(&pointer, sizeof(pointer));
59 }
60
61 // Decodes a pointer from a hex string.
62 void* HexStringToPointer(const std::string& str) {
63 std::vector<uint8> buffer;
64 if (!base::HexStringToBytes(str, &buffer) ||
65 buffer.size() != sizeof(void*)) {
66 return NULL;
67 }
68
69 return *reinterpret_cast<void**>(&buffer[0]);
70 }
71
72 std::string OrgNameToId(const std::string& org) { 59 std::string OrgNameToId(const std::string& org) {
73 return "org-" + org; 60 return "org-" + org;
74 } 61 }
75 62
76 std::string CertToId(const net::X509Certificate& cert) {
77 return "cert-" + PointerToHexString(&cert);
78 }
79
80 net::X509Certificate* IdToCert(const std::string& id) {
81 if (!StartsWithASCII(id, "cert-", true))
82 return NULL;
83 return reinterpret_cast<net::X509Certificate*>(
84 HexStringToPointer(id.substr(5)));
85 }
86
87 net::X509Certificate* CallbackArgsToCert(const ListValue* args) {
88 std::string node_id;
89 if (!args->GetString(0, &node_id)){
90 return NULL;
91 }
92 net::X509Certificate* cert = IdToCert(node_id);
93 if (!cert) {
94 NOTREACHED();
95 return NULL;
96 }
97 return cert;
98 }
99
100 bool CallbackArgsToBool(const ListValue* args, int index, bool* result) { 63 bool CallbackArgsToBool(const ListValue* args, int index, bool* result) {
101 std::string string_value; 64 std::string string_value;
102 if (!args->GetString(index, &string_value)) 65 if (!args->GetString(index, &string_value))
103 return false; 66 return false;
104 67
105 *result = string_value[0] == 't'; 68 *result = string_value[0] == 't';
106 return true; 69 return true;
107 } 70 }
108 71
109 struct DictionaryIdComparator { 72 struct DictionaryIdComparator {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 default: 104 default:
142 return l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR); 105 return l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR);
143 } 106 }
144 } 107 }
145 108
146 } // namespace 109 } // namespace
147 110
148 namespace options2 { 111 namespace options2 {
149 112
150 /////////////////////////////////////////////////////////////////////////////// 113 ///////////////////////////////////////////////////////////////////////////////
114 // CertIdMap
115
116 class CertIdMap {
117 public:
118 CertIdMap() {}
119 ~CertIdMap() {}
120
121 std::string CertToId(net::X509Certificate* cert);
122 net::X509Certificate* IdToCert(const std::string& id);
123 net::X509Certificate* CallbackArgsToCert(const base::ListValue* args);
124
125 private:
126 typedef std::map<net::X509Certificate*, int32> CertMap;
127
128 // Creates an ID for cert and looks up the cert for an ID.
129 IDMap<net::X509Certificate>id_map_;
130
131 // Finds the ID for a cert.
132 CertMap cert_map_;
133
134 DISALLOW_COPY_AND_ASSIGN(CertIdMap);
135 };
136
137 std::string CertIdMap::CertToId(net::X509Certificate* cert) {
138 CertMap::const_iterator iter = cert_map_.find(cert);
139 if (iter != cert_map_.end())
140 return base::IntToString(iter->second);
141
142 int32 new_id = id_map_.Add(cert);
143 cert_map_[cert] = new_id;
144 return base::IntToString(new_id);
145 }
146
147 net::X509Certificate* CertIdMap::IdToCert(const std::string& id) {
148 int32 cert_id = 0;
149 if (!base::StringToInt(id, &cert_id))
150 return NULL;
151
152 return id_map_.Lookup(cert_id);
153 }
154
155 net::X509Certificate* CertIdMap::CallbackArgsToCert(
156 const ListValue* args) {
157 std::string node_id;
158 if (!args->GetString(0, &node_id))
159 return NULL;
160
161 net::X509Certificate* cert = IdToCert(node_id);
162 if (!cert) {
163 NOTREACHED();
164 return NULL;
165 }
166
167 return cert;
168 }
169
170 ///////////////////////////////////////////////////////////////////////////////
151 // FileAccessProvider 171 // FileAccessProvider
152 172
153 // TODO(mattm): Move to some shared location? 173 // TODO(mattm): Move to some shared location?
154 class FileAccessProvider 174 class FileAccessProvider
155 : public base::RefCountedThreadSafe<FileAccessProvider>, 175 : public base::RefCountedThreadSafe<FileAccessProvider>,
156 public CancelableRequestProvider { 176 public CancelableRequestProvider {
157 public: 177 public:
158 // Reports 0 on success or errno on failure, and the data of the file upon 178 // Reports 0 on success or errno on failure, and the data of the file upon
159 // success. 179 // success.
160 // TODO(mattm): don't pass std::string by value.. could use RefCountedBytes 180 // TODO(mattm): don't pass std::string by value.. could use RefCountedBytes
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 return; 267 return;
248 268
249 request->ForwardResult(saved_errno, bytes_written); 269 request->ForwardResult(saved_errno, bytes_written);
250 } 270 }
251 271
252 /////////////////////////////////////////////////////////////////////////////// 272 ///////////////////////////////////////////////////////////////////////////////
253 // CertificateManagerHandler 273 // CertificateManagerHandler
254 274
255 CertificateManagerHandler::CertificateManagerHandler() 275 CertificateManagerHandler::CertificateManagerHandler()
256 : file_access_provider_(new FileAccessProvider()), 276 : file_access_provider_(new FileAccessProvider()),
257 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { 277 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)),
278 cert_id_map_(new CertIdMap) {
258 certificate_manager_model_.reset(new CertificateManagerModel(this)); 279 certificate_manager_model_.reset(new CertificateManagerModel(this));
259 } 280 }
260 281
261 CertificateManagerHandler::~CertificateManagerHandler() { 282 CertificateManagerHandler::~CertificateManagerHandler() {
262 } 283 }
263 284
264 void CertificateManagerHandler::GetLocalizedValues( 285 void CertificateManagerHandler::GetLocalizedValues(
265 DictionaryValue* localized_strings) { 286 DictionaryValue* localized_strings) {
266 DCHECK(localized_strings); 287 DCHECK(localized_strings);
267 288
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 case IMPORT_SERVER_FILE_SELECTED: 504 case IMPORT_SERVER_FILE_SELECTED:
484 case IMPORT_CA_FILE_SELECTED: 505 case IMPORT_CA_FILE_SELECTED:
485 ImportExportCleanup(); 506 ImportExportCleanup();
486 break; 507 break;
487 default: 508 default:
488 NOTREACHED(); 509 NOTREACHED();
489 } 510 }
490 } 511 }
491 512
492 void CertificateManagerHandler::View(const ListValue* args) { 513 void CertificateManagerHandler::View(const ListValue* args) {
493 net::X509Certificate* cert = CallbackArgsToCert(args); 514 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
494 if (!cert) 515 if (!cert)
495 return; 516 return;
496 ShowCertificateViewer(GetParentWindow(), cert); 517 ShowCertificateViewer(GetParentWindow(), cert);
497 } 518 }
498 519
499 void CertificateManagerHandler::GetCATrust(const ListValue* args) { 520 void CertificateManagerHandler::GetCATrust(const ListValue* args) {
500 net::X509Certificate* cert = CallbackArgsToCert(args); 521 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
501 if (!cert) { 522 if (!cert) {
502 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss"); 523 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss");
503 return; 524 return;
504 } 525 }
505 526
506 net::CertDatabase::TrustBits trust_bits = 527 net::CertDatabase::TrustBits trust_bits =
507 certificate_manager_model_->cert_db().GetCertTrust(cert, net::CA_CERT); 528 certificate_manager_model_->cert_db().GetCertTrust(cert, net::CA_CERT);
508 base::FundamentalValue ssl_value( 529 base::FundamentalValue ssl_value(
509 static_cast<bool>(trust_bits & net::CertDatabase::TRUSTED_SSL)); 530 static_cast<bool>(trust_bits & net::CertDatabase::TRUSTED_SSL));
510 base::FundamentalValue email_value( 531 base::FundamentalValue email_value(
511 static_cast<bool>(trust_bits & net::CertDatabase::TRUSTED_EMAIL)); 532 static_cast<bool>(trust_bits & net::CertDatabase::TRUSTED_EMAIL));
512 base::FundamentalValue obj_sign_value( 533 base::FundamentalValue obj_sign_value(
513 static_cast<bool>(trust_bits & net::CertDatabase::TRUSTED_OBJ_SIGN)); 534 static_cast<bool>(trust_bits & net::CertDatabase::TRUSTED_OBJ_SIGN));
514 web_ui()->CallJavascriptFunction( 535 web_ui()->CallJavascriptFunction(
515 "CertificateEditCaTrustOverlay.populateTrust", 536 "CertificateEditCaTrustOverlay.populateTrust",
516 ssl_value, email_value, obj_sign_value); 537 ssl_value, email_value, obj_sign_value);
517 } 538 }
518 539
519 void CertificateManagerHandler::EditCATrust(const ListValue* args) { 540 void CertificateManagerHandler::EditCATrust(const ListValue* args) {
520 net::X509Certificate* cert = CallbackArgsToCert(args); 541 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
521 bool fail = !cert; 542 bool fail = !cert;
522 bool trust_ssl = false; 543 bool trust_ssl = false;
523 bool trust_email = false; 544 bool trust_email = false;
524 bool trust_obj_sign = false; 545 bool trust_obj_sign = false;
525 fail |= !CallbackArgsToBool(args, 1, &trust_ssl); 546 fail |= !CallbackArgsToBool(args, 1, &trust_ssl);
526 fail |= !CallbackArgsToBool(args, 2, &trust_email); 547 fail |= !CallbackArgsToBool(args, 2, &trust_email);
527 fail |= !CallbackArgsToBool(args, 3, &trust_obj_sign); 548 fail |= !CallbackArgsToBool(args, 3, &trust_obj_sign);
528 if (fail) { 549 if (fail) {
529 LOG(ERROR) << "EditCATrust args fail"; 550 LOG(ERROR) << "EditCATrust args fail";
530 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss"); 551 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss");
(...skipping 13 matching lines...) Expand all
544 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_SET_TRUST_ERROR_TITLE), 565 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_SET_TRUST_ERROR_TITLE),
545 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR)); 566 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR));
546 } 567 }
547 } 568 }
548 569
549 void CertificateManagerHandler::EditServer(const ListValue* args) { 570 void CertificateManagerHandler::EditServer(const ListValue* args) {
550 NOTIMPLEMENTED(); 571 NOTIMPLEMENTED();
551 } 572 }
552 573
553 void CertificateManagerHandler::ExportPersonal(const ListValue* args) { 574 void CertificateManagerHandler::ExportPersonal(const ListValue* args) {
554 net::X509Certificate* cert = CallbackArgsToCert(args); 575 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
555 if (!cert) 576 if (!cert)
556 return; 577 return;
557 578
558 selected_cert_list_.push_back(cert); 579 selected_cert_list_.push_back(cert);
559 580
560 SelectFileDialog::FileTypeInfo file_type_info; 581 SelectFileDialog::FileTypeInfo file_type_info;
561 file_type_info.extensions.resize(1); 582 file_type_info.extensions.resize(1);
562 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12")); 583 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12"));
563 file_type_info.extension_description_overrides.push_back( 584 file_type_info.extension_description_overrides.push_back(
564 l10n_util::GetStringUTF16(IDS_CERT_MANAGER_PKCS12_FILES)); 585 l10n_util::GetStringUTF16(IDS_CERT_MANAGER_PKCS12_FILES));
(...skipping 12 matching lines...) Expand all
577 598
578 void CertificateManagerHandler::ExportPersonalFileSelected( 599 void CertificateManagerHandler::ExportPersonalFileSelected(
579 const FilePath& path) { 600 const FilePath& path) {
580 file_path_ = path; 601 file_path_ = path;
581 web_ui()->CallJavascriptFunction( 602 web_ui()->CallJavascriptFunction(
582 "CertificateManager.exportPersonalAskPassword"); 603 "CertificateManager.exportPersonalAskPassword");
583 } 604 }
584 605
585 void CertificateManagerHandler::ExportPersonalPasswordSelected( 606 void CertificateManagerHandler::ExportPersonalPasswordSelected(
586 const ListValue* args) { 607 const ListValue* args) {
587 if (!args->GetString(0, &password_)){ 608 if (!args->GetString(0, &password_)) {
588 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 609 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss");
589 ImportExportCleanup(); 610 ImportExportCleanup();
590 return; 611 return;
591 } 612 }
592 613
593 // Currently, we don't support exporting more than one at a time. If we do, 614 // Currently, we don't support exporting more than one at a time. If we do,
594 // this would need to either change this to use UnlockSlotsIfNecessary or 615 // this would need to either change this to use UnlockSlotsIfNecessary or
595 // change UnlockCertSlotIfNecessary to take a CertificateList. 616 // change UnlockCertSlotIfNecessary to take a CertificateList.
596 DCHECK_EQ(selected_cert_list_.size(), 1U); 617 DCHECK_EQ(selected_cert_list_.size(), 1U);
597 618
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 if (write_errno) { 654 if (write_errno) {
634 ShowError( 655 ShowError(
635 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_PKCS12_EXPORT_ERROR_TITLE), 656 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_PKCS12_EXPORT_ERROR_TITLE),
636 l10n_util::GetStringFUTF8(IDS_CERT_MANAGER_WRITE_ERROR_FORMAT, 657 l10n_util::GetStringFUTF8(IDS_CERT_MANAGER_WRITE_ERROR_FORMAT,
637 UTF8ToUTF16(safe_strerror(write_errno)))); 658 UTF8ToUTF16(safe_strerror(write_errno))));
638 } 659 }
639 } 660 }
640 661
641 void CertificateManagerHandler::StartImportPersonal(const ListValue* args) { 662 void CertificateManagerHandler::StartImportPersonal(const ListValue* args) {
642 SelectFileDialog::FileTypeInfo file_type_info; 663 SelectFileDialog::FileTypeInfo file_type_info;
643 if (!args->GetBoolean(0, &use_hardware_backed_)){ 664 if (!args->GetBoolean(0, &use_hardware_backed_)) {
644 // Unable to retrieve the hardware backed attribute from the args, 665 // Unable to retrieve the hardware backed attribute from the args,
645 // so bail. 666 // so bail.
646 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 667 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss");
647 ImportExportCleanup(); 668 ImportExportCleanup();
648 return; 669 return;
649 } 670 }
650 file_type_info.extensions.resize(1); 671 file_type_info.extensions.resize(1);
651 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12")); 672 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12"));
652 file_type_info.extension_description_overrides.push_back( 673 file_type_info.extension_description_overrides.push_back(
653 l10n_util::GetStringUTF16(IDS_CERT_MANAGER_PKCS12_FILES)); 674 l10n_util::GetStringUTF16(IDS_CERT_MANAGER_PKCS12_FILES));
654 file_type_info.include_all_files = true; 675 file_type_info.include_all_files = true;
655 select_file_dialog_ = SelectFileDialog::Create(this); 676 select_file_dialog_ = SelectFileDialog::Create(this);
656 select_file_dialog_->SelectFile( 677 select_file_dialog_->SelectFile(
657 SelectFileDialog::SELECT_OPEN_FILE, string16(), 678 SelectFileDialog::SELECT_OPEN_FILE, string16(),
658 FilePath(), &file_type_info, 1, FILE_PATH_LITERAL("p12"), 679 FilePath(), &file_type_info, 1, FILE_PATH_LITERAL("p12"),
659 web_ui()->GetWebContents(), GetParentWindow(), 680 web_ui()->GetWebContents(), GetParentWindow(),
660 reinterpret_cast<void*>(IMPORT_PERSONAL_FILE_SELECTED)); 681 reinterpret_cast<void*>(IMPORT_PERSONAL_FILE_SELECTED));
661 } 682 }
662 683
663 void CertificateManagerHandler::ImportPersonalFileSelected( 684 void CertificateManagerHandler::ImportPersonalFileSelected(
664 const FilePath& path) { 685 const FilePath& path) {
665 file_path_ = path; 686 file_path_ = path;
666 web_ui()->CallJavascriptFunction( 687 web_ui()->CallJavascriptFunction(
667 "CertificateManager.importPersonalAskPassword"); 688 "CertificateManager.importPersonalAskPassword");
668 } 689 }
669 690
670 void CertificateManagerHandler::ImportPersonalPasswordSelected( 691 void CertificateManagerHandler::ImportPersonalPasswordSelected(
671 const ListValue* args) { 692 const ListValue* args) {
672 if (!args->GetString(0, &password_)){ 693 if (!args->GetString(0, &password_)) {
673 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 694 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss");
674 ImportExportCleanup(); 695 ImportExportCleanup();
675 return; 696 return;
676 } 697 }
677 file_access_provider_->StartRead( 698 file_access_provider_->StartRead(
678 file_path_, 699 file_path_,
679 &consumer_, 700 &consumer_,
680 base::Bind(&CertificateManagerHandler::ImportPersonalFileRead, 701 base::Bind(&CertificateManagerHandler::ImportPersonalFileRead,
681 base::Unretained(this))); 702 base::Unretained(this)));
682 } 703 }
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR)); 929 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR));
909 } else if (!not_imported.empty()) { 930 } else if (!not_imported.empty()) {
910 ShowImportErrors( 931 ShowImportErrors(
911 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_CA_IMPORT_ERROR_TITLE), 932 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_CA_IMPORT_ERROR_TITLE),
912 not_imported); 933 not_imported);
913 } 934 }
914 ImportExportCleanup(); 935 ImportExportCleanup();
915 } 936 }
916 937
917 void CertificateManagerHandler::Export(const ListValue* args) { 938 void CertificateManagerHandler::Export(const ListValue* args) {
918 net::X509Certificate* cert = CallbackArgsToCert(args); 939 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
919 if (!cert) 940 if (!cert)
920 return; 941 return;
921 ShowCertExportDialog(web_ui()->GetWebContents(), GetParentWindow(), 942 ShowCertExportDialog(web_ui()->GetWebContents(), GetParentWindow(),
922 cert->os_cert_handle()); 943 cert->os_cert_handle());
923 } 944 }
924 945
925 void CertificateManagerHandler::Delete(const ListValue* args) { 946 void CertificateManagerHandler::Delete(const ListValue* args) {
926 net::X509Certificate* cert = CallbackArgsToCert(args); 947 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
927 if (!cert) 948 if (!cert)
928 return; 949 return;
929 bool result = certificate_manager_model_->Delete(cert); 950 bool result = certificate_manager_model_->Delete(cert);
930 if (!result) { 951 if (!result) {
931 // TODO(mattm): better error messages? 952 // TODO(mattm): better error messages?
932 ShowError( 953 ShowError(
933 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_DELETE_CERT_ERROR_TITLE), 954 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_DELETE_CERT_ERROR_TITLE),
934 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR)); 955 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR));
935 } 956 }
936 } 957 }
(...skipping 27 matching lines...) Expand all
964 DictionaryValue* dict = new DictionaryValue; 985 DictionaryValue* dict = new DictionaryValue;
965 dict->SetString(kKeyId, OrgNameToId(i->first)); 986 dict->SetString(kKeyId, OrgNameToId(i->first));
966 dict->SetString(kNameId, i->first); 987 dict->SetString(kNameId, i->first);
967 988
968 // Populate second level (certs). 989 // Populate second level (certs).
969 ListValue* subnodes = new ListValue; 990 ListValue* subnodes = new ListValue;
970 for (net::CertificateList::const_iterator org_cert_it = i->second.begin(); 991 for (net::CertificateList::const_iterator org_cert_it = i->second.begin();
971 org_cert_it != i->second.end(); ++org_cert_it) { 992 org_cert_it != i->second.end(); ++org_cert_it) {
972 DictionaryValue* cert_dict = new DictionaryValue; 993 DictionaryValue* cert_dict = new DictionaryValue;
973 net::X509Certificate* cert = org_cert_it->get(); 994 net::X509Certificate* cert = org_cert_it->get();
974 cert_dict->SetString(kKeyId, CertToId(*cert)); 995 cert_dict->SetString(kKeyId, cert_id_map_->CertToId(cert));
975 cert_dict->SetString(kNameId, certificate_manager_model_->GetColumnText( 996 cert_dict->SetString(kNameId, certificate_manager_model_->GetColumnText(
976 *cert, CertificateManagerModel::COL_SUBJECT_NAME)); 997 *cert, CertificateManagerModel::COL_SUBJECT_NAME));
977 cert_dict->SetBoolean( 998 cert_dict->SetBoolean(
978 kReadOnlyId, 999 kReadOnlyId,
979 certificate_manager_model_->cert_db().IsReadOnly(cert)); 1000 certificate_manager_model_->cert_db().IsReadOnly(cert));
980 cert_dict->SetBoolean( 1001 cert_dict->SetBoolean(
981 kUntrustedId, 1002 kUntrustedId,
982 certificate_manager_model_->cert_db().IsUntrusted(cert)); 1003 certificate_manager_model_->cert_db().IsUntrusted(cert));
983 // TODO(hshi): This should be determined by testing for PKCS #11 1004 // TODO(hshi): This should be determined by testing for PKCS #11
984 // CKA_EXTRACTABLE attribute. We may need to use the NSS function 1005 // CKA_EXTRACTABLE attribute. We may need to use the NSS function
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 web_ui()->CallJavascriptFunction("CertificateManager.onCheckTpmTokenReady", 1082 web_ui()->CallJavascriptFunction("CertificateManager.onCheckTpmTokenReady",
1062 ready); 1083 ready);
1063 } 1084 }
1064 #endif 1085 #endif
1065 1086
1066 gfx::NativeWindow CertificateManagerHandler::GetParentWindow() const { 1087 gfx::NativeWindow CertificateManagerHandler::GetParentWindow() const {
1067 return web_ui()->GetWebContents()->GetView()->GetTopLevelNativeWindow(); 1088 return web_ui()->GetWebContents()->GetView()->GetTopLevelNativeWindow();
1068 } 1089 }
1069 1090
1070 } // namespace options2 1091 } // namespace options2
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698