Commit 96223eb1 authored by Zentaro Kavanagh's avatar Zentaro Kavanagh Committed by Commit Bot

Diagnostics: Add support for observing memory usage

Bug: 1125150
Test: browser_tests --gtest_filter=DiagnosticsApp*
Change-Id: I39f8d765f841aae135ed543f9fc2238ec8a1837e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2422184
Commit-Queue: Zentaro Kavanagh <zentaro@chromium.org>
Reviewed-by: default avatarBailey Berro <baileyberro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809852}
parent ea72cb05
......@@ -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 {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeCpuUsage, fakeSystemInfo} from 'chrome://diagnostics/fake_data.js';
import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage, 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';
......@@ -430,4 +430,17 @@ suite('FakeSystemDataProviderTest', () => {
return provider.observeCpuUsage(cpuObserverRemote);
});
test('ObserveMemoryUsage', () => {
provider.setFakeMemoryUsage(fakeMemoryUsage);
/** @type {!MemoryUsageObserver} */
const memoryUsageObserverRemote = {
onMemoryUsageUpdated: (memoryUsage) => {
assertDeepEquals(fakeMemoryUsage[0], memoryUsage);
}
};
return provider.observeMemoryUsage(memoryUsageObserverRemote);
});
});
......@@ -28,6 +28,12 @@ export let ObserveBatteryHealthFunction;
*/
export let ObserveCpuUsageFunction;
/**
* Type of SystemDataProviderInterface.ObserveMemoryUsage function.
* @typedef {!function(!MemoryUsageObserver): !Promise}
*/
export let ObserveMemoryUsageFunction;
/**
* Type alias for the SystemDataProviderInterface.
* TODO(zentaro): Replace with a real mojo type when implemented.
......@@ -37,6 +43,7 @@ export let ObserveCpuUsageFunction;
* observeBatteryChargeStatus: !ObserveBatteryChargeStatusFunction,
* observeBatteryHealth: !ObserveBatteryHealthFunction,
* observeCpuUsage: !ObserveCpuUsageFunction,
* observeMemoryUsage: !ObserveMemoryUsageFunction,
* }}
*/
export let SystemDataProviderInterface;
......@@ -145,3 +152,21 @@ export let BatteryHealthObserver;
* }}
*/
export let BatteryHealth;
/**
* Type alias for MemoryUsageObserver.
* @typedef {{
* onMemoryUsageUpdated: !function(!MemoryUsage)
* }}
*/
export let MemoryUsageObserver;
/**
* Type alias for MemoryUsage.
* @typedef {{
* available_memory_kib: number,
* free_memory_kib: number,
* total_memory_kib: number,
* }}
*/
export let MemoryUsage;
......@@ -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 {BatteryChargeStatus, BatteryHealth, CpuUsage, ExternalPowerSource, SystemInfo} from './diagnostics_types.js'
import {BatteryChargeStatus, BatteryHealth, CpuUsage, ExternalPowerSource, MemoryUsage, SystemInfo} from './diagnostics_types.js'
/* @type {!Array<!BatteryChargeStatus>} */
export const fakeBatteryChargeStatus = [{
......@@ -34,6 +34,13 @@ export const fakeCpuUsage = [{
percent_usage_user: 20,
}];
/* @type {!Array<!MemoryUsage>} */
export const fakeMemoryUsage = [{
available_memory_kib: 57000,
free_memory_kib: 15000,
total_memory_kib: 128000,
}];
/* @type {!SystemInfo} */
export const fakeSystemInfo = {
board_name: 'CrOS Board',
......
......@@ -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 {BatteryChargeStatus, BatteryHealth, BatteryInfo, CpuUsage, CpuUsageObserver, ExternalPowerSource, SystemInfo} from './diagnostics_types.js';
import {BatteryChargeStatus, BatteryHealth, BatteryInfo, CpuUsage, CpuUsageObserver, ExternalPowerSource, MemoryUsage, MemoryUsageObserver, SystemInfo} from './diagnostics_types.js';
import {FakeMethodResolver} from './fake_method_resolver.js';
import {FakeObservables} from './fake_observables.js';
......@@ -28,6 +28,7 @@ export class FakeSystemDataProvider {
'BatteryChargeStatusObserver_onBatteryChargeStatusUpdated');
this.observables_.register('BatteryHealthObserver_onBatteryHealthUpdated');
this.observables_.register('CpuUsageObserver_onCpuUsageUpdated');
this.observables_.register('MemoryUsageObserver_onMemoryUsageUpdated');
}
/**
......@@ -144,4 +145,31 @@ export class FakeSystemDataProvider {
this.observables_.setObservableData(
'CpuUsageObserver_onCpuUsageUpdated', cpuUsageList);
}
/*
* Implements SystemDataProviderInterface.ObserveMemoryUsage.
* @param {!MemoryUsageObserver} remote
* @return {!Promise}
*/
observeMemoryUsage(remote) {
return new Promise((resolve) => {
this.observables_.observe(
'MemoryUsageObserver_onMemoryUsageUpdated', (memoryUsage) => {
remote.onMemoryUsageUpdated(
/** @type {!MemoryUsage} */ (memoryUsage));
});
this.observables_.trigger('MemoryUsageObserver_onMemoryUsageUpdated');
resolve();
});
}
/**
* Sets the values that will observed from ObserveCpuUsage.
* @param {!Array<!MemoryUsage>} memoryUsageList
*/
setFakeMemoryUsage(memoryUsageList) {
this.observables_.setObservableData(
'MemoryUsageObserver_onMemoryUsageUpdated', memoryUsageList);
}
}
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