blob: 5db4fc649a7b6209ae941b17a82dc9ff727c9e6d [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
function dumpPreviewPanel() {
TestRunner.addResult('Panel view:');
const treeElement = UI.panels.resources._sidebar.backgroundFetchTreeElement;
treeElement.onselect(false);
const preview = treeElement._view._preview;
let text = '';
if (preview.contentElement.getElementsByClassName('background-service-metadata-entry').length)
text = preview.contentElement.getElementsByClassName('background-service-metadata-entry')[0].textContent;
else
text = Array.from(preview.element.getElementsByTagName('p')).map(p => p.textContent).join();
// There's some platform specific shortcuts + the button in the text, just keep the important bits.
if (text.startsWith('Click the record button'))
text = 'Click the record button';
TestRunner.addResult(' '.repeat(4) + text);
};
async function toggleRecord(model) {
const treeElement = UI.panels.resources._sidebar.backgroundFetchTreeElement;
treeElement.onselect(false);
// Simulate click.
treeElement._view._toggleRecording();
// Wait for the view to be aware of the change.
await new Promise(r => {
model.addEventListener(Resources.BackgroundServiceModel.Events.RecordingStateChanged, r);
});
// Yield thread in case this listener was called before the UI's listener.
await new Promise(r => setTimeout(r, 0));
}
(async function() {
Root.Runtime.experiments.setEnabled('backgroundServices', true);
TestRunner.addResult(`Tests the bottom panel shows information as expected.\n`);
await TestRunner.showPanel('resources');
const backgroundServiceModel = TestRunner.mainTarget.model(Resources.BackgroundServiceModel);
backgroundServiceModel.enable(Protocol.BackgroundService.ServiceName.BackgroundFetch);
dumpPreviewPanel();
await toggleRecord(backgroundServiceModel);
dumpPreviewPanel();
await toggleRecord(backgroundServiceModel);
dumpPreviewPanel();
backgroundServiceModel.backgroundServiceEventReceived({
backgroundServiceEvent: {
timestamp: 1556889085, // 2019-05-03 14:11:25.000.
origin: 'http://127.0.0.1:8000/',
serviceWorkerRegistrationId: 42, // invalid.
service: Protocol.BackgroundService.ServiceName.BackgroundFetch,
eventName: 'Event1',
instanceId: 'Instance1',
eventMetadata: [],
}
});
backgroundServiceModel.backgroundServiceEventReceived({
backgroundServiceEvent: {
timestamp: 1556889085, // 2019-05-03 14:11:25.000.
origin: 'http://127.0.0.1:8000/',
serviceWorkerRegistrationId: 42, // invalid.
service: Protocol.BackgroundService.ServiceName.BackgroundFetch,
eventName: 'Event2',
instanceId: 'Instance1',
eventMetadata: [{key: 'key', value: 'value'}],
}
});
dumpPreviewPanel();
const dataGrid = UI.panels.resources._sidebar.backgroundFetchTreeElement._view._dataGrid;
dataGrid.rootNode().children[0].select();
dumpPreviewPanel();
dataGrid.rootNode().children[1].select();
dumpPreviewPanel();
// Simulate clicking the clear button.
UI.panels.resources._sidebar.backgroundFetchTreeElement._view._clearEvents();
dumpPreviewPanel();
TestRunner.completeTest();
})();