| Index: webkit/glue/devtools/js/tests.js
|
| ===================================================================
|
| --- webkit/glue/devtools/js/tests.js (revision 20016)
|
| +++ webkit/glue/devtools/js/tests.js (working copy)
|
| @@ -79,14 +79,6 @@
|
|
|
|
|
| /**
|
| - * Async tests use this one to report that they are completed.
|
| - */
|
| -TestSuite.prototype.reportOk = function() {
|
| - window.domAutomationController.send('[OK]');
|
| -};
|
| -
|
| -
|
| -/**
|
| * Manual controller for async tests.
|
| * @constructor.
|
| */
|
| @@ -104,19 +96,28 @@
|
| // Set up guard timer.
|
| var self = this;
|
| this.timerId_ = setTimeout(function() {
|
| - self.reportFailure('Timeout exceeded: 20 sec');
|
| + self.reportFailure_('Timeout exceeded: 20 sec');
|
| }, 20000);
|
| };
|
|
|
|
|
| /**
|
| - * Async tests use this one to report that they are completed.
|
| + * Releases control over execution.
|
| */
|
| -TestSuite.Controller.prototype.reportOk = function() {
|
| +TestSuite.Controller.prototype.releaseControl = function() {
|
| + this.controlTaken_ = false;
|
| if (this.timerId_ != -1) {
|
| this.timerId_ = -1;
|
| clearTimeout(this.timerId_);
|
| }
|
| + this.reportOk_();
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Async tests use this one to report that they are completed.
|
| + */
|
| +TestSuite.Controller.prototype.reportOk_ = function() {
|
| window.domAutomationController.send('[OK]');
|
| };
|
|
|
| @@ -124,7 +125,7 @@
|
| /**
|
| * Async tests use this one to report failures.
|
| */
|
| -TestSuite.Controller.prototype.reportFailure = function(error) {
|
| +TestSuite.Controller.prototype.reportFailure_ = function(error) {
|
| if (this.timerId_ != -1) {
|
| this.timerId_ = -1;
|
| clearTimeout(this.timerId_);
|
| @@ -141,10 +142,10 @@
|
| try {
|
| this[testName](controller);
|
| if (!controller.controlTaken_) {
|
| - controller.reportOk();
|
| + controller.reportOk_();
|
| }
|
| } catch (e) {
|
| - controller.reportFailure(e);
|
| + controller.reportFailure_(e);
|
| }
|
| };
|
|
|
| @@ -215,7 +216,7 @@
|
| WebInspector.panels.resources.refresh();
|
| WebInspector.resources[identifier]._resourcesTreeElement.select();
|
|
|
| - controller.reportOk();
|
| + controller.releaseControl();
|
| };
|
|
|
| // Following call should lead to reload that we capture in the
|
| @@ -228,11 +229,74 @@
|
|
|
|
|
| /**
|
| + * Tests resource headers.
|
| + */
|
| +TestSuite.prototype.testResourceHeaders = function(controller) {
|
| + this.showPanel('resources');
|
| +
|
| + var test = this;
|
| + var oldAddResource = WebInspector.addResource;
|
| + var oldUpdateResource = WebInspector.updateResource;
|
| +
|
| + var requestOk = false;
|
| + var responseOk = false;
|
| + var timingOk = false;
|
| +
|
| + WebInspector.addResource = function(identifier, payload) {
|
| + oldAddResource.call(this, identifier, payload);
|
| + var resource = this.resources[identifier];
|
| + if (resource.mainResource) {
|
| + // We are only interested in secondary resources in this test.
|
| + return;
|
| + }
|
| +
|
| + var requestHeaders = JSON.stringify(resource.requestHeaders);
|
| + test.assertContains(requestHeaders, 'Accept');
|
| + requestOk = true;
|
| + };
|
| +
|
| + WebInspector.updateResource = function(identifier, payload) {
|
| + oldUpdateResource.call(this, identifier, payload);
|
| + var resource = this.resources[identifier];
|
| + if (resource.mainResource) {
|
| + // We are only interested in secondary resources in this test.
|
| + return;
|
| + }
|
| +
|
| + if (payload.didResponseChange) {
|
| + var responseHeaders = JSON.stringify(resource.responseHeaders);
|
| + test.assertContains(responseHeaders, 'Content-type');
|
| + test.assertContains(responseHeaders, 'Content-Length');
|
| + test.assertTrue(typeof resource.responseReceivedTime != 'undefnied');
|
| + responseOk = true;
|
| + }
|
| +
|
| + if (payload.didTimingChange) {
|
| + test.assertTrue(typeof resource.startTime != 'undefnied');
|
| + timingOk = true;
|
| + }
|
| +
|
| + if (payload.didCompletionChange) {
|
| + test.assertTrue(requestOk);
|
| + test.assertTrue(responseOk);
|
| + test.assertTrue(timingOk);
|
| + test.assertTrue(typeof resource.endTime != 'undefnied');
|
| + controller.releaseControl();
|
| + }
|
| + };
|
| +
|
| + WebInspector.panels.resources._enableResourceTracking();
|
| + controller.takeControl();
|
| +};
|
| +
|
| +
|
| +/**
|
| * Test that profiler works.
|
| */
|
| TestSuite.prototype.testProfilerTab = function(controller) {
|
| this.showPanel('profiles');
|
|
|
| + var test = this;
|
| var oldAddProfile = WebInspector.addProfile;
|
| WebInspector.addProfile = function(profile) {
|
| WebInspector.addProfile = oldAddProfile;
|
| @@ -246,12 +310,12 @@
|
| // that we actually have profiled page's code.
|
| while (node) {
|
| if (node.functionName.indexOf("fib") != -1) {
|
| - controller.reportOk();
|
| + controller.releaseControl();
|
| }
|
| node = node.traverseNextNode(true, null, true);
|
| }
|
|
|
| - controller.reportFailure();
|
| + test.fail();
|
| };
|
|
|
| InspectorController.startProfiling();
|
| @@ -269,36 +333,32 @@
|
|
|
| // Intercept parsedScriptSource calls to check that all expected scripts are
|
| // added to the debugger.
|
| - var self = this;
|
| + var test = this;
|
| var originalParsedScriptSource = WebInspector.parsedScriptSource;
|
| WebInspector.parsedScriptSource = function(sourceID, sourceURL, source,
|
| startingLine) {
|
| if (sourceURL.search(/debugger_test_page.html$/) != -1) {
|
| if (parsedDebuggerTestPageHtml) {
|
| - controller.reportFailure('Unexpected parse event: ' + sourceURL);
|
| - return;
|
| + test.fail('Unexpected parse event: ' + sourceURL);
|
| }
|
| parsedDebuggerTestPageHtml = true;
|
| } else if (sourceURL.search(/debugger_test.js$/) != -1) {
|
| if (parsedDebuggerTestJs) {
|
| - controller.reportFailure('Unexpected parse event: ' + sourceURL);
|
| - return;
|
| + test.fail('Unexpected parse event: ' + sourceURL);
|
| }
|
| parsedDebuggerTestJs = true;
|
| } else {
|
| - controller.reportFailure('Unexpected script URL: ' + sourceURL);
|
| + test.fail('Unexpected script URL: ' + sourceURL);
|
| }
|
| originalParsedScriptSource.apply(this, arguments);
|
|
|
| if (!WebInspector.panels.scripts.visibleView) {
|
| - controller.reportFailure('No visible script view: ' + sourceURL);
|
| - return;
|
| + test.fail('No visible script view: ' + sourceURL);
|
| }
|
|
|
| if (parsedDebuggerTestJs && parsedDebuggerTestPageHtml) {
|
| - controller.reportOk();
|
| + controller.releaseControl();
|
| }
|
| - controller.reportOk();
|
| };
|
|
|
| this.showPanel('scripts');
|
| @@ -308,11 +368,14 @@
|
| };
|
|
|
|
|
| -TestSuite.ConsoleEnter = {
|
| - keyIdentifier : 'Enter',
|
| - preventDefault : function() {},
|
| - stopPropagation : function() {}
|
| +/**
|
| + * Key event with given key identifier.
|
| + */
|
| +TestSuite.KeyEvent = function(key) {
|
| + this.keyIdentifier = key;
|
| };
|
| +TestSuite.KeyEvent.prototype.preventDefault = function() {};
|
| +TestSuite.KeyEvent.prototype.stopPropagation = function() {};
|
|
|
|
|
| /**
|
| @@ -325,12 +388,13 @@
|
| originalConsoleAddMessage.call(this, commandResult);
|
| WebInspector.Console.prototype.addMessage = originalConsoleAddMessage;
|
| test.assertEquals('123', commandResult.toMessageElement().textContent);
|
| - controller.reportOk();
|
| + controller.releaseControl();
|
| };
|
|
|
| WebInspector.console.visible = true;
|
| WebInspector.console.prompt.text = '123';
|
| - WebInspector.console.promptElement.handleKeyEvent(TestSuite.ConsoleEnter);
|
| + WebInspector.console.promptElement.handleKeyEvent(
|
| + new TestSuite.KeyEvent('Enter'));
|
|
|
| controller.takeControl();
|
| };
|
| @@ -377,5 +441,34 @@
|
| };
|
|
|
|
|
| +/**
|
| + * Tests eval of global objects.
|
| + */
|
| +TestSuite.prototype.testEvalGlobal = function(controller) {
|
| + var test = this;
|
| + var originalConsoleAddMessage = WebInspector.Console.prototype.addMessage;
|
| + WebInspector.Console.prototype.addMessage = function(commandResult) {
|
| + originalConsoleAddMessage.call(this, commandResult);
|
| + WebInspector.Console.prototype.addMessage = originalConsoleAddMessage;
|
| + test.assertEquals('fooValue', commandResult.toMessageElement().textContent);
|
| + controller.releaseControl();
|
| + };
|
| +
|
| + WebInspector.console.visible = true;
|
| + WebInspector.console.prompt.text = 'foo';
|
| + WebInspector.console.promptElement.handleKeyEvent(
|
| + new TestSuite.KeyEvent('Enter'));
|
| +
|
| + controller.takeControl();
|
| +};
|
| +
|
| +
|
| +/**
|
| + * Tests eval on call frame.
|
| + */
|
| +TestSuite.prototype.testEvalCallFrame = function(controller) {
|
| +};
|
| +
|
| +
|
| var uiTests = new TestSuite();
|
| }
|
|
|