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

Side by Side Diff: chrome/browser/ui/webui/options/certificate_manager_handler.cc

Issue 1995113002: Rename WebUI::CallJavascriptFunction to WebUI::CallJavascriptFunctionUnsafe (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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/options/certificate_manager_handler.h" 5 #include "chrome/browser/ui/webui/options/certificate_manager_handler.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <algorithm> 10 #include <algorithm>
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 cert); 595 cert);
596 return; 596 return;
597 } 597 }
598 #endif 598 #endif
599 ShowCertificateViewer(web_ui()->GetWebContents(), GetParentWindow(), cert); 599 ShowCertificateViewer(web_ui()->GetWebContents(), GetParentWindow(), cert);
600 } 600 }
601 601
602 void CertificateManagerHandler::GetCATrust(const base::ListValue* args) { 602 void CertificateManagerHandler::GetCATrust(const base::ListValue* args) {
603 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args); 603 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
604 if (!cert) { 604 if (!cert) {
605 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss"); 605 web_ui()->CallJavascriptFunctionUnsafe(
606 "CertificateEditCaTrustOverlay.dismiss");
606 return; 607 return;
607 } 608 }
608 609
609 net::NSSCertDatabase::TrustBits trust_bits = 610 net::NSSCertDatabase::TrustBits trust_bits =
610 certificate_manager_model_->cert_db()->GetCertTrust(cert, net::CA_CERT); 611 certificate_manager_model_->cert_db()->GetCertTrust(cert, net::CA_CERT);
611 base::FundamentalValue ssl_value( 612 base::FundamentalValue ssl_value(
612 static_cast<bool>(trust_bits & net::NSSCertDatabase::TRUSTED_SSL)); 613 static_cast<bool>(trust_bits & net::NSSCertDatabase::TRUSTED_SSL));
613 base::FundamentalValue email_value( 614 base::FundamentalValue email_value(
614 static_cast<bool>(trust_bits & net::NSSCertDatabase::TRUSTED_EMAIL)); 615 static_cast<bool>(trust_bits & net::NSSCertDatabase::TRUSTED_EMAIL));
615 base::FundamentalValue obj_sign_value( 616 base::FundamentalValue obj_sign_value(
616 static_cast<bool>(trust_bits & net::NSSCertDatabase::TRUSTED_OBJ_SIGN)); 617 static_cast<bool>(trust_bits & net::NSSCertDatabase::TRUSTED_OBJ_SIGN));
617 web_ui()->CallJavascriptFunction( 618 web_ui()->CallJavascriptFunctionUnsafe(
618 "CertificateEditCaTrustOverlay.populateTrust", 619 "CertificateEditCaTrustOverlay.populateTrust", ssl_value, email_value,
619 ssl_value, email_value, obj_sign_value); 620 obj_sign_value);
620 } 621 }
621 622
622 void CertificateManagerHandler::EditCATrust(const base::ListValue* args) { 623 void CertificateManagerHandler::EditCATrust(const base::ListValue* args) {
623 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args); 624 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args);
624 bool fail = !cert; 625 bool fail = !cert;
625 bool trust_ssl = false; 626 bool trust_ssl = false;
626 bool trust_email = false; 627 bool trust_email = false;
627 bool trust_obj_sign = false; 628 bool trust_obj_sign = false;
628 fail |= !CallbackArgsToBool(args, 1, &trust_ssl); 629 fail |= !CallbackArgsToBool(args, 1, &trust_ssl);
629 fail |= !CallbackArgsToBool(args, 2, &trust_email); 630 fail |= !CallbackArgsToBool(args, 2, &trust_email);
630 fail |= !CallbackArgsToBool(args, 3, &trust_obj_sign); 631 fail |= !CallbackArgsToBool(args, 3, &trust_obj_sign);
631 if (fail) { 632 if (fail) {
632 LOG(ERROR) << "EditCATrust args fail"; 633 LOG(ERROR) << "EditCATrust args fail";
633 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss"); 634 web_ui()->CallJavascriptFunctionUnsafe(
635 "CertificateEditCaTrustOverlay.dismiss");
634 return; 636 return;
635 } 637 }
636 638
637 bool result = certificate_manager_model_->SetCertTrust( 639 bool result = certificate_manager_model_->SetCertTrust(
638 cert, 640 cert,
639 net::CA_CERT, 641 net::CA_CERT,
640 trust_ssl * net::NSSCertDatabase::TRUSTED_SSL + 642 trust_ssl * net::NSSCertDatabase::TRUSTED_SSL +
641 trust_email * net::NSSCertDatabase::TRUSTED_EMAIL + 643 trust_email * net::NSSCertDatabase::TRUSTED_EMAIL +
642 trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN); 644 trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN);
643 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss"); 645 web_ui()->CallJavascriptFunctionUnsafe(
646 "CertificateEditCaTrustOverlay.dismiss");
644 if (!result) { 647 if (!result) {
645 // TODO(mattm): better error messages? 648 // TODO(mattm): better error messages?
646 ShowError( 649 ShowError(
647 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_SET_TRUST_ERROR_TITLE), 650 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_SET_TRUST_ERROR_TITLE),
648 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR)); 651 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR));
649 } 652 }
650 } 653 }
651 654
652 void CertificateManagerHandler::EditServer(const base::ListValue* args) { 655 void CertificateManagerHandler::EditServer(const base::ListValue* args) {
653 NOTIMPLEMENTED(); 656 NOTIMPLEMENTED();
(...skipping 21 matching lines...) Expand all
675 reinterpret_cast<void*>(EXPORT_PERSONAL_FILE_SELECTED)); 678 reinterpret_cast<void*>(EXPORT_PERSONAL_FILE_SELECTED));
676 } 679 }
677 680
678 void CertificateManagerHandler::ExportAllPersonal(const base::ListValue* args) { 681 void CertificateManagerHandler::ExportAllPersonal(const base::ListValue* args) {
679 NOTIMPLEMENTED(); 682 NOTIMPLEMENTED();
680 } 683 }
681 684
682 void CertificateManagerHandler::ExportPersonalFileSelected( 685 void CertificateManagerHandler::ExportPersonalFileSelected(
683 const base::FilePath& path) { 686 const base::FilePath& path) {
684 file_path_ = path; 687 file_path_ = path;
685 web_ui()->CallJavascriptFunction( 688 web_ui()->CallJavascriptFunctionUnsafe(
686 "CertificateManager.exportPersonalAskPassword"); 689 "CertificateManager.exportPersonalAskPassword");
687 } 690 }
688 691
689 void CertificateManagerHandler::ExportPersonalPasswordSelected( 692 void CertificateManagerHandler::ExportPersonalPasswordSelected(
690 const base::ListValue* args) { 693 const base::ListValue* args) {
691 if (!args->GetString(0, &password_)) { 694 if (!args->GetString(0, &password_)) {
692 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 695 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
693 ImportExportCleanup(); 696 ImportExportCleanup();
694 return; 697 return;
695 } 698 }
696 699
697 // Currently, we don't support exporting more than one at a time. If we do, 700 // Currently, we don't support exporting more than one at a time. If we do,
698 // this would need to either change this to use UnlockSlotsIfNecessary or 701 // this would need to either change this to use UnlockSlotsIfNecessary or
699 // change UnlockCertSlotIfNecessary to take a CertificateList. 702 // change UnlockCertSlotIfNecessary to take a CertificateList.
700 DCHECK_EQ(selected_cert_list_.size(), 1U); 703 DCHECK_EQ(selected_cert_list_.size(), 1U);
701 704
702 // TODO(mattm): do something smarter about non-extractable keys 705 // TODO(mattm): do something smarter about non-extractable keys
703 chrome::UnlockCertSlotIfNecessary( 706 chrome::UnlockCertSlotIfNecessary(
704 selected_cert_list_[0].get(), 707 selected_cert_list_[0].get(),
705 chrome::kCryptoModulePasswordCertExport, 708 chrome::kCryptoModulePasswordCertExport,
706 net::HostPortPair(), // unused. 709 net::HostPortPair(), // unused.
707 GetParentWindow(), 710 GetParentWindow(),
708 base::Bind(&CertificateManagerHandler::ExportPersonalSlotsUnlocked, 711 base::Bind(&CertificateManagerHandler::ExportPersonalSlotsUnlocked,
709 base::Unretained(this))); 712 base::Unretained(this)));
710 } 713 }
711 714
712 void CertificateManagerHandler::ExportPersonalSlotsUnlocked() { 715 void CertificateManagerHandler::ExportPersonalSlotsUnlocked() {
713 std::string output; 716 std::string output;
714 int num_exported = certificate_manager_model_->cert_db()->ExportToPKCS12( 717 int num_exported = certificate_manager_model_->cert_db()->ExportToPKCS12(
715 selected_cert_list_, 718 selected_cert_list_,
716 password_, 719 password_,
717 &output); 720 &output);
718 if (!num_exported) { 721 if (!num_exported) {
719 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 722 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
720 ShowError( 723 ShowError(
721 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_PKCS12_EXPORT_ERROR_TITLE), 724 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_PKCS12_EXPORT_ERROR_TITLE),
722 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR)); 725 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR));
723 ImportExportCleanup(); 726 ImportExportCleanup();
724 return; 727 return;
725 } 728 }
726 file_access_provider_->StartWrite( 729 file_access_provider_->StartWrite(
727 file_path_, 730 file_path_,
728 output, 731 output,
729 base::Bind(&CertificateManagerHandler::ExportPersonalFileWritten, 732 base::Bind(&CertificateManagerHandler::ExportPersonalFileWritten,
730 base::Unretained(this)), 733 base::Unretained(this)),
731 &tracker_); 734 &tracker_);
732 } 735 }
733 736
734 void CertificateManagerHandler::ExportPersonalFileWritten( 737 void CertificateManagerHandler::ExportPersonalFileWritten(
735 const int* write_errno, const int* bytes_written) { 738 const int* write_errno, const int* bytes_written) {
736 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 739 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
737 ImportExportCleanup(); 740 ImportExportCleanup();
738 if (*write_errno) { 741 if (*write_errno) {
739 ShowError( 742 ShowError(
740 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_PKCS12_EXPORT_ERROR_TITLE), 743 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_PKCS12_EXPORT_ERROR_TITLE),
741 l10n_util::GetStringFUTF8(IDS_CERT_MANAGER_WRITE_ERROR_FORMAT, 744 l10n_util::GetStringFUTF8(IDS_CERT_MANAGER_WRITE_ERROR_FORMAT,
742 UTF8ToUTF16( 745 UTF8ToUTF16(
743 base::safe_strerror(*write_errno)))); 746 base::safe_strerror(*write_errno))));
744 } 747 }
745 } 748 }
746 749
747 void CertificateManagerHandler::StartImportPersonal( 750 void CertificateManagerHandler::StartImportPersonal(
748 const base::ListValue* args) { 751 const base::ListValue* args) {
749 ui::SelectFileDialog::FileTypeInfo file_type_info; 752 ui::SelectFileDialog::FileTypeInfo file_type_info;
750 if (!args->GetBoolean(0, &use_hardware_backed_)) { 753 if (!args->GetBoolean(0, &use_hardware_backed_)) {
751 // Unable to retrieve the hardware backed attribute from the args, 754 // Unable to retrieve the hardware backed attribute from the args,
752 // so bail. 755 // so bail.
753 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 756 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
754 ImportExportCleanup(); 757 ImportExportCleanup();
755 return; 758 return;
756 } 759 }
757 file_type_info.extensions.resize(1); 760 file_type_info.extensions.resize(1);
758 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12")); 761 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("p12"));
759 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("pfx")); 762 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("pfx"));
760 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("crt")); 763 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("crt"));
761 file_type_info.extension_description_overrides.push_back( 764 file_type_info.extension_description_overrides.push_back(
762 l10n_util::GetStringUTF16(IDS_CERT_USAGE_SSL_CLIENT)); 765 l10n_util::GetStringUTF16(IDS_CERT_USAGE_SSL_CLIENT));
763 file_type_info.include_all_files = true; 766 file_type_info.include_all_files = true;
(...skipping 11 matching lines...) Expand all
775 file_access_provider_->StartRead( 778 file_access_provider_->StartRead(
776 path, base::Bind(&CertificateManagerHandler::ImportPersonalFileRead, 779 path, base::Bind(&CertificateManagerHandler::ImportPersonalFileRead,
777 base::Unretained(this)), 780 base::Unretained(this)),
778 &tracker_); 781 &tracker_);
779 } 782 }
780 783
781 void CertificateManagerHandler::ImportPersonalFileRead( 784 void CertificateManagerHandler::ImportPersonalFileRead(
782 const int* read_errno, const std::string* data) { 785 const int* read_errno, const std::string* data) {
783 if (*read_errno) { 786 if (*read_errno) {
784 ImportExportCleanup(); 787 ImportExportCleanup();
785 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 788 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
786 ShowError( 789 ShowError(
787 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_ERROR_TITLE), 790 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_ERROR_TITLE),
788 l10n_util::GetStringFUTF8(IDS_CERT_MANAGER_READ_ERROR_FORMAT, 791 l10n_util::GetStringFUTF8(IDS_CERT_MANAGER_READ_ERROR_FORMAT,
789 UTF8ToUTF16( 792 UTF8ToUTF16(
790 base::safe_strerror(*read_errno)))); 793 base::safe_strerror(*read_errno))));
791 return; 794 return;
792 } 795 }
793 796
794 file_data_ = *data; 797 file_data_ = *data;
795 798
796 if (CouldBePFX(file_data_)) { 799 if (CouldBePFX(file_data_)) {
797 web_ui()->CallJavascriptFunction( 800 web_ui()->CallJavascriptFunctionUnsafe(
798 "CertificateManager.importPersonalAskPassword"); 801 "CertificateManager.importPersonalAskPassword");
799 return; 802 return;
800 } 803 }
801 804
802 // Non .p12/.pfx files are assumed to be single/chain certificates without 805 // Non .p12/.pfx files are assumed to be single/chain certificates without
803 // private key data. The default extension according to spec is '.crt', 806 // private key data. The default extension according to spec is '.crt',
804 // however other extensions are also used in some places to represent these 807 // however other extensions are also used in some places to represent these
805 // certificates. 808 // certificates.
806 int result = certificate_manager_model_->ImportUserCert(file_data_); 809 int result = certificate_manager_model_->ImportUserCert(file_data_);
807 ImportExportCleanup(); 810 ImportExportCleanup();
808 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 811 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
809 int string_id; 812 int string_id;
810 switch (result) { 813 switch (result) {
811 case net::OK: 814 case net::OK:
812 return; 815 return;
813 case net::ERR_NO_PRIVATE_KEY_FOR_CERT: 816 case net::ERR_NO_PRIVATE_KEY_FOR_CERT:
814 string_id = IDS_CERT_MANAGER_IMPORT_MISSING_KEY; 817 string_id = IDS_CERT_MANAGER_IMPORT_MISSING_KEY;
815 break; 818 break;
816 case net::ERR_CERT_INVALID: 819 case net::ERR_CERT_INVALID:
817 string_id = IDS_CERT_MANAGER_IMPORT_INVALID_FILE; 820 string_id = IDS_CERT_MANAGER_IMPORT_INVALID_FILE;
818 break; 821 break;
819 default: 822 default:
820 string_id = IDS_CERT_MANAGER_UNKNOWN_ERROR; 823 string_id = IDS_CERT_MANAGER_UNKNOWN_ERROR;
821 break; 824 break;
822 } 825 }
823 ShowError( 826 ShowError(
824 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_ERROR_TITLE), 827 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_ERROR_TITLE),
825 l10n_util::GetStringUTF8(string_id)); 828 l10n_util::GetStringUTF8(string_id));
826 } 829 }
827 830
828 void CertificateManagerHandler::ImportPersonalPasswordSelected( 831 void CertificateManagerHandler::ImportPersonalPasswordSelected(
829 const base::ListValue* args) { 832 const base::ListValue* args) {
830 if (!args->GetString(0, &password_)) { 833 if (!args->GetString(0, &password_)) {
831 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 834 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
832 ImportExportCleanup(); 835 ImportExportCleanup();
833 return; 836 return;
834 } 837 }
835 838
836 if (use_hardware_backed_) { 839 if (use_hardware_backed_) {
837 module_ = certificate_manager_model_->cert_db()->GetPrivateModule(); 840 module_ = certificate_manager_model_->cert_db()->GetPrivateModule();
838 } else { 841 } else {
839 module_ = certificate_manager_model_->cert_db()->GetPublicModule(); 842 module_ = certificate_manager_model_->cert_db()->GetPublicModule();
840 } 843 }
841 844
(...skipping 10 matching lines...) Expand all
852 855
853 void CertificateManagerHandler::ImportPersonalSlotUnlocked() { 856 void CertificateManagerHandler::ImportPersonalSlotUnlocked() {
854 // Determine if the private key should be unextractable after the import. 857 // Determine if the private key should be unextractable after the import.
855 // We do this by checking the value of |use_hardware_backed_| which is set 858 // We do this by checking the value of |use_hardware_backed_| which is set
856 // to true if importing into a hardware module. Currently, this only happens 859 // to true if importing into a hardware module. Currently, this only happens
857 // for Chrome OS when the "Import and Bind" option is chosen. 860 // for Chrome OS when the "Import and Bind" option is chosen.
858 bool is_extractable = !use_hardware_backed_; 861 bool is_extractable = !use_hardware_backed_;
859 int result = certificate_manager_model_->ImportFromPKCS12( 862 int result = certificate_manager_model_->ImportFromPKCS12(
860 module_.get(), file_data_, password_, is_extractable); 863 module_.get(), file_data_, password_, is_extractable);
861 ImportExportCleanup(); 864 ImportExportCleanup();
862 web_ui()->CallJavascriptFunction("CertificateRestoreOverlay.dismiss"); 865 web_ui()->CallJavascriptFunctionUnsafe("CertificateRestoreOverlay.dismiss");
863 int string_id; 866 int string_id;
864 switch (result) { 867 switch (result) {
865 case net::OK: 868 case net::OK:
866 return; 869 return;
867 case net::ERR_PKCS12_IMPORT_BAD_PASSWORD: 870 case net::ERR_PKCS12_IMPORT_BAD_PASSWORD:
868 // TODO(mattm): if the error was a bad password, we should reshow the 871 // TODO(mattm): if the error was a bad password, we should reshow the
869 // password dialog after the user dismisses the error dialog. 872 // password dialog after the user dismisses the error dialog.
870 string_id = IDS_CERT_MANAGER_BAD_PASSWORD; 873 string_id = IDS_CERT_MANAGER_BAD_PASSWORD;
871 break; 874 break;
872 case net::ERR_PKCS12_IMPORT_INVALID_MAC: 875 case net::ERR_PKCS12_IMPORT_INVALID_MAC:
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 return; 1010 return;
1008 } 1011 }
1009 1012
1010 scoped_refptr<net::X509Certificate> root_cert = 1013 scoped_refptr<net::X509Certificate> root_cert =
1011 certificate_manager_model_->cert_db()->FindRootInList( 1014 certificate_manager_model_->cert_db()->FindRootInList(
1012 selected_cert_list_); 1015 selected_cert_list_);
1013 1016
1014 // TODO(mattm): check here if root_cert is not a CA cert and show error. 1017 // TODO(mattm): check here if root_cert is not a CA cert and show error.
1015 1018
1016 base::StringValue cert_name(root_cert->subject().GetDisplayName()); 1019 base::StringValue cert_name(root_cert->subject().GetDisplayName());
1017 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.showImport", 1020 web_ui()->CallJavascriptFunctionUnsafe(
1018 cert_name); 1021 "CertificateEditCaTrustOverlay.showImport", cert_name);
1019 } 1022 }
1020 1023
1021 void CertificateManagerHandler::ImportCATrustSelected( 1024 void CertificateManagerHandler::ImportCATrustSelected(
1022 const base::ListValue* args) { 1025 const base::ListValue* args) {
1023 bool fail = false; 1026 bool fail = false;
1024 bool trust_ssl = false; 1027 bool trust_ssl = false;
1025 bool trust_email = false; 1028 bool trust_email = false;
1026 bool trust_obj_sign = false; 1029 bool trust_obj_sign = false;
1027 fail |= !CallbackArgsToBool(args, 0, &trust_ssl); 1030 fail |= !CallbackArgsToBool(args, 0, &trust_ssl);
1028 fail |= !CallbackArgsToBool(args, 1, &trust_email); 1031 fail |= !CallbackArgsToBool(args, 1, &trust_email);
1029 fail |= !CallbackArgsToBool(args, 2, &trust_obj_sign); 1032 fail |= !CallbackArgsToBool(args, 2, &trust_obj_sign);
1030 if (fail) { 1033 if (fail) {
1031 LOG(ERROR) << "ImportCATrustSelected args fail"; 1034 LOG(ERROR) << "ImportCATrustSelected args fail";
1032 ImportExportCleanup(); 1035 ImportExportCleanup();
1033 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss"); 1036 web_ui()->CallJavascriptFunctionUnsafe(
1037 "CertificateEditCaTrustOverlay.dismiss");
1034 return; 1038 return;
1035 } 1039 }
1036 1040
1037 // TODO(mattm): add UI for setting explicit distrust, too. 1041 // TODO(mattm): add UI for setting explicit distrust, too.
1038 // http://crbug.com/128411 1042 // http://crbug.com/128411
1039 net::NSSCertDatabase::ImportCertFailureList not_imported; 1043 net::NSSCertDatabase::ImportCertFailureList not_imported;
1040 bool result = certificate_manager_model_->ImportCACerts( 1044 bool result = certificate_manager_model_->ImportCACerts(
1041 selected_cert_list_, 1045 selected_cert_list_,
1042 trust_ssl * net::NSSCertDatabase::TRUSTED_SSL + 1046 trust_ssl * net::NSSCertDatabase::TRUSTED_SSL +
1043 trust_email * net::NSSCertDatabase::TRUSTED_EMAIL + 1047 trust_email * net::NSSCertDatabase::TRUSTED_EMAIL +
1044 trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN, 1048 trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN,
1045 &not_imported); 1049 &not_imported);
1046 web_ui()->CallJavascriptFunction("CertificateEditCaTrustOverlay.dismiss"); 1050 web_ui()->CallJavascriptFunctionUnsafe(
1051 "CertificateEditCaTrustOverlay.dismiss");
1047 if (!result) { 1052 if (!result) {
1048 ShowError( 1053 ShowError(
1049 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_CA_IMPORT_ERROR_TITLE), 1054 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_CA_IMPORT_ERROR_TITLE),
1050 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR)); 1055 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_UNKNOWN_ERROR));
1051 } else if (!not_imported.empty()) { 1056 } else if (!not_imported.empty()) {
1052 ShowImportErrors( 1057 ShowImportErrors(
1053 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_CA_IMPORT_ERROR_TITLE), 1058 l10n_util::GetStringUTF8(IDS_CERT_MANAGER_CA_IMPORT_ERROR_TITLE),
1054 not_imported); 1059 not_imported);
1055 } 1060 }
1056 ImportExportCleanup(); 1061 ImportExportCleanup();
(...skipping 23 matching lines...) Expand all
1080 std::unique_ptr<CertificateManagerModel> model) { 1085 std::unique_ptr<CertificateManagerModel> model) {
1081 certificate_manager_model_ = std::move(model); 1086 certificate_manager_model_ = std::move(model);
1082 CertificateManagerModelReady(); 1087 CertificateManagerModelReady();
1083 } 1088 }
1084 1089
1085 void CertificateManagerHandler::CertificateManagerModelReady() { 1090 void CertificateManagerHandler::CertificateManagerModelReady() {
1086 base::FundamentalValue user_db_available_value( 1091 base::FundamentalValue user_db_available_value(
1087 certificate_manager_model_->is_user_db_available()); 1092 certificate_manager_model_->is_user_db_available());
1088 base::FundamentalValue tpm_available_value( 1093 base::FundamentalValue tpm_available_value(
1089 certificate_manager_model_->is_tpm_available()); 1094 certificate_manager_model_->is_tpm_available());
1090 web_ui()->CallJavascriptFunction("CertificateManager.onModelReady", 1095 web_ui()->CallJavascriptFunctionUnsafe("CertificateManager.onModelReady",
1091 user_db_available_value, 1096 user_db_available_value,
1092 tpm_available_value); 1097 tpm_available_value);
1093 certificate_manager_model_->Refresh(); 1098 certificate_manager_model_->Refresh();
1094 } 1099 }
1095 1100
1096 void CertificateManagerHandler::Populate(const base::ListValue* args) { 1101 void CertificateManagerHandler::Populate(const base::ListValue* args) {
1097 if (certificate_manager_model_) { 1102 if (certificate_manager_model_) {
1098 // Already have a model, the webui must be re-loading. Just re-run the 1103 // Already have a model, the webui must be re-loading. Just re-run the
1099 // webui initialization. 1104 // webui initialization.
1100 CertificateManagerModelReady(); 1105 CertificateManagerModelReady();
1101 return; 1106 return;
1102 } 1107 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1176 std::sort(subnodes->begin(), subnodes->end(), comparator); 1181 std::sort(subnodes->begin(), subnodes->end(), comparator);
1177 1182
1178 dict->Set(kSubNodesId, subnodes); 1183 dict->Set(kSubNodesId, subnodes);
1179 nodes->Append(dict); 1184 nodes->Append(dict);
1180 } 1185 }
1181 std::sort(nodes->begin(), nodes->end(), comparator); 1186 std::sort(nodes->begin(), nodes->end(), comparator);
1182 1187
1183 base::ListValue args; 1188 base::ListValue args;
1184 args.AppendString(tree_name); 1189 args.AppendString(tree_name);
1185 args.Append(nodes); 1190 args.Append(nodes);
1186 web_ui()->CallJavascriptFunction("CertificateManager.onPopulateTree", args); 1191 web_ui()->CallJavascriptFunctionUnsafe("CertificateManager.onPopulateTree",
1192 args);
1187 } 1193 }
1188 } 1194 }
1189 1195
1190 void CertificateManagerHandler::ShowError(const std::string& title, 1196 void CertificateManagerHandler::ShowError(const std::string& title,
1191 const std::string& error) const { 1197 const std::string& error) const {
1192 ScopedVector<const base::Value> args; 1198 ScopedVector<const base::Value> args;
1193 args.push_back(new base::StringValue(title)); 1199 args.push_back(new base::StringValue(title));
1194 args.push_back(new base::StringValue(error)); 1200 args.push_back(new base::StringValue(error));
1195 args.push_back(new base::StringValue(l10n_util::GetStringUTF8(IDS_OK))); 1201 args.push_back(new base::StringValue(l10n_util::GetStringUTF8(IDS_OK)));
1196 args.push_back(base::Value::CreateNullValue().release()); // cancelTitle 1202 args.push_back(base::Value::CreateNullValue().release()); // cancelTitle
1197 args.push_back(base::Value::CreateNullValue().release()); // okCallback 1203 args.push_back(base::Value::CreateNullValue().release()); // okCallback
1198 args.push_back(base::Value::CreateNullValue().release()); // cancelCallback 1204 args.push_back(base::Value::CreateNullValue().release()); // cancelCallback
1199 web_ui()->CallJavascriptFunction("AlertOverlay.show", args.get()); 1205 web_ui()->CallJavascriptFunctionUnsafe("AlertOverlay.show", args.get());
1200 } 1206 }
1201 1207
1202 void CertificateManagerHandler::ShowImportErrors( 1208 void CertificateManagerHandler::ShowImportErrors(
1203 const std::string& title, 1209 const std::string& title,
1204 const net::NSSCertDatabase::ImportCertFailureList& not_imported) const { 1210 const net::NSSCertDatabase::ImportCertFailureList& not_imported) const {
1205 std::string error; 1211 std::string error;
1206 if (selected_cert_list_.size() == 1) 1212 if (selected_cert_list_.size() == 1)
1207 error = l10n_util::GetStringUTF8( 1213 error = l10n_util::GetStringUTF8(
1208 IDS_CERT_MANAGER_IMPORT_SINGLE_NOT_IMPORTED); 1214 IDS_CERT_MANAGER_IMPORT_SINGLE_NOT_IMPORTED);
1209 else if (not_imported.size() == selected_cert_list_.size()) 1215 else if (not_imported.size() == selected_cert_list_.size())
1210 error = l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_ALL_NOT_IMPORTED); 1216 error = l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_ALL_NOT_IMPORTED);
1211 else 1217 else
1212 error = l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_SOME_NOT_IMPORTED); 1218 error = l10n_util::GetStringUTF8(IDS_CERT_MANAGER_IMPORT_SOME_NOT_IMPORTED);
1213 1219
1214 base::ListValue cert_error_list; 1220 base::ListValue cert_error_list;
1215 for (size_t i = 0; i < not_imported.size(); ++i) { 1221 for (size_t i = 0; i < not_imported.size(); ++i) {
1216 const net::NSSCertDatabase::ImportCertFailure& failure = not_imported[i]; 1222 const net::NSSCertDatabase::ImportCertFailure& failure = not_imported[i];
1217 base::DictionaryValue* dict = new base::DictionaryValue; 1223 base::DictionaryValue* dict = new base::DictionaryValue;
1218 dict->SetString(kNameId, failure.certificate->subject().GetDisplayName()); 1224 dict->SetString(kNameId, failure.certificate->subject().GetDisplayName());
1219 dict->SetString(kErrorId, NetErrorToString(failure.net_error)); 1225 dict->SetString(kErrorId, NetErrorToString(failure.net_error));
1220 cert_error_list.Append(dict); 1226 cert_error_list.Append(dict);
1221 } 1227 }
1222 1228
1223 base::StringValue title_value(title); 1229 base::StringValue title_value(title);
1224 base::StringValue error_value(error); 1230 base::StringValue error_value(error);
1225 web_ui()->CallJavascriptFunction("CertificateImportErrorOverlay.show", 1231 web_ui()->CallJavascriptFunctionUnsafe("CertificateImportErrorOverlay.show",
1226 title_value, 1232 title_value, error_value,
1227 error_value, 1233 cert_error_list);
1228 cert_error_list);
1229 } 1234 }
1230 1235
1231 gfx::NativeWindow CertificateManagerHandler::GetParentWindow() const { 1236 gfx::NativeWindow CertificateManagerHandler::GetParentWindow() const {
1232 return web_ui()->GetWebContents()->GetTopLevelNativeWindow(); 1237 return web_ui()->GetWebContents()->GetTopLevelNativeWindow();
1233 } 1238 }
1234 1239
1235 } // namespace options 1240 } // namespace options
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698