blob: ce54ee85fd6881149814bb8e948badc1af2d5372 [file] [log] [blame]
// Copyright 2017 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.
(async function() {
TestRunner.addResult(
`Tests that webInspector.inspectedWindow.reload() successfully injects and preprocesses user's code upon reload\n`);
await TestRunner.loadModule('sources_test_runner');
await TestRunner.loadModule('extensions_test_runner');
await TestRunner.loadModule('console_test_runner');
await TestRunner.navigatePromise(TestRunner.url('resources/reload.html'));
TestRunner.lastMessageScriptId = function(callback) {
var consoleView = Console.ConsoleView.instance();
if (consoleView._needsFullUpdate)
consoleView._updateMessageList();
var viewMessages = consoleView._visibleViewMessages;
if (viewMessages.length !== 1)
callback(null);
var uiMessage = viewMessages[viewMessages.length - 1];
var message = uiMessage.consoleMessage();
if (!message.stackTrace)
callback(null);
callback(message.stackTrace.callFrames[0].scriptId);
}
TestRunner.getScriptSource = async function(scriptId, callback) {
var source = await TestRunner.DebuggerAgent.getScriptSource(scriptId);
callback(source);
}
await ExtensionsTestRunner.runExtensionTests([
function extension_testReloadInjectsCode(nextTest) {
var injectedValue;
function onPageWithInjectedCodeLoaded() {
webInspector.inspectedWindow.eval("window.bar", function(value) {
injectedValue = value;
evaluateOnFrontend("TestRunner.reloadPage(reply)", onPageWithoutInjectedCodeLoaded);
});
}
function onPageWithoutInjectedCodeLoaded() {
webInspector.inspectedWindow.eval("window.bar", function(value) {
output("With injected code: " + injectedValue);
output("Without injected code: " + value);
nextTest();
});
}
var injectedScript = "window.foo = 42;"
evaluateOnFrontend(`TestRunner.reloadPageWithInjectedScript("${injectedScript}", reply)`, onPageWithInjectedCodeLoaded);
},
function extension_testReloadInjectsCodeWithMessage(nextTest) {
function onPageWithInjectedCodeLoaded() {
evaluateOnFrontend("TestRunner.lastMessageScriptId(reply);", onScriptIdReceived);
}
function onScriptIdReceived(scriptId) {
if (!scriptId) {
output("Script ID unavailable");
nextTest();
} else {
evaluateOnFrontend("TestRunner.getScriptSource(\"" + scriptId + "\", reply);", function(source) {
output("Source received:");
output(source);
nextTest();
});
}
}
var injectedScript = "console.log(42)";
evaluateOnFrontend(`TestRunner.reloadPageWithInjectedScript("${injectedScript}", reply)`, onPageWithInjectedCodeLoaded);
}
]);
})();