Title: [205319] trunk
- Revision
- 205319
- Author
- [email protected]
- Date
- 2016-09-01 15:03:10 -0700 (Thu, 01 Sep 2016)
Log Message
Web Inspector: add Object.awaitEvent which is like singleFireEventListener but returns a promise
https://bugs.webkit.org/show_bug.cgi?id=161451
Patch by Devin Rousso <[email protected]> on 2016-09-01
Reviewed by Brian Burg.
Source/WebInspectorUI:
* UserInterface/Base/Object.js:
(WebInspector.Object.awaitEvent):
(WebInspector.Object.prototype.awaitEvent):
LayoutTests:
* inspector/unit-tests/object-expected.txt:
* inspector/unit-tests/object.html:
Modified Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (205318 => 205319)
--- trunk/LayoutTests/ChangeLog 2016-09-01 21:50:32 UTC (rev 205318)
+++ trunk/LayoutTests/ChangeLog 2016-09-01 22:03:10 UTC (rev 205319)
@@ -1,3 +1,13 @@
+2016-09-01 Devin Rousso <[email protected]>
+
+ Web Inspector: add Object.awaitEvent which is like singleFireEventListener but returns a promise
+ https://bugs.webkit.org/show_bug.cgi?id=161451
+
+ Reviewed by Brian Burg.
+
+ * inspector/unit-tests/object-expected.txt:
+ * inspector/unit-tests/object.html:
+
2016-09-01 Ryosuke Niwa <[email protected]>
Fix a typo in the previous commit. I didn't mean to comment out this test case I added per a review comment.
Modified: trunk/LayoutTests/inspector/unit-tests/object-expected.txt (205318 => 205319)
--- trunk/LayoutTests/inspector/unit-tests/object-expected.txt 2016-09-01 21:50:32 UTC (rev 205318)
+++ trunk/LayoutTests/inspector/unit-tests/object-expected.txt 2016-09-01 22:03:10 UTC (rev 205319)
@@ -2,6 +2,10 @@
== Running test suite: Object
--- Running test case: Events propagation
+-- Running test case: WebInspector.Object.prototype.dispatchEventToListeners
Dispatch count: 1
+-- Running test case: WebInspector.Object.prototype.awaitEvent
+PASS: Await event handler should be dispatched just once.
+Dispatch count: 1
+
Modified: trunk/LayoutTests/inspector/unit-tests/object.html (205318 => 205319)
--- trunk/LayoutTests/inspector/unit-tests/object.html 2016-09-01 21:50:32 UTC (rev 205318)
+++ trunk/LayoutTests/inspector/unit-tests/object.html 2016-09-01 22:03:10 UTC (rev 205319)
@@ -5,12 +5,12 @@
<script>
function test()
{
- let suite = InspectorTest.createSyncSuite("Object");
+ let suite = InspectorTest.createAsyncSuite("Object");
suite.addTestCase({
- name: "Events propagation",
+ name: "WebInspector.Object.prototype.dispatchEventToListeners",
description: "WebInspector.Object shouldn't dispatch constructor-level events multiple times",
- test: function() {
+ test(resolve, reject) {
class Parent extends WebInspector.Object {}
class Child extends Parent {}
@@ -23,9 +23,38 @@
child.dispatchEventToListeners(eventName);
InspectorTest.log("Dispatch count: " + dispatchCount);
+
+ resolve();
}
});
+ suite.addTestCase({
+ name: "WebInspector.Object.prototype.awaitEvent",
+ description: "awaitEvent should only trigger once",
+ test(resolve, reject) {
+ const eventName = "test";
+ let dispatchCount = 0;
+
+ let object = new WebInspector.Object;
+
+ object.awaitEvent(eventName).then(() => {
+ dispatchCount++;
+
+ InspectorTest.expectThat(dispatchCount === 1, "Await event handler should be dispatched just once.");
+ InspectorTest.log("Dispatch count: " + dispatchCount);
+
+ // Resolve test on second event dispatch.
+ object.awaitEvent(eventName).then(() => {
+ resolve();
+ });
+
+ object.dispatchEventToListeners(eventName);
+ });
+
+ object.dispatchEventToListeners(eventName);
+ }
+ });
+
suite.runTestCasesAndFinish();
}
</script>
Modified: trunk/Source/WebInspectorUI/ChangeLog (205318 => 205319)
--- trunk/Source/WebInspectorUI/ChangeLog 2016-09-01 21:50:32 UTC (rev 205318)
+++ trunk/Source/WebInspectorUI/ChangeLog 2016-09-01 22:03:10 UTC (rev 205319)
@@ -1,3 +1,14 @@
+2016-09-01 Devin Rousso <[email protected]>
+
+ Web Inspector: add Object.awaitEvent which is like singleFireEventListener but returns a promise
+ https://bugs.webkit.org/show_bug.cgi?id=161451
+
+ Reviewed by Brian Burg.
+
+ * UserInterface/Base/Object.js:
+ (WebInspector.Object.awaitEvent):
+ (WebInspector.Object.prototype.awaitEvent):
+
2016-09-01 Nikita Vasilyev <[email protected]>
Web Inspector: Minification detection produces false positives for small resources
Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Object.js (205318 => 205319)
--- trunk/Source/WebInspectorUI/UserInterface/Base/Object.js 2016-09-01 21:50:32 UTC (rev 205318)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Object.js 2016-09-01 22:03:10 UTC (rev 205319)
@@ -98,6 +98,13 @@
console.assert(didDelete, "removeEventListener cannot remove " + eventType.toString() + " because it doesn't exist.");
}
+ static awaitEvent(eventType)
+ {
+ return new Promise((resolve, reject) => {
+ this.singleFireEventListener(eventType, (event) => resolve(event), null);
+ });
+ }
+
// Only used by tests.
static hasEventListeners(eventType)
{
@@ -131,6 +138,7 @@
addEventListener() { return WebInspector.Object.addEventListener.apply(this, arguments); }
singleFireEventListener() { return WebInspector.Object.singleFireEventListener.apply(this, arguments); }
removeEventListener() { return WebInspector.Object.removeEventListener.apply(this, arguments); }
+ awaitEvent() { return WebInspector.Object.awaitEvent.apply(this, arguments); }
hasEventListeners() { return WebInspector.Object.hasEventListeners.apply(this, arguments); }
retainedObjectsWithPrototype() { return WebInspector.Object.retainedObjectsWithPrototype.apply(this, arguments); }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes