REGRESSION: Web Inspector: Text search broken in resources with <CR>
authorjoepeck@webkit.org <joepeck@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Jun 2016 18:18:37 +0000 (18:18 +0000)
committerjoepeck@webkit.org <joepeck@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 27 Jun 2016 18:18:37 +0000 (18:18 +0000)
https://bugs.webkit.org/show_bug.cgi?id=159110
<rdar://problem/27008485>

Reviewed by Brian Burg.

Source/JavaScriptCore:

* inspector/ContentSearchUtilities.cpp:
(Inspector::ContentSearchUtilities::lineEndings):
The frontend moved to only treated newlines as line endings in
the TextEditor. The backend however was looking for many
different types of line endings (\r\n, \r, \n). This caused
the line endings to ultimately differ between the frontend
and the backend, so the frontend couldn't find the lines that
the backend was claiming search results were on. Change the
backend to only look for \n line endings.

LayoutTests:

* inspector/debugger/searchInContent-linebreaks-expected.txt:
* inspector/debugger/searchInContent-linebreaks.html:
Now that the backend responds with lines that end in \n, this test changes
the number of line results. The frontend interprets this correctly.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@202498 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/inspector/debugger/searchInContent-linebreaks-expected.txt
LayoutTests/inspector/debugger/searchInContent-linebreaks.html
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/inspector/ContentSearchUtilities.cpp

index 9ddf73b..bffb69e 100644 (file)
@@ -1,3 +1,16 @@
+2016-06-27  Joseph Pecoraro  <pecoraro@apple.com>
+
+        REGRESSION: Web Inspector: Text search broken in resources with <CR>
+        https://bugs.webkit.org/show_bug.cgi?id=159110
+        <rdar://problem/27008485>
+
+        Reviewed by Brian Burg.
+
+        * inspector/debugger/searchInContent-linebreaks-expected.txt:
+        * inspector/debugger/searchInContent-linebreaks.html:
+        Now that the backend responds with lines that end in \n, this test changes
+        the number of line results. The frontend interprets this correctly.
+
 2016-06-27  Joanmarie Diggs  <jdiggs@igalia.com>
 
         AX: Anonymous RenderMathMLOperators are not exposed to the accessibility tree
index d78962a..aad6fde 100644 (file)
@@ -2,28 +2,25 @@ Verify that Debugger.searchInContent works with scripts that have varying line e
 Scripts searched: 4
 
 Script: mac-linebreaks.js
-Results found: 4
-Line 0: "// test one\r"
-Line 2: "//  test two\r"
-Line 6: "    //   test three test four\r"
-Line 9: "// test no newline"
+Lines with matches: 1
+Line 0: "// test one\r// \r//  test two\r\rfunction boo()\r{\r    //   test three test four\r}\r\r// test no newline"
 
 Script: mixed-linebreaks.js
-Results found: 4
+Lines with matches: 4
 Line 0: "// test one\n"
-Line 2: "// test two\r"
-Line 6: "    //   test three test four\r\n"
-Line 9: "// test no newline"
+Line 2: "// test two\r\r\n"
+Line 5: "    //   test three test four\r\n"
+Line 8: "// test no newline"
 
 Script: unix-linebreaks.js
-Results found: 4
+Lines with matches: 4
 Line 0: "// test one\n"
 Line 2: "//  test two\n"
 Line 6: "    // test three test four\n"
 Line 9: "// test no newline"
 
 Script: windows-linebreaks.js
-Results found: 4
+Lines with matches: 4
 Line 0: "// test one\r\n"
 Line 2: "//  test two\r\n"
 Line 6: "    // test three test four\r\n"
index 3f726c8..7dbc9e0 100644 (file)
@@ -48,7 +48,7 @@ function test()
         for (var testResult of sortedTestResults) {
             var fileName = /([\w-]+\.js)$/.exec(testResult.url)[1];
             ProtocolTest.log("Script: " + fileName);
-            ProtocolTest.log("Results found: " + testResult.count);
+            ProtocolTest.log("Lines with matches: " + testResult.count);
     
             for (var match of testResult.matches)
                 ProtocolTest.log("Line " + match.lineNumber + ": " + JSON.stringify(match.lineContent));    
index fccdc9c..5ee56f0 100644 (file)
@@ -1,3 +1,21 @@
+2016-06-27  Joseph Pecoraro  <pecoraro@apple.com>
+
+        REGRESSION: Web Inspector: Text search broken in resources with <CR>
+        https://bugs.webkit.org/show_bug.cgi?id=159110
+        <rdar://problem/27008485>
+
+        Reviewed by Brian Burg.
+
+        * inspector/ContentSearchUtilities.cpp:
+        (Inspector::ContentSearchUtilities::lineEndings):
+        The frontend moved to only treated newlines as line endings in
+        the TextEditor. The backend however was looking for many
+        different types of line endings (\r\n, \r, \n). This caused
+        the line endings to ultimately differ between the frontend
+        and the backend, so the frontend couldn't find the lines that
+        the backend was claiming search results were on. Change the
+        backend to only look for \n line endings.
+
 2016-06-27  Brian Burg  <bburg@apple.com>
 
         Web Inspector: CRASH in backend at Inspector::HeapFrontendDispatcher::garbageCollected + 552 when closing frontend/inspected page
index 6b64014..7f45042 100644 (file)
@@ -104,12 +104,13 @@ std::unique_ptr<Vector<size_t>> lineEndings(const String& text)
 
     size_t start = 0;
     while (start < text.length()) {
-        size_t nextStart = text.findNextLineStart(start);
-        if (nextStart == notFound) {
+        size_t nextStart = text.find('\n', start);
+        if (nextStart == notFound || nextStart == (text.length() - 1)) {
             result->append(text.length());
             break;
         }
 
+        nextStart += 1;
         result->append(nextStart);
         start = nextStart;
     }