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

Unified Diff: chrome/browser/ui/webui/net_internals/net_internals_ui.cc

Issue 148183013: Use per-user nssdb in onc certificate importer (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix browser_tests compile Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698