Commit afa3670a authored by Zentaro Kavanagh's avatar Zentaro Kavanagh Committed by Commit Bot

Diagnostics: Switch to use real telemetry

Bug: 1125150
Test: browser_tests --gtest_filter=DiagnosticsApp*
Change-Id: I2f07955c2be3e50c7dbec24f0f09a3e735e7ae7f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2532905
Commit-Queue: Zentaro Kavanagh <zentaro@chromium.org>
Reviewed-by: default avatarBailey Berro <baileyberro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#826633}
parent 55e85aae
...@@ -8,6 +8,7 @@ import {BatteryChargeStatus, BatteryHealth, BatteryInfo, SystemDataProviderInter ...@@ -8,6 +8,7 @@ import {BatteryChargeStatus, BatteryHealth, BatteryInfo, SystemDataProviderInter
import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo} from 'chrome://diagnostics/fake_data.js'; import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo} from 'chrome://diagnostics/fake_data.js';
import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js'; import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js';
import {getSystemDataProvider, setSystemDataProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js'; import {getSystemDataProvider, setSystemDataProviderForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
import {mojoString16ToString} from 'chrome://diagnostics/mojo_utils.js';
import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js'; import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
import {flushTasks} from '../../test_util.m.js'; import {flushTasks} from '../../test_util.m.js';
...@@ -82,7 +83,8 @@ export function batteryStatusCardTestSuite() { ...@@ -82,7 +83,8 @@ export function batteryStatusCardTestSuite() {
fakeBatteryChargeStatus[0].chargeNowMilliampHours, fakeBatteryChargeStatus[0].chargeNowMilliampHours,
dataPoints[3].value); dataPoints[3].value);
assertEquals( assertEquals(
fakeBatteryChargeStatus[0].powerTime, dataPoints[4].value); mojoString16ToString(fakeBatteryChargeStatus[0].powerTime),
dataPoints[4].value);
assertEquals( assertEquals(
fakeBatteryChargeStatus[0].powerAdapterStatus, fakeBatteryChargeStatus[0].powerAdapterStatus,
dataPoints[5].value); dataPoints[5].value);
......
...@@ -93,7 +93,7 @@ export function cpuCardTestSuite() { ...@@ -93,7 +93,7 @@ export function cpuCardTestSuite() {
const currentlyUsingValue = const currentlyUsingValue =
fakeCpuUsage[0].percentUsageUser + fakeCpuUsage[0].percentUsageSystem; fakeCpuUsage[0].percentUsageUser + fakeCpuUsage[0].percentUsageSystem;
assertEquals(currentlyUsingValue, dataPoints[0].value); assertEquals(currentlyUsingValue, dataPoints[0].value);
assertEquals(fakeCpuUsage[0].cpuTempDegreesCelsius, dataPoints[1].value); assertEquals(fakeCpuUsage[0].averageCpuTempCelsius, dataPoints[1].value);
const cpuChart = dx_utils.getRealtimeCpuChartElement(cpuElement); const cpuChart = dx_utils.getRealtimeCpuChartElement(cpuElement);
assertEquals(fakeCpuUsage[0].percentUsageUser, cpuChart.user); assertEquals(fakeCpuUsage[0].percentUsageUser, cpuChart.user);
......
...@@ -59,12 +59,11 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -59,12 +59,11 @@ export function fakeSystemDataProviderTestSuite() {
test('ObserveBatteryHealth', () => { test('ObserveBatteryHealth', () => {
provider.setFakeBatteryHealth(fakeBatteryHealth); provider.setFakeBatteryHealth(fakeBatteryHealth);
/** @type {!BatteryHealthObserver} */ const batteryHealthObserverRemote = /** @type {!BatteryHealthObserver} */ ({
const batteryHealthObserverRemote = {
onBatteryHealthUpdated: (batteryHealth) => { onBatteryHealthUpdated: (batteryHealth) => {
assertDeepEquals(fakeBatteryHealth[0], batteryHealth); assertDeepEquals(fakeBatteryHealth[0], batteryHealth);
} }
}; });
return provider.observeBatteryHealth(batteryHealthObserverRemote); return provider.observeBatteryHealth(batteryHealthObserverRemote);
}); });
...@@ -72,12 +71,12 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -72,12 +71,12 @@ export function fakeSystemDataProviderTestSuite() {
test('ObserveBatteryChargeStatus', () => { test('ObserveBatteryChargeStatus', () => {
provider.setFakeBatteryChargeStatus(fakeBatteryChargeStatus); provider.setFakeBatteryChargeStatus(fakeBatteryChargeStatus);
/** @type {!BatteryChargeStatusObserver} */ const batteryChargeStatusObserverRemote =
const batteryChargeStatusObserverRemote = { /** @type {!BatteryChargeStatusObserver} */ ({
onBatteryChargeStatusUpdated: (batteryChargeStatus) => { onBatteryChargeStatusUpdated: (batteryChargeStatus) => {
assertDeepEquals(fakeBatteryChargeStatus[0], batteryChargeStatus); assertDeepEquals(fakeBatteryChargeStatus[0], batteryChargeStatus);
} }
}; });
return provider.observeBatteryChargeStatus( return provider.observeBatteryChargeStatus(
batteryChargeStatusObserverRemote); batteryChargeStatusObserverRemote);
...@@ -86,12 +85,11 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -86,12 +85,11 @@ export function fakeSystemDataProviderTestSuite() {
test('ObserveCpuUsage', () => { test('ObserveCpuUsage', () => {
provider.setFakeCpuUsage(fakeCpuUsage); provider.setFakeCpuUsage(fakeCpuUsage);
/** @type {!CpuUsageObserver} */ const cpuObserverRemote = /** @type {!CpuUsageObserver} */ ({
const cpuObserverRemote = {
onCpuUsageUpdated: (cpuUsage) => { onCpuUsageUpdated: (cpuUsage) => {
assertDeepEquals(fakeCpuUsage[0], cpuUsage); assertDeepEquals(fakeCpuUsage[0], cpuUsage);
} }
}; });
return provider.observeCpuUsage(cpuObserverRemote); return provider.observeCpuUsage(cpuObserverRemote);
}); });
...@@ -99,12 +97,11 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -99,12 +97,11 @@ export function fakeSystemDataProviderTestSuite() {
test('ObserveMemoryUsage', () => { test('ObserveMemoryUsage', () => {
provider.setFakeMemoryUsage(fakeMemoryUsage); provider.setFakeMemoryUsage(fakeMemoryUsage);
/** @type {!MemoryUsageObserver} */ const memoryUsageObserverRemote = /** @type {!MemoryUsageObserver} */ ({
const memoryUsageObserverRemote = {
onMemoryUsageUpdated: (memoryUsage) => { onMemoryUsageUpdated: (memoryUsage) => {
assertDeepEquals(fakeMemoryUsage[0], memoryUsage); assertDeepEquals(fakeMemoryUsage[0], memoryUsage);
} }
}; });
return provider.observeMemoryUsage(memoryUsageObserverRemote); return provider.observeMemoryUsage(memoryUsageObserverRemote);
}); });
...@@ -162,7 +159,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -162,7 +159,7 @@ export function fakeSystemDataProviderTestSuite() {
let completeResolver = new PromiseResolver(); let completeResolver = new PromiseResolver();
/** @type {!CpuUsageObserver} */ /** @type {!CpuUsageObserver} */
const cpuObserverRemote = { const cpuObserverRemote = /** @type {!CpuUsageObserver} */ ({
onCpuUsageUpdated: (cpuUsage) => { onCpuUsageUpdated: (cpuUsage) => {
// Only expect 2 calls. // Only expect 2 calls.
assertTrue(whichSample >= 0); assertTrue(whichSample >= 0);
...@@ -176,7 +173,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -176,7 +173,7 @@ export function fakeSystemDataProviderTestSuite() {
} }
whichSample++; whichSample++;
} }
}; });
return provider.observeCpuUsage(cpuObserverRemote) return provider.observeCpuUsage(cpuObserverRemote)
.then(() => { .then(() => {
...@@ -200,8 +197,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -200,8 +197,7 @@ export function fakeSystemDataProviderTestSuite() {
let firstResolver = new PromiseResolver(); let firstResolver = new PromiseResolver();
let completeResolver = new PromiseResolver(); let completeResolver = new PromiseResolver();
/** @type {!MemoryUsageObserver} */ const memoryObserverRemote = /** @type {!MemoryUsageObserver} */ ({
const memoryObserverRemote = {
onMemoryUsageUpdated: (memoryUsage) => { onMemoryUsageUpdated: (memoryUsage) => {
// Only expect 2 calls. // Only expect 2 calls.
assertTrue(whichSample >= 0); assertTrue(whichSample >= 0);
...@@ -215,7 +211,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -215,7 +211,7 @@ export function fakeSystemDataProviderTestSuite() {
} }
whichSample++; whichSample++;
} }
}; });
return provider.observeMemoryUsage(memoryObserverRemote) return provider.observeMemoryUsage(memoryObserverRemote)
.then(() => { .then(() => {
...@@ -239,8 +235,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -239,8 +235,7 @@ export function fakeSystemDataProviderTestSuite() {
let firstResolver = new PromiseResolver(); let firstResolver = new PromiseResolver();
let completeResolver = new PromiseResolver(); let completeResolver = new PromiseResolver();
/** @type {!BatteryHealthObserver} */ const batteryHealthObserverRemote = /** @type {!BatteryHealthObserver} */ ({
const batteryHealthObserverRemote = {
onBatteryHealthUpdated: (batteryHealth) => { onBatteryHealthUpdated: (batteryHealth) => {
// Only expect 2 calls. // Only expect 2 calls.
assertTrue(whichSample >= 0); assertTrue(whichSample >= 0);
...@@ -254,7 +249,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -254,7 +249,7 @@ export function fakeSystemDataProviderTestSuite() {
} }
whichSample++; whichSample++;
} }
}; });
return provider.observeBatteryHealth(batteryHealthObserverRemote) return provider.observeBatteryHealth(batteryHealthObserverRemote)
.then(() => { .then(() => {
...@@ -278,23 +273,23 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -278,23 +273,23 @@ export function fakeSystemDataProviderTestSuite() {
let firstResolver = new PromiseResolver(); let firstResolver = new PromiseResolver();
let completeResolver = new PromiseResolver(); let completeResolver = new PromiseResolver();
/** @type {!BatteryChargeStatusObserver} */ const batteryChargeStatusObserverRemote =
const batteryChargeStatusObserverRemote = { /** @type {!BatteryChargeStatusObserver} */ ({
onBatteryChargeStatusUpdated: (batteryChargeStatus) => { onBatteryChargeStatusUpdated: (batteryChargeStatus) => {
// Only expect 2 calls. // Only expect 2 calls.
assertTrue(whichSample >= 0); assertTrue(whichSample >= 0);
assertTrue(whichSample <= 1); assertTrue(whichSample <= 1);
assertDeepEquals( assertDeepEquals(
fakeBatteryChargeStatus[whichSample], batteryChargeStatus); fakeBatteryChargeStatus[whichSample], batteryChargeStatus);
if (whichSample === 0) { if (whichSample === 0) {
firstResolver.resolve(); firstResolver.resolve();
} else { } else {
completeResolver.resolve(); completeResolver.resolve();
} }
whichSample++; whichSample++;
} }
}; });
return provider return provider
.observeBatteryChargeStatus(batteryChargeStatusObserverRemote) .observeBatteryChargeStatus(batteryChargeStatusObserverRemote)
...@@ -320,7 +315,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -320,7 +315,7 @@ export function fakeSystemDataProviderTestSuite() {
let completeResolver = new PromiseResolver(); let completeResolver = new PromiseResolver();
/** @type {!CpuUsageObserver} */ /** @type {!CpuUsageObserver} */
const cpuObserverRemote = { const cpuObserverRemote = /** @type {!CpuUsageObserver} */ ({
onCpuUsageUpdated: (cpuUsage) => { onCpuUsageUpdated: (cpuUsage) => {
// Only expect 2 calls. // Only expect 2 calls.
assertTrue(whichSample >= 0); assertTrue(whichSample >= 0);
...@@ -336,7 +331,7 @@ export function fakeSystemDataProviderTestSuite() { ...@@ -336,7 +331,7 @@ export function fakeSystemDataProviderTestSuite() {
} }
whichSample++; whichSample++;
} }
}; });
return provider.observeCpuUsage(cpuObserverRemote) return provider.observeCpuUsage(cpuObserverRemote)
.then(() => { .then(() => {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
import {SystemDataProviderInterface} from 'chrome://diagnostics/diagnostics_types.js'; import {SystemDataProviderInterface} from 'chrome://diagnostics/diagnostics_types.js';
import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js';
import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js'; import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js';
import {getSystemDataProvider, getSystemRoutineController, setSystemDataProviderForTesting, setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js'; import {getSystemDataProvider, getSystemRoutineController, setSystemDataProviderForTesting, setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
...@@ -10,9 +11,7 @@ import {assertEquals} from '../../chai_assert.js'; ...@@ -10,9 +11,7 @@ import {assertEquals} from '../../chai_assert.js';
export function fakeMojoProviderTestSuite() { export function fakeMojoProviderTestSuite() {
test('SettingGettingTestProvider', () => { test('SettingGettingTestProvider', () => {
// TODO(zentaro): Replace with fake when built. let fake_provider = new FakeSystemDataProvider();
let fake_provider =
/** @type {SystemDataProviderInterface} */ (new Object());
setSystemDataProviderForTesting(fake_provider); setSystemDataProviderForTesting(fake_provider);
assertEquals(fake_provider, getSystemDataProvider()); assertEquals(fake_provider, getSystemDataProvider());
}); });
......
...@@ -23,6 +23,7 @@ js_type_check("closure_compile_module") { ...@@ -23,6 +23,7 @@ js_type_check("closure_compile_module") {
":fake_system_routine_controller", ":fake_system_routine_controller",
":memory_card", ":memory_card",
":mojo_interface_provider", ":mojo_interface_provider",
":mojo_utils",
":overview_card", ":overview_card",
":percent_bar_chart", ":percent_bar_chart",
":realtime_cpu_chart", ":realtime_cpu_chart",
...@@ -37,6 +38,7 @@ js_library("battery_status_card") { ...@@ -37,6 +38,7 @@ js_library("battery_status_card") {
deps = [ deps = [
":data_point", ":data_point",
":mojo_interface_provider", ":mojo_interface_provider",
":mojo_utils",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/js:i18n_behavior.m", "//ui/webui/resources/js:i18n_behavior.m",
] ]
...@@ -121,6 +123,12 @@ js_library("mojo_interface_provider") { ...@@ -121,6 +123,12 @@ js_library("mojo_interface_provider") {
] ]
} }
js_library("mojo_utils") {
deps = [
"//chromeos/components/diagnostics_ui/mojom:mojom_js_library_for_compile",
]
}
js_library("overview_card") { js_library("overview_card") {
deps = [ deps = [
":diagnostics_card", ":diagnostics_card",
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
value="[[batteryChargeStatus_.chargeNowMilliampHours]]"> value="[[batteryChargeStatus_.chargeNowMilliampHours]]">
</data-point> </data-point>
<data-point slot="body" id="powerTime" header="[[i18n('powerTime')]]" <data-point slot="body" id="powerTime" header="[[i18n('powerTime')]]"
value="[[batteryChargeStatus_.powerTime]]"> value="[[powerTimeString_]]">
</data-point> </data-point>
<data-point slot="body" id="adapterStatus" header="[[i18n('adapterStatus')]]" <data-point slot="body" id="adapterStatus" header="[[i18n('adapterStatus')]]"
value="[[batteryChargeStatus_.powerAdapterStatus]]"> value="[[batteryChargeStatus_.powerAdapterStatus]]">
......
...@@ -13,6 +13,7 @@ import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bun ...@@ -13,6 +13,7 @@ import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bun
import {BatteryChargeStatus, BatteryHealth, BatteryInfo, SystemDataProviderInterface} from './diagnostics_types.js' import {BatteryChargeStatus, BatteryHealth, BatteryInfo, SystemDataProviderInterface} from './diagnostics_types.js'
import {getSystemDataProvider} from './mojo_interface_provider.js'; import {getSystemDataProvider} from './mojo_interface_provider.js';
import {mojoString16ToString} from './mojo_utils.js';
/** /**
* @fileoverview * @fileoverview
...@@ -30,6 +31,20 @@ Polymer({ ...@@ -30,6 +31,20 @@ Polymer({
*/ */
systemDataProvider_: null, systemDataProvider_: null,
/**
* Receiver responsible for observing battery charge status.
* @private {
* ?chromeos.diagnostics.mojom.BatteryChargeStatusObserverReceiver}
*/
batteryChargeStatusObserverReceiver_: null,
/**
* Receiver responsible for observing battery health.
* @private {
* ?chromeos.diagnostics.mojom.BatteryHealthObserverReceiver}
*/
batteryHealthObserverReceiver_: null,
properties: { properties: {
/** @private {!BatteryChargeStatus} */ /** @private {!BatteryChargeStatus} */
batteryChargeStatus_: { batteryChargeStatus_: {
...@@ -45,6 +60,12 @@ Polymer({ ...@@ -45,6 +60,12 @@ Polymer({
batteryInfo_: { batteryInfo_: {
type: Object, type: Object,
}, },
/** @protected {string} */
powerTimeString_: {
type: String,
computed: 'decodeString16_(batteryChargeStatus_.powerTime)',
},
}, },
/** @override */ /** @override */
...@@ -55,6 +76,12 @@ Polymer({ ...@@ -55,6 +76,12 @@ Polymer({
this.observeBatteryHealth_(); this.observeBatteryHealth_();
}, },
/** @override */
detached() {
this.batteryChargeStatusObserverReceiver_.$.close();
this.batteryHealthObserverReceiver_.$.close();
},
/** @private */ /** @private */
fetchBatteryInfo_() { fetchBatteryInfo_() {
this.systemDataProvider_.getBatteryInfo().then( this.systemDataProvider_.getBatteryInfo().then(
...@@ -71,7 +98,16 @@ Polymer({ ...@@ -71,7 +98,16 @@ Polymer({
/** @private */ /** @private */
observeBatteryChargeStatus_() { observeBatteryChargeStatus_() {
this.systemDataProvider_.observeBatteryChargeStatus(this); this.batteryChargeStatusObserverReceiver_ =
new chromeos.diagnostics.mojom.BatteryChargeStatusObserverReceiver(
/**
* @type {!chromeos.diagnostics.mojom.
* BatteryChargeStatusObserverInterface}
*/
(this));
this.systemDataProvider_.observeBatteryChargeStatus(
this.batteryChargeStatusObserverReceiver_.$.bindNewPipeAndPassRemote());
}, },
/** /**
...@@ -84,7 +120,26 @@ Polymer({ ...@@ -84,7 +120,26 @@ Polymer({
/** @private */ /** @private */
observeBatteryHealth_() { observeBatteryHealth_() {
this.systemDataProvider_.observeBatteryHealth(this); this.batteryHealthObserverReceiver_ =
new chromeos.diagnostics.mojom.BatteryHealthObserverReceiver(
/**
* @type {!chromeos.diagnostics.mojom.
* BatteryHealthObserverInterface}
*/
(this));
this.systemDataProvider_.observeBatteryHealth(
this.batteryHealthObserverReceiver_.$.bindNewPipeAndPassRemote());
},
/**
* Converts utf16 to a readable string.
* @param {!mojoBase.mojom.String16} str16
* @return {string}
* @private
*/
decodeString16_(str16) {
return mojoString16ToString(str16);
}, },
/** /**
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- TODO(michaelcheco): Investigate whether or not temperature can be <!-- TODO(michaelcheco): Investigate whether or not temperature can be
localized. --> localized. -->
<data-point slot="body" id="cpuTemp" header="[[i18n('cpuTemp')]]" <data-point slot="body" id="cpuTemp" header="[[i18n('cpuTemp')]]"
value="[[cpuUsage_.cpuTempDegreesCelsius]]"> value="[[cpuUsage_.averageCpuTempCelsius]]">
</data-point> </data-point>
<routine-section slot="routines" routines="[[routines_]]"></routine-section> <routine-section slot="routines" routines="[[routines_]]"></routine-section>
......
...@@ -11,7 +11,7 @@ import './strings.m.js'; ...@@ -11,7 +11,7 @@ import './strings.m.js';
import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js';
import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {html, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {CpuUsage, RoutineName, SystemDataProviderInterface} from './diagnostics_types.js' import {CpuUsage, RoutineName, SystemDataProviderInterface} from './diagnostics_types.js';
import {getSystemDataProvider} from './mojo_interface_provider.js'; import {getSystemDataProvider} from './mojo_interface_provider.js';
/** /**
...@@ -30,6 +30,12 @@ Polymer({ ...@@ -30,6 +30,12 @@ Polymer({
*/ */
systemDataProvider_: null, systemDataProvider_: null,
/**
* Receiver responsible for observing CPU usage.
* @private {?chromeos.diagnostics.mojom.CpuUsageObserverReceiver}
*/
cpuUsageObserverReceiver_: null,
properties: { properties: {
routines_: { routines_: {
type: Array, type: Array,
...@@ -55,9 +61,22 @@ Polymer({ ...@@ -55,9 +61,22 @@ Polymer({
this.observeCpuUsage_(); this.observeCpuUsage_();
}, },
/** @override */
detached() {
this.cpuUsageObserverReceiver_.$.close();
},
/** @private */ /** @private */
observeCpuUsage_() { observeCpuUsage_() {
this.systemDataProvider_.observeCpuUsage(this); this.cpuUsageObserverReceiver_ =
new chromeos.diagnostics.mojom.CpuUsageObserverReceiver(
/**
* @type {!chromeos.diagnostics.mojom.CpuUsageObserverInterface}
*/
(this));
this.systemDataProvider_.observeCpuUsage(
this.cpuUsageObserverReceiver_.$.bindNewPipeAndPassRemote());
}, },
/** /**
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
<include name="IDR_DIAGNOSTICS_FONTS_CSS_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/diagnostics_fonts_css.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_FONTS_CSS_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/diagnostics_fonts_css.js" use_base_dir="false" type="BINDATA"/>
<include name="IDR_DIAGNOSTICS_MEMORY_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/memory_card.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_MEMORY_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/memory_card.js" use_base_dir="false" type="BINDATA"/>
<include name="IDR_DIAGNOSTICS_MOJO_INTERFACE_PROVIDER_JS" file="mojo_interface_provider.js" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_MOJO_INTERFACE_PROVIDER_JS" file="mojo_interface_provider.js" type="BINDATA"/>
<include name="IDR_DIAGNOSTICS_MOJO_UTILS_JS" file="mojo_utils.js" type="BINDATA"/>
<include name="IDR_DIAGNOSTICS_OVERVIEW_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/overview_card.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_OVERVIEW_CARD_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/overview_card.js" use_base_dir="false" type="BINDATA"/>
<include name="IDR_DIAGNOSTICS_PERCENT_BAR_CHART_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/percent_bar_chart.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_PERCENT_BAR_CHART_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/percent_bar_chart.js" use_base_dir="false" type="BINDATA"/>
<include name="IDR_DIAGNOSTICS_REALTIME_CPU_CHART_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.js" use_base_dir="false" type="BINDATA"/> <include name="IDR_DIAGNOSTICS_REALTIME_CPU_CHART_JS" file="${root_gen_dir}/chromeos/components/diagnostics_ui/resources/realtime_cpu_chart.js" use_base_dir="false" type="BINDATA"/>
......
...@@ -10,178 +10,96 @@ ...@@ -10,178 +10,96 @@
* re-aliased to the corresponding mojo types, or replaced by them. * re-aliased to the corresponding mojo types, or replaced by them.
*/ */
/**
* Type of SystemDataProviderInterface.ObserveBatteryChargeStatus function.
* @typedef {!function(!BatteryChargeStatusObserver): !Promise}
*/
export let ObserveBatteryChargeStatusFunction;
/**
* Type of SystemDataProviderInterface.ObserveBatteryHealth function.
* @typedef {!function(!BatteryHealthObserver): !Promise}
*/
export let ObserveBatteryHealthFunction;
/**
* Type of SystemDataProviderInterface.ObserveCpuUsage function.
* @typedef {!function(!CpuUsageObserver): !Promise}
*/
export let ObserveCpuUsageFunction;
/**
* Type of SystemDataProviderInterface.ObserveMemoryUsage function.
* @typedef {!function(!MemoryUsageObserver): !Promise}
*/
export let ObserveMemoryUsageFunction;
/** /**
* Type alias for the SystemDataProviderInterface. * Type alias for the SystemDataProviderInterface.
* TODO(zentaro): Replace with a real mojo type when implemented. * @typedef {chromeos.diagnostics.mojom.SystemDataProviderInterface}
* @typedef {{
* getBatteryInfo: !function(): !Promise<!{batteryInfo: !BatteryInfo}>,
* getSystemInfo: !function(): !Promise<!{systemInfo: SystemInfo}>,
* observeBatteryChargeStatus: !ObserveBatteryChargeStatusFunction,
* observeBatteryHealth: !ObserveBatteryHealthFunction,
* observeCpuUsage: !ObserveCpuUsageFunction,
* observeMemoryUsage: !ObserveMemoryUsageFunction,
* }}
*/ */
export let SystemDataProviderInterface; export let SystemDataProviderInterface;
/** /**
* Type alias for DeviceCapabilities. * Type alias for DeviceCapabilities.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.DeviceCapabilities}
* hasBattery: boolean,
* }}
*/ */
export let DeviceCapabilities; export let DeviceCapabilities;
/** /**
* Type alias for VersionInfo. * Type alias for VersionInfo.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.VersionInfo}
* milestoneVersion: string,
* }}
*/ */
export let VersionInfo; export let VersionInfo;
/** /**
* Type alias for SystemInfo. * Type alias for SystemInfo.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.SystemInfo}
* boardName: string,
* cpuModelName: string,
* cpuThreadsCount: number,
* deviceCapabilities: DeviceCapabilities,
* marketingName: string,
* totalMemoryKib: number,
* versionInfo: VersionInfo,
* }}
*/ */
export let SystemInfo; export let SystemInfo;
/** /**
* Type alias for BatteryInfo. * Type alias for ExternalPowerSource.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.ExternalPowerSource}
* chargeFullDesignMilliampHours: number,
* manufacturer: string,
* }}
*/ */
export let BatteryInfo; export let ExternalPowerSource;
/** /**
* Type alias for CpuUsageObserver. * Type alias for BatteryState.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.BatteryState}
* onCpuUsageUpdated: !function(!CpuUsage),
* }}
*/ */
export let CpuUsageObserver; export let BatteryState;
/** /**
* Type alias for CpuUsage. * Type alias for BatteryInfo.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.BatteryInfo}
* cpuTempDegreesCelsius: number,
* percentUsageSystem: number,
* percentUsageUser: number,
* }}
*/ */
export let CpuUsage; export let BatteryInfo;
/** /**
* Type alias for BatteryChargeStatusObserver. * Type alias for BatteryHealthObserver.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.BatteryChargeStatusObserver}
* onBatteryChargeStatusUpdated: !function(!BatteryChargeStatus)
* }}
*/ */
export let BatteryChargeStatusObserver; export let BatteryChargeStatusObserver;
/**
* External power source enumeration.
* @enum {number}
*/
export let ExternalPowerSource = {
kAc: 0,
kUsb: 1,
kDisconnected: 2,
};
/**
* Battery state enumeration.
* @enum {number}
*/
export let BatteryState = {
kCharging: 0,
kDischarging: 1,
kFull: 2,
};
/** /**
* Type alias for BatteryChargeStatus. * Type alias for BatteryChargeStatus.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.BatteryChargeStatus}
* batteryState: BatteryState,
* chargeNowMilliampHours: number,
* currentNowMilliamps: number,
* powerAdapterStatus: ExternalPowerSource,
* powerTime: string,
* }}
*/ */
export let BatteryChargeStatus; export let BatteryChargeStatus;
/** /**
* Type alias for BatteryHealthObserver. * Type alias for BatteryHealthObserver.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.BatteryHealthObserver}
* onBatteryHealthUpdated: !function(!BatteryHealth)
* }}
*/ */
export let BatteryHealthObserver; export let BatteryHealthObserver;
/** /**
* Type alias for BatteryHealth. * Type alias for BatteryHealth.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.BatteryHealth}
* batteryWearPercentage: number,
* chargeFullDesignMilliampHours: number,
* chargeFullNowMilliampHours: number,
* cycleCount: number,
* }}
*/ */
export let BatteryHealth; export let BatteryHealth;
/** /**
* Type alias for MemoryUsageObserver. * Type alias for MemoryUsageObserver.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.MemoryUsageObserver}
* onMemoryUsageUpdated: !function(!MemoryUsage)
* }}
*/ */
export let MemoryUsageObserver; export let MemoryUsageObserver;
/** /**
* Type alias for MemoryUsage. * Type alias for MemoryUsage.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.MemoryUsage}
* availableMemoryKib: number,
* freeMemoryKib: number,
* totalMemoryKib: number,
* }}
*/ */
export let MemoryUsage; export let MemoryUsage;
/**
* Type alias for CpuUsageObserver.
* @typedef {chromeos.diagnostics.mojom.CpuUsageObserver}
*/
export let CpuUsageObserver;
/**
* Type alias for CpuUsage.
* @typedef {chromeos.diagnostics.mojom.CpuUsage}
*/
export let CpuUsage;
/** /**
* Enumeration of routines. * Enumeration of routines.
* @enum {number} * @enum {number}
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
import {BatteryChargeStatus, BatteryHealth, CpuUsage, ExternalPowerSource, MemoryUsage, RoutineName, StandardRoutineResult, SystemInfo} from './diagnostics_types.js' import {BatteryChargeStatus, BatteryHealth, CpuUsage, ExternalPowerSource, MemoryUsage, RoutineName, StandardRoutineResult, SystemInfo} from './diagnostics_types.js'
import {stringToMojoString16} from './mojo_utils.js';
/* @type {!Array<!BatteryChargeStatus>} */ /* @type {!Array<!BatteryChargeStatus>} */
export const fakeBatteryChargeStatus = [ export const fakeBatteryChargeStatus = [
...@@ -10,22 +11,22 @@ export const fakeBatteryChargeStatus = [ ...@@ -10,22 +11,22 @@ export const fakeBatteryChargeStatus = [
chargeFullNowMilliampHours: 5700, chargeFullNowMilliampHours: 5700,
chargeNowMilliampHours: 4200, chargeNowMilliampHours: 4200,
currentNowMilliamps: 1123, currentNowMilliamps: 1123,
powerAdapterStatus: ExternalPowerSource.kAc, powerAdapterStatus: chromeos.diagnostics.mojom.ExternalPowerSource.kAc,
powerTime: '3h 15m', powerTime: stringToMojoString16('3h 15m'),
}, },
{ {
chargeFullNowMilliampHours: 5700, chargeFullNowMilliampHours: 5700,
chargeNowMilliampHours: 4500, chargeNowMilliampHours: 4500,
currentNowMilliamps: 1123, currentNowMilliamps: 1123,
powerAdapterStatus: ExternalPowerSource.kAc, powerAdapterStatus: chromeos.diagnostics.mojom.ExternalPowerSource.kAc,
powerTime: '3h 01m', powerTime: stringToMojoString16('3h 01m'),
}, },
{ {
chargeFullNowMilliampHours: 5700, chargeFullNowMilliampHours: 5700,
chargeNowMilliampHours: 4800, chargeNowMilliampHours: 4800,
currentNowMilliamps: 1123, currentNowMilliamps: 1123,
powerAdapterStatus: ExternalPowerSource.kAc, powerAdapterStatus: chromeos.diagnostics.mojom.ExternalPowerSource.kAc,
powerTime: '2h 45m', powerTime: stringToMojoString16('2h 45m'),
} }
]; ];
...@@ -60,42 +61,42 @@ export const fakeBatteryInfo2 = { ...@@ -60,42 +61,42 @@ export const fakeBatteryInfo2 = {
/* @type {!Array<!CpuUsage>} */ /* @type {!Array<!CpuUsage>} */
export const fakeCpuUsage = [ export const fakeCpuUsage = [
{ {
cpuTempDegreesCelsius: 107, averageCpuTempCelsius: 107,
percentUsageSystem: 15, percentUsageSystem: 15,
percentUsageUser: 20, percentUsageUser: 20,
}, },
{ {
cpuTempDegreesCelsius: 106, averageCpuTempCelsius: 106,
percentUsageSystem: 30, percentUsageSystem: 30,
percentUsageUser: 40, percentUsageUser: 40,
}, },
{ {
cpuTempDegreesCelsius: 107, averageCpuTempCelsius: 107,
percentUsageSystem: 31, percentUsageSystem: 31,
percentUsageUser: 45, percentUsageUser: 45,
}, },
{ {
cpuTempDegreesCelsius: 109, averageCpuTempCelsius: 109,
percentUsageSystem: 55, percentUsageSystem: 55,
percentUsageUser: 24, percentUsageUser: 24,
}, },
{ {
cpuTempDegreesCelsius: 109, averageCpuTempCelsius: 109,
percentUsageSystem: 49, percentUsageSystem: 49,
percentUsageUser: 10, percentUsageUser: 10,
}, },
{ {
cpuTempDegreesCelsius: 161, averageCpuTempCelsius: 161,
percentUsageSystem: 1, percentUsageSystem: 1,
percentUsageUser: 99, percentUsageUser: 99,
}, },
{ {
cpuTempDegreesCelsius: 118, averageCpuTempCelsius: 118,
percentUsageSystem: 35, percentUsageSystem: 35,
percentUsageUser: 37, percentUsageUser: 37,
}, },
{ {
cpuTempDegreesCelsius: 110, averageCpuTempCelsius: 110,
percentUsageSystem: 26, percentUsageSystem: 26,
percentUsageUser: 30, percentUsageUser: 30,
}, },
......
...@@ -31,6 +31,13 @@ Polymer({ ...@@ -31,6 +31,13 @@ Polymer({
*/ */
systemDataProvider_: null, systemDataProvider_: null,
/**
* Receiver responsible for observing memory usage.
* @private {
* ?chromeos.diagnostics.mojom.MemoryUsageObserverReceiver}
*/
memoryUsageObserverReceiver_: null,
properties: { properties: {
/** @private {!Array<!RoutineName>} */ /** @private {!Array<!RoutineName>} */
routines_: { routines_: {
...@@ -54,9 +61,22 @@ Polymer({ ...@@ -54,9 +61,22 @@ Polymer({
this.observeMemoryUsage_(); this.observeMemoryUsage_();
}, },
/** @override */
detached() {
this.memoryUsageObserverReceiver_.$.close();
},
/** @private */ /** @private */
observeMemoryUsage_() { observeMemoryUsage_() {
this.systemDataProvider_.observeMemoryUsage(this); this.memoryUsageObserverReceiver_ =
new chromeos.diagnostics.mojom.MemoryUsageObserverReceiver(
/**
* @type {!chromeos.diagnostics.mojom.MemoryUsageObserverInterface}
*/
(this));
this.systemDataProvider_.observeMemoryUsage(
this.memoryUsageObserverReceiver_.$.bindNewPipeAndPassRemote());
}, },
/** /**
......
...@@ -2,6 +2,11 @@ ...@@ -2,6 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js';
import 'chrome://resources/mojo/mojo/public/mojom/base/big_buffer.mojom-lite.js';
import 'chrome://resources/mojo/mojo/public/mojom/base/string16.mojom-lite.js';
import './system_data_provider.mojom-lite.js';
import './system_routine_controller.mojom-lite.js';
import {assert} from 'chrome://resources/js/assert.m.js'; import {assert} from 'chrome://resources/js/assert.m.js';
import {SystemDataProviderInterface, SystemInfo, SystemRoutineControllerInterface} from './diagnostics_types.js'; import {SystemDataProviderInterface, SystemInfo, SystemRoutineControllerInterface} from './diagnostics_types.js';
import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage, fakeRoutineResults, fakeSystemInfo} from './fake_data.js'; import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage, fakeRoutineResults, fakeSystemInfo} from './fake_data.js';
...@@ -79,8 +84,8 @@ export function setSystemDataProviderForTesting(testProvider) { ...@@ -79,8 +84,8 @@ export function setSystemDataProviderForTesting(testProvider) {
*/ */
export function getSystemDataProvider() { export function getSystemDataProvider() {
if (!systemDataProvider) { if (!systemDataProvider) {
// TODO(zentaro): Instantiate a real mojo interface here. systemDataProvider =
setupFakeSystemDataProvider_(); chromeos.diagnostics.mojom.SystemDataProvider.getRemote();
} }
assert(!!systemDataProvider); assert(!!systemDataProvider);
......
// 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.
import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js';
import 'chrome://resources/mojo/mojo/public/mojom/base/big_buffer.mojom-lite.js';
import 'chrome://resources/mojo/mojo/public/mojom/base/string16.mojom-lite.js';
/**
* Converts a JS string to mojo_base::mojom::String16 object.
* @param {string} str
* @return {!mojoBase.mojom.String16}
*/
export function stringToMojoString16(str) {
let arr = [];
for (var i = 0; i < str.length; i++) {
arr[i] = str.charCodeAt(i);
}
return {data: arr};
}
/**
* Converts mojo_base::mojom::String16 to a JS string.
* @param {!mojoBase.mojom.String16} str16
* @return {string}
*/
export function mojoString16ToString(str16) {
return str16.data.map(ch => String.fromCodePoint(ch)).join('');
}
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