OLD | NEW |
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/net_internals/net_internals_ui.h" | 5 #include "chrome/browser/ui/webui/net_internals/net_internals_ui.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <list> | 8 #include <list> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 #include "net/proxy/proxy_service.h" | 69 #include "net/proxy/proxy_service.h" |
70 #include "net/url_request/url_request_context.h" | 70 #include "net/url_request/url_request_context.h" |
71 #include "net/url_request/url_request_context_getter.h" | 71 #include "net/url_request/url_request_context_getter.h" |
72 | 72 |
73 #if defined(OS_CHROMEOS) | 73 #if defined(OS_CHROMEOS) |
74 #include "chrome/browser/chromeos/file_manager/filesystem_api_util.h" | 74 #include "chrome/browser/chromeos/file_manager/filesystem_api_util.h" |
75 #include "chrome/browser/chromeos/net/onc_utils.h" | 75 #include "chrome/browser/chromeos/net/onc_utils.h" |
76 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 76 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
77 #include "chrome/browser/chromeos/system/syslogs_provider.h" | 77 #include "chrome/browser/chromeos/system/syslogs_provider.h" |
78 #include "chrome/browser/chromeos/system_logs/debug_log_writer.h" | 78 #include "chrome/browser/chromeos/system_logs/debug_log_writer.h" |
79 #include "chrome/browser/net/nss_context.h" | 79 #include "chrome/browser/net/cert_database_service_factory.h" |
80 #include "chromeos/dbus/dbus_thread_manager.h" | 80 #include "chromeos/dbus/dbus_thread_manager.h" |
81 #include "chromeos/dbus/debug_daemon_client.h" | 81 #include "chromeos/dbus/debug_daemon_client.h" |
82 #include "chromeos/network/onc/onc_certificate_importer_impl.h" | 82 #include "chromeos/network/onc/onc_certificate_importer_impl.h" |
83 #include "chromeos/network/onc/onc_utils.h" | 83 #include "chromeos/network/onc/onc_utils.h" |
| 84 #include "components/cert_database/public/cert_database_service.h" |
84 #include "components/user_manager/user.h" | 85 #include "components/user_manager/user.h" |
85 #endif | 86 #endif |
86 | 87 |
87 #if defined(OS_WIN) | 88 #if defined(OS_WIN) |
88 #include "chrome/browser/net/service_providers_win.h" | 89 #include "chrome/browser/net/service_providers_win.h" |
89 #endif | 90 #endif |
90 | 91 |
91 #if defined(ENABLE_EXTENSIONS) | 92 #if defined(ENABLE_EXTENSIONS) |
92 #include "chrome/browser/extensions/extension_service.h" | 93 #include "chrome/browser/extensions/extension_service.h" |
93 #include "chrome/browser/ui/webui/extensions/extension_basic_info.h" | 94 #include "chrome/browser/ui/webui/extensions/extension_basic_info.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 void OnRefreshSystemLogs(const base::ListValue* list); | 232 void OnRefreshSystemLogs(const base::ListValue* list); |
232 void OnGetSystemLog(const base::ListValue* list); | 233 void OnGetSystemLog(const base::ListValue* list); |
233 void OnImportONCFile(const base::ListValue* list); | 234 void OnImportONCFile(const base::ListValue* list); |
234 void OnStoreDebugLogs(const base::ListValue* list); | 235 void OnStoreDebugLogs(const base::ListValue* list); |
235 void OnStoreDebugLogsCompleted(const base::FilePath& log_path, | 236 void OnStoreDebugLogsCompleted(const base::FilePath& log_path, |
236 bool succeeded); | 237 bool succeeded); |
237 void OnSetNetworkDebugMode(const base::ListValue* list); | 238 void OnSetNetworkDebugMode(const base::ListValue* list); |
238 void OnSetNetworkDebugModeCompleted(const std::string& subsystem, | 239 void OnSetNetworkDebugModeCompleted(const std::string& subsystem, |
239 bool succeeded); | 240 bool succeeded); |
240 | 241 |
241 // Callback to |GetNSSCertDatabaseForProfile| used to retrieve the database | |
242 // to which user's ONC defined certificates should be imported. | |
243 // It parses and imports |onc_blob|. | |
244 void ImportONCFileToNSSDB(const std::string& onc_blob, | |
245 const std::string& passcode, | |
246 net::NSSCertDatabase* nssdb); | |
247 | |
248 // Called back by the CertificateImporter when a certificate import finished. | 242 // Called back by the CertificateImporter when a certificate import finished. |
249 // |previous_error| contains earlier errors during this import. | 243 // |previous_error| contains earlier errors during this import. |
250 void OnCertificatesImported( | 244 void OnCertificatesImported( |
251 const std::string& previous_error, | 245 const std::string& previous_error, |
252 bool success, | 246 bool success, |
253 const net::CertificateList& onc_trusted_certificates); | 247 const net::CertificateList& onc_trusted_certificates); |
254 #endif | 248 #endif |
255 | 249 |
256 private: | 250 private: |
257 class IOThreadImpl; | 251 class IOThreadImpl; |
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1156 syslogs_getter_->DeleteSystemLogs(); | 1150 syslogs_getter_->DeleteSystemLogs(); |
1157 syslogs_getter_->LoadSystemLogs(); | 1151 syslogs_getter_->LoadSystemLogs(); |
1158 } | 1152 } |
1159 | 1153 |
1160 void NetInternalsMessageHandler::OnGetSystemLog( | 1154 void NetInternalsMessageHandler::OnGetSystemLog( |
1161 const base::ListValue* list) { | 1155 const base::ListValue* list) { |
1162 DCHECK(syslogs_getter_.get()); | 1156 DCHECK(syslogs_getter_.get()); |
1163 syslogs_getter_->RequestSystemLog(list); | 1157 syslogs_getter_->RequestSystemLog(list); |
1164 } | 1158 } |
1165 | 1159 |
1166 void NetInternalsMessageHandler::ImportONCFileToNSSDB( | 1160 void NetInternalsMessageHandler::OnImportONCFile(const base::ListValue* list) { |
1167 const std::string& onc_blob, | 1161 std::string onc_blob; |
1168 const std::string& passcode, | 1162 std::string passcode; |
1169 net::NSSCertDatabase* nssdb) { | 1163 if (list->GetSize() != 2 || !list->GetString(0, &onc_blob) || |
| 1164 !list->GetString(1, &passcode)) { |
| 1165 NOTREACHED(); |
| 1166 } |
| 1167 |
1170 user_manager::User* user = chromeos::ProfileHelper::Get()->GetUserByProfile( | 1168 user_manager::User* user = chromeos::ProfileHelper::Get()->GetUserByProfile( |
1171 Profile::FromWebUI(web_ui())); | 1169 Profile::FromWebUI(web_ui())); |
1172 | 1170 |
1173 if (!user) { | 1171 if (!user) { |
1174 std::string error = "User not found."; | 1172 std::string error = "User not found."; |
1175 SendJavascriptCommand("receivedONCFileParse", new base::StringValue(error)); | 1173 SendJavascriptCommand("receivedONCFileParse", new base::StringValue(error)); |
1176 return; | 1174 return; |
1177 } | 1175 } |
1178 | 1176 |
1179 std::string error; | 1177 std::string error; |
1180 onc::ONCSource onc_source = onc::ONC_SOURCE_USER_IMPORT; | 1178 onc::ONCSource onc_source = onc::ONC_SOURCE_USER_IMPORT; |
1181 base::ListValue network_configs; | 1179 base::ListValue network_configs; |
1182 base::DictionaryValue global_network_config; | 1180 base::DictionaryValue global_network_config; |
1183 base::ListValue certificates; | 1181 base::ListValue certificates; |
1184 if (!chromeos::onc::ParseAndValidateOncForImport(onc_blob, | 1182 if (!chromeos::onc::ParseAndValidateOncForImport(onc_blob, |
1185 onc_source, | 1183 onc_source, |
1186 passcode, | 1184 passcode, |
1187 &network_configs, | 1185 &network_configs, |
1188 &global_network_config, | 1186 &global_network_config, |
1189 &certificates)) { | 1187 &certificates)) { |
1190 error = "Errors occurred during the ONC parsing. "; | 1188 error = "Errors occurred during the ONC parsing. "; |
1191 } | 1189 } |
1192 | 1190 |
1193 std::string network_error; | 1191 std::string network_error; |
1194 chromeos::onc::ImportNetworksForUser(user, network_configs, &network_error); | 1192 chromeos::onc::ImportNetworksForUser(user, network_configs, &network_error); |
1195 if (!network_error.empty()) | 1193 if (!network_error.empty()) |
1196 error += network_error; | 1194 error += network_error; |
1197 | 1195 |
| 1196 cert_database::CertDatabaseService* cert_service = |
| 1197 cert_database::CertDatabaseServiceFactory::GetForBrowserContext( |
| 1198 web_ui()->GetWebContents()->GetBrowserContext()); |
1198 chromeos::onc::CertificateImporterImpl cert_importer( | 1199 chromeos::onc::CertificateImporterImpl cert_importer( |
1199 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), nssdb); | 1200 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), |
| 1201 cert_service->GetIOPart()); |
1200 cert_importer.ImportCertificates( | 1202 cert_importer.ImportCertificates( |
1201 certificates, | 1203 certificates, |
1202 onc_source, | 1204 onc_source, |
1203 base::Bind(&NetInternalsMessageHandler::OnCertificatesImported, | 1205 base::Bind(&NetInternalsMessageHandler::OnCertificatesImported, |
1204 AsWeakPtr(), | 1206 AsWeakPtr(), |
1205 error)); | 1207 error)); |
1206 } | 1208 } |
1207 | 1209 |
1208 void NetInternalsMessageHandler::OnCertificatesImported( | 1210 void NetInternalsMessageHandler::OnCertificatesImported( |
1209 const std::string& previous_error, | 1211 const std::string& previous_error, |
1210 bool success, | 1212 bool success, |
1211 const net::CertificateList& /* unused onc_trusted_certificates */) { | 1213 const net::CertificateList& /* unused onc_trusted_certificates */) { |
1212 std::string error = previous_error; | 1214 std::string error = previous_error; |
1213 if (!success) | 1215 if (!success) |
1214 error += "Some certificates couldn't be imported. "; | 1216 error += "Some certificates couldn't be imported. "; |
1215 | 1217 |
1216 SendJavascriptCommand("receivedONCFileParse", new base::StringValue(error)); | 1218 SendJavascriptCommand("receivedONCFileParse", new base::StringValue(error)); |
1217 } | 1219 } |
1218 | 1220 |
1219 void NetInternalsMessageHandler::OnImportONCFile( | |
1220 const base::ListValue* list) { | |
1221 std::string onc_blob; | |
1222 std::string passcode; | |
1223 if (list->GetSize() != 2 || | |
1224 !list->GetString(0, &onc_blob) || | |
1225 !list->GetString(1, &passcode)) { | |
1226 NOTREACHED(); | |
1227 } | |
1228 | |
1229 GetNSSCertDatabaseForProfile( | |
1230 Profile::FromWebUI(web_ui()), | |
1231 base::Bind(&NetInternalsMessageHandler::ImportONCFileToNSSDB, AsWeakPtr(), | |
1232 onc_blob, passcode)); | |
1233 } | |
1234 | |
1235 void NetInternalsMessageHandler::OnStoreDebugLogs(const base::ListValue* list) { | 1221 void NetInternalsMessageHandler::OnStoreDebugLogs(const base::ListValue* list) { |
1236 DCHECK(list); | 1222 DCHECK(list); |
1237 | 1223 |
1238 SendJavascriptCommand("receivedStoreDebugLogs", | 1224 SendJavascriptCommand("receivedStoreDebugLogs", |
1239 new base::StringValue("Creating log file...")); | 1225 new base::StringValue("Creating log file...")); |
1240 Profile* profile = Profile::FromWebUI(web_ui()); | 1226 Profile* profile = Profile::FromWebUI(web_ui()); |
1241 const DownloadPrefs* const prefs = DownloadPrefs::FromBrowserContext(profile); | 1227 const DownloadPrefs* const prefs = DownloadPrefs::FromBrowserContext(profile); |
1242 base::FilePath path = prefs->DownloadPath(); | 1228 base::FilePath path = prefs->DownloadPath(); |
1243 if (file_manager::util::IsUnderNonNativeLocalPath(profile, path)) | 1229 if (file_manager::util::IsUnderNonNativeLocalPath(profile, path)) |
1244 path = prefs->GetDefaultDownloadDirectoryForProfile(); | 1230 path = prefs->GetDefaultDownloadDirectoryForProfile(); |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1485 } | 1471 } |
1486 | 1472 |
1487 NetInternalsUI::NetInternalsUI(content::WebUI* web_ui) | 1473 NetInternalsUI::NetInternalsUI(content::WebUI* web_ui) |
1488 : WebUIController(web_ui) { | 1474 : WebUIController(web_ui) { |
1489 web_ui->AddMessageHandler(new NetInternalsMessageHandler()); | 1475 web_ui->AddMessageHandler(new NetInternalsMessageHandler()); |
1490 | 1476 |
1491 // Set up the chrome://net-internals/ source. | 1477 // Set up the chrome://net-internals/ source. |
1492 Profile* profile = Profile::FromWebUI(web_ui); | 1478 Profile* profile = Profile::FromWebUI(web_ui); |
1493 content::WebUIDataSource::Add(profile, CreateNetInternalsHTMLSource()); | 1479 content::WebUIDataSource::Add(profile, CreateNetInternalsHTMLSource()); |
1494 } | 1480 } |
OLD | NEW |