Commit c07adb08 authored by Joon Ahn's avatar Joon Ahn Committed by Commit Bot

diagnostics: wire routine system interface backend

Bug: 1125150
Cq-Depend: chromium:2528302
Test: browser_tests --gtest_filter=Diagnostics*
Change-Id: Ia0df0ca9f0e5f468d1c020f0d09dcc5c10a313ff
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2552893
Commit-Queue: Joon Ahn <joonbug@chromium.org>
Reviewed-by: default avatarZentaro Kavanagh <zentaro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#830910}
parent 97fb1c36
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import 'chrome://diagnostics/cpu_card.js'; import 'chrome://diagnostics/cpu_card.js';
import {CpuUsage, RoutineName, SystemDataProviderInterface, SystemInfo} from 'chrome://diagnostics/diagnostics_types.js'; import {CpuUsage, RoutineType, SystemDataProviderInterface, SystemInfo} from 'chrome://diagnostics/diagnostics_types.js';
import {fakeCpuUsage, fakeSystemInfo} from 'chrome://diagnostics/fake_data.js'; import {fakeCpuUsage, fakeSystemInfo} 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';
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// 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 {RoutineName, RoutineRunner, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js'; import {RoutineRunner, RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js'; import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js';
import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js'; import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js';
...@@ -25,38 +25,36 @@ export function fakeSystemRoutineContollerTestSuite() { ...@@ -25,38 +25,36 @@ export function fakeSystemRoutineContollerTestSuite() {
* promise must be forced to resolve either by chaining it with additional * promise must be forced to resolve either by chaining it with additional
* promises or returning it from the test. * promises or returning it from the test.
* *
* @param {!RoutineName} expectedName * @param {!RoutineType} expectedType
* @param {!StandardRoutineResult} expectedResult * @param {!StandardRoutineResult} expectedResult
* @return {!Promise} * @return {!Promise}
*/ */
function runRoutineAndAssertStandardResult(expectedName, expectedResult) { function runRoutineAndAssertStandardResult(expectedType, expectedResult) {
let resolver = new PromiseResolver(); let resolver = new PromiseResolver();
/** @type {!RoutineRunner} */ const routineRunnerRemote = /** @type {!RoutineRunner} */ ({
const routineRunnerRemote = {
onRoutineResult: (resultInfo) => { onRoutineResult: (resultInfo) => {
assertEquals(expectedName, resultInfo.name); assertEquals(expectedType, resultInfo.type);
if (resultInfo.result.hasOwnProperty('simpleResult')) { if (resultInfo.result.hasOwnProperty('simpleResult')) {
assertEquals(expectedResult, resultInfo.result.simpleResult); assertEquals(expectedResult, resultInfo.result.simpleResult);
// Can't have both simpleResult and batteryRateResult // Can't have both simpleResult and powerResult
assertFalse(resultInfo.result.hasOwnProperty('batteryRateResult')); assertFalse(resultInfo.result.hasOwnProperty('powerResult'));
} }
if (resultInfo.result.hasOwnProperty('batteryRateResult')) { if (resultInfo.result.hasOwnProperty('powerResult')) {
assertEquals( assertEquals(expectedResult, resultInfo.result.powerResult.result);
expectedResult, resultInfo.result.batteryRateResult.result);
// Can't have both simpleResult and batteryRateResult // Can't have both simpleResult and powerResult
assertFalse(resultInfo.result.hasOwnProperty('simpleResult')); assertFalse(resultInfo.result.hasOwnProperty('simpleResult'));
} }
resolver.resolve(); resolver.resolve();
} }
}; });
return controller.runRoutine(expectedName, routineRunnerRemote).then(() => { return controller.runRoutine(expectedType, routineRunnerRemote).then(() => {
return resolver.promise; return resolver.promise;
}); });
} }
...@@ -66,12 +64,12 @@ export function fakeSystemRoutineContollerTestSuite() { ...@@ -66,12 +64,12 @@ export function fakeSystemRoutineContollerTestSuite() {
* promise must be forced to resolve either by chaining it with additional * promise must be forced to resolve either by chaining it with additional
* promises or returning it from the test. * promises or returning it from the test.
* *
* @param {!RoutineName} expectedName * @param {!RoutineType} expectedType
* @param {!StandardRoutineResult} expectedResult * @param {!StandardRoutineResult} expectedResult
* @return {!Promise} * @return {!Promise}
*/ */
function runRoutineAndAssertStandardResultManualResolve( function runRoutineAndAssertStandardResultManualResolve(
expectedName, expectedResult) { expectedType, expectedResult) {
let resolver = new PromiseResolver(); let resolver = new PromiseResolver();
// Nothing should be running yet. // Nothing should be running yet.
...@@ -80,21 +78,21 @@ export function fakeSystemRoutineContollerTestSuite() { ...@@ -80,21 +78,21 @@ export function fakeSystemRoutineContollerTestSuite() {
// Use this to detect if the routine resolved too early. // Use this to detect if the routine resolved too early.
let wasRun = false; let wasRun = false;
/** @type {!RoutineRunner} */
const routineRunnerRemote = { const routineRunnerRemote = /** @type {!RoutineRunner} */ ({
onRoutineResult: (resultInfo) => { onRoutineResult: (resultInfo) => {
assertTrue(controller.isRoutineInProgressForTesting()); assertTrue(controller.isRoutineInProgressForTesting());
assertFalse(wasRun); assertFalse(wasRun);
assertEquals(expectedName, resultInfo.name); assertEquals(expectedType, resultInfo.type);
assertEquals(expectedResult, resultInfo.result.simpleResult); assertEquals(expectedResult, resultInfo.result.simpleResult);
// Mark that the test completed. // Mark that the test completed.
wasRun = true; wasRun = true;
resolver.resolve(); resolver.resolve();
} }
}; });
controller.runRoutine(expectedName, routineRunnerRemote).then(() => { controller.runRoutine(expectedType, routineRunnerRemote).then(() => {
assertTrue(wasRun); assertTrue(wasRun);
assertFalse(controller.isRoutineInProgressForTesting()); assertFalse(controller.isRoutineInProgressForTesting());
}); });
...@@ -116,68 +114,78 @@ export function fakeSystemRoutineContollerTestSuite() { ...@@ -116,68 +114,78 @@ export function fakeSystemRoutineContollerTestSuite() {
test('NonExistantTest', () => { test('NonExistantTest', () => {
// A routine that hasn't had a fake result set will return kErrorExecuting. // A routine that hasn't had a fake result set will return kErrorExecuting.
return runRoutineAndAssertStandardResult( return runRoutineAndAssertStandardResult(
RoutineName.kCpuStress, StandardRoutineResult.kErrorExecuting); chromeos.diagnostics.mojom.RoutineType.kCpuStress,
chromeos.diagnostics.mojom.StandardRoutineResult.kExecutionError);
}); });
test('ExpectedResultPass', () => { test('ExpectedResultPass', () => {
const routineName = RoutineName.kCpuStress; const routineType = chromeos.diagnostics.mojom.RoutineType.kCpuStress;
const expectedResult = StandardRoutineResult.kTestPassed; const expectedResult =
controller.setFakeStandardRoutineResult(routineName, expectedResult); chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed;
controller.setFakeStandardRoutineResult(routineType, expectedResult);
return runRoutineAndAssertStandardResult(routineName, expectedResult); return runRoutineAndAssertStandardResult(routineType, expectedResult);
}); });
test('ExpectedResultFail', () => { test('ExpectedResultFail', () => {
const routineName = RoutineName.kCpuStress; const routineType = chromeos.diagnostics.mojom.RoutineType.kCpuStress;
const expectedResult = StandardRoutineResult.kTestFailed; const expectedResult =
controller.setFakeStandardRoutineResult(routineName, expectedResult); chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed;
controller.setFakeStandardRoutineResult(routineType, expectedResult);
return runRoutineAndAssertStandardResult(routineName, expectedResult); return runRoutineAndAssertStandardResult(routineType, expectedResult);
}); });
test('ExpectedBatteryRateResultPass', () => { test('ExpectedPowerResultPass', () => {
const routineName = RoutineName.kCharge; const routineType = chromeos.diagnostics.mojom.RoutineType.kCpuCache;
const expectedResult = StandardRoutineResult.kTestPassed; const expectedResult =
controller.setFakeStandardRoutineResult(routineName, expectedResult); chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed;
controller.setFakeStandardRoutineResult(routineType, expectedResult);
return runRoutineAndAssertStandardResult(routineName, expectedResult); return runRoutineAndAssertStandardResult(routineType, expectedResult);
}); });
test('ExpectedBatteryRateResultFail', () => { test('ExpectedPowerResultFail', () => {
const routineName = RoutineName.kCharge; const routineType = chromeos.diagnostics.mojom.RoutineType.kCpuCache;
const expectedResult = StandardRoutineResult.kTestFailed; const expectedResult =
controller.setFakeStandardRoutineResult(routineName, expectedResult); chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed;
controller.setFakeStandardRoutineResult(routineType, expectedResult);
return runRoutineAndAssertStandardResult(routineName, expectedResult); return runRoutineAndAssertStandardResult(routineType, expectedResult);
}); });
test('ExpectedResultPassManualResolve', () => { test('ExpectedResultPassManualResolve', () => {
const routineName = RoutineName.kCpuStress; const routineType = chromeos.diagnostics.mojom.RoutineType.kCpuStress;
const expectedResult = StandardRoutineResult.kTestPassed; const expectedResult =
controller.setFakeStandardRoutineResult(routineName, expectedResult); chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed;
controller.setFakeStandardRoutineResult(routineType, expectedResult);
// Tests will only resolve when done manually. // Tests will only resolve when done manually.
controller.setDelayTimeInMillisecondsForTesting(-1); controller.setDelayTimeInMillisecondsForTesting(-1);
return runRoutineAndAssertStandardResultManualResolve( return runRoutineAndAssertStandardResultManualResolve(
routineName, expectedResult); routineType, expectedResult);
}); });
test('ExpectedResultFailManualResolve', () => { test('ExpectedResultFailManualResolve', () => {
const routineName = RoutineName.kCpuStress; const routineType = chromeos.diagnostics.mojom.RoutineType.kCpuStress;
const expectedResult = StandardRoutineResult.kTestFailed; const expectedResult =
controller.setFakeStandardRoutineResult(routineName, expectedResult); chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed;
controller.setFakeStandardRoutineResult(routineType, expectedResult);
// Tests will only resolve when done manually. // Tests will only resolve when done manually.
controller.setDelayTimeInMillisecondsForTesting(-1); controller.setDelayTimeInMillisecondsForTesting(-1);
return runRoutineAndAssertStandardResultManualResolve( return runRoutineAndAssertStandardResultManualResolve(
routineName, expectedResult); routineType, expectedResult);
}); });
test('GetSupportedRoutines', () => { test('GetSupportedRoutines', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const expected = [RoutineName.kCpuStress, RoutineName.kCpuCache]; const expected = [
chromeos.diagnostics.mojom.RoutineType.kCpuStress,
chromeos.diagnostics.mojom.RoutineType.kCpuCache
];
controller.setFakeSupportedRoutines(expected); controller.setFakeSupportedRoutines(expected);
return controller.getSupportedRoutines().then((result) => { return controller.getSupportedRoutines().then((result) => {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// 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 {BatteryRateRoutineResult, RoutineName, RoutineResultInfo, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js'; import {PowerRoutineResult, RoutineResultInfo, RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js'; import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js';
import {ExecutionProgress, ResultStatusItem, RoutineListExecutor} from 'chrome://diagnostics/routine_list_executor.js'; import {ExecutionProgress, ResultStatusItem, RoutineListExecutor} from 'chrome://diagnostics/routine_list_executor.js';
...@@ -33,38 +33,40 @@ export function fakeRoutineListExecutorTestSuite() { ...@@ -33,38 +33,40 @@ export function fakeRoutineListExecutorTestSuite() {
*/ */
function runRoutinesAndAssertResults(routines) { function runRoutinesAndAssertResults(routines) {
let expectedCallbacks = []; let expectedCallbacks = [];
let routineNames = []; let routineTypes = [];
routines.forEach((routine) => { routines.forEach((routine) => {
// Set the result into the fake. // Set the result into the fake.
assertNotEquals(undefined, routine); assertNotEquals(undefined, routine);
assertNotEquals(undefined, routine.result); assertNotEquals(undefined, routine.result);
// simpleResult or batteryRateResult must exist. // simpleResult or powerResult must exist.
assertTrue( assertTrue(
routine.result.hasOwnProperty('simpleResult') || routine.result.hasOwnProperty('simpleResult') ||
routine.result.hasOwnProperty('batteryRateResult')); routine.result.hasOwnProperty('powerResult'));
if (routine.result.hasOwnProperty('simpleResult')) { if (routine.result.hasOwnProperty('simpleResult')) {
controller.setFakeStandardRoutineResult( controller.setFakeStandardRoutineResult(
routine.name, /** @type {!StandardRoutineResult} */ /** @type {!RoutineType} */ (routine.type),
/** @type {!StandardRoutineResult} */
(routine.result.simpleResult)); (routine.result.simpleResult));
} else { } else {
assertTrue(routine.result.batteryRateResult.hasOwnProperty('result')); assertTrue(routine.result.powerResult.hasOwnProperty('simpleResult'));
controller.setFakeBatteryRateRoutineResult( controller.setFakePowerRoutineResult(
routine.name, /** @type {!BatteryRateRoutineResult} */ /** @type {!RoutineType} */ (routine.type),
(routine.result.batteryRateResult)); /** @type {!PowerRoutineResult} */
(routine.result.powerResult));
} }
// Build the list of routines to run. // Build the list of routines to run.
routineNames.push(routine.name); routineTypes.push(routine.type);
// Add the "running" callback to the list. // Add the "running" callback to the list.
let status = new ResultStatusItem(routine.name); let status = new ResultStatusItem(routine.type);
status.progress = ExecutionProgress.kRunning; status.progress = ExecutionProgress.kRunning;
expectedCallbacks.push(status); expectedCallbacks.push(status);
// Add the "completed" callback to the list. // Add the "completed" callback to the list.
status = new ResultStatusItem(routine.name); status = new ResultStatusItem(routine.type);
status.progress = ExecutionProgress.kCompleted; status.progress = ExecutionProgress.kCompleted;
status.result = routine.result; status.result = routine.result;
expectedCallbacks.push(status); expectedCallbacks.push(status);
...@@ -81,15 +83,21 @@ export function fakeRoutineListExecutorTestSuite() { ...@@ -81,15 +83,21 @@ export function fakeRoutineListExecutorTestSuite() {
if (status.progress === ExecutionProgress.kRunning) { if (status.progress === ExecutionProgress.kRunning) {
assertEquals(null, status.result); assertEquals(null, status.result);
} else { } else {
assertEquals( if (expectedCallbacks[upto].result.hasOwnProperty('simpleResult')) {
expectedCallbacks[upto].result.simpleResult, assertEquals(
status.result.simpleResult); expectedCallbacks[upto].result.simpleResult,
status.result.simpleResult);
} else {
assertEquals(
expectedCallbacks[upto].result.powerResult.simpleResult,
status.result.powerResult.simpleResult);
}
} }
upto++; upto++;
}; };
return executor.runRoutines(routineNames, statusCallback).then(() => { return executor.runRoutines(routineTypes, statusCallback).then(() => {
// Ensure that all the callbacks were sent. // Ensure that all the callbacks were sent.
assertEquals(expectedCallbacks.length, upto); assertEquals(expectedCallbacks.length, upto);
}); });
...@@ -98,8 +106,11 @@ export function fakeRoutineListExecutorTestSuite() { ...@@ -98,8 +106,11 @@ export function fakeRoutineListExecutorTestSuite() {
test('SingleTest', () => { test('SingleTest', () => {
/** @type {!Array<!RoutineResultInfo>} */ /** @type {!Array<!RoutineResultInfo>} */
const routines = [{ const routines = [{
name: RoutineName.kCpuStress, type: chromeos.diagnostics.mojom.RoutineType.kCpuStress,
result: {simpleResult: StandardRoutineResult.kTestFailed} result: {
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed
}
}]; }];
return runRoutinesAndAssertResults(routines); return runRoutinesAndAssertResults(routines);
}); });
...@@ -108,26 +119,39 @@ export function fakeRoutineListExecutorTestSuite() { ...@@ -108,26 +119,39 @@ export function fakeRoutineListExecutorTestSuite() {
/** @type {!Array<!RoutineResultInfo>} */ /** @type {!Array<!RoutineResultInfo>} */
const routines = [ const routines = [
{ {
name: RoutineName.kCpuStress, type: chromeos.diagnostics.mojom.RoutineType.kCpuStress,
result: {simpleResult: StandardRoutineResult.kTestPassed} result: {
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
}
}, },
{ {
name: RoutineName.kCpuCache, type: chromeos.diagnostics.mojom.RoutineType.kCpuCache,
result: {simpleResult: StandardRoutineResult.kTestFailed} result: {
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed
}
}, },
{ {
name: RoutineName.kFloatingPoint, type: chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
result: {simpleResult: StandardRoutineResult.kTestPassed} result: {
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
}
}, },
{ {
name: RoutineName.kPrimeSearch, type: chromeos.diagnostics.mojom.RoutineType.kCpuPrime,
result: {simpleResult: StandardRoutineResult.kTestFailed} result: {
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed
}
}, },
{ {
name: RoutineName.kCharge, type: chromeos.diagnostics.mojom.RoutineType.kBatteryCharge,
result: { result: {
batteryRateResult: { powerResult: {
result: StandardRoutineResult.kTestFailed, simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed,
isCharging: true, isCharging: true,
percentDelta: 10, percentDelta: 10,
timeDeltaSeconds: 10 timeDeltaSeconds: 10
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import 'chrome://diagnostics/routine_result_entry.js'; import 'chrome://diagnostics/routine_result_entry.js';
import {RoutineName, RoutineResult, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js'; import {RoutineResult, RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
import {ExecutionProgress, ResultStatusItem} from 'chrome://diagnostics/routine_list_executor.js'; import {ExecutionProgress, ResultStatusItem} from 'chrome://diagnostics/routine_list_executor.js';
import {BadgeType} from 'chrome://diagnostics/text_badge.js'; import {BadgeType} from 'chrome://diagnostics/text_badge.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
...@@ -62,7 +62,7 @@ export function routineResultEntryTestSuite() { ...@@ -62,7 +62,7 @@ export function routineResultEntryTestSuite() {
/** /**
* Creates a result status item without a final result. * Creates a result status item without a final result.
* @param {!RoutineName} routine * @param {!RoutineType} routine
* @param {!ExecutionProgress} progress * @param {!ExecutionProgress} progress
* @return {!ResultStatusItem} * @return {!ResultStatusItem}
*/ */
...@@ -74,7 +74,7 @@ export function routineResultEntryTestSuite() { ...@@ -74,7 +74,7 @@ export function routineResultEntryTestSuite() {
/** /**
* Creates a completed result status item with a result. * Creates a completed result status item with a result.
* @param {!RoutineName} routine * @param {!RoutineType} routine
* @param {!RoutineResult} result * @param {!RoutineResult} result
* @return {!ResultStatusItem} * @return {!ResultStatusItem}
*/ */
...@@ -115,7 +115,8 @@ export function routineResultEntryTestSuite() { ...@@ -115,7 +115,8 @@ export function routineResultEntryTestSuite() {
test('NotStartedTest', () => { test('NotStartedTest', () => {
const item = createIncompleteStatus( const item = createIncompleteStatus(
RoutineName.kCpuStress, ExecutionProgress.kNotStarted); chromeos.diagnostics.mojom.RoutineType.kCpuStress,
ExecutionProgress.kNotStarted);
return initializeEntryWithItem(item).then(() => { return initializeEntryWithItem(item).then(() => {
assertEquals( assertEquals(
getNameText(), getNameText(),
...@@ -131,7 +132,8 @@ export function routineResultEntryTestSuite() { ...@@ -131,7 +132,8 @@ export function routineResultEntryTestSuite() {
test('RunningTest', () => { test('RunningTest', () => {
const item = createIncompleteStatus( const item = createIncompleteStatus(
RoutineName.kCpuStress, ExecutionProgress.kRunning); chromeos.diagnostics.mojom.RoutineType.kCpuStress,
ExecutionProgress.kRunning);
return initializeEntryWithItem(item).then(() => { return initializeEntryWithItem(item).then(() => {
assertEquals( assertEquals(
getNameText(), getNameText(),
...@@ -147,8 +149,10 @@ export function routineResultEntryTestSuite() { ...@@ -147,8 +149,10 @@ export function routineResultEntryTestSuite() {
test('PassedTest', () => { test('PassedTest', () => {
const item = createCompletedStatus( const item = createCompletedStatus(
RoutineName.kCpuStress, /** @type {!RoutineResult} */ ({ chromeos.diagnostics.mojom.RoutineType.kCpuStress,
simpleResult: StandardRoutineResult.kTestPassed /** @type {!RoutineResult} */ ({
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
})); }));
return initializeEntryWithItem(item).then(() => { return initializeEntryWithItem(item).then(() => {
assertEquals( assertEquals(
...@@ -165,8 +169,10 @@ export function routineResultEntryTestSuite() { ...@@ -165,8 +169,10 @@ export function routineResultEntryTestSuite() {
test('FailedTest', () => { test('FailedTest', () => {
const item = createCompletedStatus( const item = createCompletedStatus(
RoutineName.kCpuStress, /** @type {!RoutineResult} */ ({ chromeos.diagnostics.mojom.RoutineType.kCpuStress,
simpleResult: StandardRoutineResult.kTestFailed /** @type {!RoutineResult} */ ({
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed
})); }));
return initializeEntryWithItem(item).then(() => { return initializeEntryWithItem(item).then(() => {
assertEquals( assertEquals(
...@@ -181,11 +187,13 @@ export function routineResultEntryTestSuite() { ...@@ -181,11 +187,13 @@ export function routineResultEntryTestSuite() {
}); });
}); });
test('BatteryTest', () => { test('PowerTest', () => {
const item = createCompletedStatus( const item = createCompletedStatus(
RoutineName.kCharge, /** @type {!RoutineResult} */ ({ chromeos.diagnostics.mojom.RoutineType.kBatteryCharge,
batteryRateResult: { /** @type {!RoutineResult} */ ({
result: StandardRoutineResult.kTestPassed, powerResult: {
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed,
isCharging: true, isCharging: true,
percentDelta: 10, percentDelta: 10,
timeDeltaSeconds: 10 timeDeltaSeconds: 10
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
import 'chrome://diagnostics/routine_result_list.js'; import 'chrome://diagnostics/routine_result_list.js';
import {RoutineName, RoutineResult, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js'; import {RoutineResult, RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
import {ExecutionProgress, ResultStatusItem} from 'chrome://diagnostics/routine_list_executor.js'; import {ExecutionProgress, ResultStatusItem} from 'chrome://diagnostics/routine_list_executor.js';
import {assertDeepEquals, assertEquals, assertFalse, assertNotEquals, assertTrue} from '../../chai_assert.js'; import {assertDeepEquals, assertEquals, assertFalse, assertNotEquals, assertTrue} from '../../chai_assert.js';
...@@ -29,7 +29,7 @@ export function routineResultListTestSuite() { ...@@ -29,7 +29,7 @@ export function routineResultListTestSuite() {
/** /**
* Initializes the routine-result-list and sets the list of routines. * Initializes the routine-result-list and sets the list of routines.
* @param {!Array<!RoutineName>} routines * @param {!Array<!RoutineType>} routines
* @return {!Promise} * @return {!Promise}
*/ */
function initializeRoutineResultList(routines) { function initializeRoutineResultList(routines) {
...@@ -95,10 +95,10 @@ export function routineResultListTestSuite() { ...@@ -95,10 +95,10 @@ export function routineResultListTestSuite() {
}); });
test('InitializedRoutines', () => { test('InitializedRoutines', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
]; ];
return initializeRoutineResultList(routines).then(() => { return initializeRoutineResultList(routines).then(() => {
...@@ -113,10 +113,10 @@ export function routineResultListTestSuite() { ...@@ -113,10 +113,10 @@ export function routineResultListTestSuite() {
}); });
test('InitializeThenClearRoutines', () => { test('InitializeThenClearRoutines', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
]; ];
return initializeRoutineResultList(routines) return initializeRoutineResultList(routines)
...@@ -131,10 +131,10 @@ export function routineResultListTestSuite() { ...@@ -131,10 +131,10 @@ export function routineResultListTestSuite() {
}); });
test('VerifyStatusUpdates', () => { test('VerifyStatusUpdates', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
]; ];
return initializeRoutineResultList(routines).then(() => { return initializeRoutineResultList(routines).then(() => {
...@@ -160,8 +160,10 @@ export function routineResultListTestSuite() { ...@@ -160,8 +160,10 @@ export function routineResultListTestSuite() {
// Move the first routine to completed state. // Move the first routine to completed state.
status = new ResultStatusItem(routines[0]); status = new ResultStatusItem(routines[0]);
status.progress = ExecutionProgress.kCompleted; status.progress = ExecutionProgress.kCompleted;
status.result = /** @type {!RoutineResult} */ ( status.result = /** @type {!RoutineResult} */ ({
{simpleResult: StandardRoutineResult.kTestPassed}); simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
});
routineResultListElement.onStatusUpdate(status); routineResultListElement.onStatusUpdate(status);
return flushTasks(); return flushTasks();
...@@ -172,7 +174,7 @@ export function routineResultListTestSuite() { ...@@ -172,7 +174,7 @@ export function routineResultListTestSuite() {
ExecutionProgress.kCompleted, getEntries()[0].item.progress); ExecutionProgress.kCompleted, getEntries()[0].item.progress);
assertNotEquals(null, getEntries()[0].item.result); assertNotEquals(null, getEntries()[0].item.result);
assertEquals( assertEquals(
StandardRoutineResult.kTestPassed, chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed,
getEntries()[0].item.result.simpleResult); getEntries()[0].item.result.simpleResult);
status = new ResultStatusItem(routines[1]); status = new ResultStatusItem(routines[1]);
...@@ -190,8 +192,10 @@ export function routineResultListTestSuite() { ...@@ -190,8 +192,10 @@ export function routineResultListTestSuite() {
// Move the second routine to completed state. // Move the second routine to completed state.
status = new ResultStatusItem(routines[1]); status = new ResultStatusItem(routines[1]);
status.progress = ExecutionProgress.kCompleted; status.progress = ExecutionProgress.kCompleted;
status.result = /** @type {!RoutineResult} */ ( status.result = /** @type {!RoutineResult} */ ({
{simpleResult: StandardRoutineResult.kTestPassed}); simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
});
routineResultListElement.onStatusUpdate(status); routineResultListElement.onStatusUpdate(status);
return flushTasks(); return flushTasks();
...@@ -202,7 +206,7 @@ export function routineResultListTestSuite() { ...@@ -202,7 +206,7 @@ export function routineResultListTestSuite() {
ExecutionProgress.kCompleted, getEntries()[1].item.progress); ExecutionProgress.kCompleted, getEntries()[1].item.progress);
assertNotEquals(null, getEntries()[1].item.result); assertNotEquals(null, getEntries()[1].item.result);
assertEquals( assertEquals(
StandardRoutineResult.kTestPassed, chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed,
getEntries()[0].item.result.simpleResult); getEntries()[0].item.result.simpleResult);
return flushTasks(); return flushTasks();
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
import 'chrome://diagnostics/routine_result_entry.js'; import 'chrome://diagnostics/routine_result_entry.js';
import 'chrome://diagnostics/routine_section.js'; import 'chrome://diagnostics/routine_section.js';
import {RoutineName, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js'; import {RoutineType, StandardRoutineResult} from 'chrome://diagnostics/diagnostics_types.js';
import {fakeBatteryRoutineResults, fakeRoutineResults} from 'chrome://diagnostics/fake_data.js'; import {fakePowerRoutineResults, fakeRoutineResults} from 'chrome://diagnostics/fake_data.js';
import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js'; import {FakeSystemRoutineController} from 'chrome://diagnostics/fake_system_routine_controller.js';
import {setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js'; import {setSystemRoutineControllerForTesting} from 'chrome://diagnostics/mojo_interface_provider.js';
import {ExecutionProgress} from 'chrome://diagnostics/routine_list_executor.js'; import {ExecutionProgress} from 'chrome://diagnostics/routine_list_executor.js';
...@@ -35,7 +35,7 @@ export function routineSectionTestSuite() { ...@@ -35,7 +35,7 @@ export function routineSectionTestSuite() {
// Enable all routines by default. // Enable all routines by default.
routineController.setFakeSupportedRoutines( routineController.setFakeSupportedRoutines(
[...fakeRoutineResults.keys(), ...fakeBatteryRoutineResults.keys()]); [...fakeRoutineResults.keys(), ...fakePowerRoutineResults.keys()]);
setSystemRoutineControllerForTesting(routineController); setSystemRoutineControllerForTesting(routineController);
}); });
...@@ -49,7 +49,7 @@ export function routineSectionTestSuite() { ...@@ -49,7 +49,7 @@ export function routineSectionTestSuite() {
/** /**
* Initializes the element and sets the routines. * Initializes the element and sets the routines.
* @param {!Array<!RoutineName>} routines * @param {!Array<!RoutineType>} routines
*/ */
function initializeRoutineSection(routines) { function initializeRoutineSection(routines) {
assertFalse(!!routineSectionElement); assertFalse(!!routineSectionElement);
...@@ -166,10 +166,10 @@ export function routineSectionTestSuite() { ...@@ -166,10 +166,10 @@ export function routineSectionTestSuite() {
}); });
test('ClickButtonDisablesButton', () => { test('ClickButtonDisablesButton', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
]; ];
return initializeRoutineSection(routines) return initializeRoutineSection(routines)
...@@ -185,10 +185,10 @@ export function routineSectionTestSuite() { ...@@ -185,10 +185,10 @@ export function routineSectionTestSuite() {
}); });
test('ResultListToggleButton', () => { test('ResultListToggleButton', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
]; ];
// TODO(joonbug): Use visibility assert over testing .hidden attr. // TODO(joonbug): Use visibility assert over testing .hidden attr.
...@@ -221,10 +221,10 @@ export function routineSectionTestSuite() { ...@@ -221,10 +221,10 @@ export function routineSectionTestSuite() {
}); });
test('ClickButtonInitializesResultList', () => { test('ClickButtonInitializesResultList', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
]; ];
return initializeRoutineSection(routines) return initializeRoutineSection(routines)
...@@ -284,17 +284,20 @@ export function routineSectionTestSuite() { ...@@ -284,17 +284,20 @@ export function routineSectionTestSuite() {
}); });
test('ResultListFiltersBySupported', () => { test('ResultListFiltersBySupported', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kMemory, chromeos.diagnostics.mojom.RoutineType.kMemory,
]; ];
routineController.setFakeStandardRoutineResult( routineController.setFakeStandardRoutineResult(
RoutineName.kMemory, StandardRoutineResult.kTestPassed); chromeos.diagnostics.mojom.RoutineType.kMemory,
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed);
routineController.setFakeStandardRoutineResult( routineController.setFakeStandardRoutineResult(
RoutineName.kCpuCache, StandardRoutineResult.kTestPassed); chromeos.diagnostics.mojom.RoutineType.kCpuCache,
routineController.setFakeSupportedRoutines([RoutineName.kMemory]); chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed);
routineController.setFakeSupportedRoutines(
[chromeos.diagnostics.mojom.RoutineType.kMemory]);
return initializeRoutineSection(routines) return initializeRoutineSection(routines)
.then(() => { .then(() => {
...@@ -303,7 +306,9 @@ export function routineSectionTestSuite() { ...@@ -303,7 +306,9 @@ export function routineSectionTestSuite() {
.then(() => { .then(() => {
const entries = getEntries(); const entries = getEntries();
assertEquals(1, entries.length); assertEquals(1, entries.length);
assertEquals(RoutineName.kMemory, entries[0].item.routine); assertEquals(
chromeos.diagnostics.mojom.RoutineType.kMemory,
entries[0].item.routine);
// Resolve the running test. // Resolve the running test.
return routineController.resolveRoutineForTesting(); return routineController.resolveRoutineForTesting();
}) })
...@@ -313,18 +318,21 @@ export function routineSectionTestSuite() { ...@@ -313,18 +318,21 @@ export function routineSectionTestSuite() {
.then(() => { .then(() => {
const entries = getEntries(); const entries = getEntries();
assertEquals(1, entries.length); assertEquals(1, entries.length);
assertEquals(RoutineName.kMemory, entries[0].item.routine); assertEquals(
chromeos.diagnostics.mojom.RoutineType.kMemory,
entries[0].item.routine);
}); });
}); });
test('ResultListStatusSuccess', () => { test('ResultListStatusSuccess', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kMemory, chromeos.diagnostics.mojom.RoutineType.kMemory,
]; ];
routineController.setFakeStandardRoutineResult( routineController.setFakeStandardRoutineResult(
RoutineName.kMemory, StandardRoutineResult.kTestPassed); chromeos.diagnostics.mojom.RoutineType.kMemory,
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed);
return initializeRoutineSection(routines) return initializeRoutineSection(routines)
.then(() => { .then(() => {
...@@ -365,16 +373,18 @@ export function routineSectionTestSuite() { ...@@ -365,16 +373,18 @@ export function routineSectionTestSuite() {
}); });
test('ResultListStatusFail', () => { test('ResultListStatusFail', () => {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
const routines = [ const routines = [
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
]; ];
routineController.setFakeStandardRoutineResult( routineController.setFakeStandardRoutineResult(
RoutineName.kFloatingPoint, StandardRoutineResult.kTestFailed); chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed);
routineController.setFakeStandardRoutineResult( routineController.setFakeStandardRoutineResult(
RoutineName.kCpuCache, StandardRoutineResult.kTestPassed); chromeos.diagnostics.mojom.RoutineType.kCpuCache,
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed);
return initializeRoutineSection(routines) return initializeRoutineSection(routines)
.then(() => { .then(() => {
......
...@@ -15,7 +15,7 @@ import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; ...@@ -15,7 +15,7 @@ import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.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 {BatteryChargeStatus, BatteryHealth, BatteryInfo, RoutineName, SystemDataProviderInterface} from './diagnostics_types.js' import {BatteryChargeStatus, BatteryHealth, BatteryInfo, RoutineType, 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'; import {mojoString16ToString} from './mojo_utils.js';
...@@ -65,13 +65,13 @@ Polymer({ ...@@ -65,13 +65,13 @@ Polymer({
type: Object, type: Object,
}, },
/** @private {!Array<!RoutineName>} */ /** @private {!Array<!RoutineType>} */
routines_: { routines_: {
type: Array, type: Array,
value: () => { value: () => {
return [ return [
RoutineName.kCharge, chromeos.diagnostics.mojom.RoutineType.kBatteryCharge,
RoutineName.kDischarge, chromeos.diagnostics.mojom.RoutineType.kBatteryDischarge,
]; ];
} }
}, },
......
...@@ -14,7 +14,7 @@ import './strings.m.js'; ...@@ -14,7 +14,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 {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.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, SystemInfo} from './diagnostics_types.js'; import {CpuUsage, RoutineType, SystemDataProviderInterface, SystemInfo} from './diagnostics_types.js';
import {getSystemDataProvider} from './mojo_interface_provider.js'; import {getSystemDataProvider} from './mojo_interface_provider.js';
/** /**
...@@ -40,15 +40,15 @@ Polymer({ ...@@ -40,15 +40,15 @@ Polymer({
cpuUsageObserverReceiver_: null, cpuUsageObserverReceiver_: null,
properties: { properties: {
/** @private {!Array<!RoutineName>} */ /** @private {!Array<!RoutineType>} */
routines_: { routines_: {
type: Array, type: Array,
value: () => { value: () => {
return [ return [
RoutineName.kCpuStress, chromeos.diagnostics.mojom.RoutineType.kCpuStress,
RoutineName.kCpuCache, chromeos.diagnostics.mojom.RoutineType.kCpuCache,
RoutineName.kFloatingPoint, chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
RoutineName.kPrimeSearch, chromeos.diagnostics.mojom.RoutineType.kCpuPrime,
]; ];
} }
}, },
......
...@@ -102,83 +102,42 @@ export let CpuUsage; ...@@ -102,83 +102,42 @@ export let CpuUsage;
/** /**
* Enumeration of routines. * Enumeration of routines.
* @enum {number} * @typedef {chromeos.diagnostics.mojom.RoutineType}
*/ */
export let RoutineName = { export let RoutineType;
kCpuStress: 0,
kCpuCache: 1,
kFloatingPoint: 2,
kPrimeSearch: 3,
kMemory: 4,
kCharge: 5,
kDischarge: 6,
};
/** /**
* Type alias for StandardRoutineResult. * Type alias for StandardRoutineResult.
* @enum {number} * @typedef {chromeos.diagnostics.mojom.StandardRoutineResult}
*/ */
export let StandardRoutineResult = { export let StandardRoutineResult;
kTestPassed: 0,
kTestFailed: 1,
kErrorExecuting: 2,
kUnableToRun: 3,
};
/** /**
* Type alias for BatteryRateRoutineResult. * Type alias for PowerRoutineResult.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.PowerRoutineResult}
* result: !StandardRoutineResult,
* isCharging: boolean,
* percentDelta: number,
* timeDeltaSeconds: number,
* }}
*/ */
export let BatteryRateRoutineResult; export let PowerRoutineResult;
/** /**
* Type alias for RoutineResult. * Type alias for RoutineResult.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.RoutineResult}
* simpleResult: (!StandardRoutineResult|undefined),
* batteryRateResult: (!BatteryRateRoutineResult|undefined),
* }}
*/ */
export let RoutineResult; export let RoutineResult;
/** /**
* Type alias for RoutineResultInfo. * Type alias for RoutineResultInfo.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.RoutineResultInfo}
* name: !RoutineName,
* result: !RoutineResult,
* }}
*/ */
export let RoutineResultInfo; export let RoutineResultInfo;
/**
* Type of RoutineRunner.onRoutineResult function.
* @typedef {!function(!RoutineResultInfo)}
*/
export let RoutineResultFunction;
/** /**
* Type alias for RoutineRunner. * Type alias for RoutineRunner.
* @typedef {{ * @typedef {chromeos.diagnostics.mojom.RoutineRunnerInterface}
* onRoutineResult: !RoutineResultFunction,
* }}
*/ */
export let RoutineRunner; export let RoutineRunner;
/**
* Type of SystemRoutineController.RunRoutine function.
* @typedef {!function(!RoutineName, !RoutineRunner): !Promise}
*/
export let RunRoutineFunction;
/** /**
* Type alias for SystemRoutineControllerInterface. * Type alias for SystemRoutineControllerInterface.
* TODO(zentaro): Replace with a real mojo type when implemented. * @typedef {chromeos.diagnostics.mojom.SystemRoutineControllerInterface}
* @typedef {{
* runRoutine: !RunRoutineFunction,
* }}
*/ */
export let SystemRoutineControllerInterface; export let SystemRoutineControllerInterface;
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// 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 { BatteryChargeStatus, BatteryHealth, BatteryInfo, BatteryRateRoutineResult, CpuUsage, ExternalPowerSource, MemoryUsage, RoutineName, StandardRoutineResult, SystemInfo } from './diagnostics_types.js' import {BatteryChargeStatus, BatteryHealth, BatteryInfo, CpuUsage, ExternalPowerSource, MemoryUsage, PowerRoutineResult, RoutineType, StandardRoutineResult, SystemInfo} from './diagnostics_types.js'
import { stringToMojoString16 } from './mojo_utils.js'; import {stringToMojoString16} from './mojo_utils.js';
/** @type {!Array<!BatteryChargeStatus>} */ /** @type {!Array<!BatteryChargeStatus>} */
export const fakeBatteryChargeStatus = [ export const fakeBatteryChargeStatus = [
...@@ -129,10 +129,10 @@ export const fakeSystemInfo = { ...@@ -129,10 +129,10 @@ export const fakeSystemInfo = {
cpuModelName: 'BestCpu SoFast 1000', cpuModelName: 'BestCpu SoFast 1000',
cpuThreadsCount: 8, cpuThreadsCount: 8,
cpuMaxClockSpeedKhz: 1000, cpuMaxClockSpeedKhz: 1000,
deviceCapabilities: { hasBattery: true }, deviceCapabilities: {hasBattery: true},
marketingName: 'Coolest Chromebook', marketingName: 'Coolest Chromebook',
totalMemoryKib: 128000, totalMemoryKib: 128000,
versionInfo: { milestoneVersion: 'M99' }, versionInfo: {milestoneVersion: 'M99'},
}; };
/** @type {!SystemInfo} */ /** @type {!SystemInfo} */
...@@ -141,34 +141,49 @@ export const fakeSystemInfoWithoutBattery = { ...@@ -141,34 +141,49 @@ export const fakeSystemInfoWithoutBattery = {
cpuModelName: 'BestCpu SoFast 1000', cpuModelName: 'BestCpu SoFast 1000',
cpuThreadsCount: 8, cpuThreadsCount: 8,
cpuMaxClockSpeedKhz: 1000, cpuMaxClockSpeedKhz: 1000,
deviceCapabilities: { hasBattery: false }, deviceCapabilities: {hasBattery: false},
marketingName: 'Coolest Chromebook', marketingName: 'Coolest Chromebook',
totalMemoryKib: 128000, totalMemoryKib: 128000,
versionInfo: { milestoneVersion: 'M99' }, versionInfo: {milestoneVersion: 'M99'},
}; };
/** @type {!Map<!RoutineName, !StandardRoutineResult>} */ /** @type {!Map<!RoutineType, !StandardRoutineResult>} */
export const fakeRoutineResults = new Map([ export const fakeRoutineResults = new Map([
[RoutineName.kCpuStress, StandardRoutineResult.kTestPassed], [
[RoutineName.kCpuCache, StandardRoutineResult.kTestPassed], chromeos.diagnostics.mojom.RoutineType.kCpuStress,
[RoutineName.kFloatingPoint, StandardRoutineResult.kTestFailed], chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
[RoutineName.kPrimeSearch, StandardRoutineResult.kErrorExecuting], ],
[RoutineName.kMemory, StandardRoutineResult.kTestPassed], [
chromeos.diagnostics.mojom.RoutineType.kCpuCache,
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
],
[
chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint,
chromeos.diagnostics.mojom.StandardRoutineResult.kTestFailed
],
[
chromeos.diagnostics.mojom.RoutineType.kCpuPrime,
chromeos.diagnostics.mojom.StandardRoutineResult.kExecutionError
],
[
chromeos.diagnostics.mojom.RoutineType.kMemory,
chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed
],
]); ]);
/** @type {!Map<!RoutineName, !BatteryRateRoutineResult>} */ /** @type {!Map<!RoutineType, !PowerRoutineResult>} */
export const fakeBatteryRoutineResults = new Map([ export const fakePowerRoutineResults = new Map([
[ [
RoutineName.kCharge, { chromeos.diagnostics.mojom.RoutineType.kBatteryCharge, {
result: StandardRoutineResult.kTestPassed, result: chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed,
is_charging: true, is_charging: true,
percent_delta: 5, percent_delta: 5,
time_delta_seconds: 10 time_delta_seconds: 10
} }
], ],
[ [
RoutineName.kDischarge, { chromeos.diagnostics.mojom.RoutineType.kBatteryDischarge, {
result: StandardRoutineResult.kUnableToRun, result: chromeos.diagnostics.mojom.StandardRoutineResult.kUnableToRun,
is_charging: false, is_charging: false,
percent_delta: 0, percent_delta: 0,
time_delta_seconds: 0 time_delta_seconds: 0
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
import {assert} from 'chrome://resources/js/assert.m.js'; import {assert} from 'chrome://resources/js/assert.m.js';
import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js'; import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js';
import {BatteryRateRoutineResult, RoutineName, RoutineResult, RoutineResultInfo, RoutineRunner, StandardRoutineResult} from './diagnostics_types.js'; import {PowerRoutineResult, RoutineResult, RoutineResultInfo, RoutineRunner, RoutineType, StandardRoutineResult, SystemRoutineControllerInterface} from './diagnostics_types.js';
import {FakeMethodResolver} from './fake_method_resolver.js'; import {FakeMethodResolver} from './fake_method_resolver.js';
/** /**
...@@ -13,12 +13,13 @@ import {FakeMethodResolver} from './fake_method_resolver.js'; ...@@ -13,12 +13,13 @@ import {FakeMethodResolver} from './fake_method_resolver.js';
* Implements a fake version of the SystemRoutineController mojo interface. * Implements a fake version of the SystemRoutineController mojo interface.
*/ */
/** @implements {SystemRoutineControllerInterface} */
export class FakeSystemRoutineController { export class FakeSystemRoutineController {
constructor() { constructor() {
/** @private {!FakeMethodResolver} */ /** @private {!FakeMethodResolver} */
this.methods_ = new FakeMethodResolver(); this.methods_ = new FakeMethodResolver();
/** private !Map<!RoutineName, !RoutineResult> */ /** private !Map<!RoutineType, !RoutineResult> */
this.routineResults_ = new Map(); this.routineResults_ = new Map();
/** /**
...@@ -42,17 +43,17 @@ export class FakeSystemRoutineController { ...@@ -42,17 +43,17 @@ export class FakeSystemRoutineController {
this.remote_ = null; this.remote_ = null;
/** /**
* Holds the name of the routine currently running. * Holds the type of the routine currently running.
* @private {?RoutineName} * @private {?RoutineType}
*/ */
this.routineName_ = null; this.routineType_ = null;
this.registerMethods(); this.registerMethods();
} }
/* /*
* Implements SystemRoutineController.GetSupportedRoutines * Implements SystemRoutineController.GetSupportedRoutines
* @return {!Promise<!{routines: !Array<!RoutineName>}>} * @return {!Promise<!{routines: !Array<!RoutineType>}>}
*/ */
getSupportedRoutines() { getSupportedRoutines() {
return this.methods_.resolveMethod('getSupportedRoutines'); return this.methods_.resolveMethod('getSupportedRoutines');
...@@ -60,7 +61,7 @@ export class FakeSystemRoutineController { ...@@ -60,7 +61,7 @@ export class FakeSystemRoutineController {
/** /**
* Sets the value that will be returned when calling getSupportedRoutines(). * Sets the value that will be returned when calling getSupportedRoutines().
* @param {!Array<!RoutineName>} routines * @param {!Array<!RoutineType>} routines
*/ */
setFakeSupportedRoutines(routines) { setFakeSupportedRoutines(routines) {
this.methods_.setResult('getSupportedRoutines', {routines: routines}); this.methods_.setResult('getSupportedRoutines', {routines: routines});
...@@ -68,14 +69,14 @@ export class FakeSystemRoutineController { ...@@ -68,14 +69,14 @@ export class FakeSystemRoutineController {
/* /*
* Implements SystemRoutineController.RunRoutine. * Implements SystemRoutineController.RunRoutine.
* @param {!RoutineName} routineName * @param {!RoutineType} routineType
* @param {!RoutineRunner} remoteRunner * @param {!RoutineRunner} remoteRunner
* @return {!Promise} * @return {!Promise}
*/ */
runRoutine(routineName, remoteRunner) { runRoutine(routineType, remoteRunner) {
this.resolver_ = new PromiseResolver(); this.resolver_ = new PromiseResolver();
this.remote_ = remoteRunner; this.remote_ = remoteRunner;
this.routineName_ = routineName; this.routineType_ = routineType;
// If there is a positive or zero delay then setup a timer, otherwise // If there is a positive or zero delay then setup a timer, otherwise
// the routine will wait until resolveRoutineForTesting() is called. // the routine will wait until resolveRoutineForTesting() is called.
...@@ -97,20 +98,20 @@ export class FakeSystemRoutineController { ...@@ -97,20 +98,20 @@ export class FakeSystemRoutineController {
/** /**
* *
* @param {!RoutineName} routineName * @param {!RoutineType} routineType
* @param {!StandardRoutineResult} routineResult * @param {!StandardRoutineResult} routineResult
*/ */
setFakeStandardRoutineResult(routineName, routineResult) { setFakeStandardRoutineResult(routineType, routineResult) {
this.routineResults_.set(routineName, {simpleResult: routineResult}); this.routineResults_.set(routineType, {simpleResult: routineResult});
} }
/** /**
* *
* @param {!RoutineName} routineName * @param {!RoutineType} routineType
* @param {!BatteryRateRoutineResult} routineResult * @param {!PowerRoutineResult} routineResult
*/ */
setFakeBatteryRateRoutineResult(routineName, routineResult) { setFakePowerRoutineResult(routineType, routineResult) {
this.routineResults_.set(routineName, {batteryRateResult: routineResult}); this.routineResults_.set(routineType, {powerResult: routineResult});
} }
/** /**
...@@ -155,21 +156,23 @@ export class FakeSystemRoutineController { ...@@ -155,21 +156,23 @@ export class FakeSystemRoutineController {
/** /**
* Returns the expected result for a running routine. * Returns the expected result for a running routine.
* @return {RoutineResultInfo} * @return {!RoutineResultInfo}
* @private * @private
*/ */
getResultInfo_() { getResultInfo_() {
assert(this.routineName_ != null); assert(this.routineType_ != null);
let result = this.routineResults_.get(this.routineName_); let result = this.routineResults_.get(this.routineType_);
if (result == undefined) { if (result == undefined) {
result = {simpleResult: StandardRoutineResult.kErrorExecuting}; result = {
simpleResult:
chromeos.diagnostics.mojom.StandardRoutineResult.kExecutionError
};
} }
/** @type {!RoutineResultInfo} */ const resultInfo = /** @type {!RoutineResultInfo} */ ({
const resultInfo = { type: this.routineType_,
name: this.routineName_,
result: result, result: result,
}; });
return resultInfo; return resultInfo;
} }
...@@ -184,6 +187,6 @@ export class FakeSystemRoutineController { ...@@ -184,6 +187,6 @@ export class FakeSystemRoutineController {
this.resolver_.resolve(); this.resolver_.resolve();
this.resolver_ = null; this.resolver_ = null;
this.remote_ = null; this.remote_ = null;
this.routineName_ = null; this.routineType_ = null;
} }
} }
...@@ -14,7 +14,7 @@ import './strings.m.js'; ...@@ -14,7 +14,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 {MemoryUsage, RoutineName, SystemDataProviderInterface} from './diagnostics_types.js' import {MemoryUsage, RoutineType, SystemDataProviderInterface} from './diagnostics_types.js'
import {getSystemDataProvider} from './mojo_interface_provider.js'; import {getSystemDataProvider} from './mojo_interface_provider.js';
/** /**
...@@ -41,12 +41,12 @@ Polymer({ ...@@ -41,12 +41,12 @@ Polymer({
memoryUsageObserverReceiver_: null, memoryUsageObserverReceiver_: null,
properties: { properties: {
/** @private {!Array<!RoutineName>} */ /** @private {!Array<!RoutineType>} */
routines_: { routines_: {
type: Array, type: Array,
value: () => { value: () => {
return [ return [
RoutineName.kMemory, chromeos.diagnostics.mojom.RoutineType.kMemory,
]; ];
} }
}, },
......
...@@ -10,8 +10,8 @@ import './system_routine_controller.mojom-lite.js'; ...@@ -10,8 +10,8 @@ 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 {BatteryRateRoutineResult, RoutineName, StandardRoutineResult, SystemDataProviderInterface, SystemInfo, SystemRoutineControllerInterface} from './diagnostics_types.js'; import {PowerRoutineResult, RoutineType, StandardRoutineResult, SystemDataProviderInterface, SystemInfo, SystemRoutineControllerInterface} from './diagnostics_types.js';
import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeBatteryRoutineResults, fakeCpuUsage, fakeMemoryUsage, fakeRoutineResults, fakeSystemInfo} from './fake_data.js'; import {fakeBatteryChargeStatus, fakeBatteryHealth, fakeBatteryInfo, fakeCpuUsage, fakeMemoryUsage, fakePowerRoutineResults, fakeRoutineResults, fakeSystemInfo} from './fake_data.js';
import {FakeSystemDataProvider} from './fake_system_data_provider.js'; import {FakeSystemDataProvider} from './fake_system_data_provider.js';
import {FakeSystemRoutineController} from './fake_system_routine_controller.js'; import {FakeSystemRoutineController} from './fake_system_routine_controller.js';
...@@ -21,61 +21,6 @@ import {FakeSystemRoutineController} from './fake_system_routine_controller.js'; ...@@ -21,61 +21,6 @@ import {FakeSystemRoutineController} from './fake_system_routine_controller.js';
* to override them with test/fake implementations. * to override them with test/fake implementations.
*/ */
/**
* Sets up a FakeSystemDataProvider to be used at runtime.
* TODO(zentaro): Remove once mojo bindings are implemented.
*/
function setupFakeSystemDataProvider_() {
// Create provider.
let provider = new FakeSystemDataProvider();
// Setup fake method data.
provider.setFakeBatteryChargeStatus(fakeBatteryChargeStatus);
provider.setFakeBatteryHealth(fakeBatteryHealth);
provider.setFakeBatteryInfo(fakeBatteryInfo);
provider.setFakeCpuUsage(fakeCpuUsage);
provider.setFakeMemoryUsage(fakeMemoryUsage);
provider.setFakeSystemInfo(fakeSystemInfo);
// Start the timers to generate some observations.
provider.startTriggerIntervals();
// Set the fake provider.
setSystemDataProviderForTesting(provider);
}
/**
* Sets up a FakeSystemRoutineController to be used at runtime.
* TODO(zentaro): Remove once mojo bindings are implemented.
*/
function setupFakeSystemRoutineController_() {
// Create controller.
let controller = new FakeSystemRoutineController();
// Add a small delay while running fake routines.
controller.setDelayTimeInMillisecondsForTesting(2000);
// Add fake results for routines.
for (const [routine, result] of fakeRoutineResults.entries()) {
controller.setFakeStandardRoutineResult(
/** @type{!RoutineName} */ (routine),
/** @type{!StandardRoutineResult} */ (result));
}
for (const [routine, result] of fakeBatteryRoutineResults.entries()) {
controller.setFakeBatteryRateRoutineResult(
/** @type {!RoutineName} */ (routine),
/** @type {!BatteryRateRoutineResult} */ (result));
}
// Enable fake set of routines.
controller.setFakeSupportedRoutines(
[...fakeRoutineResults.keys(), ...fakeBatteryRoutineResults.keys()]);
// Set the fake controller.
setSystemRoutineControllerForTesting(controller);
}
/** /**
* @type {?SystemDataProviderInterface} * @type {?SystemDataProviderInterface}
*/ */
...@@ -118,8 +63,8 @@ export function setSystemRoutineControllerForTesting(testController) { ...@@ -118,8 +63,8 @@ export function setSystemRoutineControllerForTesting(testController) {
*/ */
export function getSystemRoutineController() { export function getSystemRoutineController() {
if (!systemRoutineController) { if (!systemRoutineController) {
// TODO(zentaro): Instantiate a real mojo interface here. systemRoutineController =
setupFakeSystemRoutineController_(); chromeos.diagnostics.mojom.SystemRoutineController.getRemote();
} }
assert(!!systemRoutineController); assert(!!systemRoutineController);
......
...@@ -4,7 +4,8 @@ ...@@ -4,7 +4,8 @@
import {assert} from 'chrome://resources/js/assert.m.js'; import {assert} from 'chrome://resources/js/assert.m.js';
import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js'; import {PromiseResolver} from 'chrome://resources/js/promise_resolver.m.js';
import {RoutineName, RoutineResult, RoutineResultInfo, SystemRoutineControllerInterface} from './diagnostics_types.js';
import {RoutineResult, RoutineResultInfo, RoutineRunner, RoutineType, SystemRoutineControllerInterface} from './diagnostics_types.js';
/** /**
* Represents the execution progress of a test routine. * Represents the execution progress of a test routine.
...@@ -23,7 +24,7 @@ export let ExecutionProgress = { ...@@ -23,7 +24,7 @@ export let ExecutionProgress = {
*/ */
export class ResultStatusItem { export class ResultStatusItem {
constructor(routine) { constructor(routine) {
/** @type {!RoutineName} */ /** @type {!RoutineType} */
this.routine = routine; this.routine = routine;
/** @type {!ExecutionProgress} */ /** @type {!ExecutionProgress} */
...@@ -48,6 +49,10 @@ class ExecutionContext { ...@@ -48,6 +49,10 @@ class ExecutionContext {
constructor() { constructor() {
/** @private {!PromiseResolver} */ /** @private {!PromiseResolver} */
this.resolver_ = new PromiseResolver(); this.resolver_ = new PromiseResolver();
this.routineRunner = new chromeos.diagnostics.mojom.RoutineRunnerReceiver(
/** @type {!chromeos.diagnostics.mojom.RoutineRunnerInterface} */ (
this));
} }
/** /**
...@@ -56,11 +61,16 @@ class ExecutionContext { ...@@ -56,11 +61,16 @@ class ExecutionContext {
**/ **/
onRoutineResult(result) { onRoutineResult(result) {
this.resolver_.resolve(result); this.resolver_.resolve(result);
this.close();
} }
whenComplete() { whenComplete() {
return this.resolver_.promise; return this.resolver_.promise;
} }
close() {
this.routineRunner.$.close();
}
} }
/** /**
...@@ -75,13 +85,16 @@ export class RoutineListExecutor { ...@@ -75,13 +85,16 @@ export class RoutineListExecutor {
constructor(routineController) { constructor(routineController) {
/** @private {!SystemRoutineControllerInterface} */ /** @private {!SystemRoutineControllerInterface} */
this.routineController_ = routineController; this.routineController_ = routineController;
/** @private {?ExecutionContext} */
this.currentExecutionContext_ = null;
} }
/* /*
* Executes a list of routines providing a status callback as each test * Executes a list of routines providing a status callback as each test
* starts and finishes. The return promise will resolve when all tests are * starts and finishes. The return promise will resolve when all tests are
* completed. * completed.
* @param {!Array<!RoutineName>} routines * @param {!Array<!RoutineType>} routines
* @type {!function(!ResultStatusItem)} statusCallback * @type {!function(!ResultStatusItem)} statusCallback
* @param {!Promise} * @param {!Promise}
*/ */
...@@ -98,22 +111,31 @@ export class RoutineListExecutor { ...@@ -98,22 +111,31 @@ export class RoutineListExecutor {
status.progress = ExecutionProgress.kRunning; status.progress = ExecutionProgress.kRunning;
statusCallback(status); statusCallback(status);
this.currentExecutionContext_ = new ExecutionContext();
// Create a new remote and execute the next test. // Create a new remote and execute the next test.
let test = new ExecutionContext(); this.routineController_.runRoutine(
return this.routineController_.runRoutine(name, test).then(() => { name,
// When the test completes, notify the status callback of the this.currentExecutionContext_.routineRunner.$
// result. .bindNewPipeAndPassRemote());
return test.whenComplete().then((info) => {
assert(info.name === name); // When the test completes, notify the status callback of the
const status = new ResultStatusItem(name); // result.
status.progress = ExecutionProgress.kCompleted; return this.currentExecutionContext_.whenComplete().then((info) => {
status.result = info.result; assert(info.type === name);
statusCallback(status); const status = new ResultStatusItem(name);
}); status.progress = ExecutionProgress.kCompleted;
status.result = info.result;
statusCallback(status);
}); });
}); });
}); });
return promise; return promise;
} }
close() {
if (this.currentExecutionContext_) {
this.currentExecutionContext_.close();
}
}
} }
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<div class="entryRow"> <div class="entryRow">
<!-- TODO(zentaro): Create mapping to localized strings. --> <!-- TODO(zentaro): Create mapping to localized strings. -->
<div id="routine">[[routineName_]]</div> <div id="routine">[[routineType_]]</div>
<text-badge id="status" badge-type="[[getBadgeType_(item.progress, item.result)]]" <text-badge id="status" badge-type="[[getBadgeType_(item.progress, item.result)]]"
value="[[getBadgeText_(item.progress, item.result)]]" value="[[getBadgeText_(item.progress, item.result)]]"
hidden="[[!isTestStarted_(item.progress)]]"> hidden="[[!isTestStarted_(item.progress)]]">
......
...@@ -9,30 +9,31 @@ import './text_badge.js'; ...@@ -9,30 +9,31 @@ import './text_badge.js';
import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js'; import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.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 {RoutineName, RoutineResult, StandardRoutineResult} from './diagnostics_types.js';
import {RoutineResult, RoutineType, StandardRoutineResult} from './diagnostics_types.js';
import {ExecutionProgress, ResultStatusItem} from './routine_list_executor.js'; import {ExecutionProgress, ResultStatusItem} from './routine_list_executor.js';
import {BadgeType} from './text_badge.js'; import {BadgeType} from './text_badge.js';
/** /**
* Resolves a routine name to its corresponding localized string name. * Resolves a routine name to its corresponding localized string name.
* @param {!RoutineName} routineName * @param {!RoutineType} routineType
* @return {string} * @return {string}
*/ */
export function getRoutineName(routineName) { export function getRoutineType(routineType) {
switch (routineName) { switch (routineType) {
case RoutineName.kCharge: case chromeos.diagnostics.mojom.RoutineType.kBatteryCharge:
return loadTimeData.getString('batteryChargeRoutineText'); return loadTimeData.getString('batteryChargeRoutineText');
case RoutineName.kDischarge: case chromeos.diagnostics.mojom.RoutineType.kBatteryDischarge:
return loadTimeData.getString('batteryDischargeRoutineText'); return loadTimeData.getString('batteryDischargeRoutineText');
case RoutineName.kCpuCache: case chromeos.diagnostics.mojom.RoutineType.kCpuCache:
return loadTimeData.getString('cpuCacheRoutineText'); return loadTimeData.getString('cpuCacheRoutineText');
case RoutineName.kCpuStress: case chromeos.diagnostics.mojom.RoutineType.kCpuStress:
return loadTimeData.getString('cpuStressRoutineText'); return loadTimeData.getString('cpuStressRoutineText');
case RoutineName.kFloatingPoint: case chromeos.diagnostics.mojom.RoutineType.kCpuFloatingPoint:
return loadTimeData.getString('cpuFloatingPointAccuracyRoutineText'); return loadTimeData.getString('cpuFloatingPointAccuracyRoutineText');
case RoutineName.kPrimeSearch: case chromeos.diagnostics.mojom.RoutineType.kCpuPrime:
return loadTimeData.getString('cpuPrimeSearchRoutineText'); return loadTimeData.getString('cpuPrimeSearchRoutineText');
case RoutineName.kMemory: case chromeos.diagnostics.mojom.RoutineType.kMemory:
return loadTimeData.getString('memoryRoutineText'); return loadTimeData.getString('memoryRoutineText');
default: default:
// Values should always be found in the enum. // Values should always be found in the enum.
...@@ -57,19 +58,21 @@ Polymer({ ...@@ -57,19 +58,21 @@ Polymer({
}, },
/** @private */ /** @private */
routineName_: { routineType_: {
type: String, type: String,
computed: 'getRunningRoutineString_(item.routine)', computed: 'getRunningRoutineString_(item.routine)',
}, },
}, },
/** /**
* Get the localized string name for the routine. * Get the localized string name for the routine.
* @param {!RoutineName} routine * @param {!RoutineType} routine
* @return {string} * @return {string}
*/ */
getRunningRoutineString_(routine) { getRunningRoutineString_(routine) {
return loadTimeData.getStringF('routineNameText', getRoutineName(routine)); return loadTimeData.getStringF('routineNameText', getRoutineType(routine));
}, },
/** /**
* @param {!RoutineResult} result * @param {!RoutineResult} result
* @return {!StandardRoutineResult} * @return {!StandardRoutineResult}
...@@ -83,9 +86,9 @@ Polymer({ ...@@ -83,9 +86,9 @@ Polymer({
return /** @type {!StandardRoutineResult} */ (result.simpleResult); return /** @type {!StandardRoutineResult} */ (result.simpleResult);
} }
if (result.hasOwnProperty('batteryRateResult')) { if (result.hasOwnProperty('powerResult')) {
return /** @type {!StandardRoutineResult} */ ( return /** @type {!StandardRoutineResult} */ (
result.batteryRateResult.result); result.powerResult.simpleResult);
} }
assertNotReached(); assertNotReached();
...@@ -102,7 +105,7 @@ Polymer({ ...@@ -102,7 +105,7 @@ Polymer({
if (this.item.result && if (this.item.result &&
this.getSimpleResult_(this.item.result) === this.getSimpleResult_(this.item.result) ===
StandardRoutineResult.kTestPassed) { chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed) {
return 'SUCCESS'; return 'SUCCESS';
} }
...@@ -120,7 +123,7 @@ Polymer({ ...@@ -120,7 +123,7 @@ Polymer({
if (this.item.result && if (this.item.result &&
this.getSimpleResult_(this.item.result) === this.getSimpleResult_(this.item.result) ===
StandardRoutineResult.kTestPassed) { chromeos.diagnostics.mojom.StandardRoutineResult.kTestPassed) {
return BadgeType.SUCCESS; return BadgeType.SUCCESS;
} }
return BadgeType.ERROR; return BadgeType.ERROR;
......
...@@ -8,7 +8,7 @@ import './routine_result_entry.js'; ...@@ -8,7 +8,7 @@ import './routine_result_entry.js';
import {assert} from 'chrome://resources/js/assert.m.js'; import {assert} from 'chrome://resources/js/assert.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 {RoutineName} from './diagnostics_types.js'; import {RoutineType} from './diagnostics_types.js';
import {ResultStatusItem} from './routine_list_executor.js' import {ResultStatusItem} from './routine_list_executor.js'
/** /**
...@@ -38,7 +38,7 @@ Polymer({ ...@@ -38,7 +38,7 @@ Polymer({
* Resets the list and creates a new list with all routines in the unstarted * Resets the list and creates a new list with all routines in the unstarted
* state. Called by the parent RoutineResultSection when the user starts * state. Called by the parent RoutineResultSection when the user starts
* a test run. * a test run.
* @param {!Array<!RoutineName>} routines * @param {!Array<!RoutineType>} routines
*/ */
initializeTestRun(routines) { initializeTestRun(routines) {
this.clearRoutines(); this.clearRoutines();
...@@ -56,7 +56,7 @@ Polymer({ ...@@ -56,7 +56,7 @@ Polymer({
/** /**
* Add a new unstarted routine to the end of the list. * Add a new unstarted routine to the end of the list.
* @param {!RoutineName} routine * @param {!RoutineType} routine
* @private * @private
*/ */
addRoutine_(routine) { addRoutine_(routine) {
......
...@@ -13,10 +13,10 @@ import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; ...@@ -13,10 +13,10 @@ import {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.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 {RoutineName, StandardRoutineResult, SystemRoutineControllerInterface} from './diagnostics_types.js'; import {RoutineType, StandardRoutineResult, SystemRoutineControllerInterface} from './diagnostics_types.js';
import {getSystemRoutineController} from './mojo_interface_provider.js'; import {getSystemRoutineController} from './mojo_interface_provider.js';
import {ExecutionProgress, RoutineListExecutor} from './routine_list_executor.js'; import {ExecutionProgress, RoutineListExecutor} from './routine_list_executor.js';
import {getRoutineName} from './routine_result_entry.js'; import {getRoutineType} from './routine_result_entry.js';
import {BadgeType} from './text_badge.js'; import {BadgeType} from './text_badge.js';
/** /**
...@@ -48,7 +48,7 @@ Polymer({ ...@@ -48,7 +48,7 @@ Polymer({
systemRoutineController_: null, systemRoutineController_: null,
properties: { properties: {
/** @type {!Array<!RoutineName>} */ /** @type {!Array<!RoutineType>} */
routines: { routines: {
type: Array, type: Array,
value: () => [], value: () => [],
...@@ -113,11 +113,12 @@ Polymer({ ...@@ -113,11 +113,12 @@ Polymer({
filteredRoutines, filteredRoutines,
(status) => { (status) => {
this.currentTestName_ = loadTimeData.getStringF( this.currentTestName_ = loadTimeData.getStringF(
'routineNameText', getRoutineName(status.routine)); 'routineNameText', getRoutineType(status.routine));
if (status.result && if (status.result &&
status.result.simpleResult !== status.result.simpleResult !==
StandardRoutineResult.kTestPassed) { chromeos.diagnostics.mojom.StandardRoutineResult
.kTestPassed) {
this.hasTestFailure_ = true; this.hasTestFailure_ = true;
} }
...@@ -125,12 +126,21 @@ Polymer({ ...@@ -125,12 +126,21 @@ Polymer({
}) })
.then(() => { .then(() => {
this.executionStatus_ = ExecutionProgress.kCompleted; this.executionStatus_ = ExecutionProgress.kCompleted;
this.systemRoutineController_ = null;
this.isTestRunning = false; this.isTestRunning = false;
this.cleanUp_();
}); });
}); });
}, },
/** @private */
cleanUp_() {
if (this.executor_) {
this.executor_.close();
this.executor_ = null;
}
this.systemRoutineController_ = null;
},
/** @private */ /** @private */
onToggleReportClicked_() { onToggleReportClicked_() {
// Toggle report list visibility // Toggle report list visibility
...@@ -182,6 +192,11 @@ Polymer({ ...@@ -182,6 +192,11 @@ Polymer({
return this.hasTestFailure_ ? 'Test failed' : 'Test succeeded'; return this.hasTestFailure_ ? 'Test failed' : 'Test succeeded';
}, },
/** @override */
detached() {
this.cleanUp_();
},
/** @override */ /** @override */
created() {}, created() {},
}); });
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