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) {
deps = [
"accessibility:closure_compile",
"components:closure_compile",
"domain_reliability_internals:closure_compile",
"engagement:closure_compile",
"interventions_internals: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 @@
<meta charset="utf-8">
<link rel="stylesheet" href="chrome://resources/css/text_defaults.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/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/jstemplate_compiled.js"></script>
<script src="domain_reliability_internals.js"></script>
......
......@@ -6,17 +6,14 @@ cr.define('DomainReliabilityInternals', function() {
'use strict';
function initialize() {
chrome.send('updateData');
}
function onDataUpdated(data) {
cr.sendWithPromise('updateData').then(data => {
jstProcess(new JsEvalContext(data), $('template'));
});
}
// Return an object with all of the exports.
return {
initialize: initialize,
onDataUpdated: onDataUpdated,
};
});
......
......@@ -32,29 +32,43 @@ DomainReliabilityInternalsUI::DomainReliabilityInternalsUI(
html_source->AddResourcePath("domain_reliability_internals.js",
IDR_DOMAIN_RELIABILITY_INTERNALS_JS);
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",
base::BindRepeating(&DomainReliabilityInternalsUI::UpdateData,
base::BindRepeating(&DomainReliabilityInternalsHandler::HandleUpdateData,
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());
network::mojom::NetworkContext* network_context =
content::BrowserContext::GetDefaultStoragePartition(profile)
->GetNetworkContext();
network_context->GetDomainReliabilityJSON(
base::BindOnce(&DomainReliabilityInternalsUI::OnDataUpdated,
base::BindOnce(&DomainReliabilityInternalsHandler::OnDataUpdated,
weak_factory_.GetWeakPtr()));
}
void DomainReliabilityInternalsUI::OnDataUpdated(base::Value data) const {
web_ui()->CallJavascriptFunctionUnsafe(
"DomainReliabilityInternals.onDataUpdated", data);
void DomainReliabilityInternalsHandler::OnDataUpdated(base::Value data) {
ResolveJavascriptCallback(base::Value(std::move(callback_id_)), data);
callback_id_.clear();
}
......@@ -6,10 +6,12 @@
#define CHROME_BROWSER_UI_WEBUI_DOMAIN_RELIABILITY_INTERNALS_UI_H_
#include <memory>
#include <string>
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_message_handler.h"
namespace base {
class ListValue;
......@@ -22,13 +24,25 @@ class DomainReliabilityInternalsUI : public content::WebUIController {
explicit DomainReliabilityInternalsUI(content::WebUI* web_ui);
~DomainReliabilityInternalsUI() override;
DISALLOW_COPY_AND_ASSIGN(DomainReliabilityInternalsUI);
};
class DomainReliabilityInternalsHandler : public content::WebUIMessageHandler {
public:
DomainReliabilityInternalsHandler();
~DomainReliabilityInternalsHandler() override;
// content::WebUIMessageHandler:
void RegisterMessages() override;
private:
void UpdateData(const base::ListValue* args);
void OnDataUpdated(base::Value data) const;
void HandleUpdateData(const base::ListValue* args);
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_
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