summaryrefslogtreecommitdiffstats
path: root/WebKit/chromium/src/js/Tests.js
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/chromium/src/js/Tests.js')
-rw-r--r--WebKit/chromium/src/js/Tests.js933
1 files changed, 0 insertions, 933 deletions
diff --git a/WebKit/chromium/src/js/Tests.js b/WebKit/chromium/src/js/Tests.js
deleted file mode 100644
index 55b24ea..0000000
--- a/WebKit/chromium/src/js/Tests.js
+++ /dev/null
@@ -1,933 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-/**
- * @fileoverview This file contains small testing framework along with the
- * test suite for the frontend. These tests are a part of the continues build
- * and are executed by the devtools_sanity_unittest.cc as a part of the
- * Interactive UI Test suite.
- * FIXME: change field naming style to use trailing underscore.
- */
-
-if (window.domAutomationController) {
-
-var ___interactiveUiTestsMode = true;
-
-/**
- * Test suite for interactive UI tests.
- * @constructor
- */
-TestSuite = function()
-{
- this.controlTaken_ = false;
- this.timerId_ = -1;
-};
-
-
-/**
- * Reports test failure.
- * @param {string} message Failure description.
- */
-TestSuite.prototype.fail = function(message)
-{
- if (this.controlTaken_)
- this.reportFailure_(message);
- else
- throw message;
-};
-
-
-/**
- * Equals assertion tests that expected === actual.
- * @param {Object} expected Expected object.
- * @param {Object} actual Actual object.
- * @param {string} opt_message User message to print if the test fails.
- */
-TestSuite.prototype.assertEquals = function(expected, actual, opt_message)
-{
- if (expected !== actual) {
- var message = "Expected: '" + expected + "', but was '" + actual + "'";
- if (opt_message)
- message = opt_message + "(" + message + ")";
- this.fail(message);
- }
-};
-
-
-/**
- * True assertion tests that value == true.
- * @param {Object} value Actual object.
- * @param {string} opt_message User message to print if the test fails.
- */
-TestSuite.prototype.assertTrue = function(value, opt_message)
-{
- this.assertEquals(true, !!value, opt_message);
-};
-
-
-/**
- * Contains assertion tests that string contains substring.
- * @param {string} string Outer.
- * @param {string} substring Inner.
- */
-TestSuite.prototype.assertContains = function(string, substring)
-{
- if (string.indexOf(substring) === -1)
- this.fail("Expected to: '" + string + "' to contain '" + substring + "'");
-};
-
-
-/**
- * Takes control over execution.
- */
-TestSuite.prototype.takeControl = function()
-{
- this.controlTaken_ = true;
- // Set up guard timer.
- var self = this;
- this.timerId_ = setTimeout(function() {
- self.reportFailure_("Timeout exceeded: 20 sec");
- }, 20000);
-};
-
-
-/**
- * Releases control over execution.
- */
-TestSuite.prototype.releaseControl = function()
-{
- if (this.timerId_ !== -1) {
- clearTimeout(this.timerId_);
- this.timerId_ = -1;
- }
- this.reportOk_();
-};
-
-
-/**
- * Async tests use this one to report that they are completed.
- */
-TestSuite.prototype.reportOk_ = function()
-{
- window.domAutomationController.send("[OK]");
-};
-
-
-/**
- * Async tests use this one to report failures.
- */
-TestSuite.prototype.reportFailure_ = function(error)
-{
- if (this.timerId_ !== -1) {
- clearTimeout(this.timerId_);
- this.timerId_ = -1;
- }
- window.domAutomationController.send("[FAILED] " + error);
-};
-
-
-/**
- * Runs all global functions starting with "test" as unit tests.
- */
-TestSuite.prototype.runTest = function(testName)
-{
- try {
- this[testName]();
- if (!this.controlTaken_)
- this.reportOk_();
- } catch (e) {
- this.reportFailure_(e);
- }
-};
-
-
-/**
- * @param {string} panelName Name of the panel to show.
- */
-TestSuite.prototype.showPanel = function(panelName)
-{
- // Open Scripts panel.
- var toolbar = document.getElementById("toolbar");
- var button = toolbar.getElementsByClassName(panelName)[0];
- button.click();
- this.assertEquals(WebInspector.panels[panelName], WebInspector.currentPanel);
-};
-
-
-/**
- * Overrides the method with specified name until it's called first time.
- * @param {Object} receiver An object whose method to override.
- * @param {string} methodName Name of the method to override.
- * @param {Function} override A function that should be called right after the
- * overriden method returns.
- * @param {boolean} opt_sticky Whether restore original method after first run
- * or not.
- */
-TestSuite.prototype.addSniffer = function(receiver, methodName, override, opt_sticky)
-{
- var orig = receiver[methodName];
- if (typeof orig !== "function")
- this.fail("Cannot find method to override: " + methodName);
- var test = this;
- receiver[methodName] = function(var_args) {
- try {
- var result = orig.apply(this, arguments);
- } finally {
- if (!opt_sticky)
- receiver[methodName] = orig;
- }
- // In case of exception the override won't be called.
- try {
- override.apply(this, arguments);
- } catch (e) {
- test.fail("Exception in overriden method '" + methodName + "': " + e);
- }
- return result;
- };
-};
-
-
-// UI Tests
-
-
-/**
- * Tests that resources tab is enabled when corresponding item is selected.
- */
-TestSuite.prototype.testEnableResourcesTab = function()
-{
- this.showPanel("resources");
-
- var test = this;
- this.addSniffer(WebInspector, "updateResource",
- function(payload) {
- test.assertEquals("simple_page.html", payload.lastPathComponent);
- WebInspector.panels.resources.refresh();
- WebInspector.panels.resources.revealAndSelectItem(WebInspector.resources[payload.id]);
-
- test.releaseControl();
- });
-
- // Following call should lead to reload that we capture in the
- // addResource override.
- WebInspector.panels.resources._enableResourceTracking();
-
- // We now have some time to report results to controller.
- this.takeControl();
-};
-
-
-/**
- * Tests that profiler works.
- */
-TestSuite.prototype.testProfilerTab = function()
-{
- this.showPanel("profiles");
-
- var panel = WebInspector.panels.profiles;
- var test = this;
-
- function findDisplayedNode() {
- var node = panel.visibleView.profileDataGridTree.children[0];
- if (!node) {
- // Profile hadn't been queried yet, re-schedule.
- window.setTimeout(findDisplayedNode, 100);
- return;
- }
-
- // Iterate over displayed functions and search for a function
- // that is called "fib" or "eternal_fib". If found, this will mean
- // that we actually have profiled page's code.
- while (node) {
- if (node.functionName.indexOf("fib") !== -1)
- test.releaseControl();
- node = node.traverseNextNode(true, null, true);
- }
-
- test.fail();
- }
-
- function findVisibleView() {
- if (!panel.visibleView) {
- setTimeout(findVisibleView, 0);
- return;
- }
- setTimeout(findDisplayedNode, 0);
- }
-
- findVisibleView();
- this.takeControl();
-};
-
-
-/**
- * Tests that heap profiler works.
- */
-TestSuite.prototype.testHeapProfiler = function()
-{
- this.showPanel("profiles");
-
- var panel = WebInspector.panels.profiles;
- var test = this;
-
- function findDisplayedNode() {
- var node = panel.visibleView.dataGrid.children[0];
- if (!node) {
- // Profile hadn't been queried yet, re-schedule.
- window.setTimeout(findDisplayedNode, 100);
- return;
- }
-
- // Iterate over displayed functions and find node called "A"
- // If found, this will mean that we actually have taken heap snapshot.
- while (node) {
- if (node.constructorName.indexOf("A") !== -1) {
- test.releaseControl();
- return;
- }
- node = node.traverseNextNode(false, null, true);
- }
-
- test.fail();
- }
-
- function findVisibleView() {
- if (!panel.visibleView) {
- setTimeout(findVisibleView, 0);
- return;
- }
- setTimeout(findDisplayedNode, 0);
- }
-
- WebInspector.HeapSnapshotProfileType.prototype.buttonClicked();
- findVisibleView();
- this.takeControl();
-};
-
-
-/**
- * Tests that scripts tab can be open and populated with inspected scripts.
- */
-TestSuite.prototype.testShowScriptsTab = function()
-{
- this.showPanel("scripts");
- var test = this;
- // There should be at least main page script.
- this._waitUntilScriptsAreParsed(["debugger_test_page.html"],
- function() {
- test.releaseControl();
- });
- // Wait until all scripts are added to the debugger.
- this.takeControl();
-};
-
-
-/**
- * Tests that scripts tab is populated with inspected scripts even if it
- * hadn't been shown by the moment inspected paged refreshed.
- * @see http://crbug.com/26312
- */
-TestSuite.prototype.testScriptsTabIsPopulatedOnInspectedPageRefresh = function()
-{
- var test = this;
- this.assertEquals(WebInspector.panels.elements, WebInspector.currentPanel, "Elements panel should be current one.");
-
- this.addSniffer(WebInspector.panels.scripts, "reset", waitUntilScriptIsParsed);
-
- // Reload inspected page. It will reset the debugger agent.
- test.evaluateInConsole_(
- "window.location.reload(true);",
- function(resultText) {});
-
- function waitUntilScriptIsParsed() {
- test.showPanel("scripts");
- test._waitUntilScriptsAreParsed(["debugger_test_page.html"],
- function() {
- test.releaseControl();
- });
- }
-
- // Wait until all scripts are added to the debugger.
- this.takeControl();
-};
-
-
-/**
- * Tests that scripts list contains content scripts.
- */
-TestSuite.prototype.testContentScriptIsPresent = function()
-{
- this.showPanel("scripts");
- var test = this;
-
- test._waitUntilScriptsAreParsed(
- ["page_with_content_script.html", "simple_content_script.js"],
- function() {
- test.releaseControl();
- });
-
- // Wait until all scripts are added to the debugger.
- this.takeControl();
-};
-
-
-/**
- * Tests that scripts are not duplicaed on Scripts tab switch.
- */
-TestSuite.prototype.testNoScriptDuplicatesOnPanelSwitch = function()
-{
- var test = this;
-
- // There should be two scripts: one for the main page and another
- // one which is source of console API(see
- // InjectedScript._ensureCommandLineAPIInstalled).
- var expectedScriptsCount = 2;
- var parsedScripts = [];
-
- this.showPanel("scripts");
-
-
- function switchToElementsTab() {
- test.showPanel("elements");
- setTimeout(switchToScriptsTab, 0);
- }
-
- function switchToScriptsTab() {
- test.showPanel("scripts");
- setTimeout(checkScriptsPanel, 0);
- }
-
- function checkScriptsPanel() {
- test.assertTrue(!!WebInspector.panels.scripts.visibleView, "No visible script view.");
- test.assertTrue(test._scriptsAreParsed(["debugger_test_page.html"]), "Some scripts are missing.");
- checkNoDuplicates();
- test.releaseControl();
- }
-
- function checkNoDuplicates() {
- var scriptSelect = document.getElementById("scripts-files");
- var options = scriptSelect.options;
- for (var i = 0; i < options.length; i++) {
- var scriptName = options[i].text;
- for (var j = i + 1; j < options.length; j++)
- test.assertTrue(scriptName !== options[j].text, "Found script duplicates: " + test.optionsToString_(options));
- }
- }
-
- test._waitUntilScriptsAreParsed(
- ["debugger_test_page.html"],
- function() {
- checkNoDuplicates();
- setTimeout(switchToElementsTab, 0);
- });
-
-
- // Wait until all scripts are added to the debugger.
- this.takeControl();
-};
-
-
-// Tests that debugger works correctly if pause event occurs when DevTools
-// frontend is being loaded.
-TestSuite.prototype.testPauseWhenLoadingDevTools = function()
-{
- this.showPanel("scripts");
- var test = this;
-
- var expectations = {
- functionsOnStack: ["callDebugger"],
- lineNumber: 8,
- lineText: " debugger;"
- };
-
-
- // Script execution can already be paused.
- if (WebInspector.currentPanel.paused) {
- var callFrame = WebInspector.currentPanel.sidebarPanes.callstack.selectedCallFrame;
- this.assertEquals(expectations.functionsOnStack[0], callFrame.functionName);
- var callbackInvoked = false;
- this._checkSourceFrameWhenLoaded(expectations, function() {
- callbackInvoked = true;
- if (test.controlTaken_)
- test.releaseControl();
- });
- if (!callbackInvoked) {
- test.takeControl();
- }
- return;
- }
-
- this._waitForScriptPause(
- {
- functionsOnStack: ["callDebugger"],
- lineNumber: 8,
- lineText: " debugger;"
- },
- function() {
- test.releaseControl();
- });
- this.takeControl();
-};
-
-
-// Tests that pressing "Pause" will pause script execution if the script
-// is already running.
-TestSuite.prototype.testPauseWhenScriptIsRunning = function()
-{
- this.showPanel("scripts");
- var test = this;
-
- test.evaluateInConsole_(
- 'setTimeout("handleClick()" , 0)',
- function(resultText) {
- test.assertTrue(!isNaN(resultText), "Failed to get timer id: " + resultText);
- testScriptPauseAfterDelay();
- });
-
- // Wait for some time to make sure that inspected page is running the
- // infinite loop.
- function testScriptPauseAfterDelay() {
- setTimeout(testScriptPause, 300);
- }
-
- function testScriptPause() {
- // The script should be in infinite loop. Click "Pause" button to
- // pause it and wait for the result.
- WebInspector.panels.scripts.pauseButton.click();
-
- test._waitForScriptPause(
- {
- functionsOnStack: ["handleClick", ""],
- lineNumber: 5,
- lineText: " while(true) {"
- },
- function() {
- test.releaseControl();
- });
- }
-
- this.takeControl();
-};
-
-
-/**
- * Serializes options collection to string.
- * @param {HTMLOptionsCollection} options
- * @return {string}
- */
-TestSuite.prototype.optionsToString_ = function(options)
-{
- var names = [];
- for (var i = 0; i < options.length; i++)
- names.push('"' + options[i].text + '"');
- return names.join(",");
-};
-
-
-/**
- * Ensures that main HTML resource is selected in Scripts panel and that its
- * source frame is setup. Invokes the callback when the condition is satisfied.
- * @param {HTMLOptionsCollection} options
- * @param {function(WebInspector.SourceView,string)} callback
- */
-TestSuite.prototype.showMainPageScriptSource_ = function(scriptName, callback)
-{
- var test = this;
-
- var scriptSelect = document.getElementById("scripts-files");
- var options = scriptSelect.options;
-
- test.assertTrue(options.length, "Scripts list is empty");
-
- // Select page's script if it's not current option.
- var scriptResource;
- if (options[scriptSelect.selectedIndex].text === scriptName)
- scriptResource = options[scriptSelect.selectedIndex].representedObject;
- else {
- var pageScriptIndex = -1;
- for (var i = 0; i < options.length; i++) {
- if (options[i].text === scriptName) {
- pageScriptIndex = i;
- break;
- }
- }
- test.assertTrue(-1 !== pageScriptIndex, "Script with url " + scriptName + " not found among " + test.optionsToString_(options));
- scriptResource = options[pageScriptIndex].representedObject;
-
- // Current panel is "Scripts".
- WebInspector.currentPanel._showScriptOrResource(scriptResource);
- test.assertEquals(pageScriptIndex, scriptSelect.selectedIndex, "Unexpected selected option index.");
- }
-
- test.assertTrue(scriptResource instanceof WebInspector.Resource,
- "Unexpected resource class.");
- test.assertTrue(!!scriptResource.url, "Resource URL is null.");
- test.assertTrue(scriptResource.url.search(scriptName + "$") !== -1, "Main HTML resource should be selected.");
-
- var scriptsPanel = WebInspector.panels.scripts;
-
- var view = scriptsPanel.visibleView;
- test.assertTrue(view instanceof WebInspector.SourceView);
-
- if (!view.sourceFrame._loaded) {
- test.addSniffer(view, "_sourceFrameSetupFinished", function(event) {
- callback(view, scriptResource.url);
- });
- } else
- callback(view, scriptResource.url);
-};
-
-
-/*
- * Evaluates the code in the console as if user typed it manually and invokes
- * the callback when the result message is received and added to the console.
- * @param {string} code
- * @param {function(string)} callback
- */
-TestSuite.prototype.evaluateInConsole_ = function(code, callback)
-{
- WebInspector.showConsole();
- WebInspector.console.prompt.text = code;
- WebInspector.console.promptElement.dispatchEvent( TestSuite.createKeyEvent("Enter"));
-
- this.addSniffer(WebInspector.ConsoleView.prototype, "addMessage",
- function(commandResult) {
- callback(commandResult.toMessageElement().textContent);
- });
-};
-
-
-/**
- * Tests that console auto completion works when script execution is paused.
- */
-TestSuite.prototype.testCompletionOnPause = function()
-{
- this.showPanel("scripts");
- var test = this;
- this._executeCodeWhenScriptsAreParsed("handleClick()", ["completion_on_pause.html"]);
-
- this._waitForScriptPause(
- {
- functionsOnStack: ["innerFunction", "handleClick", ""],
- lineNumber: 9,
- lineText: " debugger;"
- },
- showConsole);
-
- function showConsole() {
- if (WebInspector.currentFocusElement === WebInspector.console.promptElement)
- testLocalsCompletion();
- else {
- test.addSniffer(WebInspector.console, "afterShow", testLocalsCompletion);
- WebInspector.showConsole();
- }
- }
-
- function testLocalsCompletion() {
- checkCompletions("th", ["parameter1", "closureLocal", "p", "createClosureLocal"], testThisCompletion);
- }
-
- function testThisCompletion() {
- checkCompletions("this.", ["field1", "field2", "m"], testFieldCompletion);
- }
-
- function testFieldCompletion() {
- checkCompletions("this.field1.", ["id", "name"], function() { test.releaseControl(); });
- }
-
- function checkCompletions(expression, expectedProperties, callback) {
- test.addSniffer(WebInspector.console, "_reportCompletions",
- function(bestMatchOnly, completionsReadyCallback, dotNotation, bracketNotation, prefix, result, isException) {
- test.assertTrue(!isException, "Exception while collecting completions");
- for (var i = 0; i < expectedProperties.length; i++) {
- var name = expectedProperties[i];
- test.assertTrue(result[name], "Name " + name + " not found among the completions: " + JSON.stringify(result));
- }
- setTimeout(callback, 0);
- });
- WebInspector.console.prompt.text = expression;
- WebInspector.console.prompt.autoCompleteSoon();
- }
-
- this.takeControl();
-};
-
-
-/**
- * Checks current execution line against expectations.
- * @param {WebInspector.SourceFrame} sourceFrame
- * @param {number} lineNumber Expected line number
- * @param {string} lineContent Expected line text
- */
-TestSuite.prototype._checkExecutionLine = function(sourceFrame, lineNumber, lineContent)
-{
- this.assertEquals(lineNumber, sourceFrame.executionLine, "Unexpected execution line number.");
- this.assertEquals(lineContent, sourceFrame._textModel.line(lineNumber - 1), "Unexpected execution line text.");
-}
-
-
-/**
- * Checks that all expected scripts are present in the scripts list
- * in the Scripts panel.
- * @param {Array.<string>} expected Regular expressions describing
- * expected script names.
- * @return {boolean} Whether all the scripts are in "scripts-files" select
- * box
- */
-TestSuite.prototype._scriptsAreParsed = function(expected)
-{
- var scriptSelect = document.getElementById("scripts-files");
- var options = scriptSelect.options;
-
- // Check that at least all the expected scripts are present.
- var missing = expected.slice(0);
- for (var i = 0 ; i < options.length; i++) {
- for (var j = 0; j < missing.length; j++) {
- if (options[i].text.search(missing[j]) !== -1) {
- missing.splice(j, 1);
- break;
- }
- }
- }
- return missing.length === 0;
-};
-
-
-/**
- * Waits for script pause, checks expectations, and invokes the callback.
- * @param {Object} expectations Dictionary of expectations
- * @param {function():void} callback
- */
-TestSuite.prototype._waitForScriptPause = function(expectations, callback)
-{
- var test = this;
- // Wait until script is paused.
- test.addSniffer(
- WebInspector.debuggerModel,
- "pausedScript",
- function(details) {
- var callFrames = details.callFrames;
- var functionsOnStack = [];
- for (var i = 0; i < callFrames.length; i++)
- functionsOnStack.push(callFrames[i].functionName);
-
- test.assertEquals(expectations.functionsOnStack.join(","), functionsOnStack.join(","), "Unexpected stack.");
-
- // Check that execution line where the script is paused is
- // expected one.
- test._checkSourceFrameWhenLoaded(expectations, callback);
- });
-};
-
-
-/**
- * Waits for current source frame to load, checks expectations, and invokes
- * the callback.
- * @param {Object} expectations Dictionary of expectations
- * @param {function():void} callback
- */
-TestSuite.prototype._checkSourceFrameWhenLoaded = function(expectations, callback)
-{
- var test = this;
-
- var frame = WebInspector.currentPanel.visibleView.sourceFrame;
- if (frame._loaded)
- checkExecLine();
- else {
- setTimeout(function() {
- test._checkSourceFrameWhenLoaded(expectations, callback);
- }, 100);
- }
- function checkExecLine() {
- test._checkExecutionLine(frame, expectations.lineNumber, expectations.lineText);
- callback();
- }
-};
-
-
-/**
- * Waits until all the scripts are parsed and asynchronously executes the code
- * in the inspected page.
- */
-TestSuite.prototype._executeCodeWhenScriptsAreParsed = function(code, expectedScripts)
-{
- var test = this;
-
- function executeFunctionInInspectedPage() {
- // Since breakpoints are ignored in evals' calculate() function is
- // execute after zero-timeout so that the breakpoint is hit.
- test.evaluateInConsole_(
- 'setTimeout("' + code + '" , 0)',
- function(resultText) {
- test.assertTrue(!isNaN(resultText), "Failed to get timer id: " + resultText + ". Code: " + code);
- });
- }
-
- test._waitUntilScriptsAreParsed(expectedScripts, executeFunctionInInspectedPage);
-};
-
-
-/**
- * Waits until all the scripts are parsed and invokes the callback.
- */
-TestSuite.prototype._waitUntilScriptsAreParsed = function(expectedScripts, callback)
-{
- var test = this;
-
- function waitForAllScripts() {
- if (test._scriptsAreParsed(expectedScripts))
- callback();
- else
- test.addSniffer(WebInspector.debuggerModel, "parsedScriptSource", waitForAllScripts);
- }
-
- waitForAllScripts();
-};
-
-
-/**
- * Executes the 'code' with InjectedScriptAccess.getProperties overriden
- * so that all callbacks passed to InjectedScriptAccess.getProperties are
- * extended with the "hook".
- * @param {Function} hook The hook function.
- * @param {Function} code A code snippet to be executed.
- */
-TestSuite.prototype._hookGetPropertiesCallback = function(hook, code)
-{
- var accessor = InjectedScriptAccess.prototype;
- var orig = accessor.getProperties;
- accessor.getProperties = function(objectProxy, ignoreHasOwnProperty, abbreviate, callback) {
- orig.call(this, objectProxy, ignoreHasOwnProperty, abbreviate,
- function() {
- callback.apply(this, arguments);
- hook();
- });
- };
- try {
- code();
- } finally {
- accessor.getProperties = orig;
- }
-};
-
-
-/**
- * Tests "Pause" button will pause debugger when a snippet is evaluated.
- */
-TestSuite.prototype.testPauseInEval = function()
-{
- this.showPanel("scripts");
-
- var test = this;
-
- var pauseButton = document.getElementById("scripts-pause");
- pauseButton.click();
-
- devtools.tools.evaluateJavaScript("fib(10)");
-
- this.addSniffer(WebInspector.debuggerModel, "pausedScript",
- function() {
- test.releaseControl();
- });
-
- test.takeControl();
-};
-
-
-/**
- * Key event with given key identifier.
- */
-TestSuite.createKeyEvent = function(keyIdentifier)
-{
- var evt = document.createEvent("KeyboardEvent");
- evt.initKeyboardEvent("keydown", true /* can bubble */, true /* can cancel */, null /* view */, keyIdentifier, "");
- return evt;
-};
-
-
-/**
- * Test runner for the test suite.
- */
-var uiTests = {};
-
-
-/**
- * Run each test from the test suit on a fresh instance of the suite.
- */
-uiTests.runAllTests = function()
-{
- // For debugging purposes.
- for (var name in TestSuite.prototype) {
- if (name.substring(0, 4) === "test" && typeof TestSuite.prototype[name] === "function")
- uiTests.runTest(name);
- }
-};
-
-
-/**
- * Run specified test on a fresh instance of the test suite.
- * @param {string} name Name of a test method from TestSuite class.
- */
-uiTests.runTest = function(name)
-{
- if (uiTests._populatedInterface)
- new TestSuite().runTest(name);
- else
- uiTests._pendingTestName = name;
-};
-
-(function() {
-
-function runTests()
-{
- uiTests._populatedInterface = true;
- var name = uiTests._pendingTestName;
- delete uiTests._pendingTestName;
- if (name)
- new TestSuite().runTest(name);
-}
-
-var oldShowElementsPanel = WebInspector.showElementsPanel;
-WebInspector.showElementsPanel = function()
-{
- oldShowElementsPanel.call(this);
- runTests();
-}
-
-var oldShowPanel = WebInspector.showPanel;
-WebInspector.showPanel = function(name)
-{
- oldShowPanel.call(this, name);
- runTests();
-}
-
-})();
-
-}