Commit f5ef58c6 authored by dpapad's avatar dpapad Committed by Chromium LUCI CQ

WebUI: Prepare domain-reliability-internals for JS modules.

 - Replace call to CallJavascriptFunctionUnsafe with
   ResolveJavascriptCallback.
 - Replace chrome.send with cr.sendWithPromise.
 - Add JS type checking.

Bug: 1028829
Change-Id: I7ed709930969e4afe153f850d96c5aa6adb7442b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2616968
Commit-Queue: John Lee <johntlee@chromium.org>
Auto-Submit: dpapad <dpapad@chromium.org>
Reviewed-by: default avatarJohn Lee <johntlee@chromium.org>
Cr-Commit-Position: refs/heads/master@{#841576}
parent 371702c9
...@@ -82,6 +82,7 @@ if (enable_js_type_check) { ...@@ -82,6 +82,7 @@ if (enable_js_type_check) {
deps = [ deps = [
"accessibility:closure_compile", "accessibility:closure_compile",
"components:closure_compile", "components:closure_compile",
"domain_reliability_internals:closure_compile",
"engagement:closure_compile", "engagement:closure_compile",
"interventions_internals:closure_compile", "interventions_internals:closure_compile",
"media:closure_compile", "media:closure_compile",
......
# Copyright 2021 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.
import("//third_party/closure_compiler/compile_js.gni")
js_type_check("closure_compile") {
deps = [ ":domain_reliability_internals" ]
}
js_library("domain_reliability_internals") {
deps = [
"//third_party/jstemplate:jstemplate",
"//ui/webui/resources/js:cr",
"//ui/webui/resources/js:util",
]
}
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="stylesheet" href="chrome://resources/css/text_defaults.css"> <link rel="stylesheet" href="chrome://resources/css/text_defaults.css">
<link rel="stylesheet" href="domain_reliability_internals.css"> <link rel="stylesheet" href="domain_reliability_internals.css">
<script src="chrome://resources/js/cr.js"></script>
<script src="chrome://resources/js/assert.js"></script> <script src="chrome://resources/js/assert.js"></script>
<script src="chrome://resources/js/promise_resolver.js"></script>
<script src="chrome://resources/js/cr.js"></script>
<script src="chrome://resources/js/util.js"></script> <script src="chrome://resources/js/util.js"></script>
<script src="chrome://resources/js/jstemplate_compiled.js"></script> <script src="chrome://resources/js/jstemplate_compiled.js"></script>
<script src="domain_reliability_internals.js"></script> <script src="domain_reliability_internals.js"></script>
......
...@@ -6,17 +6,14 @@ cr.define('DomainReliabilityInternals', function() { ...@@ -6,17 +6,14 @@ cr.define('DomainReliabilityInternals', function() {
'use strict'; 'use strict';
function initialize() { function initialize() {
chrome.send('updateData'); cr.sendWithPromise('updateData').then(data => {
} jstProcess(new JsEvalContext(data), $('template'));
});
function onDataUpdated(data) {
jstProcess(new JsEvalContext(data), $('template'));
} }
// Return an object with all of the exports. // Return an object with all of the exports.
return { return {
initialize: initialize, initialize: initialize,
onDataUpdated: onDataUpdated,
}; };
}); });
......
...@@ -32,29 +32,43 @@ DomainReliabilityInternalsUI::DomainReliabilityInternalsUI( ...@@ -32,29 +32,43 @@ DomainReliabilityInternalsUI::DomainReliabilityInternalsUI(
html_source->AddResourcePath("domain_reliability_internals.js", html_source->AddResourcePath("domain_reliability_internals.js",
IDR_DOMAIN_RELIABILITY_INTERNALS_JS); IDR_DOMAIN_RELIABILITY_INTERNALS_JS);
html_source->SetDefaultResource(IDR_DOMAIN_RELIABILITY_INTERNALS_HTML); html_source->SetDefaultResource(IDR_DOMAIN_RELIABILITY_INTERNALS_HTML);
Profile* profile = Profile::FromWebUI(web_ui);
content::WebUIDataSource::Add(profile, html_source);
web_ui->AddMessageHandler(
std::make_unique<DomainReliabilityInternalsHandler>());
}
DomainReliabilityInternalsUI::~DomainReliabilityInternalsUI() = default;
web_ui->RegisterMessageCallback( DomainReliabilityInternalsHandler::DomainReliabilityInternalsHandler() =
default;
DomainReliabilityInternalsHandler::~DomainReliabilityInternalsHandler() =
default;
void DomainReliabilityInternalsHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"updateData", "updateData",
base::BindRepeating(&DomainReliabilityInternalsUI::UpdateData, base::BindRepeating(&DomainReliabilityInternalsHandler::HandleUpdateData,
base::Unretained(this))); base::Unretained(this)));
Profile* profile = Profile::FromWebUI(web_ui);
content::WebUIDataSource::Add(profile, html_source);
} }
DomainReliabilityInternalsUI::~DomainReliabilityInternalsUI() {} void DomainReliabilityInternalsHandler::HandleUpdateData(
const base::ListValue* args) {
DCHECK_EQ(1u, args->GetSize());
AllowJavascript();
callback_id_ = args->GetList()[0].GetString();
void DomainReliabilityInternalsUI::UpdateData(const base::ListValue* args) {
Profile* profile = Profile::FromWebUI(web_ui()); Profile* profile = Profile::FromWebUI(web_ui());
network::mojom::NetworkContext* network_context = network::mojom::NetworkContext* network_context =
content::BrowserContext::GetDefaultStoragePartition(profile) content::BrowserContext::GetDefaultStoragePartition(profile)
->GetNetworkContext(); ->GetNetworkContext();
network_context->GetDomainReliabilityJSON( network_context->GetDomainReliabilityJSON(
base::BindOnce(&DomainReliabilityInternalsUI::OnDataUpdated, base::BindOnce(&DomainReliabilityInternalsHandler::OnDataUpdated,
weak_factory_.GetWeakPtr())); weak_factory_.GetWeakPtr()));
} }
void DomainReliabilityInternalsUI::OnDataUpdated(base::Value data) const { void DomainReliabilityInternalsHandler::OnDataUpdated(base::Value data) {
web_ui()->CallJavascriptFunctionUnsafe( ResolveJavascriptCallback(base::Value(std::move(callback_id_)), data);
"DomainReliabilityInternals.onDataUpdated", data); callback_id_.clear();
} }
...@@ -6,10 +6,12 @@ ...@@ -6,10 +6,12 @@
#define CHROME_BROWSER_UI_WEBUI_DOMAIN_RELIABILITY_INTERNALS_UI_H_ #define CHROME_BROWSER_UI_WEBUI_DOMAIN_RELIABILITY_INTERNALS_UI_H_
#include <memory> #include <memory>
#include <string>
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "content/public/browser/web_ui_controller.h" #include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_message_handler.h"
namespace base { namespace base {
class ListValue; class ListValue;
...@@ -22,13 +24,25 @@ class DomainReliabilityInternalsUI : public content::WebUIController { ...@@ -22,13 +24,25 @@ class DomainReliabilityInternalsUI : public content::WebUIController {
explicit DomainReliabilityInternalsUI(content::WebUI* web_ui); explicit DomainReliabilityInternalsUI(content::WebUI* web_ui);
~DomainReliabilityInternalsUI() override; ~DomainReliabilityInternalsUI() override;
DISALLOW_COPY_AND_ASSIGN(DomainReliabilityInternalsUI);
};
class DomainReliabilityInternalsHandler : public content::WebUIMessageHandler {
public:
DomainReliabilityInternalsHandler();
~DomainReliabilityInternalsHandler() override;
// content::WebUIMessageHandler:
void RegisterMessages() override;
private: private:
void UpdateData(const base::ListValue* args); void HandleUpdateData(const base::ListValue* args);
void OnDataUpdated(base::Value data) const; void OnDataUpdated(base::Value data);
base::WeakPtrFactory<DomainReliabilityInternalsUI> weak_factory_{this}; std::string callback_id_;
base::WeakPtrFactory<DomainReliabilityInternalsHandler> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(DomainReliabilityInternalsUI); DISALLOW_COPY_AND_ASSIGN(DomainReliabilityInternalsHandler);
}; };
#endif // CHROME_BROWSER_UI_WEBUI_DOMAIN_RELIABILITY_INTERNALS_UI_H_ #endif // CHROME_BROWSER_UI_WEBUI_DOMAIN_RELIABILITY_INTERNALS_UI_H_
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