diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py
index fbcaf3b..4e01d9d3 100755
--- a/tools/clang/scripts/update.py
+++ b/tools/clang/scripts/update.py
@@ -35,7 +35,7 @@
 # https://chromium.googlesource.com/chromium/src/+/main/docs/updating_clang.md
 # Reverting problematic clang rolls is safe, though.
 # This is the output of `git describe` and is usable as a commit-ish.
-CLANG_REVISION = 'llvmorg-18-init-12938-geb1d5065'
+CLANG_REVISION = 'llvmorg-18-init-14420-gea3a3b25'
 CLANG_SUB_REVISION = 1
 
 PACKAGE_VERSION = '%s-%s' % (CLANG_REVISION, CLANG_SUB_REVISION)
diff --git a/tools/metrics/histograms/metadata/blink/histograms.xml b/tools/metrics/histograms/metadata/blink/histograms.xml
index 96530ad..494cc1fa 100644
--- a/tools/metrics/histograms/metadata/blink/histograms.xml
+++ b/tools/metrics/histograms/metadata/blink/histograms.xml
@@ -1916,19 +1916,24 @@
   </summary>
 </histogram>
 
-<histogram name="Blink.Fetch.RequestResourceTime2{Scheme}" units="microseconds"
-    expires_after="2023-05-02">
+<histogram name="Blink.Fetch.RequestResourceTime2{SchemeOrPreload}"
+    units="microseconds" expires_after="2024-03-12">
   <owner>cduvall@chromium.org</owner>
   <owner>csharrison@chromium.org</owner>
+  <owner>chrome-loading@google.com</owner>
   <summary>
     The total microseconds spent in ResourceFetcher::requestResource for
-    {Scheme}.
+    {SchemeOrPreload}.
 
     This histogram only records metrics on machines with high-resolution clocks.
+
+    Warning: this histogram was expired from 2023-05-02 to 2023-12-12; data may
+    be missing.
   </summary>
-  <token key="Scheme">
+  <token key="SchemeOrPreload">
     <variant name="" summary="all URLs"/>
     <variant name=".Data" summary="data URLs"/>
+    <variant name=".Preload" summary="preloaded URLs"/>
   </token>
 </histogram>
 
@@ -2701,6 +2706,23 @@
   </summary>
 </histogram>
 
+<histogram
+    name="Blink.LCPP.NavigationToStartPreload.MainFrame.{SubresourceType}.Time"
+    units="ms" expires_after="2024-02-01">
+  <owner>chikamune@chromium.org</owner>
+  <owner>yyanagisawa@chromium.org</owner>
+  <owner>kouhei@chromium.org</owner>
+  <summary>
+    Record when the page's main frame starts preloading {SubresourceType}.
+    Measures the duration between when the navigation starts, to when preloading
+    subresource is started.
+  </summary>
+  <token key="SubresourceType">
+    <variant name="EachSubresource" summary="each subresources"/>
+    <variant name="FirstSubresource" summary="the first subresource"/>
+  </token>
+</histogram>
+
 <histogram name="Blink.LCPP.PotentiallyLCPResourcePriorityBoosts" units="count"
     expires_after="2024-01-27">
   <owner>kouhei@chromium.org</owner>
@@ -3164,13 +3186,29 @@
   </summary>
 </histogram>
 
+<histogram name="Blink.PreloadRequestStartDuration" units="microseconds"
+    expires_after="2024-03-12">
+  <owner>sisidovski@chromium.org</owner>
+  <owner>chrome-loading@google.com</owner>
+  <summary>
+    Measures the time from the time when PreloadRequest::Start is called to when
+    PreloadRequest::Start is finished.
+
+    This histogram only records metrics on machines with high-resolution clocks.
+  </summary>
+</histogram>
+
 <histogram name="Blink.PreloadRequestWaitTime" units="ms"
-    expires_after="2023-10-22">
+    expires_after="2024-03-12">
   <owner>cduvall@chromium.org</owner>
   <owner>swarm-team@google.com</owner>
+  <owner>chrome-loading@google.com</owner>
   <summary>
     Measures the time from the creation of a PreloadRequest to when
     PreloadRequest::Start is called. Logged for each PreloadRequest::Start call.
+
+    Warning: this histogram was expired from 2023-10-22 to 2023-12-12; data may
+    be missing.
   </summary>
 </histogram>
 
@@ -3291,6 +3329,9 @@
   <owner>jam@chromium.org</owner>
   <owner>chrome-loading@google.com</owner>
   <summary>
+    Blink.ScanAndPreloadTime2 is the newer one of this histogram, which records
+    the time with microseconds.
+
     Measures the time it takes to scan and preload subresources for a document
     in a {FrameType}. Logged every time the {IsInitial} preload scan is
     performed.
@@ -3308,6 +3349,31 @@
   </token>
 </histogram>
 
+<histogram name="Blink.ScanAndPreloadTime2{Task}.{FrameType}.{IsInitial}"
+    units="microseconds" expires_after="2024-03-13">
+  <owner>sisidovski@chromium.org</owner>
+  <owner>chrome-loading@google.com</owner>
+  <summary>
+    Measures the time it takes to {Task} for a document in a {FrameType}. Logged
+    every time the {IsInitial} preload scan is performed.
+
+    This histogram only records metrics on machines with high-resolution clocks.
+  </summary>
+  <token key="Task">
+    <variant name="" summary="scan and preload subresources"/>
+    <variant name=".Preload" summary="preload subresources"/>
+    <variant name=".Scan" summary="scan"/>
+  </token>
+  <token key="FrameType">
+    <variant name="MainFrame"/>
+    <variant name="Subframe"/>
+  </token>
+  <token key="IsInitial">
+    <variant name="Initial"/>
+    <variant name="NonInitial"/>
+  </token>
+</histogram>
+
 <histogram name="Blink.ScanPendingActivityDuration" units="ms"
     expires_after="M85">
   <owner>haraken@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/net/histograms.xml b/tools/metrics/histograms/metadata/net/histograms.xml
index 63cace6..3c53af0 100644
--- a/tools/metrics/histograms/metadata/net/histograms.xml
+++ b/tools/metrics/histograms/metadata/net/histograms.xml
@@ -3928,17 +3928,6 @@
   </summary>
 </histogram>
 
-<histogram name="Net.QuicSession.ReceivedSettings.EnableExtendedConnect"
-    enum="Boolean" expires_after="2024-01-21">
-  <owner>momoka@google.com</owner>
-  <owner>ricea@chromium.org</owner>
-  <owner>src/net/quic/OWNERS</owner>
-  <summary>
-    The value of the SETTINGS_ENABLE_CONNECT_PROTOCOL parameter received on an
-    HTTP/3 connection, if the parameter is not present log false.
-  </summary>
-</histogram>
-
 <histogram name="Net.QuicSession.ReceivedSettings.MaxHeaderListSize2"
     units="bytes" expires_after="2023-09-24">
   <owner>dschinazi@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/omnibox/histograms.xml b/tools/metrics/histograms/metadata/omnibox/histograms.xml
index 6247873..2f15042 100644
--- a/tools/metrics/histograms/metadata/omnibox/histograms.xml
+++ b/tools/metrics/histograms/metadata/omnibox/histograms.xml
@@ -1614,7 +1614,7 @@
 </histogram>
 
 <histogram name="Omnibox.SetText.Duration" units="ms"
-    expires_after="2024-05-26">
+    expires_after="2024-06-01">
   <owner>peilinwang@google.com</owner>
   <owner>woa-performance-bugs+jank@google.com</owner>
   <summary>
@@ -1624,7 +1624,7 @@
 </histogram>
 
 <histogram name="Omnibox.SetText.TextLength" units="characters"
-    expires_after="2024-06-02">
+    expires_after="2024-06-01">
   <owner>peilinwang@google.com</owner>
   <owner>woa-performance-bugs+jank@google.com</owner>
   <summary>
@@ -1634,7 +1634,7 @@
 </histogram>
 
 <histogram name="Omnibox.setText.TruncatedTooMuch" enum="Boolean"
-    expires_after="2023-12-24">
+    expires_after="2024-06-01">
   <owner>peilinwang@google.com</owner>
   <owner>woa-performance-bugs+jank@google.com</owner>
   <summary>
diff --git a/tools/metrics/histograms/metadata/page/histograms.xml b/tools/metrics/histograms/metadata/page/histograms.xml
index bbea9bc2..b9eaa34 100644
--- a/tools/metrics/histograms/metadata/page/histograms.xml
+++ b/tools/metrics/histograms/metadata/page/histograms.xml
@@ -798,6 +798,48 @@
 </histogram>
 
 <histogram
+    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFinalLoaderCallback"
+    units="ms" expires_after="2024-03-19">
+  <owner>nidhijaju@chromium.org</owner>
+  <owner>chrome-loading@google.com</owner>
+  <summary>
+    The time relative to navigation start that a callback for the navigation
+    loader is last invoked for the main resource of a main frame navigation, for
+    Google Search page loads. Only recorded for Search navigations that happen
+    entirely in the foreground. The metric is emitted when the navigation is
+    completed or the app is backgrounded on Android.
+  </summary>
+</histogram>
+
+<histogram
+    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFinalRequestStart"
+    units="ms" expires_after="2024-03-19">
+  <owner>nidhijaju@chromium.org</owner>
+  <owner>chrome-loading@google.com</owner>
+  <summary>
+    The time relative to navigation start that the final HTTP request is sent
+    for the main resource of a main frame navigation, for Google Search page
+    loads. Only recorded for Search navigations that happen entirely in the
+    foreground. The metric is emitted when the navigation is completed or the
+    app is backgrounded on Android.
+  </summary>
+</histogram>
+
+<histogram
+    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFinalResponseStart"
+    units="ms" expires_after="2024-03-19">
+  <owner>nidhijaju@chromium.org</owner>
+  <owner>chrome-loading@google.com</owner>
+  <summary>
+    The time relative to navigation start that the headers of the final HTTP
+    response is received for the main resource of a main frame navigation, for
+    Google Search page loads. Only recorded for Search navigations that happen
+    entirely in the foreground. The metric is emitted when the navigation is
+    completed or the app is backgrounded on Android.
+  </summary>
+</histogram>
+
+<histogram
     name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFirstLoaderCallback"
     units="ms" expires_after="2024-03-19">
   <owner>kouhei@chromium.org</owner>
diff --git a/tools/polymer/css_to_wrapper_test.py b/tools/polymer/css_to_wrapper_test.py
index d20c49e..adeab81 100755
--- a/tools/polymer/css_to_wrapper_test.py
+++ b/tools/polymer/css_to_wrapper_test.py
@@ -58,7 +58,7 @@
   def testCssToWrapperStylePolymer(self):
     self._run_test('css_to_wrapper/foo_style.css',
                    'css_to_wrapper/foo_style.css.ts',
-                   'css_to_wrapper/foo_style_expected.css.ts')
+                   'css_to_wrapper/expected/foo_style.css.ts')
 
   def testCssToWrapperStyleLit(self):
     self._run_test('css_to_wrapper/foo_style_lit.css',
@@ -68,12 +68,12 @@
   def testCssToWrapperStyleNoIncludes(self):
     self._run_test('css_to_wrapper/foo_no_includes_style.css',
                    'css_to_wrapper/foo_no_includes_style.css.ts',
-                   'css_to_wrapper/foo_no_includes_style_expected.css.ts')
+                   'css_to_wrapper/expected/foo_no_includes_style.css.ts')
 
   def testCssToWrapperVarsPolymer(self):
     self._run_test('css_to_wrapper/foo_vars.css',
                    'css_to_wrapper/foo_vars.css.ts',
-                   'css_to_wrapper/foo_vars_expected.css.ts')
+                   'css_to_wrapper/expected/foo_vars.css.ts')
 
   def testCssToWrapperVarsLit(self):
     self._run_test('css_to_wrapper/foo_vars_lit.css',
@@ -83,19 +83,19 @@
   def testCssToWrapperMinify(self):
     self._run_test('css_to_wrapper/foo_style.css',
                    'css_to_wrapper/foo_style.css.ts',
-                   'css_to_wrapper/foo_style_expected.min.css.ts',
+                   'css_to_wrapper/expected/foo_style.min.css.ts',
                    minify=True)
 
   def testCssToWrapperUseJs(self):
     self._run_test('css_to_wrapper/foo_style.css',
                    'css_to_wrapper/foo_style.css.js',
-                   'css_to_wrapper/foo_style_expected.css.ts',
+                   'css_to_wrapper/expected/foo_style.css.ts',
                    use_js=True)
 
   def testCssToWrapperSchemeRelative(self):
     self._run_test('css_to_wrapper/foo_relative_style.css',
                    'css_to_wrapper/foo_relative_style.css.ts',
-                   'css_to_wrapper/foo_relative_style_expected.css.ts')
+                   'css_to_wrapper/expected/foo_relative_style.css.ts')
 
 
 if __name__ == '__main__':
diff --git a/tools/polymer/html_to_wrapper_test.py b/tools/polymer/html_to_wrapper_test.py
index eefa4ce..b1dc959 100755
--- a/tools/polymer/html_to_wrapper_test.py
+++ b/tools/polymer/html_to_wrapper_test.py
@@ -64,12 +64,12 @@
 
   def testHtmlToWrapperPolymerElement(self):
     self._run_test('html_to_wrapper/foo.html', 'html_to_wrapper/foo.html.ts',
-                   'html_to_wrapper/foo_expected.html.ts')
+                   'html_to_wrapper/expected/foo.html.ts')
 
   def testHtmlToWrapperPolymerElement_Detect(self):
     self._run_test('html_to_wrapper/foo.html',
                    'html_to_wrapper/foo.html.ts',
-                   'html_to_wrapper/foo_expected.html.ts',
+                   'html_to_wrapper/expected/foo.html.ts',
                    template='detect')
 
   def testHtmlToWrapperLitElement(self):
@@ -87,56 +87,56 @@
   def testHtmlToWrapperNativeElement(self):
     self._run_test('html_to_wrapper/foo_native.html',
                    'html_to_wrapper/foo_native.html.ts',
-                   'html_to_wrapper/foo_native_expected.html.ts',
+                   'html_to_wrapper/expected/foo_native.html.ts',
                    template='native')
 
   def testHtmlToWrapperNativeElement_Detect(self):
     self._run_test('html_to_wrapper/foo_native.html',
                    'html_to_wrapper/foo_native.html.ts',
-                   'html_to_wrapper/foo_native_expected.html.ts',
+                   'html_to_wrapper/expected/foo_native.html.ts',
                    template='detect')
 
   def testHtmlToWrapperIcons(self):
     self._run_test('html_to_wrapper/icons.html',
                    'html_to_wrapper/icons.html.ts',
-                   'html_to_wrapper/icons_expected.html.ts')
+                   'html_to_wrapper/expected/icons.html.ts')
 
   def testHtmlToWrapper_Minify(self):
     self._run_test('html_to_wrapper/foo.html',
                    'html_to_wrapper/foo.html.ts',
-                   'html_to_wrapper/foo_expected.min.html.ts',
+                   'html_to_wrapper/expected/foo.min.html.ts',
                    minify=True)
 
   def testHtmlToWrapper_MinifyDetect(self):
     self._run_test('html_to_wrapper/foo.html',
                    'html_to_wrapper/foo.html.ts',
-                   'html_to_wrapper/foo_expected.min.html.ts',
+                   'html_to_wrapper/expected/foo.min.html.ts',
                    minify=True,
                    template='detect')
 
   def testHtmlToWrapper_UseJs(self):
     self._run_test('html_to_wrapper/foo.html',
                    'html_to_wrapper/foo.html.js',
-                   'html_to_wrapper/foo_expected.html.ts',
+                   'html_to_wrapper/expected/foo.html.ts',
                    use_js=True)
 
   def testHtmlToWrapper_UseJsDetect(self):
     self._run_test('html_to_wrapper/foo.html',
                    'html_to_wrapper/foo.html.js',
-                   'html_to_wrapper/foo_expected.html.ts',
+                   'html_to_wrapper/expected/foo.html.ts',
                    use_js=True,
                    template='detect')
 
   def testHtmlToWrapperSchemeRelative(self):
     self._run_test('html_to_wrapper/foo.html',
                    'html_to_wrapper/foo.html.ts',
-                   'html_to_wrapper/foo_expected.html.ts',
+                   'html_to_wrapper/expected/foo.html.ts',
                    scheme='relative')
 
   def testHtmlToWrapperSchemeChrome(self):
     self._run_test('html_to_wrapper/foo.html',
                    'html_to_wrapper/foo.html.ts',
-                   'html_to_wrapper/foo_chrome_expected.html.ts',
+                   'html_to_wrapper/expected/foo_chrome.html.ts',
                    scheme='chrome')
 
 
diff --git a/tools/polymer/tests/css_to_wrapper/foo_no_includes_style_expected.css.ts b/tools/polymer/tests/css_to_wrapper/expected/foo_no_includes_style.css.ts
similarity index 100%
rename from tools/polymer/tests/css_to_wrapper/foo_no_includes_style_expected.css.ts
rename to tools/polymer/tests/css_to_wrapper/expected/foo_no_includes_style.css.ts
diff --git a/tools/polymer/tests/css_to_wrapper/foo_relative_style_expected.css.ts b/tools/polymer/tests/css_to_wrapper/expected/foo_relative_style.css.ts
similarity index 100%
rename from tools/polymer/tests/css_to_wrapper/foo_relative_style_expected.css.ts
rename to tools/polymer/tests/css_to_wrapper/expected/foo_relative_style.css.ts
diff --git a/tools/polymer/tests/css_to_wrapper/foo_style_expected.css.ts b/tools/polymer/tests/css_to_wrapper/expected/foo_style.css.ts
similarity index 100%
rename from tools/polymer/tests/css_to_wrapper/foo_style_expected.css.ts
rename to tools/polymer/tests/css_to_wrapper/expected/foo_style.css.ts
diff --git a/tools/polymer/tests/css_to_wrapper/foo_style_expected.min.css.ts b/tools/polymer/tests/css_to_wrapper/expected/foo_style.min.css.ts
similarity index 100%
rename from tools/polymer/tests/css_to_wrapper/foo_style_expected.min.css.ts
rename to tools/polymer/tests/css_to_wrapper/expected/foo_style.min.css.ts
diff --git a/tools/polymer/tests/css_to_wrapper/foo_vars_expected.css.ts b/tools/polymer/tests/css_to_wrapper/expected/foo_vars.css.ts
similarity index 100%
rename from tools/polymer/tests/css_to_wrapper/foo_vars_expected.css.ts
rename to tools/polymer/tests/css_to_wrapper/expected/foo_vars.css.ts
diff --git a/tools/polymer/tests/html_to_wrapper/foo_expected.html.ts b/tools/polymer/tests/html_to_wrapper/expected/foo.html.ts
similarity index 100%
rename from tools/polymer/tests/html_to_wrapper/foo_expected.html.ts
rename to tools/polymer/tests/html_to_wrapper/expected/foo.html.ts
diff --git a/tools/polymer/tests/html_to_wrapper/foo_expected.min.html.ts b/tools/polymer/tests/html_to_wrapper/expected/foo.min.html.ts
similarity index 100%
rename from tools/polymer/tests/html_to_wrapper/foo_expected.min.html.ts
rename to tools/polymer/tests/html_to_wrapper/expected/foo.min.html.ts
diff --git a/tools/polymer/tests/html_to_wrapper/foo_chrome_expected.html.ts b/tools/polymer/tests/html_to_wrapper/expected/foo_chrome.html.ts
similarity index 100%
rename from tools/polymer/tests/html_to_wrapper/foo_chrome_expected.html.ts
rename to tools/polymer/tests/html_to_wrapper/expected/foo_chrome.html.ts
diff --git a/tools/polymer/tests/html_to_wrapper/foo_native_expected.html.ts b/tools/polymer/tests/html_to_wrapper/expected/foo_native.html.ts
similarity index 100%
rename from tools/polymer/tests/html_to_wrapper/foo_native_expected.html.ts
rename to tools/polymer/tests/html_to_wrapper/expected/foo_native.html.ts
diff --git a/tools/polymer/tests/html_to_wrapper/icons_expected.html.ts b/tools/polymer/tests/html_to_wrapper/expected/icons.html.ts
similarity index 100%
rename from tools/polymer/tests/html_to_wrapper/icons_expected.html.ts
rename to tools/polymer/tests/html_to_wrapper/expected/icons.html.ts
diff --git a/tools/rust/build_rust.py b/tools/rust/build_rust.py
index cbaa4c6b..3143842 100755
--- a/tools/rust/build_rust.py
+++ b/tools/rust/build_rust.py
@@ -749,6 +749,11 @@
                       '81cd7c5b11766ed1e3214a2233371fb6d72ed89c')
 
         # TODO: Remove once
+        # https://github.com/rust-lang/rust/pull/118610 has been merged.
+        GitCherryPick(RUST_SRC_DIR, 'https://github.com/rust-lang/rust.git',
+                      'b378059e6b2573c5356423fa31d184a89a3b6029')
+
+        # TODO: Remove once
         # https://github.com/rust-lang/rust/pull/118818 has been merged.
         GitCherryPick(RUST_SRC_DIR, 'https://github.com/rust-lang/rust.git',
                       'a0c5079889b1f86dd9e246d8863a5c8b44fbdb78')