| // 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); |
| } |
| ]); |
| })(); |