| Index: chrome/browser/ui/webui/net_internals/net_internals_ui.cc
|
| diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
|
| index 56448823ec4b9c280f4e4e35ed5c62bb9eda9fa8..67e516c28d357d86c513ed08d715188907901e03 100644
|
| --- a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
|
| +++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
|
| @@ -83,6 +83,7 @@
|
| #include "chrome/browser/chromeos/login/user_manager.h"
|
| #include "chrome/browser/chromeos/net/onc_utils.h"
|
| #include "chrome/browser/chromeos/system/syslogs_provider.h"
|
| +#include "chrome/browser/net/nss_context.h"
|
| #include "chromeos/dbus/dbus_thread_manager.h"
|
| #include "chromeos/dbus/debug_daemon_client.h"
|
| #include "chromeos/network/onc/onc_certificate_importer_impl.h"
|
| @@ -389,6 +390,13 @@ class NetInternalsMessageHandler
|
| void OnSetNetworkDebugMode(const base::ListValue* list);
|
| void OnSetNetworkDebugModeCompleted(const std::string& subsystem,
|
| bool succeeded);
|
| +
|
| + // Callback to |GetNSSCertDatabaseForProfile| used to retrieve the database
|
| + // to which user's ONC defined certificates should be imported.
|
| + // It parses and imports |onc_blob|.
|
| + void ImportONCFileToNSSDB(const std::string& onc_blob,
|
| + const std::string& passcode,
|
| + net::NSSCertDatabase* nssdb);
|
| #endif
|
|
|
| private:
|
| @@ -1503,18 +1511,14 @@ void NetInternalsMessageHandler::OnGetSystemLog(
|
| syslogs_getter_->RequestSystemLog(list);
|
| }
|
|
|
| -void NetInternalsMessageHandler::OnImportONCFile(
|
| - const base::ListValue* list) {
|
| - std::string onc_blob;
|
| - std::string passcode;
|
| - if (list->GetSize() != 2 ||
|
| - !list->GetString(0, &onc_blob) ||
|
| - !list->GetString(1, &passcode)) {
|
| - NOTREACHED();
|
| - }
|
| -
|
| +void NetInternalsMessageHandler::ImportONCFileToNSSDB(
|
| + const std::string& onc_blob,
|
| + const std::string& passcode,
|
| + net::NSSCertDatabase* nssdb) {
|
| std::string error;
|
| - const chromeos::User* user = chromeos::UserManager::Get()->GetActiveUser();
|
| + chromeos::User* user = chromeos::UserManager::Get()->GetUserByProfile(
|
| + Profile::FromWebUI(web_ui()));
|
| +
|
| if (user) {
|
| onc::ONCSource onc_source = onc::ONC_SOURCE_USER_IMPORT;
|
|
|
| @@ -1530,7 +1534,7 @@ void NetInternalsMessageHandler::OnImportONCFile(
|
| error = "Errors occurred during the ONC parsing. ";
|
| }
|
|
|
| - chromeos::onc::CertificateImporterImpl cert_importer;
|
| + chromeos::onc::CertificateImporterImpl cert_importer(nssdb);
|
| if (!cert_importer.ImportCertificates(certificates, onc_source, NULL))
|
| error += "Some certificates couldn't be imported. ";
|
|
|
| @@ -1539,13 +1543,29 @@ void NetInternalsMessageHandler::OnImportONCFile(
|
| if (!network_error.empty())
|
| error += network_error;
|
| } else {
|
| - error = "No active user.";
|
| + error = "User not found.";
|
| }
|
|
|
| LOG_IF(ERROR, !error.empty()) << error;
|
| SendJavascriptCommand("receivedONCFileParse", new base::StringValue(error));
|
| }
|
|
|
| +void NetInternalsMessageHandler::OnImportONCFile(
|
| + const base::ListValue* list) {
|
| + std::string onc_blob;
|
| + std::string passcode;
|
| + if (list->GetSize() != 2 ||
|
| + !list->GetString(0, &onc_blob) ||
|
| + !list->GetString(1, &passcode)) {
|
| + NOTREACHED();
|
| + }
|
| +
|
| + GetNSSCertDatabaseForProfile(
|
| + Profile::FromWebUI(web_ui()),
|
| + base::Bind(&NetInternalsMessageHandler::ImportONCFileToNSSDB, AsWeakPtr(),
|
| + onc_blob, passcode));
|
| +}
|
| +
|
| void NetInternalsMessageHandler::OnStoreDebugLogs(const base::ListValue* list) {
|
| DCHECK(list);
|
|
|
|
|