Part 2 - Use 64-bit coord type when resolving the main size for flex items.

The idea of this patch is to use 64-bit coord type when resolving the
main size for flex items to avoid integer overflow when individual flex
items have huge hypothetical main sizes, which can happen with
percent-width table-layout:fixed descendants. We have to avoid integer
overflow to shrink flex items properly in that scenario.

Delete the "Note:" in `AddLastItemToMainSizeTotals()` since we remove
`AddChecked()` in favor of regular 64-bit addition for
`mTotalOuterHypotheticalMainSize`.

The wpt testcase is adapted from bug 1469649 comment 12.

Differential Revision: https://phabricator.services.mozilla.com/D123268

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1469649
gecko-commit: f0b07571b559937fe98300d7da187b2043ac9e91
gecko-reviewers: dholbert
diff --git a/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item-ref.html b/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item-ref.html
new file mode 100644
index 0000000..8e3e616
--- /dev/null
+++ b/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item-ref.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+  <meta charset="utf-8">
+  <title>CSS Flexbox Reference: Test flex items containing table-layout:fixed with percentage width</title>
+  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+  <link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+  <link rel="author" title="Mozilla" href="https://www.mozilla.org">
+
+  <style>
+  .container {
+    display: flex;
+    width: 300px;
+    margin-bottom: 5px;
+    border: 1px solid black;
+    background: red;
+  }
+  .tbl {
+    width: 100%;
+    height: 30px;
+    border: 1px solid blue;
+    box-sizing: border-box;
+    background: lightgray;
+  }
+  </style>
+
+  <div class="container">
+    <div class="tbl"></div>
+  </div>
+
+  <div class="container">
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+  </div>
+
+  <div class="container">
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+  </div>
+
+  <div class="container">
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+  </div>
+
+  <div class="container">
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+  </div>
+
+  <div class="container">
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+    <div class="tbl"></div>
+  </div>
+</html>
diff --git a/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item.html b/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item.html
new file mode 100644
index 0000000..507e0e9
--- /dev/null
+++ b/css/css-flexbox/fixed-table-layout-with-percentage-width-in-flex-item.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+  <meta charset="utf-8">
+  <title>CSS Flexbox Test: Test flex items containing table-layout:fixed with percentage width</title>
+  <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+  <link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+  <link rel="author" title="Mozilla" href="https://www.mozilla.org">
+  <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1469649">
+  <link rel="match" href="fixed-table-layout-with-percentage-width-in-flex-item-ref.html">
+  <meta name="assert" content="This test verifies that each flex item with a table descendant should have the the same definite post-flexing main size.">
+
+  <style>
+  .container {
+    display: flex;
+    width: 300px;
+    margin-bottom: 5px;
+    border: 1px solid black;
+    background: red;
+  }
+  .tbl {
+    display: table;
+    table-layout: fixed;
+    width: 100%;
+    height: 30px;
+    border: 1px solid blue;
+    box-sizing: border-box;
+    background: lightgray;
+  }
+  </style>
+
+  <div class="container">
+    <div><div class="tbl"></div></div>
+  </div>
+
+  <div class="container">
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+  </div>
+
+  <div class="container">
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+  </div>
+
+  <div class="container">
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+  </div>
+
+  <div class="container">
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+  </div>
+
+  <div class="container">
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+    <div><div class="tbl"></div></div>
+  </div>
+</html>