Commit 4549c336 authored by Zentaro Kavanagh's avatar Zentaro Kavanagh Committed by Commit Bot

Diagnostics: Add support for observing battery charge status

Bug: 1125150
Test: browser_tests --gtest_filter=DiagnosticsApp*
Change-Id: I649f0bbae5df1e84863710860ad7359a5d2130d2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2422162
Commit-Queue: Zentaro Kavanagh <zentaro@chromium.org>
Reviewed-by: default avatarBailey Berro <baileyberro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809832}
parent 76792526
......@@ -7,7 +7,7 @@ import 'chrome://resources/mojo/mojo/public/js/mojo_bindings_lite.js';
import 'chrome://diagnostics/diagnostics_app.js';
import {SystemDataProviderInterface} from 'chrome://diagnostics/diagnostics_types.js';
import {fakeBatteryHealth, fakeBatteryInfo, fakeCpuUsage, fakeSystemInfo} from 'chrome://diagnostics/fake_data.js';
import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeCpuUsage, fakeSystemInfo} from 'chrome://diagnostics/fake_data.js';
import {FakeMethodResolver} from 'chrome://diagnostics/fake_method_resolver.js';
import {FakeObservables} from 'chrome://diagnostics/fake_observables.js';
import {FakeSystemDataProvider} from 'chrome://diagnostics/fake_system_data_provider.js';
......@@ -404,6 +404,20 @@ suite('FakeSystemDataProviderTest', () => {
return provider.observeBatteryHealth(batteryHealthObserverRemote);
});
test('ObserveBatteryChargeStatus', () => {
provider.setFakeBatteryChargeStatus(fakeBatteryChargeStatus);
/** @type {!BatteryChargeStatusObserver} */
const batteryChargeStatusObserverRemote = {
onBatteryChargeStatusUpdated: (batteryChargeStatus) => {
assertDeepEquals(fakeBatteryChargeStatus[0], batteryChargeStatus);
}
};
return provider.observeBatteryChargeStatus(
batteryChargeStatusObserverRemote);
});
test('ObserveCpuUsage', () => {
provider.setFakeCpuUsage(fakeCpuUsage);
......
......@@ -10,6 +10,12 @@
* 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}
......@@ -28,6 +34,7 @@ export let ObserveCpuUsageFunction;
* @typedef {{
* getBatteryInfo: !function(): !Promise<!BatteryInfo>,
* getSystemInfo: !function(): !Promise<!SystemInfo>,
* observeBatteryChargeStatus: !ObserveBatteryChargeStatusFunction,
* observeBatteryHealth: !ObserveBatteryHealthFunction,
* observeCpuUsage: !ObserveCpuUsageFunction,
* }}
......@@ -90,6 +97,36 @@ export let CpuUsageObserver;
*/
export let CpuUsage;
/**
* Type alias for BatteryChargeStatusObserver.
* @typedef {{
* onBatteryChargeStatusUpdated: !function(!BatteryChargeStatus)
* }}
*/
export let BatteryChargeStatusObserver;
/**
* External power source enumeration.
* @enum {number}
*/
export let ExternalPowerSource = {
kAc: 0,
kUsb: 1,
kDisconnected: 2,
};
/**
* Type alias for BatteryChargeStatus.
* @typedef {{
* charge_full_now_milliamp_hours: number,
* charge_now_milliamp_hours: number,
* current_now_milliamps: number,
* power_adapter_status: ExternalPowerSource,
* power_time: string,
* }}
*/
export let BatteryChargeStatus;
/**
* Type alias for BatteryHealthObserver.
* @typedef {{
......
......@@ -2,7 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {BatteryHealth, CpuUsage, SystemInfo} from './diagnostics_types.js'
import {BatteryChargeStatus, BatteryHealth, CpuUsage, ExternalPowerSource, SystemInfo} from './diagnostics_types.js'
/* @type {!Array<!BatteryChargeStatus>} */
export const fakeBatteryChargeStatus = [{
charge_full_now_milliamp_hours: 6000,
charge_now_milliamp_hours: 4200,
current_now_milliamps: 1123,
power_adapter_status: ExternalPowerSource.kAc,
power_time: '3h 15m',
}];
/* @type {!Array<!BatteryHealth>} */
export const fakeBatteryHealth = [{
......
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {BatteryHealth, BatteryInfo, CpuUsage, CpuUsageObserver, SystemInfo} from './diagnostics_types.js';
import {BatteryChargeStatus, BatteryHealth, BatteryInfo, CpuUsage, CpuUsageObserver, ExternalPowerSource, SystemInfo} from './diagnostics_types.js';
import {FakeMethodResolver} from './fake_method_resolver.js';
import {FakeObservables} from './fake_observables.js';
......@@ -24,6 +24,8 @@ export class FakeSystemDataProvider {
this.methods_.register('getBatteryInfo');
// Setup observables.
this.observables_.register(
'BatteryChargeStatusObserver_onBatteryChargeStatusUpdated');
this.observables_.register('BatteryHealthObserver_onBatteryHealthUpdated');
this.observables_.register('CpuUsageObserver_onCpuUsageUpdated');
}
......@@ -59,6 +61,36 @@ export class FakeSystemDataProvider {
this.methods_.setResult('getBatteryInfo', batteryInfo);
}
/*
* Implements SystemDataProviderInterface.ObserveBatteryChargeStatus.
* @param {!BatteryChargeStatusObserver} remote
* @return {!Promise}
*/
observeBatteryChargeStatus(remote) {
return new Promise((resolve) => {
this.observables_.observe(
'BatteryChargeStatusObserver_onBatteryChargeStatusUpdated',
(batteryChargeStatus) => {
remote.onBatteryChargeStatusUpdated(
/** @type {!BatteryChargeStatus} */ (batteryChargeStatus));
});
this.observables_.trigger(
'BatteryChargeStatusObserver_onBatteryChargeStatusUpdated');
resolve();
});
}
/**
* Sets the values that will observed from observeBatteryChargeStatus.
* @param {!Array<!BatteryChargeStatus>} batteryChargeStatusList
*/
setFakeBatteryChargeStatus(batteryChargeStatusList) {
this.observables_.setObservableData(
'BatteryChargeStatusObserver_onBatteryChargeStatusUpdated',
batteryChargeStatusList);
}
/*
* Implements SystemDataProviderInterface.ObserveBatteryHealth.
* @param {!BatteryHealthObserver} remote
......
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