RubyLB: Fix a crash by RTL + zero-available-width + break-spaces

LineBreaker should not produce an empty LineInfo for ruby-base.

Bug: 352467338
Change-Id: Ifaa9f300ef9fa22e7697896d8434506f50257dc4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5759423
Commit-Queue: Kent Tamura <tkent@chromium.org>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1337535}
diff --git a/third_party/blink/renderer/core/layout/inline/line_breaker.cc b/third_party/blink/renderer/core/layout/inline/line_breaker.cc
index da35595..5b4b6f1 100644
--- a/third_party/blink/renderer/core/layout/inline/line_breaker.cc
+++ b/third_party/blink/renderer/core/layout/inline/line_breaker.cc
@@ -1364,7 +1364,9 @@
           IsBreakableSpace(Text()[item_result->EndOffset() - 1])) {
         unsigned end_index = base::checked_cast<unsigned>(
             item_result - line_info->Results().data());
-        Rewind(end_index, line_info);
+        if (!parent_breaker_ || end_index > 0u) {
+          Rewind(end_index, line_info);
+        }
       }
       return;
     }
@@ -3330,6 +3332,9 @@
                                : retry_size - 1;
   base_line_info = CreateSubLineInfo(base_start, base_end_index, mode_,
                                      base_target, trailing_whitespace_);
+  // We assume a base LineInfo contains at least one InlineItemResult.
+  // If it's zero, we can't adjust LogicalRubyColumns on bidi reorder.
+  CHECK_GT(base_line_info.Results().size(), 0u);
 
   bool annotation_is_broken = false;
   for (wtf_size_t i = 0; i < number_of_annotations; ++i) {
diff --git a/third_party/blink/web_tests/external/wpt/css/css-ruby/break-within-bases/break-spaces-crash.html b/third_party/blink/web_tests/external/wpt/css/css-ruby/break-within-bases/break-spaces-crash.html
new file mode 100644
index 0000000..d6b8f340
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-ruby/break-within-bases/break-spaces-crash.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<head>
+<link rel="help" href="https://crbug.com/352467338">
+<title>Zero available width + break-spaces</title>
+<style>
+body {
+  margin-right: 1000%;
+}
+span {
+  white-space-collapse: break-spaces;
+}
+</style>
+</head>
+<body dir="rtl">
+<ruby><span>A  A  A</span><rt></rt></ruby>
+</body>