1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
- "use strict";
- /**
- * Tests that when flame chart views scroll to change selection,
- * other detail views are rerendered.
- */
- const { SIMPLE_URL } = require("devtools/client/performance/test/helpers/urls");
- const { initPerformanceInNewTab, teardownToolboxAndRemoveTab } = require("devtools/client/performance/test/helpers/panel-utils");
- const { startRecording, stopRecording } = require("devtools/client/performance/test/helpers/actions");
- const { once } = require("devtools/client/performance/test/helpers/event-utils");
- const { scrollCanvasGraph, HORIZONTAL_AXIS } = require("devtools/client/performance/test/helpers/input-utils");
- add_task(function* () {
- let { panel } = yield initPerformanceInNewTab({
- url: SIMPLE_URL,
- win: window
- });
- let {
- EVENTS,
- OverviewView,
- DetailsView,
- WaterfallView,
- JsCallTreeView,
- JsFlameGraphView
- } = panel.panelWin;
- yield startRecording(panel);
- yield stopRecording(panel);
- let waterfallRendered = once(WaterfallView, EVENTS.UI_WATERFALL_RENDERED);
- OverviewView.setTimeInterval({ startTime: 10, endTime: 20 });
- yield waterfallRendered;
- // Select the call tree to make sure it's initialized and ready to receive
- // redrawing requests once reselected.
- let callTreeRendered = once(JsCallTreeView, EVENTS.UI_JS_CALL_TREE_RENDERED);
- yield DetailsView.selectView("js-calltree");
- yield callTreeRendered;
- // Switch to the flamegraph and perform a scroll over the visualization.
- // The waterfall and call tree should get rerendered when reselected.
- let flamegraphRendered = once(JsFlameGraphView, EVENTS.UI_JS_FLAMEGRAPH_RENDERED);
- yield DetailsView.selectView("js-flamegraph");
- yield flamegraphRendered;
- let overviewRangeSelected = once(OverviewView, EVENTS.UI_OVERVIEW_RANGE_SELECTED);
- let waterfallRerendered = once(WaterfallView, EVENTS.UI_WATERFALL_RENDERED);
- let callTreeRerendered = once(JsCallTreeView, EVENTS.UI_JS_CALL_TREE_RENDERED);
- once(JsFlameGraphView, EVENTS.UI_JS_FLAMEGRAPH_RENDERED).then(() => {
- ok(false, "FlameGraphView should not publicly rerender, the internal state " +
- "and drawing should be handled by the underlying widget.");
- });
- // Reset the range to full view, trigger a "selection" event as if
- // our mouse has done this
- scrollCanvasGraph(JsFlameGraphView.graph, {
- axis: HORIZONTAL_AXIS,
- wheel: 200,
- x: 10
- });
- yield overviewRangeSelected;
- ok(true, "Overview range was changed.");
- yield DetailsView.selectView("waterfall");
- yield waterfallRerendered;
- ok(true, "Waterfall rerendered by flame graph changing interval.");
- yield DetailsView.selectView("js-calltree");
- yield callTreeRerendered;
- ok(true, "CallTree rerendered by flame graph changing interval.");
- yield teardownToolboxAndRemoveTab(panel);
- });
|