Title: [105758] trunk/Source/WebCore
Revision
105758
Author
[email protected]
Date
2012-01-24 10:55:52 -0800 (Tue, 24 Jan 2012)

Log Message

Web Inspector: incorrect highlight position when searching in console
https://bugs.webkit.org/show_bug.cgi?id=76837

Reviewed by Yury Semikhatsky.

* inspector/front-end/ConsoleMessage.js:
(WebInspector.ConsoleMessageImpl.prototype._formatMessage):
(WebInspector.ConsoleMessageImpl.prototype.clearHighlight):
(WebInspector.ConsoleMessageImpl.prototype.highlightSearchResults):
(WebInspector.ConsoleMessageImpl.prototype._highlightSearchResultsInElement):
(WebInspector.ConsoleMessageImpl.prototype.matchesRegex):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (105757 => 105758)


--- trunk/Source/WebCore/ChangeLog	2012-01-24 18:54:43 UTC (rev 105757)
+++ trunk/Source/WebCore/ChangeLog	2012-01-24 18:55:52 UTC (rev 105758)
@@ -1,3 +1,17 @@
+2012-01-24  Vsevolod Vlasov  <[email protected]>
+
+        Web Inspector: incorrect highlight position when searching in console
+        https://bugs.webkit.org/show_bug.cgi?id=76837
+
+        Reviewed by Yury Semikhatsky.
+
+        * inspector/front-end/ConsoleMessage.js:
+        (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
+        (WebInspector.ConsoleMessageImpl.prototype.clearHighlight):
+        (WebInspector.ConsoleMessageImpl.prototype.highlightSearchResults):
+        (WebInspector.ConsoleMessageImpl.prototype._highlightSearchResultsInElement):
+        (WebInspector.ConsoleMessageImpl.prototype.matchesRegex):
+
 2012-01-23  Simon Fraser  <[email protected]>
 
         Show layer borders for scrollbar layers

Modified: trunk/Source/WebCore/inspector/front-end/ConsoleMessage.js (105757 => 105758)


--- trunk/Source/WebCore/inspector/front-end/ConsoleMessage.js	2012-01-24 18:54:43 UTC (rev 105757)
+++ trunk/Source/WebCore/inspector/front-end/ConsoleMessage.js	2012-01-24 18:55:52 UTC (rev 105758)
@@ -69,26 +69,25 @@
         this._formattedMessage = document.createElement("span");
         this._formattedMessage.className = "console-message-text source-code";
 
-        var messageText;
         if (this.source === WebInspector.ConsoleMessage.MessageSource.ConsoleAPI) {
             switch (this.type) {
                 case WebInspector.ConsoleMessage.MessageType.Trace:
-                    messageText = document.createTextNode("console.trace()");
+                    this._messageElement = document.createTextNode("console.trace()");
                     break;
                 case WebInspector.ConsoleMessage.MessageType.Assert:
                     var args = [WebInspector.UIString("Assertion failed:")];
                     if (this._parameters)
                         args = args.concat(this._parameters);
-                    messageText = this._format(args);
+                    this._messageElement = this._format(args);
                     break;
                 case WebInspector.ConsoleMessage.MessageType.Dir:
                     var obj = this._parameters ? this._parameters[0] : undefined;
                     var args = ["%O", obj];
-                    messageText = this._format(args);
+                    this._messageElement = this._format(args);
                     break;
                 default:
                     var args = this._parameters || [this._messageText];
-                    messageText = this._format(args);
+                    this._messageElement = this._format(args);
             }
         } else if (this.source === WebInspector.ConsoleMessage.MessageSource.Network) {
             if (this._request) {
@@ -97,43 +96,42 @@
                     this.url = ""
                     this.line = this._request.initiator.lineNumber;
                 }
-                messageText = document.createElement("span");
+                this._messageElement = document.createElement("span");
                 if (this.level === WebInspector.ConsoleMessage.MessageLevel.Error) {
-                    messageText.appendChild(document.createTextNode(this._request.requestMethod + " "));
-                    messageText.appendChild(WebInspector.linkifyRequestAsNode(this._request));
+                    this._messageElement.appendChild(document.createTextNode(this._request.requestMethod + " "));
+                    this._messageElement.appendChild(WebInspector.linkifyRequestAsNode(this._request));
                     if (this._request.failed)
-                        messageText.appendChild(document.createTextNode(" " + this._request.localizedFailDescription));
+                        this._messageElement.appendChild(document.createTextNode(" " + this._request.localizedFailDescription));
                     else
-                        messageText.appendChild(document.createTextNode(" " + this._request.statusCode + " (" + this._request.statusText + ")"));
+                        this._messageElement.appendChild(document.createTextNode(" " + this._request.statusCode + " (" + this._request.statusText + ")"));
                 } else {
                     var fragment = WebInspector.linkifyStringAsFragmentWithCustomLinkifier(this._messageText, WebInspector.linkifyRequestAsNode.bind(null, this._request, ""));
-                    messageText.appendChild(fragment);
+                    this._messageElement.appendChild(fragment);
                 }
             } else {
                 if (this.url) {
                     var isExternal = !WebInspector.resourceForURL(this.url);
-                    var anchor = WebInspector.linkifyURLAsNode(this.url, this.url, "console-message-url", isExternal);
-                    this._formattedMessage.appendChild(anchor);
+                    this._anchorElement = WebInspector.linkifyURLAsNode(this.url, this.url, "console-message-url", isExternal);
                 }
-                messageText = this._format([this._messageText]);
+                this._messageElement = this._format([this._messageText]);
             }
         } else {
             var args = this._parameters || [this._messageText];
-            messageText = this._format(args);
+            this._messageElement = this._format(args);
         }
 
         if (this.source !== WebInspector.ConsoleMessage.MessageSource.Network || this._request) {
             if (this._stackTrace && this._stackTrace.length && this._stackTrace[0].url) {
-                var urlElement = this._linkifyCallFrame(this._stackTrace[0]);
-                this._formattedMessage.appendChild(urlElement);
+                this._anchorElement = this._linkifyCallFrame(this._stackTrace[0]);
             } else if (this.url && this.url !== "undefined") {
-                var urlElement = this._linkifyLocation(this.url, this.line, 0);
-                this._formattedMessage.appendChild(urlElement);
+                this._anchorElement = this._linkifyLocation(this.url, this.line, 0);
             }
         }
 
-        this._formattedMessage.appendChild(messageText);
-
+        if (this._anchorElement)
+            this._formattedMessage.appendChild(this._anchorElement);
+        this._formattedMessage.appendChild(this._messageElement);
+        
         var dumpStackTrace = !!this._stackTrace && this._stackTrace.length && (this.source === WebInspector.ConsoleMessage.MessageSource.Network || this.level === WebInspector.ConsoleMessage.MessageLevel.Error || this.type === WebInspector.ConsoleMessage.MessageType.Trace);
         if (dumpStackTrace) {
             var ol = document.createElement("ol");
@@ -152,7 +150,7 @@
         }
 
         // This is used for inline message bubbles in SourceFrames, or other plain-text representations.
-        this._message = messageText.textContent;
+        this._message = this._messageElement.textContent;
     },
 
     get message()
@@ -382,6 +380,8 @@
 
         var highlightedMessage = this._formattedMessage;
         delete this._formattedMessage;
+        delete this._anchorElement;
+        delete this._messageElement;
         this._formatMessage();
         this._element.replaceChild(this._formattedMessage, highlightedMessage);
     },
@@ -391,8 +391,17 @@
         if (!this._formattedMessage)
             return;
 
+        this._highlightSearchResultsInElement(regexObject, this._messageElement);
+        if (this._anchorElement)
+            this._highlightSearchResultsInElement(regexObject, this._anchorElement);
+
+        this._element.scrollIntoViewIfNeeded();
+    },
+
+    _highlightSearchResultsInElement: function(regexObject, element)
+    {
         regexObject.lastIndex = 0;
-        var text = this.message;
+        var text = element.textContent;
         var match = regexObject.exec(text);
         var offset = 0;
         var matchRanges = [];
@@ -400,13 +409,12 @@
             matchRanges.push({ offset: match.index, length: match[0].length });
             match = regexObject.exec(text);
         }
-        highlightSearchResults(this._formattedMessage, matchRanges);
-        this._element.scrollIntoViewIfNeeded();
+        highlightSearchResults(element, matchRanges);
     },
 
     matchesRegex: function(regexObject)
     {
-        return regexObject.test(this.message);
+        return regexObject.test(this._message) || (this._anchorElement && regexObject.test(this._anchorElement.textContent));
     },
 
     toMessageElement: function()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to