Commit 398971c0 authored by Andrei-Laurențiu Olteanu's avatar Andrei-Laurențiu Olteanu Committed by Commit Bot

[Telemetry SWX] Test each event separately

Add function to dispatch an event from callback.

Add browser test for each lid event.

Bug: b:162051831
Change-Id: I09412b2be19c702a7fd47b5c069efab9c061b73e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2448490
Commit-Queue: Laurențiu Olteanu <lolteanu@google.com>
Reviewed-by: default avatarOleh Lamzin <lamzin@google.com>
Reviewed-by: default avatarMahmoud Gawad <mgawad@google.com>
Cr-Commit-Position: refs/heads/master@{#813735}
parent ee5f5bb7
......@@ -6,6 +6,7 @@
#include "base/base_paths.h"
#include "base/bind.h"
#include "base/callback.h"
#include "base/files/file_path.h"
#include "base/location.h"
#include "base/path_service.h"
......@@ -292,8 +293,6 @@ void TelemetryExtensionUiBrowserTest::SetUpOnMainThread() {
chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->SetProbeTelemetryInfoResponseForTesting(telemetry_info);
ConfigureSystemEventsServiceToEmitEvents();
SandboxedWebUiAppTestBase::SetUpOnMainThread();
}
......@@ -434,17 +433,27 @@ void TelemetryExtensionUiBrowserTest::ConfigureProbeServiceToReturnErrors() {
->SetProbeTelemetryInfoResponseForTesting(telemetry_info);
}
void TelemetryExtensionUiBrowserTest::
ConfigureSystemEventsServiceToEmitEvents() {
chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->EmitLidClosedEventForTesting();
chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->EmitLidOpenedEventForTesting();
void TelemetryExtensionUiBrowserTest::EmitLidClosedEventPeriodically() {
RunCallbackPeriodically(base::BindRepeating([] {
chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->EmitLidClosedEventForTesting();
}));
}
void TelemetryExtensionUiBrowserTest::EmitLidOpenedEventPeriodically() {
RunCallbackPeriodically(base::BindRepeating([] {
chromeos::cros_healthd::FakeCrosHealthdClient::Get()
->EmitLidOpenedEventForTesting();
}));
}
void TelemetryExtensionUiBrowserTest::RunCallbackPeriodically(
const base::RepeatingClosure& callback) {
callback.Run();
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
FROM_HERE,
base::BindOnce(&TelemetryExtensionUiBrowserTest::
ConfigureSystemEventsServiceToEmitEvents,
system_events_weak_ptr_factory_.GetWeakPtr()),
base::BindOnce(&TelemetryExtensionUiBrowserTest::RunCallbackPeriodically,
system_events_weak_ptr_factory_.GetWeakPtr(), callback),
base::TimeDelta::FromSeconds(1));
}
......@@ -5,6 +5,7 @@
#ifndef CHROMEOS_COMPONENTS_TELEMETRY_EXTENSION_UI_TEST_TELEMETRY_EXTENSION_UI_BROWSERTEST_H_
#define CHROMEOS_COMPONENTS_TELEMETRY_EXTENSION_UI_TEST_TELEMETRY_EXTENSION_UI_BROWSERTEST_H_
#include "base/callback_forward.h"
#include "base/command_line.h"
#include "base/memory/weak_ptr.h"
#include "chromeos/components/web_applications/test/sandboxed_web_ui_test_base.h"
......@@ -28,9 +29,12 @@ class TelemetryExtensionUiBrowserTest : public SandboxedWebUiAppTestBase {
void ConfigureProbeServiceToReturnErrors();
void ConfigureSystemEventsServiceToEmitEvents();
void EmitLidClosedEventPeriodically();
void EmitLidOpenedEventPeriodically();
private:
void RunCallbackPeriodically(const base::RepeatingClosure& callback);
// Use to post and cancel tasks for emitting system events.
base::WeakPtrFactory<TelemetryExtensionUiBrowserTest>
system_events_weak_ptr_factory_{this};
......
......@@ -371,6 +371,22 @@ var TelemetryExtensionUIWithProbeServiceErrorsBrowserTest =
}
}
var TelemetryExtensionUIWithLidClosedEventBrowserTest =
class extends TelemetryExtensionUIBrowserTest {
/** @override */
testGenPreamble() {
GEN('EmitLidClosedEventPeriodically();');
}
}
var TelemetryExtensionUIWithLidOpenedEventBrowserTest =
class extends TelemetryExtensionUIBrowserTest {
/** @override */
testGenPreamble() {
GEN('EmitLidOpenedEventPeriodically();');
}
}
// Test cases injected into the untrusted context.
// See implementations in untrusted_browsertest.js.
//
......@@ -408,7 +424,6 @@ const untrustedTests = [
['UntrustedDiagnosticsRequestRunBatteryDischargeRoutine'],
['UntrustedDiagnosticsRequestRunBatteryChargeRoutineInvalidInput'],
['UntrustedDiagnosticsRequestRunBatteryChargeRoutine'],
['UntrustedLidEventListener'],
['UntrustedRequestTelemetryInfoUnknownCategory'],
['UntrustedRequestTelemetryInfo'],
[
......@@ -423,6 +438,14 @@ const untrustedTests = [
'UntrustedRequestTelemetryInfoWithErrors',
'TelemetryExtensionUIWithProbeServiceErrorsBrowserTest'
],
[
'UntrustedLidClosedEventListener',
'TelemetryExtensionUIWithLidClosedEventBrowserTest'
],
[
'UntrustedLidOpenedEventListener',
'TelemetryExtensionUIWithLidOpenedEventBrowserTest'
],
].forEach(test => registerUntrustedTest(...test));
/**
......
......@@ -441,16 +441,16 @@ UNTRUSTED_TEST(
assertDeepEquals(response, {id: 123456789, status: 'ready'});
});
// Tests that addEventListener receives system lid events.
UNTRUSTED_TEST('UntrustedLidEventListener', async () => {
await Promise.all([
new Promise(
(resolve) =>
chromeos.telemetry.addEventListener('lid-closed', resolve)),
new Promise(
(resolve) =>
chromeos.telemetry.addEventListener('lid-opened', resolve)),
]);
// Tests that addEventListener receives system lid closed event.
UNTRUSTED_TEST('UntrustedLidClosedEventListener', async () => {
await new Promise(
(resolve) => chromeos.telemetry.addEventListener('lid-closed', resolve));
});
// Tests that addEventListener receives system lid opened event.
UNTRUSTED_TEST('UntrustedLidOpenedEventListener', async () => {
await new Promise(
(resolve) => chromeos.telemetry.addEventListener('lid-opened', resolve));
});
// Tests that TelemetryInfo throws an error if category is unknown.
......
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