Commit b5bcbdf8 authored by Trent Begin's avatar Trent Begin Committed by Chromium LUCI CQ

connectivity-diagnostics: add network-health component

This change adds the network health component to the connectivity
diagnostics application. This serves as a short summary of the currently
connected networks and details about them.

Bug: chromium:1142857
Change-Id: Ibfac37e10bd4badc87f234b8f0fd842667fc8a24
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2587501
Commit-Queue: Trent Begin <tbegin@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#839777}
parent dd08d6d6
...@@ -757,7 +757,7 @@ void PopulateChromeWebUIFrameBinders( ...@@ -757,7 +757,7 @@ void PopulateChromeWebUIFrameBinders(
RegisterWebUIControllerInterfaceBinder< RegisterWebUIControllerInterfaceBinder<
chromeos::network_health::mojom::NetworkHealthService, chromeos::network_health::mojom::NetworkHealthService,
chromeos::NetworkUI>(map); chromeos::NetworkUI, chromeos::ConnectivityDiagnosticsUI>(map);
RegisterWebUIControllerInterfaceBinder< RegisterWebUIControllerInterfaceBinder<
chromeos::network_diagnostics::mojom::NetworkDiagnosticsRoutines, chromeos::network_diagnostics::mojom::NetworkDiagnosticsRoutines,
......
...@@ -226,6 +226,7 @@ ...@@ -226,6 +226,7 @@
#include "chromeos/services/multidevice_setup/multidevice_setup_service.h" #include "chromeos/services/multidevice_setup/multidevice_setup_service.h"
#include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h" #include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h"
#include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom.h" #include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom.h"
#include "chromeos/services/network_health/public/mojom/network_health.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#endif #endif
...@@ -439,6 +440,14 @@ WebUIController* NewWebUI<chromeos::ConnectivityDiagnosticsUI>( ...@@ -439,6 +440,14 @@ WebUIController* NewWebUI<chromeos::ConnectivityDiagnosticsUI>(
chromeos::network_health::NetworkHealthService::GetInstance() chromeos::network_health::NetworkHealthService::GetInstance()
->BindDiagnosticsReceiver(std::move(receiver)); ->BindDiagnosticsReceiver(std::move(receiver));
}), }),
/* BindNetworkHealthServiceCallback */
base::BindRepeating(
[](mojo::PendingReceiver<
chromeos::network_health::mojom::NetworkHealthService>
receiver) {
chromeos::network_health::NetworkHealthService::GetInstance()
->BindHealthReceiver(std::move(receiver));
}),
/* SendFeedbackReportCallback */ /* SendFeedbackReportCallback */
base::BindRepeating( base::BindRepeating(
&chrome::ShowFeedbackDialogForWebUI, &chrome::ShowFeedbackDialogForWebUI,
......
...@@ -14,6 +14,7 @@ static_library("connectivity_diagnostics") { ...@@ -14,6 +14,7 @@ static_library("connectivity_diagnostics") {
deps = [ deps = [
"../network_ui:network_diagnostics_resource_provider", "../network_ui:network_diagnostics_resource_provider",
"../network_ui:network_health_localized_strings",
"//chromeos/components/web_applications", "//chromeos/components/web_applications",
"//chromeos/constants", "//chromeos/constants",
"//chromeos/resources:connectivity_diagnostics_resources", "//chromeos/resources:connectivity_diagnostics_resources",
......
...@@ -8,9 +8,11 @@ ...@@ -8,9 +8,11 @@
#include "chromeos/components/connectivity_diagnostics/url_constants.h" #include "chromeos/components/connectivity_diagnostics/url_constants.h"
#include "chromeos/components/network_ui/network_diagnostics_resource_provider.h" #include "chromeos/components/network_ui/network_diagnostics_resource_provider.h"
#include "chromeos/components/network_ui/network_health_localized_strings.h"
#include "chromeos/grit/connectivity_diagnostics_resources.h" #include "chromeos/grit/connectivity_diagnostics_resources.h"
#include "chromeos/grit/connectivity_diagnostics_resources_map.h" #include "chromeos/grit/connectivity_diagnostics_resources_map.h"
#include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom.h" #include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom.h"
#include "chromeos/services/network_health/public/mojom/network_health.mojom.h"
#include "chromeos/strings/grit/chromeos_strings.h" #include "chromeos/strings/grit/chromeos_strings.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_data_source.h"
...@@ -47,11 +49,17 @@ void SetUpWebUIDataSource(content::WebUIDataSource* source, ...@@ -47,11 +49,17 @@ void SetUpWebUIDataSource(content::WebUIDataSource* source,
ConnectivityDiagnosticsUI::ConnectivityDiagnosticsUI( ConnectivityDiagnosticsUI::ConnectivityDiagnosticsUI(
content::WebUI* web_ui, content::WebUI* web_ui,
BindNetworkDiagnosticsServiceCallback bind_network_diagnostics_callback, BindNetworkDiagnosticsServiceCallback bind_network_diagnostics_callback,
BindNetworkHealthServiceCallback bind_network_health_callback,
SendFeedbackReportCallback send_feedback_report_callback) SendFeedbackReportCallback send_feedback_report_callback)
: ui::MojoWebUIController(web_ui, /*enable_chrome_send=*/true), : ui::MojoWebUIController(web_ui, /*enable_chrome_send=*/true),
bind_network_diagnostics_service_callback_( bind_network_diagnostics_service_callback_(
std::move(bind_network_diagnostics_callback)), std::move(bind_network_diagnostics_callback)),
bind_network_health_service_callback_(
std::move(bind_network_health_callback)),
send_feedback_report_callback_(std::move(send_feedback_report_callback)) { send_feedback_report_callback_(std::move(send_feedback_report_callback)) {
DCHECK(bind_network_diagnostics_service_callback_);
DCHECK(bind_network_health_service_callback_);
DCHECK(send_feedback_report_callback_);
web_ui->RegisterMessageCallback( web_ui->RegisterMessageCallback(
"sendFeedbackReport", "sendFeedbackReport",
base::BindRepeating(&ConnectivityDiagnosticsUI::SendFeedbackReportRequest, base::BindRepeating(&ConnectivityDiagnosticsUI::SendFeedbackReportRequest,
...@@ -77,6 +85,7 @@ ConnectivityDiagnosticsUI::ConnectivityDiagnosticsUI( ...@@ -77,6 +85,7 @@ ConnectivityDiagnosticsUI::ConnectivityDiagnosticsUI(
source->AddLocalizedString("sendFeedbackBtn", source->AddLocalizedString("sendFeedbackBtn",
IDS_CONNECTIVITY_DIAGNOSTICS_SEND_FEEDBACK); IDS_CONNECTIVITY_DIAGNOSTICS_SEND_FEEDBACK);
network_diagnostics::AddResources(source); network_diagnostics::AddResources(source);
network_health::AddLocalizedStrings(source);
content::WebUIDataSource::Add(web_ui->GetWebContents()->GetBrowserContext(), content::WebUIDataSource::Add(web_ui->GetWebContents()->GetBrowserContext(),
source); source);
...@@ -87,15 +96,17 @@ ConnectivityDiagnosticsUI::~ConnectivityDiagnosticsUI() = default; ...@@ -87,15 +96,17 @@ ConnectivityDiagnosticsUI::~ConnectivityDiagnosticsUI() = default;
void ConnectivityDiagnosticsUI::BindInterface( void ConnectivityDiagnosticsUI::BindInterface(
mojo::PendingReceiver< mojo::PendingReceiver<
network_diagnostics::mojom::NetworkDiagnosticsRoutines> receiver) { network_diagnostics::mojom::NetworkDiagnosticsRoutines> receiver) {
if (bind_network_diagnostics_service_callback_) bind_network_diagnostics_service_callback_.Run(std::move(receiver));
bind_network_diagnostics_service_callback_.Run(std::move(receiver)); }
void ConnectivityDiagnosticsUI::BindInterface(
mojo::PendingReceiver<network_health::mojom::NetworkHealthService>
receiver) {
bind_network_health_service_callback_.Run(std::move(receiver));
} }
void ConnectivityDiagnosticsUI::SendFeedbackReportRequest( void ConnectivityDiagnosticsUI::SendFeedbackReportRequest(
const base::ListValue* value) { const base::ListValue* value) {
if (!send_feedback_report_callback_)
return;
std::string extra_diagnostics = ""; std::string extra_diagnostics = "";
auto values = value->GetList(); auto values = value->GetList();
if (values.size() && values[0].is_string()) if (values.size() && values[0].is_string())
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/values.h" #include "base/values.h"
#include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom-forward.h" #include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom-forward.h"
#include "chromeos/services/network_health/public/mojom/network_health.mojom-forward.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "ui/webui/mojo_web_ui_controller.h" #include "ui/webui/mojo_web_ui_controller.h"
...@@ -21,12 +22,16 @@ class ConnectivityDiagnosticsUI : public ui::MojoWebUIController { ...@@ -21,12 +22,16 @@ class ConnectivityDiagnosticsUI : public ui::MojoWebUIController {
mojo::PendingReceiver< mojo::PendingReceiver<
network_diagnostics::mojom::NetworkDiagnosticsRoutines>)>; network_diagnostics::mojom::NetworkDiagnosticsRoutines>)>;
using BindNetworkHealthServiceCallback = base::RepeatingCallback<void(
mojo::PendingReceiver<network_health::mojom::NetworkHealthService>)>;
using SendFeedbackReportCallback = using SendFeedbackReportCallback =
base::RepeatingCallback<void(const std::string& extra_diagnostics)>; base::RepeatingCallback<void(const std::string& extra_diagnostics)>;
explicit ConnectivityDiagnosticsUI( explicit ConnectivityDiagnosticsUI(
content::WebUI* web_ui, content::WebUI* web_ui,
BindNetworkDiagnosticsServiceCallback bind_network_diagnostics_callback, BindNetworkDiagnosticsServiceCallback bind_network_diagnostics_callback,
BindNetworkHealthServiceCallback bind_network_health_callback,
SendFeedbackReportCallback send_feeback_report_callback); SendFeedbackReportCallback send_feeback_report_callback);
~ConnectivityDiagnosticsUI() override; ~ConnectivityDiagnosticsUI() override;
ConnectivityDiagnosticsUI(const ConnectivityDiagnosticsUI&) = delete; ConnectivityDiagnosticsUI(const ConnectivityDiagnosticsUI&) = delete;
...@@ -39,12 +44,20 @@ class ConnectivityDiagnosticsUI : public ui::MojoWebUIController { ...@@ -39,12 +44,20 @@ class ConnectivityDiagnosticsUI : public ui::MojoWebUIController {
mojo::PendingReceiver< mojo::PendingReceiver<
network_diagnostics::mojom::NetworkDiagnosticsRoutines> receiver); network_diagnostics::mojom::NetworkDiagnosticsRoutines> receiver);
// Instantiates implementation of the mojom::NetworkHealthService mojo
// interface passing the pending receiver that will be bound.
void BindInterface(
mojo::PendingReceiver<network_health::mojom::NetworkHealthService>
receiver);
void SendFeedbackReportRequest(const base::ListValue* value); void SendFeedbackReportRequest(const base::ListValue* value);
private: private:
const BindNetworkDiagnosticsServiceCallback const BindNetworkDiagnosticsServiceCallback
bind_network_diagnostics_service_callback_; bind_network_diagnostics_service_callback_;
const BindNetworkHealthServiceCallback bind_network_health_service_callback_;
const SendFeedbackReportCallback send_feedback_report_callback_; const SendFeedbackReportCallback send_feedback_report_callback_;
base::WeakPtrFactory<ConnectivityDiagnosticsUI> weak_factory_{this}; base::WeakPtrFactory<ConnectivityDiagnosticsUI> weak_factory_{this};
......
...@@ -20,6 +20,8 @@ js_library("connectivity_diagnostics") { ...@@ -20,6 +20,8 @@ js_library("connectivity_diagnostics") {
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics.m", "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics.m",
"//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics_mojo.m", "//ui/webui/resources/cr_components/chromeos/network_health:network_diagnostics_mojo.m",
"//ui/webui/resources/cr_components/chromeos/network_health:network_health_summary.m",
"//ui/webui/resources/cr_components/chromeos/network_health:network_health_mojo.m",
"//ui/webui/resources/js:i18n_behavior.m", "//ui/webui/resources/js:i18n_behavior.m",
] ]
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
<div class="app"> <div class="app">
<h1 id="appTitle">[[i18n('appTitle')]]</h1> <h1 id="appTitle">[[i18n('appTitle')]]</h1>
<div class="content"> <div class="content">
<network-health-summary id="network-health"></network-health-summary>
<network-diagnostics id="network-diagnostics"></network-diagnostics> <network-diagnostics id="network-diagnostics"></network-diagnostics>
</div> </div>
<div class="button-group"> <div class="button-group">
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
import 'chrome://resources/cr_components/chromeos/network_health/network_diagnostics.m.js'; import 'chrome://resources/cr_components/chromeos/network_health/network_diagnostics.m.js';
import 'chrome://resources/cr_components/chromeos/network_health/network_health_summary.m.js';
import 'chrome://resources/cr_elements/shared_style_css.m.js'; import 'chrome://resources/cr_elements/shared_style_css.m.js';
import './strings.m.js'; import './strings.m.js';
......
...@@ -155,6 +155,8 @@ preprocess_if_expr("preprocess_generated") { ...@@ -155,6 +155,8 @@ preprocess_if_expr("preprocess_generated") {
"chromeos/cellular_setup/setup_loading_page.m.js", "chromeos/cellular_setup/setup_loading_page.m.js",
"chromeos/cellular_setup/subflow_behavior.m.js", "chromeos/cellular_setup/subflow_behavior.m.js",
"chromeos/cellular_setup/webview_post_util.m.js", "chromeos/cellular_setup/webview_post_util.m.js",
"chromeos/network_health/network_health_summary.m.js",
"chromeos/network_health/network_health_mojo.m.js",
"chromeos/network_health/network_diagnostics.m.js", "chromeos/network_health/network_diagnostics.m.js",
"chromeos/network_health/network_diagnostics_mojo.m.js", "chromeos/network_health/network_diagnostics_mojo.m.js",
"chromeos/network_health/network_diagnostics_types.m.js", "chromeos/network_health/network_diagnostics_types.m.js",
...@@ -316,6 +318,8 @@ preprocess_if_expr("preprocess_polymer2") { ...@@ -316,6 +318,8 @@ preprocess_if_expr("preprocess_polymer2") {
"chromeos/network_health/network_diagnostics_types.js", "chromeos/network_health/network_diagnostics_types.js",
"chromeos/network_health/network_health_summary.html", "chromeos/network_health/network_health_summary.html",
"chromeos/network_health/network_health_summary.js", "chromeos/network_health/network_health_summary.js",
"chromeos/network_health/network_health_mojo.html",
"chromeos/network_health/network_health_mojo.js",
"chromeos/network_health/routine_group.html", "chromeos/network_health/routine_group.html",
"chromeos/network_health/routine_group.js", "chromeos/network_health/routine_group.js",
"chromeos/network/mojo_interface_provider.html", "chromeos/network/mojo_interface_provider.html",
......
...@@ -15,6 +15,7 @@ js_type_check("closure_compile") { ...@@ -15,6 +15,7 @@ js_type_check("closure_compile") {
":network_diagnostics", ":network_diagnostics",
":network_diagnostics_mojo", ":network_diagnostics_mojo",
":network_diagnostics_types", ":network_diagnostics_types",
":network_health_mojo",
":network_health_summary", ":network_health_summary",
":routine_group", ":routine_group",
] ]
...@@ -26,6 +27,7 @@ js_type_check("closure_compile_module") { ...@@ -26,6 +27,7 @@ js_type_check("closure_compile_module") {
":network_diagnostics.m", ":network_diagnostics.m",
":network_diagnostics_mojo.m", ":network_diagnostics_mojo.m",
":network_diagnostics_types.m", ":network_diagnostics_types.m",
":network_health_mojo.m",
":network_health_summary.m", ":network_health_summary.m",
":routine_group.m", ":routine_group.m",
] ]
...@@ -35,12 +37,20 @@ js_type_check("closure_compile_module") { ...@@ -35,12 +37,20 @@ js_type_check("closure_compile_module") {
js_library("network_health_summary") { js_library("network_health_summary") {
deps = [ deps = [
"//chromeos/services/network_health/public/mojom:mojom_js_library_for_compile", ":network_health_mojo",
"//ui/webui/resources/cr_components/chromeos/network:onc_mojo", "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
"//ui/webui/resources/js:i18n_behavior", "//ui/webui/resources/js:i18n_behavior",
] ]
} }
js_library("network_health_mojo") {
deps = [
"//chromeos/services/network_config/public/mojom:mojom_js_library_for_compile",
"//chromeos/services/network_health/public/mojom:mojom_js_library_for_compile",
"//ui/webui/resources/js:cr",
]
}
js_library("network_diagnostics") { js_library("network_diagnostics") {
deps = [ deps = [
":network_diagnostics_mojo", ":network_diagnostics_mojo",
...@@ -72,7 +82,7 @@ js_library("routine_group") { ...@@ -72,7 +82,7 @@ js_library("routine_group") {
js_library("network_health_summary.m") { js_library("network_health_summary.m") {
sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.m.js" ] sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_health_summary.m.js" ]
deps = [ deps = [
"//chromeos/services/network_health/public/mojom:mojom_js_library_for_compile", ":network_health_mojo.m",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/cr_components/chromeos/network:onc_mojo", "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
"//ui/webui/resources/js:i18n_behavior.m", "//ui/webui/resources/js:i18n_behavior.m",
...@@ -80,6 +90,12 @@ js_library("network_health_summary.m") { ...@@ -80,6 +90,12 @@ js_library("network_health_summary.m") {
extra_deps = [ ":network_health_summary_module" ] extra_deps = [ ":network_health_summary_module" ]
} }
js_library("network_health_mojo.m") {
sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_health_mojo.m.js" ]
deps = [ "//chromeos/services/network_health/public/mojom:mojom_js_library_for_compile" ]
extra_deps = [ ":modulize" ]
}
js_library("network_diagnostics.m") { js_library("network_diagnostics.m") {
sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.m.js" ] sources = [ "$root_gen_dir/ui/webui/resources/cr_components/chromeos/network_health/network_diagnostics.m.js" ]
deps = [ deps = [
...@@ -123,6 +139,9 @@ polymer_modulizer("network_health_summary") { ...@@ -123,6 +139,9 @@ polymer_modulizer("network_health_summary") {
js_file = "network_health_summary.js" js_file = "network_health_summary.js"
html_file = "network_health_summary.html" html_file = "network_health_summary.html"
html_type = "dom-module" html_type = "dom-module"
auto_imports = [
"ui/webui/resources/cr_components/chromeos/network/onc_mojo.html|OncMojo",
]
} }
polymer_modulizer("network_diagnostics") { polymer_modulizer("network_diagnostics") {
...@@ -141,6 +160,7 @@ polymer_modulizer("routine_group") { ...@@ -141,6 +160,7 @@ polymer_modulizer("routine_group") {
js_modulizer("modulize") { js_modulizer("modulize") {
input_files = [ input_files = [
"network_health_mojo.js",
"network_diagnostics_mojo.js", "network_diagnostics_mojo.js",
"network_diagnostics_types.js", "network_diagnostics_types.js",
] ]
......
<link rel="import" href="chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.html">
<script src="chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_health.mojom-lite.js"></script>
<script src="network_health_mojo.js"></script>
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
// #import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js';
// #import 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-lite.js';
// #import 'chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_health.mojom-lite.js';
// clang-format on
/**
* @fileoverview Wrapper around Network Health mojom file and associated
* utilities.
* TODO(crbug/1111852): Remove this wrapper once Polymer2 no longer needs to be
* supported. These imports can be used directly.
*/
<link rel="import" href="../../../html/polymer.html"> <link rel="import" href="../../../html/polymer.html">
<link rel="import" href="chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.html">
<link rel="import" href="chrome://resources/mojo/chromeos/services/network_health/public/mojom/network_health.mojom.html">
<link rel="import" href="../../../cr_elements/shared_style_css.html"> <link rel="import" href="../../../cr_elements/shared_style_css.html">
<link rel="import" href="../../../html/i18n_behavior.html"> <link rel="import" href="../../../html/i18n_behavior.html">
<link rel="import" href="../network/onc_mojo.html">
<link rel="import" href="network_health_mojo.html">
<dom-module id="network-health-summary"> <dom-module id="network-health-summary">
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment