Diff
Modified: trunk/LayoutTests/ChangeLog (200534 => 200535)
--- trunk/LayoutTests/ChangeLog 2016-05-07 00:05:58 UTC (rev 200534)
+++ trunk/LayoutTests/ChangeLog 2016-05-07 03:08:18 UTC (rev 200535)
@@ -1,3 +1,16 @@
+2016-05-06 Joseph Pecoraro <pecor...@apple.com>
+
+ Web Inspector: Improve console.count()
+ https://bugs.webkit.org/show_bug.cgi?id=157439
+ <rdar://problem/26152654>
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/console/console-api-expected.txt:
+ * inspector/console/console-count-expected.txt: Added.
+ * inspector/console/console-count.html: Added.
+ * inspector/console/console-time.html:
+
2016-05-06 Simon Fraser <simon.fra...@apple.com>
Enable IOS_TEXT_AUTOSIZING on Mac and make it testable
Modified: trunk/LayoutTests/inspector/console/console-api-expected.txt (200534 => 200535)
--- trunk/LayoutTests/inspector/console/console-api-expected.txt 2016-05-07 00:05:58 UTC (rev 200534)
+++ trunk/LayoutTests/inspector/console/console-api-expected.txt 2016-05-07 03:08:18 UTC (rev 200535)
@@ -621,7 +621,7 @@
"_listeners": null,
"_source": "console-api",
"_level": "debug",
- "_messageText": "<no label>: 1",
+ "_messageText": "Global: 1",
"_type": "log",
"_url": null,
"_line": 3,
@@ -636,7 +636,7 @@
"_listeners": null,
"_source": "console-api",
"_level": "debug",
- "_messageText": "<no label>: 2",
+ "_messageText": "Global: 2",
"_type": "log",
"_url": null,
"_line": 3,
@@ -651,7 +651,7 @@
"_listeners": null,
"_source": "console-api",
"_level": "debug",
- "_messageText": "<no label>: 3",
+ "_messageText": ": 1",
"_type": "log",
"_url": null,
"_line": 3,
@@ -681,7 +681,7 @@
"_listeners": null,
"_source": "console-api",
"_level": "debug",
- "_messageText": "<no label>: 4",
+ "_messageText": ": 2",
"_type": "log",
"_url": null,
"_line": 3,
Added: trunk/LayoutTests/inspector/console/console-count-expected.txt (0 => 200535)
--- trunk/LayoutTests/inspector/console/console-count-expected.txt (rev 0)
+++ trunk/LayoutTests/inspector/console/console-count-expected.txt 2016-05-07 03:08:18 UTC (rev 200535)
@@ -0,0 +1,44 @@
+Tests for the console.count API.
+
+
+== Running test suite: console.count
+-- Running test case: NoArguments
+Global: 1
+Global: 2
+Global: 3
+Global: 4
+Global: 5
+Global: 6
+Global: 7
+Global: 8
+Global: 9
+Global: 10
+Global: 11
+Global: 12
+Global: 13
+Global: 14
+Global: 15
+Global: 16
+
+-- Running test case: WithLabel
+alpha: 1
+alpha: 2
+beta: 1
+alpha: 3
+alpha: 4
+alpha: 5
+beta: 2
+alpha: 6
+alpha: 7
+alpha: 8
+beta: 3
+alpha: 9
+alpha: 10
+alpha: 11
+beta: 4
+alpha: 12
+alpha: 13
+alpha: 14
+beta: 5
+alpha: 15
+
Added: trunk/LayoutTests/inspector/console/console-count.html (0 => 200535)
--- trunk/LayoutTests/inspector/console/console-count.html (rev 0)
+++ trunk/LayoutTests/inspector/console/console-count.html 2016-05-07 03:08:18 UTC (rev 200535)
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<script>
+function triggerCountNoArguments() {
+ for (let i = 0; i < 10; ++i) {
+ console.count();
+ if (i % 2)
+ console.count();
+ }
+}
+
+function triggerLabeledCounters() {
+ for (let i = 0; i < 10; ++i) {
+ console.count("alpha");
+ if (i % 2) {
+ console.count("beta");
+ console.count("alpha");
+ }
+ }
+}
+
+function test()
+{
+ let suite = InspectorTest.createAsyncSuite("console.count");
+
+ suite.addTestCase({
+ name: "NoArguments",
+ description: "No arguments increments a shared global counter.",
+ test: (resolve, reject) => {
+ let seen = 0;
+ const expected = 16;
+ WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.MessageAdded, handler);
+ function handler(event) {
+ let message = event.data.message;
+ InspectorTest.log(message.messageText);
+ if (++seen === expected) {
+ WebInspector.logManager.removeEventListener(WebInspector.LogManager.Event.MessageAdded, handler);
+ resolve();
+ }
+ }
+
+ InspectorTest.evaluateInPage("triggerCountNoArguments()"); // 15
+ InspectorTest.evaluateInPage("console.count()"); // 1
+ }
+ });
+
+ suite.addTestCase({
+ name: "WithLabel",
+ description: "Labeled counters increment the label.",
+ test: (resolve, reject) => {
+ let seen = 0;
+ const expected = 20;
+ WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.MessageAdded, handler);
+ function handler(event) {
+ let message = event.data.message;
+ InspectorTest.log(message.messageText);
+ if (++seen === expected) {
+ WebInspector.logManager.removeEventListener(WebInspector.LogManager.Event.MessageAdded, handler);
+ resolve();
+ }
+ }
+
+ InspectorTest.evaluateInPage("triggerLabeledCounters()");
+ }
+ });
+
+ suite.runTestCasesAndFinish();
+}
+</script>
+</head>
+<body _onload_="runTest()">
+<p>Tests for the console.count API.</p>
+</body>
+</html>
Modified: trunk/LayoutTests/inspector/console/console-time.html (200534 => 200535)
--- trunk/LayoutTests/inspector/console/console-time.html 2016-05-07 00:05:58 UTC (rev 200534)
+++ trunk/LayoutTests/inspector/console/console-time.html 2016-05-07 03:08:18 UTC (rev 200535)
@@ -21,7 +21,7 @@
if (++seen === expected) {
WebInspector.logManager.removeEventListener(WebInspector.LogManager.Event.MessageAdded, handler);
resolve();
- }
+ }
}
InspectorTest.evaluateInPage("console.time()");
@@ -39,8 +39,6 @@
name: "UserLabels",
description: "Test that user labels works as expected.",
test: (resolve, reject) => {
- let seen = 0;
- const expected = 3;
WebInspector.logManager.singleFireEventListener(WebInspector.LogManager.Event.MessageAdded, (event) => {
let message = event.data.message;
InspectorTest.expectThat(message.type === WebInspector.ConsoleMessage.MessageType.Timing, "Should receive a Timing type message.");
@@ -68,7 +66,7 @@
if (++seen === expected) {
WebInspector.logManager.removeEventListener(WebInspector.LogManager.Event.MessageAdded, handler);
resolve();
- }
+ }
}
InspectorTest.evaluateInPage("console.time('my-label-1')");
@@ -94,7 +92,7 @@
if (message.type === WebInspector.ConsoleMessage.MessageType.Timing) {
WebInspector.logManager.removeEventListener(WebInspector.LogManager.Event.MessageAdded, handler);
resolve();
- }
+ }
}
InspectorTest.evaluateInPage("console.time()");
Modified: trunk/Source/_javascript_Core/ChangeLog (200534 => 200535)
--- trunk/Source/_javascript_Core/ChangeLog 2016-05-07 00:05:58 UTC (rev 200534)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-05-07 03:08:18 UTC (rev 200535)
@@ -1,3 +1,17 @@
+2016-05-06 Joseph Pecoraro <pecor...@apple.com>
+
+ Web Inspector: Improve console.count()
+ https://bugs.webkit.org/show_bug.cgi?id=157439
+ <rdar://problem/26152654>
+
+ Reviewed by Timothy Hatcher.
+
+ - make console.count() increment an unnamed global counter.
+ - make console.count(label) increment a counter with that label name.
+
+ * inspector/agents/InspectorConsoleAgent.cpp:
+ (Inspector::InspectorConsoleAgent::count):
+
2016-05-06 Simon Fraser <simon.fra...@apple.com>
Enable IOS_TEXT_AUTOSIZING on Mac and make it testable
Modified: trunk/Source/_javascript_Core/inspector/agents/InspectorConsoleAgent.cpp (200534 => 200535)
--- trunk/Source/_javascript_Core/inspector/agents/InspectorConsoleAgent.cpp 2016-05-07 00:05:58 UTC (rev 200534)
+++ trunk/Source/_javascript_Core/inspector/agents/InspectorConsoleAgent.cpp 2016-05-07 03:08:18 UTC (rev 200535)
@@ -179,30 +179,26 @@
void InspectorConsoleAgent::count(JSC::ExecState* state, PassRefPtr<ScriptArguments> arguments)
{
RefPtr<ScriptCallStack> callStack(createScriptCallStackForConsole(state, ScriptCallStack::maxCallStackSizeToCapture));
- const ScriptCallFrame& lastCaller = callStack->at(0);
- // Follow Firebug's behavior of counting with null and undefined title in
- // the same bucket as no argument
- String title;
- arguments->getFirstArgumentAsString(title);
- String identifier = title + '@' + lastCaller.sourceURL() + ':' + String::number(lastCaller.lineNumber());
- HashMap<String, unsigned>::iterator it = m_counts.find(identifier);
- int count;
- if (it == m_counts.end())
- count = 1;
- else {
- count = it->value + 1;
- m_counts.remove(it);
+ String title;
+ String identifier;
+ if (!arguments->argumentCount()) {
+ // '@' prefix for engine generated labels.
+ title = ASCIILiteral("Global");
+ identifier = makeString('@', title);
+ } else {
+ // '#' prefix for user labels.
+ arguments->getFirstArgumentAsString(title);
+ identifier = makeString('#', title);
}
- m_counts.add(identifier, count);
+ auto result = m_counts.add(identifier, 1);
+ if (!result.isNewEntry)
+ result.iterator->value += 1;
- String message;
- if (title.isEmpty())
- message = "<no label>: " + String::number(count);
- else
- message = title + ": " + String::number(count);
+ // FIXME: Web Inspector should have a better UI for counters, but for now we just log an updated counter value.
+ String message = makeString(title, ": ", String::number(result.iterator->value));
addMessageToConsole(std::make_unique<ConsoleMessage>(MessageSource::ConsoleAPI, MessageType::Log, MessageLevel::Debug, message, callStack));
}