Title: [200471] trunk/Source/WebInspectorUI
Revision
200471
Author
[email protected]
Date
2016-05-05 13:12:20 -0700 (Thu, 05 May 2016)

Log Message

Web Inspector: Console is unresponsive for >10 seconds when it tries to render 10,000 messages
https://bugs.webkit.org/show_bug.cgi?id=157368
<rdar://problem/26103657>

Reviewed by Timothy Hatcher.

Render only up to 100 messages per animation frame to keep the Inspector's UI responsive.

* UserInterface/Controllers/_javascript_LogViewController.js:
(WebInspector._javascript_LogViewController.prototype.renderPendingMessages):

Modified Paths

Diff

Modified: trunk/Source/WebInspectorUI/ChangeLog (200470 => 200471)


--- trunk/Source/WebInspectorUI/ChangeLog	2016-05-05 20:01:13 UTC (rev 200470)
+++ trunk/Source/WebInspectorUI/ChangeLog	2016-05-05 20:12:20 UTC (rev 200471)
@@ -1,3 +1,16 @@
+2016-05-05  Nikita Vasilyev  <[email protected]>
+
+        Web Inspector: Console is unresponsive for >10 seconds when it tries to render 10,000 messages
+        https://bugs.webkit.org/show_bug.cgi?id=157368
+        <rdar://problem/26103657>
+
+        Reviewed by Timothy Hatcher.
+
+        Render only up to 100 messages per animation frame to keep the Inspector's UI responsive.
+
+        * UserInterface/Controllers/_javascript_LogViewController.js:
+        (WebInspector._javascript_LogViewController.prototype.renderPendingMessages):
+
 2016-05-05  Joseph Pecoraro  <[email protected]>
 
         Crash if you type "debugger" in the console and continue

Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/_javascript_LogViewController.js (200470 => 200471)


--- trunk/Source/WebInspectorUI/UserInterface/Controllers/_javascript_LogViewController.js	2016-05-05 20:01:13 UTC (rev 200470)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/_javascript_LogViewController.js	2016-05-05 20:12:20 UTC (rev 200471)
@@ -285,13 +285,13 @@
         if (this._pendingMessages.length === 0)
             return;
 
-        let lastMessageView = this._pendingMessages.lastValue;
+        const maxMessagesPerFrame = 100;
+        let messages = this._pendingMessages.splice(0, maxMessagesPerFrame);
+
+        let lastMessageView = messages.lastValue;
         let isCommandView = lastMessageView instanceof WebInspector.ConsoleCommandView;
         let shouldScrollToBottom = isCommandView || lastMessageView.message.type === WebInspector.ConsoleMessage.MessageType.Result || this.isScrolledToBottom();
 
-        var messages = this._pendingMessages;
-        this._pendingMessages = [];
-
         for (let messageView of messages) {
             messageView.render();
             this._didRenderConsoleMessageView(messageView);
@@ -301,6 +301,9 @@
             this.scrollToBottom();
 
         WebInspector.quickConsole.needsLayout();
+
+        if (this._pendingMessages.length > 0)
+            this.renderPendingMessagesSoon();
     }
 
     renderPendingMessagesSoon()
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to