blob: cfc48a30a593f3702b7c05d1289919f1b48cbb59 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview using private properties isn't a Closure violation in tests.
* @suppress {accessControls}
*/
CPUProfilerTestRunner.startProfilerTest = function(callback) {
TestRunner.addResult('Profiler was enabled.');
TestRunner.addSniffer(UI.panels.js_profiler, '_addProfileHeader', CPUProfilerTestRunner._profileHeaderAdded, true);
TestRunner.addSniffer(Profiler.ProfileView.prototype, 'refresh', CPUProfilerTestRunner._profileViewRefresh, true);
TestRunner.safeWrap(callback)();
};
CPUProfilerTestRunner.completeProfilerTest = function() {
TestRunner.addResult('');
TestRunner.addResult('Profiler was disabled.');
TestRunner.completeTest();
};
CPUProfilerTestRunner.runProfilerTestSuite = function(testSuite) {
const testSuiteTests = testSuite.slice();
function runner() {
if (!testSuiteTests.length) {
CPUProfilerTestRunner.completeProfilerTest();
return;
}
const nextTest = testSuiteTests.shift();
TestRunner.addResult('');
TestRunner.addResult(
'Running: ' +
/function\s([^(]*)/.exec(nextTest)[1]);
TestRunner.safeWrap(nextTest)(runner, runner);
}
CPUProfilerTestRunner.startProfilerTest(runner);
};
CPUProfilerTestRunner.showProfileWhenAdded = function(title) {
CPUProfilerTestRunner._showProfileWhenAdded = title;
};
CPUProfilerTestRunner._profileHeaderAdded = function(profile) {
if (CPUProfilerTestRunner._showProfileWhenAdded === profile.title) {
UI.panels.js_profiler.showProfile(profile);
}
};
CPUProfilerTestRunner.waitUntilProfileViewIsShown = function(title, callback) {
callback = TestRunner.safeWrap(callback);
const profilesPanel = UI.panels.js_profiler;
if (profilesPanel.visibleView && profilesPanel.visibleView.profile &&
profilesPanel.visibleView._profileHeader.title === title) {
callback(profilesPanel.visibleView);
} else {
CPUProfilerTestRunner._waitUntilProfileViewIsShownCallback = {title: title, callback: callback};
}
};
CPUProfilerTestRunner._profileViewRefresh = function() {
if (CPUProfilerTestRunner._waitUntilProfileViewIsShownCallback &&
CPUProfilerTestRunner._waitUntilProfileViewIsShownCallback.title === this._profileHeader.title) {
const callback = CPUProfilerTestRunner._waitUntilProfileViewIsShownCallback;
delete CPUProfilerTestRunner._waitUntilProfileViewIsShownCallback;
callback.callback(this);
}
};