mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-07-07 10:29:03 +00:00
89 lines
3.7 KiB
JavaScript
89 lines
3.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/**
|
|
* Tests if the profiler can correctly handle simultaneous console and manual
|
|
* recordings (via `console.profile` and clicking the record button).
|
|
*/
|
|
|
|
var C = 1; // is console
|
|
var R = 2; // is recording
|
|
var S = 4; // is selected
|
|
|
|
function testRecordings (win, expected) {
|
|
let recordings = win.PerformanceController.getRecordings();
|
|
let current = win.PerformanceController.getCurrentRecording();
|
|
is(recordings.length, expected.length, "expected number of recordings");
|
|
recordings.forEach((recording, i) => {
|
|
ok(recording.isConsole() == !!(expected[i] & C), `recording ${i+1} has expected console state.`);
|
|
ok(recording.isRecording() == !!(expected[i] & R), `recording ${i+1} has expected console state.`);
|
|
ok((recording === current) == !!(expected[i] & S), `recording ${i+1} has expected selected state.`);
|
|
});
|
|
}
|
|
|
|
function* spawnTest() {
|
|
PMM_loadFrameScripts(gBrowser);
|
|
let { target, toolbox, panel } = yield initPerformance(SIMPLE_URL);
|
|
let { EVENTS, PerformanceController, OverviewView, RecordingsView, WaterfallView } = panel.panelWin;
|
|
|
|
info("Starting console.profile()...");
|
|
yield consoleProfile(panel.panelWin);
|
|
testRecordings(panel.panelWin, [C+S+R]);
|
|
info("Starting manual recording...");
|
|
yield startRecording(panel);
|
|
testRecordings(panel.panelWin, [C+R, R+S]);
|
|
info("Starting console.profile(\"3\")...");
|
|
yield consoleProfile(panel.panelWin, "3");
|
|
testRecordings(panel.panelWin, [C+R, R+S, C+R]);
|
|
info("Starting console.profile(\"3\")...");
|
|
yield consoleProfile(panel.panelWin, "4");
|
|
testRecordings(panel.panelWin, [C+R, R+S, C+R, C+R]);
|
|
|
|
info("Ending console.profileEnd()...");
|
|
yield consoleProfileEnd(panel.panelWin);
|
|
|
|
testRecordings(panel.panelWin, [C+R, R+S, C+R, C]);
|
|
ok(OverviewView.isRendering(), "still rendering overview with manual recorded selected.");
|
|
|
|
let onSelected = once(WaterfallView, EVENTS.WATERFALL_RENDERED);
|
|
info("Select last recording...");
|
|
RecordingsView.selectedIndex = 3;
|
|
yield onSelected;
|
|
testRecordings(panel.panelWin, [C+R, R, C+R, C+S]);
|
|
ok(!OverviewView.isRendering(), "stop rendering overview when selected completed recording.");
|
|
|
|
info("Manually stop manual recording...");
|
|
yield stopRecording(panel);
|
|
testRecordings(panel.panelWin, [C+R, S, C+R, C]);
|
|
ok(!OverviewView.isRendering(), "stop rendering overview when selected completed recording.");
|
|
|
|
onSelected = once(PerformanceController, EVENTS.RECORDING_SELECTED);
|
|
info("Select first recording...");
|
|
RecordingsView.selectedIndex = 0;
|
|
yield onSelected;
|
|
testRecordings(panel.panelWin, [C+R+S, 0, C+R, C]);
|
|
yield once(OverviewView, EVENTS.OVERVIEW_RENDERED);
|
|
ok(OverviewView.isRendering(), "should be rendering overview when selected recording in progress.");
|
|
|
|
info("Ending console.profileEnd()...");
|
|
yield consoleProfileEnd(panel.panelWin);
|
|
testRecordings(panel.panelWin, [C+R+S, 0, C, C]);
|
|
ok(OverviewView.isRendering(), "should still be rendering overview when selected recording in progress.");
|
|
info("Start one more manual recording...");
|
|
yield startRecording(panel);
|
|
testRecordings(panel.panelWin, [C+R, 0, C, C, R+S]);
|
|
ok(OverviewView.isRendering(), "should be rendering overview when selected recording in progress.");
|
|
info("Stop manual recording...");
|
|
yield stopRecording(panel);
|
|
testRecordings(panel.panelWin, [C+R, 0, C, C, S]);
|
|
ok(!OverviewView.isRendering(), "stop rendering overview when selected completed recording.");
|
|
|
|
info("Ending console.profileEnd()...");
|
|
yield consoleProfileEnd(panel.panelWin);
|
|
testRecordings(panel.panelWin, [C, 0, C, C, S]);
|
|
ok(!OverviewView.isRendering(), "stop rendering overview when selected completed recording.");
|
|
|
|
yield teardown(panel);
|
|
finish();
|
|
}
|