<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[187269] trunk/LayoutTests</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/187269">187269</a></dd>
<dt>Author</dt> <dd>burg@cs.washington.edu</dd>
<dt>Date</dt> <dd>2015-07-23 16:20:31 -0700 (Thu, 23 Jul 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Web Inspector: rewrite inspector-protocol/console tests to use new testing patterns
https://bugs.webkit.org/show_bug.cgi?id=147231

Reviewed by Joseph Pecoraro.

Restructure existing protocol tests for Console.messageAdded to use Promises and
modern event listener test interfaces. Add some new functionality to make it easier
install multiple protocol event listeners without clobbering.

This test also splits warnings-errors.html into two tests, one to cover CSS parser
warnings and one for JavaScript parser and runtime errors.

* http/tests/inspector-protocol/resources/InspectorTest.js:
(InspectorTest.sendCommand): Support arguments packaged in an object. This style is preferable
in tests because it is very explicit about what functionality and messages are covered.

(InspectorTest.awaitEvent): Added. This is a single-shot event listener that resolves a
promise when the desired protocol event is dispatched.

(InspectorTest.addEventListener): Reimplemented, based on code from WebInspector.Object.
Allows multiple listeners to be registered for a single protocol event.

(InspectorTest.AsyncTestSuite.prototype.runTestCases):
(InspectorTest.AsyncTestSuite):
(InspectorTest.SyncTestSuite.prototype.runTestCases):
(InspectorTest.SyncTestSuite):
(InspectorTest.log): Improve the formatting of test suite/test case output.

(InspectorFrontendAPI.dispatchMessageAsync): Dispatch to an array of listeners if available.
(InspectorTest.importScript): Clarify that this method performs a synchronous load.
(.InspectorTest.eventHandler.eventName): Deleted.
* inspector-protocol/async-test-suite-expected.txt: Rebaseline whitespace.
* inspector-protocol/sync-test-suite-expected.txt: Rebaseline whitespace.
* inspector-protocol/console/console-message-expected.txt:
* inspector-protocol/console/console-message.html:
* inspector-protocol/console/css-source-locations-expected.txt: Added.
* inspector-protocol/console/css-source-locations.html: Added.
* inspector-protocol/console/js-source-locations-expected.txt: Added.
* inspector-protocol/console/js-source-locations.html: Added.
* inspector-protocol/console/warnings-errors-expected.txt: Removed.
* inspector-protocol/console/warnings-errors.html: Removed.
* inspector-protocol/runtime/getProperties-expected.txt: Rebaseline whitespace.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestshttptestsinspectorprotocolresourcesInspectorTestjs">trunk/LayoutTests/http/tests/inspector-protocol/resources/InspectorTest.js</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolasynctestsuiteexpectedtxt">trunk/LayoutTests/inspector-protocol/async-test-suite-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolconsoleconsolemessageexpectedtxt">trunk/LayoutTests/inspector-protocol/console/console-message-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolconsoleconsolemessagehtml">trunk/LayoutTests/inspector-protocol/console/console-message.html</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolruntimegetPropertiesexpectedtxt">trunk/LayoutTests/inspector-protocol/runtime/getProperties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolsynctestsuiteexpectedtxt">trunk/LayoutTests/inspector-protocol/sync-test-suite-expected.txt</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsinspectorprotocolconsolecsssourcelocationsexpectedtxt">trunk/LayoutTests/inspector-protocol/console/css-source-locations-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolconsolecsssourcelocationshtml">trunk/LayoutTests/inspector-protocol/console/css-source-locations.html</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolconsolejssourcelocationsexpectedtxt">trunk/LayoutTests/inspector-protocol/console/js-source-locations-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolconsolejssourcelocationshtml">trunk/LayoutTests/inspector-protocol/console/js-source-locations.html</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsinspectorprotocolconsolewarningserrorsexpectedtxt">trunk/LayoutTests/inspector-protocol/console/warnings-errors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsinspectorprotocolconsolewarningserrorshtml">trunk/LayoutTests/inspector-protocol/console/warnings-errors.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/ChangeLog        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -1,3 +1,49 @@
</span><ins>+2015-07-23  Brian J. Burg  &lt;burg@cs.washington.edu&gt;
+
+        Web Inspector: rewrite inspector-protocol/console tests to use new testing patterns
+        https://bugs.webkit.org/show_bug.cgi?id=147231
+
+        Reviewed by Joseph Pecoraro.
+
+        Restructure existing protocol tests for Console.messageAdded to use Promises and
+        modern event listener test interfaces. Add some new functionality to make it easier
+        install multiple protocol event listeners without clobbering.
+
+        This test also splits warnings-errors.html into two tests, one to cover CSS parser
+        warnings and one for JavaScript parser and runtime errors.
+
+        * http/tests/inspector-protocol/resources/InspectorTest.js:
+        (InspectorTest.sendCommand): Support arguments packaged in an object. This style is preferable
+        in tests because it is very explicit about what functionality and messages are covered.
+
+        (InspectorTest.awaitEvent): Added. This is a single-shot event listener that resolves a
+        promise when the desired protocol event is dispatched.
+
+        (InspectorTest.addEventListener): Reimplemented, based on code from WebInspector.Object.
+        Allows multiple listeners to be registered for a single protocol event.
+
+        (InspectorTest.AsyncTestSuite.prototype.runTestCases):
+        (InspectorTest.AsyncTestSuite):
+        (InspectorTest.SyncTestSuite.prototype.runTestCases):
+        (InspectorTest.SyncTestSuite):
+        (InspectorTest.log): Improve the formatting of test suite/test case output.
+
+        (InspectorFrontendAPI.dispatchMessageAsync): Dispatch to an array of listeners if available.
+        (InspectorTest.importScript): Clarify that this method performs a synchronous load.
+        (.InspectorTest.eventHandler.eventName): Deleted.
+        * inspector-protocol/async-test-suite-expected.txt: Rebaseline whitespace.
+        * inspector-protocol/sync-test-suite-expected.txt: Rebaseline whitespace.
+        * inspector-protocol/console/console-message-expected.txt:
+        * inspector-protocol/console/console-message.html:
+        * inspector-protocol/console/css-source-locations-expected.txt: Added.
+        * inspector-protocol/console/css-source-locations.html: Added.
+        * inspector-protocol/console/js-source-locations-expected.txt: Added.
+        * inspector-protocol/console/js-source-locations.html: Added.
+        * inspector-protocol/console/warnings-errors-expected.txt: Removed.
+        * inspector-protocol/console/warnings-errors.html: Removed.
+        * inspector-protocol/runtime/getProperties-expected.txt: Rebaseline whitespace.
+
+
</ins><span class="cx"> 2015-07-23  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Windows test result gardening after Mac libxml changes.
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsinspectorprotocolresourcesInspectorTestjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/inspector-protocol/resources/InspectorTest.js (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/inspector-protocol/resources/InspectorTest.js        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/http/tests/inspector-protocol/resources/InspectorTest.js        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -29,12 +29,18 @@
</span><span class="cx"> InspectorTest._dispatchTable = [];
</span><span class="cx"> InspectorTest._requestId = -1;
</span><span class="cx"> InspectorTest.eventHandler = {};
</span><ins>+InspectorTest.logCount = 0;
</ins><span class="cx"> 
</span><span class="cx"> InspectorTest.dumpInspectorProtocolMessages = false;
</span><span class="cx"> InspectorTest.forceSyncDebugLogging = false;
</span><span class="cx"> 
</span><del>-InspectorTest.sendCommand = function(method, params, handler)
</del><ins>+InspectorTest.sendCommand = function(methodOrObject, params, handler)
</ins><span class="cx"> {
</span><ins>+    // Allow new-style arguments object, as in awaitCommand.
+    var method = methodOrObject;
+    if (typeof methodOrObject === &quot;object&quot;)
+        var {method, params, handler} = methodOrObject;
+
</ins><span class="cx">     this._dispatchTable[++this._requestId] = handler;
</span><span class="cx">     var messageObject = {method, params, &quot;id&quot;: this._requestId};
</span><span class="cx">     this.sendMessage(messageObject);
</span><span class="lines">@@ -52,6 +58,46 @@
</span><span class="cx">     }.bind(this));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+InspectorTest.awaitEvent = function(args)
+{
+    var {event} = args;
+    if (typeof event !== &quot;string&quot;)
+        throw new Error(&quot;Event must be a string.&quot;);
+
+    return new Promise(function(resolve, reject) {
+        InspectorTest.eventHandler[event] = function(message) {
+            InspectorTest.eventHandler[event] = undefined;
+            resolve(message);
+        }
+    });
+}
+
+InspectorTest.addEventListener = function(eventTypeOrObject, listener)
+{
+    var event = eventTypeOrObject;
+    if (typeof eventTypeOrObject === &quot;object&quot;)
+        var {event, listener} = eventTypeOrObject;
+
+    if (typeof event !== &quot;string&quot;)
+        throw new Error(&quot;Event name must be a string.&quot;);
+
+    if (typeof listener !== &quot;function&quot;)
+        throw new Error(&quot;Event listener must be callable.&quot;);
+
+    // Convert to an array of listeners.
+    var listeners = InspectorTest.eventHandler[event];
+    if (!listeners)
+        listeners = InspectorTest.eventHandler[event] = [];
+    else if (typeof listeners === &quot;function&quot;)
+        listeners = InspectorTest.eventHandler[event] = [listeners];
+
+    // Prevent registering multiple times.
+    if (listeners.includes(listener))
+        throw new Error(&quot;Cannot register the same listener more than once.&quot;);
+
+    listeners.push(listener);
+}
+
</ins><span class="cx"> InspectorTest.sendMessage = function(messageObject)
</span><span class="cx"> {
</span><span class="cx">     // This matches the debug dumping in InspectorBackend, which is bypassed
</span><span class="lines">@@ -87,9 +133,13 @@
</span><span class="cx">         if (!handler)
</span><span class="cx">             return;
</span><span class="cx"> 
</span><del>-        if (typeof handler == &quot;function&quot;)
</del><ins>+        if (typeof handler === &quot;function&quot;)
</ins><span class="cx">             handler(messageObject);
</span><del>-        else if (typeof handler === &quot;object&quot;) {
</del><ins>+        else if (handler instanceof Array) {
+            handler.map(function(listener) {
+                listener.call(null, messageObject);
+            });
+        } else if (typeof handler === &quot;object&quot;) {
</ins><span class="cx">             var {resolve, reject} = handler;
</span><span class="cx">             if (&quot;error&quot; in messageObject)
</span><span class="cx">                 reject(messageObject.error.message);
</span><span class="lines">@@ -99,32 +149,6 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-/**
-* Registers an event handler for messages coming from the InspectorBackend.
-* If multiple callbacks are registered for the same event, it will chain the execution.
-* @param {string} event name
-* @param {function} handler to be executed
-* @param {boolean} execute the handler before all other handlers
-*/
-InspectorTest.addEventListener = function(eventName, callback, capture)
-{
-    if (!InspectorTest.eventHandler[eventName]) {
-        InspectorTest.eventHandler[eventName] = callback;
-        return;
-    }
-    var firstHandler = InspectorTest.eventHandler[eventName];
-    var secondHandler = callback;
-    if (capture) {
-        // Swap firstHandler with the new callback, so that we execute the callback first.
-        [firstHandler, secondHandler] = [secondHandler, firstHandler];
-    }
-    InspectorTest.eventHandler[eventName] = function(messageObject)
-    {
-        firstHandler(messageObject);
-        secondHandler(messageObject);
-    };
-}
-
</del><span class="cx"> InspectorTest.AsyncTestSuite = class AsyncTestSuite {
</span><span class="cx">     constructor(name) {
</span><span class="cx">         if (!name || typeof name !== &quot;string&quot;)
</span><span class="lines">@@ -186,12 +210,19 @@
</span><span class="cx"> 
</span><span class="cx">         this._startedRunning = true;
</span><span class="cx"> 
</span><del>-        InspectorTest.log(&quot;Running test suite: &quot; + this.name);
</del><ins>+        InspectorTest.log(&quot;&quot;);
+        InspectorTest.log(&quot;== Running test suite: &quot; + this.name);
</ins><span class="cx"> 
</span><ins>+        // Avoid adding newlines if nothing was logged.
+        var priorLogCount = InspectorTest.logCount;
</ins><span class="cx">         var suite = this;
</span><del>-        var result = this.testcases.reduce(function(chain, testcase) {
</del><ins>+        var result = this.testcases.reduce(function(chain, testcase, i) {
</ins><span class="cx">             return chain.then(function() {
</span><del>-                InspectorTest.log(&quot;Running test case: &quot; + testcase.name);
</del><ins>+                if (i &gt; 0 &amp;&amp; priorLogCount + 1 &lt; InspectorTest.logCount)
+                    InspectorTest.log(&quot;&quot;);
+
+                priorLogCount = InspectorTest.logCount;
+                InspectorTest.log(&quot;-- Running test case: &quot; + testcase.name);
</ins><span class="cx">                 suite.runCount++;
</span><span class="cx">                 return new Promise(testcase.test);
</span><span class="cx">             });
</span><span class="lines">@@ -206,7 +237,7 @@
</span><span class="cx">             if (typeof message !== &quot;string&quot;)
</span><span class="cx">                 message = JSON.stringify(message);
</span><span class="cx"> 
</span><del>-            InspectorTest.log(&quot;EXCEPTION: &quot; + message);
</del><ins>+            InspectorTest.log(&quot;!! EXCEPTION: &quot; + message);
</ins><span class="cx">             throw e; // Reject this promise by re-throwing the error.
</span><span class="cx">         });
</span><span class="cx">     }
</span><span class="lines">@@ -267,11 +298,19 @@
</span><span class="cx"> 
</span><span class="cx">         this._startedRunning = true;
</span><span class="cx"> 
</span><del>-        InspectorTest.log(&quot;Running test suite: &quot; + this.name);
</del><ins>+        InspectorTest.log(&quot;&quot;);
+        InspectorTest.log(&quot;== Running test suite: &quot; + this.name);
</ins><span class="cx"> 
</span><ins>+        var priorLogCount = InspectorTest.logCount;
</ins><span class="cx">         var suite = this;
</span><del>-        for (var testcase of this.testcases) {
-            InspectorTest.log(&quot;Running test case: &quot; + testcase.name);
</del><ins>+        for (var i = 0; i &lt; this.testcases.length; i++) {
+            var testcase = this.testcases[i];
+            if (i &gt; 0 &amp;&amp; priorLogCount + 1 &lt; InspectorTest.logCount)
+                InspectorTest.log(&quot;&quot;);
+
+            priorLogCount = InspectorTest.logCount;
+
+            InspectorTest.log(&quot;-- Running test case: &quot; + testcase.name);
</ins><span class="cx">             suite.runCount++;
</span><span class="cx">             try {
</span><span class="cx">                 var result = testcase.test.call(null);
</span><span class="lines">@@ -290,7 +329,7 @@
</span><span class="cx">                 if (typeof message !== &quot;string&quot;)
</span><span class="cx">                     message = JSON.stringify(message);
</span><span class="cx"> 
</span><del>-                InspectorTest.log(&quot;EXCEPTION: &quot; + message);
</del><ins>+                InspectorTest.log(&quot;!! EXCEPTION: &quot; + message);
</ins><span class="cx">                 return false;
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="lines">@@ -302,6 +341,8 @@
</span><span class="cx"> // Logs a message to test document.
</span><span class="cx"> InspectorTest.log = function(message)
</span><span class="cx"> {
</span><ins>+    ++InspectorTest.logCount;
+
</ins><span class="cx">     if (this.forceSyncDebugLogging)
</span><span class="cx">         this.debugLog(message);
</span><span class="cx">     else
</span><span class="lines">@@ -341,7 +382,8 @@
</span><span class="cx"> InspectorTest.importScript = function(scriptName)
</span><span class="cx"> {
</span><span class="cx">     var xhr = new XMLHttpRequest();
</span><del>-    xhr.open(&quot;GET&quot;, scriptName, false);
</del><ins>+    var isAsyncRequest = false;
+    xhr.open(&quot;GET&quot;, scriptName, isAsyncRequest);
</ins><span class="cx">     xhr.send(null);
</span><span class="cx">     if (xhr.status !== 0 &amp;&amp; xhr.status !== 200)
</span><span class="cx">         throw new Error(&quot;Invalid script URL: &quot; + scriptName);
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolasynctestsuiteexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/async-test-suite-expected.txt (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/async-test-suite-expected.txt        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/inspector-protocol/async-test-suite-expected.txt        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -5,26 +5,29 @@
</span><span class="cx"> PASS: test case should require string name.
</span><span class="cx"> PASS: test case should require test function.
</span><span class="cx"> PASS: should not be able to run empty test suite.
</span><del>-Running test suite: AsyncTestSuite.RunTwiceSuite
</del><ins>+
+== Running test suite: AsyncTestSuite.RunTwiceSuite
</ins><span class="cx"> PASS: should not be able to run a test suite twice.
</span><del>-Running test case: DummyTest0
-Running test suite: AsyncTestSuite.SequentialExecution
</del><ins>+-- Running test case: DummyTest0
+
+== Running test suite: AsyncTestSuite.SequentialExecution
</ins><span class="cx"> PASS: AsyncTestSuite.RunTestCases() should return a Promise.
</span><del>-Running test case: DummyTest1
-Running test case: DummyTest2
-Running test case: DummyTest3
-Running test case: FailingTest4
-EXCEPTION: [object Object]
</del><ins>+-- Running test case: DummyTest1
+-- Running test case: DummyTest2
+-- Running test case: DummyTest3
+-- Running test case: FailingTest4
+!! EXCEPTION: [object Object]
</ins><span class="cx"> PASS: Promise from sequentialExecutionSuite.runTestCases() should reject when a test case fails.
</span><span class="cx"> PASS: Promise from sequentialExecutionSuite.runTestCases() should reject without altering its result value.
</span><span class="cx"> PASS: sequentialExecutionSuite should have executed four tests.
</span><span class="cx"> PASS: sequentialExecutionSuite should have passed three tests.
</span><span class="cx"> PASS: sequentialExecutionSuite should have failed 1 test.
</span><span class="cx"> PASS: sequentialExecutionSuite should have skipped zero tests.
</span><del>-Running test suite: AsyncTestSuite.AbortOnFailure
-Running test case: PassingTest5
-Running test case: FailingTest6
-EXCEPTION: {&quot;token&quot;:666}
</del><ins>+
+== Running test suite: AsyncTestSuite.AbortOnFailure
+-- Running test case: PassingTest5
+-- Running test case: FailingTest6
+!! EXCEPTION: {&quot;token&quot;:666}
</ins><span class="cx"> PASS: Promise from abortOnFailureSuite.runTestCases() should reject when a test case fails.
</span><span class="cx"> PASS: Promise from abortOnFailureSuite.runTestCases() should reject without altering its result value.
</span><span class="cx"> PASS: abortOnFailureSuite should have executed two tests.
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsoleconsolemessageexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/console/console-message-expected.txt (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/console-message-expected.txt        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/inspector-protocol/console/console-message-expected.txt        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -1,12 +1,48 @@
</span><del>-CONSOLE MESSAGE: line 7: log
-CONSOLE MESSAGE: line 8: info
-CONSOLE MESSAGE: line 9: warn
-CONSOLE MESSAGE: line 10: error
-CONSOLE MESSAGE: line 11: debug
-Tests that console log messages make it to the frontend and have expected source, type, and levels.
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;log&quot;,&quot;text&quot;:&quot;log&quot;,&quot;location&quot;:&quot;console-message.html:7:16&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;info&quot;,&quot;text&quot;:&quot;info&quot;,&quot;location&quot;:&quot;console-message.html:8:17&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;warn&quot;,&quot;location&quot;:&quot;console-message.html:9:17&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error&quot;,&quot;location&quot;:&quot;console-message.html:10:18&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;debug&quot;,&quot;text&quot;:&quot;debug&quot;,&quot;location&quot;:&quot;console-message.html:11:18&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
</del><ins>+CONSOLE MESSAGE: line 1: log
+CONSOLE MESSAGE: line 1: info
+CONSOLE MESSAGE: line 1: warn
+CONSOLE MESSAGE: line 1: error
+CONSOLE MESSAGE: line 1: debug
+Tests that console.log and related APIs cause Console.messageAdded events to be generated with correct source, type, level, and parameter types. 
</ins><span class="cx"> 
</span><ins>+== Running test suite: Console.MessagesFromCommandLineAPI
+-- Running test case: ConsoleLogString
+Evaluating expression: console.log(&quot;log&quot;);
+PASS: ConsoleMessage type should be 'console-api'.
+PASS: ConsoleMessage level should be 'log'.
+PASS: ConsoleMessage text should be 'log'.
+PASS: ConsoleMessage parameters.length === 1
+PASS: ConsoleMessage parameter 0 should have type 'string'.
+
+-- Running test case: ConsoleInfoString
+Evaluating expression: console.info(&quot;info&quot;);
+PASS: ConsoleMessage type should be 'console-api'.
+PASS: ConsoleMessage level should be 'info'.
+PASS: ConsoleMessage text should be 'info'.
+PASS: ConsoleMessage parameters.length === 1
+PASS: ConsoleMessage parameter 0 should have type 'string'.
+
+-- Running test case: ConsoleWarnString
+Evaluating expression: console.warn(&quot;warn&quot;);
+PASS: ConsoleMessage type should be 'console-api'.
+PASS: ConsoleMessage level should be 'warning'.
+PASS: ConsoleMessage text should be 'warn'.
+PASS: ConsoleMessage parameters.length === 1
+PASS: ConsoleMessage parameter 0 should have type 'string'.
+
+-- Running test case: ConsoleErrorString
+Evaluating expression: console.error(&quot;error&quot;);
+PASS: ConsoleMessage type should be 'console-api'.
+PASS: ConsoleMessage level should be 'error'.
+PASS: ConsoleMessage text should be 'error'.
+PASS: ConsoleMessage parameters.length === 1
+PASS: ConsoleMessage parameter 0 should have type 'string'.
+
+-- Running test case: ConsoleDebugString
+Evaluating expression: console.debug(&quot;debug&quot;);
+PASS: ConsoleMessage type should be 'console-api'.
+PASS: ConsoleMessage level should be 'debug'.
+PASS: ConsoleMessage text should be 'debug'.
+PASS: ConsoleMessage parameters.length === 1
+PASS: ConsoleMessage parameter 0 should have type 'string'.
+
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsoleconsolemessagehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/console/console-message.html (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/console-message.html        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/inspector-protocol/console/console-message.html        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> function generateSimpleConsoleMessages()
</span><span class="cx"> {
</span><span class="cx">     console.log(&quot;log&quot;);
</span><del>-    console.info(&quot;info&quot;); // Alias of log.
</del><ins>+    console.info(&quot;info&quot;);
</ins><span class="cx">     console.warn(&quot;warn&quot;);
</span><span class="cx">     console.error(&quot;error&quot;);
</span><span class="cx">     console.debug(&quot;debug&quot;);
</span><span class="lines">@@ -13,28 +13,126 @@
</span><span class="cx"> 
</span><span class="cx"> function test()
</span><span class="cx"> {
</span><ins>+    var suite = new InspectorTest.AsyncTestSuite(&quot;Console.MessagesFromCommandLineAPI&quot;);
+
+    addConsoleTestCase({
+        name: &quot;ConsoleLogString&quot;,
+        description: &quot;Test `console.log(\&quot;log\&quot;)`&quot;,
+        expression: 'console.log(&quot;log&quot;);',
+        expected: {
+            source: 'console-api',
+            level: 'log',
+            text: 'log',
+            parameters: ['string']
+        }
+    });
+
+    addConsoleTestCase({
+        name: &quot;ConsoleInfoString&quot;,
+        description: &quot;Test `console.info(\&quot;info\&quot;)`&quot;,
+        expression: 'console.info(&quot;info&quot;);',
+        expected: {
+            source: 'console-api',
+            level: 'info',
+            text: 'info',
+            parameters: ['string']
+        }
+    });
+
+    addConsoleTestCase({
+        name: &quot;ConsoleWarnString&quot;,
+        description: &quot;Test `console.warn(\&quot;warn\&quot;)`&quot;,
+        expression: 'console.warn(&quot;warn&quot;);',
+        expected: {
+            source: 'console-api',
+            level: 'warning',
+            text: 'warn',
+            parameters: ['string']
+        }
+    });
+
+    addConsoleTestCase({
+        name: &quot;ConsoleErrorString&quot;,
+        description: &quot;Test `console.error(\&quot;error\&quot;)`&quot;,
+        expression: 'console.error(&quot;error&quot;);',
+        expected: {
+            source: 'console-api',
+            level: 'error',
+            text: 'error',
+            parameters: ['string']
+        }
+    });
+
+    addConsoleTestCase({
+        name: &quot;ConsoleDebugString&quot;,
+        description: &quot;Test `console.debug(\&quot;debug\&quot;)`&quot;,
+        expression: 'console.debug(&quot;debug&quot;);',
+        expected: {
+            source: 'console-api',
+            level: 'debug',
+            text: 'debug',
+            parameters: ['string']
+        }
+    });
+
+    // Set up the console prior to running the test suite.
</ins><span class="cx">     InspectorTest.importScript(&quot;../../../../inspector-protocol/resources/console-helper.js&quot;);
</span><span class="cx"> 
</span><del>-    InspectorTest.sendCommand(&quot;Console.enable&quot;, {});
-    InspectorTest.sendCommand(&quot;Runtime.evaluate&quot;, {expression: &quot;generateSimpleConsoleMessages()&quot;});
</del><ins>+    InspectorTest.awaitCommand({
+        method: &quot;Console.enable&quot;,
+        params: {}
+    })
+    .then(function() {
+        suite.runTestCasesAndFinish();
+    })
+    .catch(fatalError);
</ins><span class="cx"> 
</span><del>-    var consoleMessageCount = 0;
-    const expectedConsoleMessages = 5;
</del><ins>+    function fatalError(e) {
+        InspectorTest.log(&quot;Test failed with fatal error: &quot; + JSON.stringify(e));
+        InspectorTest.completeTest();
+    }
</ins><span class="cx"> 
</span><del>-    InspectorTest.eventHandler[&quot;Console.messageAdded&quot;] = function(messageObject)
-    {
-        var simplifiedMessage = ConsoleHelper.simplifiedConsoleMessage(messageObject);
-        InspectorTest.log(JSON.stringify(simplifiedMessage));
</del><ins>+    function addConsoleTestCase(args) {
+        var {name, description, expression, expected} = args;
+        suite.addTestCase({
+            name,
+            description,
+            test: function(resolve, reject) {
+                InspectorTest.awaitEvent({
+                    event: &quot;Console.messageAdded&quot;,
+                })
+                .then(function(messageObject) {
+                    var consoleMessage = messageObject.params.message;
+                    var {source, level, text, parameters} = consoleMessage;
+                    InspectorTest.assert(source === expected.source, &quot;ConsoleMessage type should be '&quot; + expected.source + &quot;'.&quot;);
+                    InspectorTest.assert(level === expected.level, &quot;ConsoleMessage level should be '&quot; + expected.level + &quot;'.&quot;);
+                    InspectorTest.assert(text === expected.text, &quot;ConsoleMessage text should be '&quot; + expected.text + &quot;'.&quot;);
</ins><span class="cx"> 
</span><del>-        if (++consoleMessageCount === expectedConsoleMessages)
-            InspectorTest.completeTest();
</del><ins>+                    InspectorTest.assert(parameters.length === expected.parameters.length, &quot;ConsoleMessage parameters.length === &quot; + expected.parameters.length);
+                    for (var i = 0; i &lt; parameters.length; ++i) {
+                        var expectedType = expected.parameters[i];
+                        InspectorTest.assert(parameters[i].type === expectedType, &quot;ConsoleMessage parameter &quot; + i + &quot; should have type '&quot; + expectedType + &quot;'.&quot;);
+                    }
+                    resolve();
+                })
+                .catch(reject);
+
+                // Cause a messageAdded event to be generated.
+                InspectorTest.log(&quot;Evaluating expression: &quot; + expression);
+                InspectorTest.sendCommand({
+                    method: &quot;Runtime.evaluate&quot;,
+                    params: {expression}
+                });
+            }
+        });
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body onload=&quot;runTest()&quot;&gt;
</span><span class="cx"> &lt;p&gt;
</span><del>-Tests that console log messages make it to the frontend and have expected source, type, and levels.&lt;br&gt;
</del><ins>+Tests that &lt;code&gt;console.log&lt;/code&gt; and related APIs cause &lt;code&gt;Console.messageAdded&lt;/code&gt; events to be generated with correct source, type, level, and parameter types.
+&lt;br&gt;
</ins><span class="cx"> &lt;/p&gt;
</span><span class="cx"> &lt;/body&gt;
</span><span class="cx"> &lt;/html&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsolecsssourcelocationsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector-protocol/console/css-source-locations-expected.txt (0 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/css-source-locations-expected.txt                                (rev 0)
+++ trunk/LayoutTests/inspector-protocol/console/css-source-locations-expected.txt        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+Tests that CSS parser warnings from inline style tags and external stylesheets are sent to the console with correct line and column information.
+{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;css-source-locations.html:5:20&quot;}
+{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;css-source-locations.html:6:14&quot;}
+{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;css-source-locations.html:7:7&quot;}
+{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;css-source-locations.html:9:8&quot;}
+{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;errors.css:1:7&quot;}
+{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;errors.css:1:29&quot;}
+{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;errors.css:4:5&quot;}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsolecsssourcelocationshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector-protocol/console/css-source-locations.html (0 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/css-source-locations.html                                (rev 0)
+++ trunk/LayoutTests/inspector-protocol/console/css-source-locations.html        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;../../http/tests/inspector-protocol/resources/protocol-test.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;../resources/errors.css&quot;&gt;
+  &lt;style&gt;    div { * color: red; }&lt;/style&gt;
+&lt;style&gt;div { * color: red; }
+div { * color: red; }
+   div {
+       *
+       color:
+       red;
+   }
+&lt;/style&gt;
+&lt;script&gt;
+function test()
+{
+    InspectorTest.importScript(&quot;../../../../inspector-protocol/resources/console-helper.js&quot;);
+
+    var consoleMessageCount = 0;
+    const expectedConsoleMessageCount = 7;
+
+    // Due to the difficulty of testing inline style tags in a test case, this test
+    // is a reference test that contains serialized Console.messageAdded event data.
+    InspectorTest.addEventListener({
+        event: &quot;Console.messageAdded&quot;,
+        listener: function(messageObject) {
+            var simplifiedMessage = ConsoleHelper.simplifiedConsoleMessage(messageObject);
+            InspectorTest.log(JSON.stringify(simplifiedMessage));
+
+            if (++consoleMessageCount === expectedConsoleMessageCount)
+                InspectorTest.completeTest();
+        }
+    });
+
+    // Start the test.
+    InspectorTest.sendCommand({
+        method: &quot;Console.enable&quot;,
+        params: {}
+    });
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;runTest()&quot;&gt;
+&lt;p&gt;
+Tests that CSS parser warnings from inline style tags and external stylesheets are sent to the console with correct line and column information.&lt;br&gt;
+&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsolejssourcelocationsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector-protocol/console/js-source-locations-expected.txt (0 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/js-source-locations-expected.txt                                (rev 0)
+++ trunk/LayoutTests/inspector-protocol/console/js-source-locations-expected.txt        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+CONSOLE MESSAGE: line 1: error script
+CONSOLE MESSAGE: line 1: warn script
+CONSOLE MESSAGE: line 5: error script
+CONSOLE MESSAGE: line 6: warn script
+CONSOLE MESSAGE: line 5: TypeError: undefined is not an object (evaluating '[].x.x')
+CONSOLE MESSAGE: line 7: warn 1
+CONSOLE MESSAGE: line 7: error 1
+CONSOLE MESSAGE: line 8: error 2
+Tests that JavaScript errors and warnings from inline script tags and external files are sent to the console with correct line and column information.
+{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error script&quot;,&quot;location&quot;:&quot;errors.js:1:14&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
+{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;warn script&quot;,&quot;location&quot;:&quot;errors.js:1:44&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
+{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error script&quot;,&quot;location&quot;:&quot;errors.js:5:18&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
+{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;warn script&quot;,&quot;location&quot;:&quot;errors.js:6:17&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
+{&quot;source&quot;:&quot;javascript&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;TypeError: undefined is not an object (evaluating '[].x.x')&quot;,&quot;location&quot;:&quot;js-source-locations.html:5:18&quot;}
+{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;warn 1&quot;,&quot;location&quot;:&quot;js-source-locations.html:7:13&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
+{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error 1&quot;,&quot;location&quot;:&quot;js-source-locations.html:7:38&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
+{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error 2&quot;,&quot;location&quot;:&quot;js-source-locations.html:8:17&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsolejssourcelocationshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/inspector-protocol/console/js-source-locations.html (0 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/js-source-locations.html                                (rev 0)
+++ trunk/LayoutTests/inspector-protocol/console/js-source-locations.html        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;html&gt;
+&lt;head&gt;
+&lt;script type=&quot;text/javascript&quot; src=&quot;../../http/tests/inspector-protocol/resources/protocol-test.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../resources/errors.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
+  &lt;script&gt;   [].x.x   &lt;/script&gt;
+&lt;script&gt;
+console.warn(&quot;warn 1&quot;); console.error(&quot;error 1&quot;);
+   console.error(&quot;error 2&quot;);
+&lt;/script&gt;
+&lt;script&gt;
+function test()
+{
+    InspectorTest.importScript(&quot;../../../../inspector-protocol/resources/console-helper.js&quot;);
+
+    var consoleMessageCount = 0;
+    const expectedConsoleMessageCount = 8;
+
+    // Due to the difficulty of testing inline script tags in a test case, this test
+    // is a reference test that contains serialized Console.messageAdded event data.
+    InspectorTest.addEventListener({
+        event: &quot;Console.messageAdded&quot;,
+        listener: function(messageObject) {
+            var simplifiedMessage = ConsoleHelper.simplifiedConsoleMessage(messageObject);
+            InspectorTest.log(JSON.stringify(simplifiedMessage));
+
+            if (++consoleMessageCount === expectedConsoleMessageCount)
+                InspectorTest.completeTest();
+        }
+    });
+
+    InspectorTest.sendCommand({
+        method: &quot;Console.enable&quot;,
+        params: {}
+    });
+}
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;runTest()&quot;&gt;
+&lt;p&gt;
+Tests that JavaScript errors and warnings from inline script tags and external files are sent to the console with correct line and column information.&lt;br&gt;
+&lt;/p&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsolewarningserrorsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/inspector-protocol/console/warnings-errors-expected.txt (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/warnings-errors-expected.txt        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/inspector-protocol/console/warnings-errors-expected.txt        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -1,25 +0,0 @@
</span><del>-CONSOLE MESSAGE: line 1: error script
-CONSOLE MESSAGE: line 1: warn script
-CONSOLE MESSAGE: line 5: error script
-CONSOLE MESSAGE: line 6: warn script
-CONSOLE MESSAGE: line 15: TypeError: undefined is not an object (evaluating '[].x.x')
-CONSOLE MESSAGE: line 17: warn 1
-CONSOLE MESSAGE: line 17: error 1
-CONSOLE MESSAGE: line 18: error 2
-Tests that CSS/JavaScript errors and warnings are sent to the console with line and column information.
-{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;warnings-errors.html:5:20&quot;}
-{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;warnings-errors.html:6:14&quot;}
-{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;warnings-errors.html:7:7&quot;}
-{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;warnings-errors.html:9:8&quot;}
-{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;errors.css:1:7&quot;}
-{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;errors.css:1:29&quot;}
-{&quot;source&quot;:&quot;css&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;Invalid CSS property declaration at: *&quot;,&quot;location&quot;:&quot;errors.css:4:5&quot;}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error script&quot;,&quot;location&quot;:&quot;errors.js:1:14&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;warn script&quot;,&quot;location&quot;:&quot;errors.js:1:44&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error script&quot;,&quot;location&quot;:&quot;errors.js:5:18&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;warn script&quot;,&quot;location&quot;:&quot;errors.js:6:17&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;javascript&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;TypeError: undefined is not an object (evaluating '[].x.x')&quot;,&quot;location&quot;:&quot;warnings-errors.html:15:18&quot;}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;warning&quot;,&quot;text&quot;:&quot;warn 1&quot;,&quot;location&quot;:&quot;warnings-errors.html:17:13&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error 1&quot;,&quot;location&quot;:&quot;warnings-errors.html:17:38&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-{&quot;source&quot;:&quot;console-api&quot;,&quot;level&quot;:&quot;error&quot;,&quot;text&quot;:&quot;error 2&quot;,&quot;location&quot;:&quot;warnings-errors.html:18:17&quot;,&quot;parameters&quot;:[{&quot;type&quot;:&quot;string&quot;}]}
-
</del></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolconsolewarningserrorshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/inspector-protocol/console/warnings-errors.html (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/console/warnings-errors.html        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/inspector-protocol/console/warnings-errors.html        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -1,46 +0,0 @@
</span><del>-&lt;html&gt;
-&lt;head&gt;
-&lt;script type=&quot;text/javascript&quot; src=&quot;../../http/tests/inspector-protocol/resources/protocol-test.js&quot;&gt;&lt;/script&gt;
-&lt;link rel=&quot;stylesheet&quot; href=&quot;../resources/errors.css&quot;&gt;
-  &lt;style&gt;    div { * color: red; }&lt;/style&gt;
-&lt;style&gt;div { * color: red; }
-div { * color: red; }
-   div {
-       *
-       color:
-       red;
-   }
-&lt;/style&gt;
-&lt;script src=&quot;../resources/errors.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
-  &lt;script&gt;   [].x.x   &lt;/script&gt;
-&lt;script&gt;
-console.warn(&quot;warn 1&quot;); console.error(&quot;error 1&quot;);
-   console.error(&quot;error 2&quot;);
-&lt;/script&gt;
-&lt;script&gt;
-function test()
-{
-    InspectorTest.importScript(&quot;../../../../inspector-protocol/resources/console-helper.js&quot;);
-
-    InspectorTest.sendCommand(&quot;Console.enable&quot;, {});
-
-    var consoleMessageCount = 0;
-    const expectedConsoleMessages = 15;
-
-    InspectorTest.eventHandler[&quot;Console.messageAdded&quot;] = function(messageObject)
-    {
-        var simplifiedMessage = ConsoleHelper.simplifiedConsoleMessage(messageObject);
-        InspectorTest.log(JSON.stringify(simplifiedMessage));
-
-        if (++consoleMessageCount === expectedConsoleMessages)
-            InspectorTest.completeTest();
-    }
-}
-&lt;/script&gt;
-&lt;/head&gt;
-&lt;body onload=&quot;runTest()&quot;&gt;
-&lt;p&gt;
-Tests that CSS/JavaScript errors and warnings are sent to the console with line and column information.&lt;br&gt;
-&lt;/p&gt;
-&lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolruntimegetPropertiesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/runtime/getProperties-expected.txt (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/runtime/getProperties-expected.txt        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/inspector-protocol/runtime/getProperties-expected.txt        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -1,10 +1,12 @@
</span><del>-Running test suite: Runtime.getProperties
-Running test case: CheckPropertiesOfWrapperObject
</del><ins>+
+== Running test suite: Runtime.getProperties
+-- Running test case: CheckPropertiesOfWrapperObject
</ins><span class="cx"> Evaluating expression: (function(){var r = Object(5); r.foo = 'cat';return r;})()
</span><span class="cx"> Properties:
</span><span class="cx">   __proto__ object Number
</span><span class="cx">   foo string cat
</span><del>-Running test case: CheckPropertiesOfArray
</del><ins>+
+-- Running test case: CheckPropertiesOfArray
</ins><span class="cx"> Evaluating expression: ['red', 'green', 'blue']
</span><span class="cx"> Properties:
</span><span class="cx">   __proto__ object Array
</span><span class="lines">@@ -12,7 +14,8 @@
</span><span class="cx">   1 string green
</span><span class="cx">   2 string blue
</span><span class="cx">   length number 3
</span><del>-Running test case: CheckPropertiesOfBoundConstructor
</del><ins>+
+-- Running test case: CheckPropertiesOfBoundConstructor
</ins><span class="cx"> Evaluating expression: Number.bind({}, 5)
</span><span class="cx"> Properties:
</span><span class="cx">   __proto__ function function () {
</span></span></pre></div>
<a id="trunkLayoutTestsinspectorprotocolsynctestsuiteexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/inspector-protocol/sync-test-suite-expected.txt (187268 => 187269)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/inspector-protocol/sync-test-suite-expected.txt        2015-07-23 23:16:07 UTC (rev 187268)
+++ trunk/LayoutTests/inspector-protocol/sync-test-suite-expected.txt        2015-07-23 23:20:31 UTC (rev 187269)
</span><span class="lines">@@ -5,24 +5,27 @@
</span><span class="cx"> PASS: test case should require string name.
</span><span class="cx"> PASS: test case should require test function.
</span><span class="cx"> PASS: should not be able to run empty test suite.
</span><del>-Running test suite: SyncTestSuite.RunTwiceSuite
-Running test case: DummyTest0
</del><ins>+
+== Running test suite: SyncTestSuite.RunTwiceSuite
+-- Running test case: DummyTest0
</ins><span class="cx"> PASS: Return value of runTwiceSuite.runTestCases() should be true when all tests pass.
</span><span class="cx"> PASS: should not be able to run a test suite twice.
</span><del>-Running test suite: SyncTestSuite.SequentialExecution
-Running test case: DummyTest1
-Running test case: DummyTest2
-Running test case: DummyTest3
-Running test case: FailingTest4
-EXCEPTION: [object Object]
</del><ins>+
+== Running test suite: SyncTestSuite.SequentialExecution
+-- Running test case: DummyTest1
+-- Running test case: DummyTest2
+-- Running test case: DummyTest3
+-- Running test case: FailingTest4
+!! EXCEPTION: [object Object]
</ins><span class="cx"> PASS: Return value of sequentialExecutionSuite.runTestCases() should be false when a test case fails.
</span><span class="cx"> PASS: sequentialExecutionSuite should have executed four tests.
</span><span class="cx"> PASS: sequentialExecutionSuite should have passed three tests.
</span><span class="cx"> PASS: sequentialExecutionSuite should have failed 1 test.
</span><span class="cx"> PASS: sequentialExecutionSuite should have skipped zero tests.
</span><del>-Running test suite: SyncTestSuite.AbortOnFailure
-Running test case: PassingTest5
-Running test case: FailingTest6
</del><ins>+
+== Running test suite: SyncTestSuite.AbortOnFailure
+-- Running test case: PassingTest5
+-- Running test case: FailingTest6
</ins><span class="cx"> PASS: Return value of abortOnFailureSuite.runTestCases() should be false when a test case fails.
</span><span class="cx"> PASS: abortOnFailureSuite should have executed two tests.
</span><span class="cx"> PASS: abortOnFailureSuite should have passed one test.
</span></span></pre>
</div>
</div>

</body>
</html>