Snap for 12573674 from a7ce1a1a870bd032a3c4594a63e34db417a0e0cb to 25Q1-release

Change-Id: Ic3581e328f3433d5195cc4235723312aa00a69fc
diff --git a/aosp/dynamic_partition_control_android.cc b/aosp/dynamic_partition_control_android.cc
index 822b05e..78cda20 100644
--- a/aosp/dynamic_partition_control_android.cc
+++ b/aosp/dynamic_partition_control_android.cc
@@ -31,7 +31,6 @@
 #include <android-base/strings.h>
 #include <base/files/file_util.h>
 #include <base/logging.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <bootloader_message/bootloader_message.h>
 #include <fs_mgr.h>
diff --git a/aosp/dynamic_partition_control_android_unittest.cc b/aosp/dynamic_partition_control_android_unittest.cc
index 30780f0..c93d4c3 100644
--- a/aosp/dynamic_partition_control_android_unittest.cc
+++ b/aosp/dynamic_partition_control_android_unittest.cc
@@ -21,7 +21,6 @@
 #include <vector>
 
 #include <base/logging.h>
-#include <base/strings/string_util.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 #include <libavb/libavb.h>
diff --git a/aosp/dynamic_partition_test_utils.h b/aosp/dynamic_partition_test_utils.h
index c518382..07bb386 100644
--- a/aosp/dynamic_partition_test_utils.h
+++ b/aosp/dynamic_partition_test_utils.h
@@ -23,14 +23,13 @@
 #include <map>
 #include <memory>
 #include <string>
-#include <vector>
 
-#include <base/strings/string_util.h>
 #include <fs_mgr.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
 #include <liblp/builder.h>
 #include <storage_literals/storage_literals.h>
+#include <android-base/strings.h>
 
 #include "update_engine/common/boot_control_interface.h"
 #include "update_engine/update_metadata.pb.h"
@@ -148,9 +147,7 @@
   }
   for (const auto& pair : partition_sizes) {
     for (size_t suffix_idx = 0; suffix_idx < kMaxNumSlots; ++suffix_idx) {
-      if (base::EndsWith(pair.first,
-                         kSlotSuffixes[suffix_idx],
-                         base::CompareCase::SENSITIVE)) {
+      if (android::base::EndsWith(pair.first, kSlotSuffixes[suffix_idx])) {
         AddPartition(
             &manifest,
             manifest.mutable_dynamic_partition_metadata()->mutable_groups(
diff --git a/aosp/dynamic_partition_utils.cc b/aosp/dynamic_partition_utils.cc
index 6b77a45..b62b435 100644
--- a/aosp/dynamic_partition_utils.cc
+++ b/aosp/dynamic_partition_utils.cc
@@ -18,8 +18,8 @@
 
 #include <vector>
 
+#include <android-base/strings.h>
 #include <base/logging.h>
-#include <base/strings/string_util.h>
 
 using android::fs_mgr::MetadataBuilder;
 
@@ -29,7 +29,7 @@
                             const std::string& suffix) {
   std::vector<std::string> groups = builder->ListGroups();
   for (const auto& group_name : groups) {
-    if (base::EndsWith(group_name, suffix, base::CompareCase::SENSITIVE)) {
+    if (android::base::EndsWith(group_name, suffix)) {
       LOG(INFO) << "Removing group " << group_name;
       builder->RemoveGroupAndPartitions(group_name);
     }
diff --git a/aosp/hardware_android.cc b/aosp/hardware_android.cc
index f8732ab..29d742f 100644
--- a/aosp/hardware_android.cc
+++ b/aosp/hardware_android.cc
@@ -26,7 +26,6 @@
 #include <android-base/properties.h>
 #include <base/files/file_util.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <bootloader_message/bootloader_message.h>
 #include <fstab/fstab.h>
 #include <libavb/libavb.h>
@@ -108,7 +107,7 @@
   const std::string encoded_digest =
       base::HexEncode(vbmeta_digest, AVB_SHA256_DIGEST_SIZE);
   LOG(INFO) << "vbmeta digest for target slot: " << encoded_digest;
-  return base::ToLowerASCII(encoded_digest);
+  return ToLower(encoded_digest);
 }
 
 }  // namespace
diff --git a/aosp/logging_android.cc b/aosp/logging_android.cc
index d1f10d6..d4e2015 100644
--- a/aosp/logging_android.cc
+++ b/aosp/logging_android.cc
@@ -32,7 +32,6 @@
 #include <android-base/unique_fd.h>
 #include <base/files/dir_reader_posix.h>
 #include <base/logging.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <log/log.h>
 
diff --git a/aosp/metrics_reporter_android.cc b/aosp/metrics_reporter_android.cc
index d974616..6b83231 100644
--- a/aosp/metrics_reporter_android.cc
+++ b/aosp/metrics_reporter_android.cc
@@ -19,12 +19,11 @@
 #include <stdint.h>
 
 #include <algorithm>
-#include <any>
 #include <memory>
 #include <string>
 
 #include <android-base/properties.h>
-#include <base/strings/string_util.h>
+#include <android-base/strings.h>
 #include <fs_mgr.h>
 #include <libdm/dm.h>
 #include <liblp/builder.h>
@@ -34,12 +33,12 @@
 #include "update_engine/common/constants.h"
 #include "update_engine/payload_consumer/install_plan.h"
 
+using android::base::EndsWith;
 using android::fs_mgr::GetPartitionGroupName;
 using android::fs_mgr::LpMetadata;
 using android::fs_mgr::MetadataBuilder;
 using android::fs_mgr::ReadMetadata;
 using android::fs_mgr::SlotNumberForSlotSuffix;
-using base::EndsWith;
 
 namespace {
 // A number offset adds on top of the enum value. e.g. ErrorCode::SUCCESS will
@@ -104,9 +103,7 @@
       super_partition_size_bytes = GetTotalSuperPartitionSize(*metadata);
 
       for (const auto& group : metadata->groups) {
-        if (EndsWith(GetPartitionGroupName(group),
-                     fs_mgr_get_slot_suffix(),
-                     base::CompareCase::SENSITIVE)) {
+        if (EndsWith(GetPartitionGroupName(group), fs_mgr_get_slot_suffix())) {
           slot_size_bytes += group.maximum_size;
         }
       }
diff --git a/certificate_checker.cc b/certificate_checker.cc
index d1dae83..8ffa596 100644
--- a/certificate_checker.cc
+++ b/certificate_checker.cc
@@ -20,7 +20,6 @@
 
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <curl/curl.h>
 #include <openssl/evp.h>
diff --git a/certificate_checker_unittest.cc b/certificate_checker_unittest.cc
index 01dddbe..62b2152 100644
--- a/certificate_checker_unittest.cc
+++ b/certificate_checker_unittest.cc
@@ -18,7 +18,6 @@
 
 #include <string>
 
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
diff --git a/common/file_fetcher.cc b/common/file_fetcher.cc
index dd994ab..cb8e89a 100644
--- a/common/file_fetcher.cc
+++ b/common/file_fetcher.cc
@@ -23,12 +23,10 @@
 #include <base/format_macros.h>
 #include <base/location.h>
 #include <base/logging.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <brillo/streams/file_stream.h>
 
-#include "update_engine/common/hardware_interface.h"
-#include "update_engine/common/platform_constants.h"
+#include "update_engine/common/utils.h"
 
 using std::string;
 
@@ -43,9 +41,8 @@
 // static
 bool FileFetcher::SupportedUrl(const string& url) {
   // Note that we require the file path to start with a "/".
-  return (
-      base::StartsWith(url, "file:///", base::CompareCase::INSENSITIVE_ASCII) ||
-      base::StartsWith(url, "fd://", base::CompareCase::INSENSITIVE_ASCII));
+  return (android::base::StartsWith(ToLower(url), "file:///") ||
+          android::base::StartsWith(ToLower(url), "fd://"));
 }
 
 FileFetcher::~FileFetcher() {
@@ -70,7 +67,7 @@
 
   string file_path;
 
-  if (base::StartsWith(url, "fd://", base::CompareCase::INSENSITIVE_ASCII)) {
+  if (android::base::StartsWith(ToLower(url), "fd://")) {
     int fd = std::stoi(url.substr(strlen("fd://")));
     file_path = url;
     stream_ = brillo::FileStream::FromFileDescriptor(fd, false, nullptr);
diff --git a/common/http_fetcher_unittest.cc b/common/http_fetcher_unittest.cc
index 49d0ebf..7821f4c 100644
--- a/common/http_fetcher_unittest.cc
+++ b/common/http_fetcher_unittest.cc
@@ -35,7 +35,7 @@
 #endif  // BASE_VER < 780000
 #include <base/stl_util.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
+#include <android-base/stringprintf.h>
 #if BASE_VER >= 780000  // CrOS
 #include <base/task/single_thread_task_executor.h>
 #endif  // BASE_VER >= 780000
diff --git a/common/mock_http_fetcher.cc b/common/mock_http_fetcher.cc
index 1b3cd7d..668d249 100644
--- a/common/mock_http_fetcher.cc
+++ b/common/mock_http_fetcher.cc
@@ -20,11 +20,12 @@
 
 #include <base/bind.h>
 #include <base/logging.h>
-#include <base/strings/string_util.h>
 #include <base/time/time.h>
 #include <brillo/message_loops/message_loop.h>
 #include <gtest/gtest.h>
 
+#include "update_engine/common/utils.h"
+
 // This is a mock implementation of HttpFetcher which is useful for testing.
 
 using brillo::MessageLoop;
@@ -107,11 +108,11 @@
 
 void MockHttpFetcher::SetHeader(const std::string& header_name,
                                 const std::string& header_value) {
-  extra_headers_[base::ToLowerASCII(header_name)] = header_value;
+  extra_headers_[ToLower(header_name)] = header_value;
 }
 
 std::string MockHttpFetcher::GetHeader(const std::string& header_name) const {
-  const auto it = extra_headers_.find(base::ToLowerASCII(header_name));
+  const auto it = extra_headers_.find(ToLower(header_name));
   if (it == extra_headers_.end())
     return "";
   return it->second;
diff --git a/common/prefs.cc b/common/prefs.cc
index a65ce51..3d69238 100644
--- a/common/prefs.cc
+++ b/common/prefs.cc
@@ -26,8 +26,8 @@
 #include <base/files/file_util.h>
 #include <base/logging.h>
 #include <base/strings/string_split.h>
-#include <base/strings/string_util.h>
 
+#include "android-base/strings.h"
 #include "update_engine/common/utils.h"
 
 using std::string;
@@ -73,7 +73,7 @@
   string str_value;
   if (!GetString(key, &str_value))
     return false;
-  base::TrimWhitespaceASCII(str_value, base::TRIM_ALL, &str_value);
+  str_value = android::base::Trim(str_value);
   if (str_value.empty()) {
     LOG(ERROR) << "When reading pref " << key
                << ", got an empty value after trim";
@@ -95,7 +95,7 @@
   string str_value;
   if (!GetString(key, &str_value))
     return false;
-  base::TrimWhitespaceASCII(str_value, base::TRIM_ALL, &str_value);
+  str_value = android::base::Trim(str_value);
   if (str_value == "false") {
     *value = false;
     return true;
@@ -163,7 +163,7 @@
 }
 
 string PrefsInterface::CreateSubKey(const vector<string>& ns_and_key) {
-  return base::JoinString(ns_and_key, string(1, kKeySeparator));
+  return android::base::Join(ns_and_key, string(1, kKeySeparator));
 }
 
 // Prefs
@@ -326,7 +326,7 @@
   // Allows only non-empty keys containing [A-Za-z0-9_-/].
   TEST_AND_RETURN_FALSE(!key.empty());
   for (char c : key)
-    TEST_AND_RETURN_FALSE(base::IsAsciiAlpha(c) || base::IsAsciiDigit(c) ||
+    TEST_AND_RETURN_FALSE(isalpha(c) || isdigit(c) ||
                           c == '_' || c == '-' || c == kKeySeparator);
   if (std::filesystem::exists(GetTemporaryDir())) {
     *filename =
diff --git a/common/prefs_unittest.cc b/common/prefs_unittest.cc
index 3cb04c7..f0d620f 100644
--- a/common/prefs_unittest.cc
+++ b/common/prefs_unittest.cc
@@ -25,7 +25,6 @@
 #include <base/files/file_util.h>
 #include <base/files/scoped_temp_dir.h>
 #include <android-base/macros.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gmock/gmock.h>
 #include <gtest/gtest.h>
diff --git a/common/subprocess.cc b/common/subprocess.cc
index 44734dc..dfc1c5c 100644
--- a/common/subprocess.cc
+++ b/common/subprocess.cc
@@ -30,7 +30,6 @@
 #include <base/bind.h>
 #include <base/logging.h>
 #include <base/posix/eintr_wrapper.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <brillo/secure_blob.h>
 
@@ -99,7 +98,7 @@
   proc->RedirectUsingPipe(STDOUT_FILENO, false);
   proc->SetPreExecCallback(base::Bind(&SetupChild, env, flags));
 
-  LOG(INFO) << "Running \"" << base::JoinString(cmd, " ") << "\"";
+  LOG(INFO) << "Running \"" << android::base::Join(cmd, " ") << "\"";
   return proc->Start();
 }
 
diff --git a/common/subprocess_unittest.cc b/common/subprocess_unittest.cc
index 2328693..2a8be94 100644
--- a/common/subprocess_unittest.cc
+++ b/common/subprocess_unittest.cc
@@ -31,7 +31,6 @@
 #if BASE_VER < 780000  // Android
 #include <base/message_loop/message_loop.h>
 #endif  // BASE_VER < 780000
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #if BASE_VER >= 780000  // Chrome OS
 #include <base/task/single_thread_task_executor.h>
diff --git a/common/utils.cc b/common/utils.cc
index 180c7b4..bd33eca 100644
--- a/common/utils.cc
+++ b/common/utils.cc
@@ -52,7 +52,7 @@
 #include <base/rand_util.h>
 #include <base/strings/string_number_conversions.h>
 #include <base/strings/string_split.h>
-#include <base/strings/string_util.h>
+#include <android-base/stringprintf.h>
 #include <brillo/data_encoding.h>
 
 #include "update_engine/common/constants.h"
@@ -370,7 +370,7 @@
 }
 
 off_t FileSize(int fd) {
-  struct stat stbuf{};
+  struct stat stbuf {};
   int rc = fstat(fd, &stbuf);
   CHECK_EQ(rc, 0);
   if (rc < 0) {
@@ -587,17 +587,17 @@
 }
 
 bool FileExists(const char* path) {
-  struct stat stbuf{};
+  struct stat stbuf {};
   return 0 == lstat(path, &stbuf);
 }
 
 bool IsSymlink(const char* path) {
-  struct stat stbuf{};
+  struct stat stbuf {};
   return lstat(path, &stbuf) == 0 && S_ISLNK(stbuf.st_mode) != 0;
 }
 
 bool IsRegFile(const char* path) {
-  struct stat stbuf{};
+  struct stat stbuf {};
   return lstat(path, &stbuf) == 0 && S_ISREG(stbuf.st_mode) != 0;
 }
 
@@ -752,7 +752,8 @@
 }
 
 bool IsMountpoint(const std::string& mountpoint) {
-  struct stat stdir{}, stparent{};
+  struct stat stdir {
+  }, stparent{};
 
   // Check whether the passed mountpoint is a directory and the /.. is in the
   // same device or not. If mountpoint/.. is in a different device it means that
@@ -1196,7 +1197,7 @@
 }
 
 string GetTimeAsString(time_t utime) {
-  struct tm tm{};
+  struct tm tm {};
   CHECK_EQ(localtime_r(&utime, &tm), &tm);
   char str[16];
   CHECK_EQ(strftime(str, sizeof(str), "%Y%m%d-%H%M%S", &tm), 15u);
diff --git a/common/utils.h b/common/utils.h
index 1d8de85..52665d3 100644
--- a/common/utils.h
+++ b/common/utils.h
@@ -562,6 +562,15 @@
 
 bool GetTempName(const std::string& path, base::FilePath* template_path);
 
+template <typename String>
+std::string ToLower(const String& str) {
+  auto copy = std::string(str);
+  std::transform(str.begin(), str.end(), copy.begin(), [](unsigned char c) {
+    return std::tolower(c);
+  });
+  return copy;
+}
+
 }  // namespace chromeos_update_engine
 
 #define TEST_AND_RETURN_FALSE_ERRNO(_x)                             \
diff --git a/libcurl_http_fetcher.cc b/libcurl_http_fetcher.cc
index 0ffb60b..08c8a67 100644
--- a/libcurl_http_fetcher.cc
+++ b/libcurl_http_fetcher.cc
@@ -29,7 +29,6 @@
 #include <base/location.h>
 #include <base/logging.h>
 #include <base/strings/string_split.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <base/threading/thread_task_runner_handle.h>
 
@@ -109,28 +108,24 @@
   CleanUp();
 }
 
-bool LibcurlHttpFetcher::GetProxyType(const string& proxy,
+bool LibcurlHttpFetcher::GetProxyType(const string& proxy_str,
                                       curl_proxytype* out_type) {
-  if (base::StartsWith(
-          proxy, "socks5://", base::CompareCase::INSENSITIVE_ASCII) ||
-      base::StartsWith(
-          proxy, "socks://", base::CompareCase::INSENSITIVE_ASCII)) {
+  auto proxy = ToLower(proxy_str);
+  if (android::base::StartsWith(proxy, "socks5://") ||
+      android::base::StartsWith(proxy, "socks://")) {
     *out_type = CURLPROXY_SOCKS5_HOSTNAME;
     return true;
   }
-  if (base::StartsWith(
-          proxy, "socks4://", base::CompareCase::INSENSITIVE_ASCII)) {
+  if (android::base::StartsWith(proxy, "socks4://")) {
     *out_type = CURLPROXY_SOCKS4A;
     return true;
   }
-  if (base::StartsWith(
-          proxy, "http://", base::CompareCase::INSENSITIVE_ASCII) ||
-      base::StartsWith(
-          proxy, "https://", base::CompareCase::INSENSITIVE_ASCII)) {
+  if (android::base::StartsWith(proxy, "http://") ||
+      android::base::StartsWith(proxy, "https://")) {
     *out_type = CURLPROXY_HTTP;
     return true;
   }
-  if (base::StartsWith(proxy, kNoProxy, base::CompareCase::INSENSITIVE_ASCII)) {
+  if (android::base::StartsWith(proxy, kNoProxy)) {
     // known failure case. don't log.
     return false;
   }
@@ -259,15 +254,12 @@
   // Lock down the appropriate curl options for HTTP or HTTPS depending on
   // the url.
   if (hardware_->IsOfficialBuild()) {
-    if (base::StartsWith(
-            url_, "http://", base::CompareCase::INSENSITIVE_ASCII)) {
+    if (android::base::StartsWith(ToLower(url_), "http://")) {
       SetCurlOptionsForHttp();
-    } else if (base::StartsWith(
-                   url_, "https://", base::CompareCase::INSENSITIVE_ASCII)) {
+    } else if (android::base::StartsWith(ToLower(url_), "https://")) {
       SetCurlOptionsForHttps();
 #ifdef __ANDROID__
-    } else if (base::StartsWith(
-                   url_, "file://", base::CompareCase::INSENSITIVE_ASCII)) {
+    } else if (android::base::StartsWith(ToLower(url_), "file://")) {
       SetCurlOptionsForFile();
 #endif  // __ANDROID__
     } else {
@@ -379,7 +371,7 @@
     header_line = header_name + ":";
   TEST_AND_RETURN(header_line.find('\n') == string::npos);
   TEST_AND_RETURN(header_name.find(':') == string::npos);
-  extra_headers_[base::ToLowerASCII(header_name)] = header_line;
+  extra_headers_[ToLower(header_name)] = header_line;
 }
 
 // Inputs: header_name, header_value
@@ -397,7 +389,7 @@
   // Initially clear |header_value| to handle both success and failures without
   // leaving |header_value| in a unclear state.
   header_value->clear();
-  auto header_key = base::ToLowerASCII(header_name);
+  auto header_key = ToLower(header_name);
   auto header_line_itr = extra_headers_.find(header_key);
   // If the |header_name| was never set, indicate so by returning false.
   if (header_line_itr == extra_headers_.end())
@@ -809,7 +801,7 @@
 
 void LibcurlHttpFetcher::GetHttpResponseCode() {
   long http_response_code = 0;  // NOLINT(runtime/int) - curl needs long.
-  if (base::StartsWith(url_, "file://", base::CompareCase::INSENSITIVE_ASCII)) {
+  if (android::base::StartsWith(ToLower(url_), "file://")) {
     // Fake out a valid response code for file:// URLs.
     http_response_code_ = 299;
   } else if (curl_easy_getinfo(curl_handle_,
diff --git a/lz4diff/lz4diff_compress_unittest.cc b/lz4diff/lz4diff_compress_unittest.cc
index 0a2b117..b00a108 100644
--- a/lz4diff/lz4diff_compress_unittest.cc
+++ b/lz4diff/lz4diff_compress_unittest.cc
@@ -23,7 +23,6 @@
 
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gtest/gtest.h>
 #include <erofs/internal.h>
diff --git a/lz4diff/lz4diff_unittest.cc b/lz4diff/lz4diff_unittest.cc
index b64a36a..f5ae796 100644
--- a/lz4diff/lz4diff_unittest.cc
+++ b/lz4diff/lz4diff_unittest.cc
@@ -24,7 +24,6 @@
 #include <base/format_macros.h>
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gtest/gtest.h>
 #include <erofs/internal.h>
diff --git a/payload_consumer/delta_performer_integration_test.cc b/payload_consumer/delta_performer_integration_test.cc
index 3dfd12a..fe3121b 100644
--- a/payload_consumer/delta_performer_integration_test.cc
+++ b/payload_consumer/delta_performer_integration_test.cc
@@ -25,7 +25,6 @@
 
 #include <base/files/file_path.h>
 #include <base/files/file_util.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gmock/gmock-matchers.h>
 #include <google/protobuf/repeated_field.h>
@@ -252,7 +251,8 @@
     signature_size_strings.push_back(
         android::base::StringPrintf("%zu", signature_size));
   }
-  string signature_size_string = base::JoinString(signature_size_strings, ":");
+  string signature_size_string =
+      android::base::Join(signature_size_strings, ":");
 
   ScopedTempFile hash_file("hash.XXXXXX"), metadata_hash_file("hash.XXXXXX");
   string delta_generator_path = GetBuildArtifactsPath("delta_generator");
@@ -289,9 +289,9 @@
                                             metadata_signature));
     metadata_sig_file_paths.push_back(metadata_sig_files.back().path());
   }
-  string sig_files_string = base::JoinString(sig_file_paths, ":");
+  string sig_files_string = android::base::Join(sig_file_paths, ":");
   string metadata_sig_files_string =
-      base::JoinString(metadata_sig_file_paths, ":");
+      android::base::Join(metadata_sig_file_paths, ":");
 
   // Add the signature to the payload.
   ASSERT_EQ(
diff --git a/payload_consumer/delta_performer_unittest.cc b/payload_consumer/delta_performer_unittest.cc
index 0e29ddf..d2b8bcd 100644
--- a/payload_consumer/delta_performer_unittest.cc
+++ b/payload_consumer/delta_performer_unittest.cc
@@ -29,7 +29,6 @@
 #include <base/files/file_path.h>
 #include <base/files/file_util.h>
 #include <base/files/scoped_temp_dir.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <brillo/secure_blob.h>
 #include <gmock/gmock.h>
diff --git a/payload_consumer/filesystem_verifier_action.cc b/payload_consumer/filesystem_verifier_action.cc
index 4990358..8c21673 100644
--- a/payload_consumer/filesystem_verifier_action.cc
+++ b/payload_consumer/filesystem_verifier_action.cc
@@ -31,7 +31,6 @@
 #include <utility>
 
 #include <base/bind.h>
-#include <base/strings/string_util.h>
 #include <brillo/data_encoding.h>
 #include <brillo/message_loops/message_loop.h>
 #include <brillo/secure_blob.h>
@@ -357,8 +356,8 @@
   if (partition_index_ == install_plan_.partitions.size()) {
     if (!install_plan_.untouched_dynamic_partitions.empty()) {
       LOG(INFO) << "Verifying extents of untouched dynamic partitions ["
-                << base::JoinString(install_plan_.untouched_dynamic_partitions,
-                                    ", ")
+                << android::base::Join(
+                       install_plan_.untouched_dynamic_partitions, ", ")
                 << "]";
       if (!dynamic_control_->VerifyExtentsForUntouchedPartitions(
               install_plan_.source_slot,
diff --git a/payload_consumer/install_plan.cc b/payload_consumer/install_plan.cc
index 58558f9..b55dea1 100644
--- a/payload_consumer/install_plan.cc
+++ b/payload_consumer/install_plan.cc
@@ -22,7 +22,6 @@
 #include <base/format_macros.h>
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 
 #include "update_engine/common/utils.h"
@@ -36,7 +35,7 @@
 namespace {
 string PayloadUrlsToString(
     const decltype(InstallPlan::Payload::payload_urls)& payload_urls) {
-  return "(" + base::JoinString(payload_urls, ",") + ")";
+  return "(" + android::base::Join(payload_urls, ",") + ")";
 }
 
 string VectorToString(const vector<std::pair<string, string>>& input,
@@ -46,9 +45,10 @@
                  input.end(),
                  std::back_inserter(vec),
                  [](const auto& pair) {
-                   return base::JoinString({pair.first, pair.second}, ": ");
+                   return android::base::Join(vector{pair.first, pair.second},
+                                              ": ");
                  });
-  return base::JoinString(vec, separator);
+  return android::base::Join(vec, separator);
 }
 }  // namespace
 
@@ -81,8 +81,7 @@
 
 string InstallPlan::ToString() const {
   string url_str = download_url;
-  if (base::StartsWith(
-          url_str, "fd://", base::CompareCase::INSENSITIVE_ASCII)) {
+  if (android::base::StartsWith(ToLower(url_str), "fd://")) {
     int fd = std::stoi(url_str.substr(strlen("fd://")));
     url_str = utils::GetFilePath(fd);
   }
@@ -145,7 +144,7 @@
         "\n  "));
   }
 
-  return base::JoinString(result_str, "\n");
+  return android::base::Join(result_str, "\n");
 }
 
 bool InstallPlan::LoadPartitionsFromSlots(BootControlInterface* boot_control) {
diff --git a/payload_consumer/partition_writer.cc b/payload_consumer/partition_writer.cc
index a415100..17763ea 100644
--- a/payload_consumer/partition_writer.cc
+++ b/payload_consumer/partition_writer.cc
@@ -29,7 +29,6 @@
 #include <vector>
 
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 
 #include "update_engine/common/error_code.h"
@@ -333,7 +332,7 @@
                                       static_cast<uint64_t>(ext.num_blocks())));
     }
     LOG(ERROR) << "Operation source (offset:size) in blocks: "
-               << base::JoinString(source_extents, ",");
+               << android::base::Join(source_extents, ",");
 
     // Log remount history if this device is an ext4 partition.
     LogMountHistory(source_fd);
diff --git a/payload_consumer/postinstall_runner_action.cc b/payload_consumer/postinstall_runner_action.cc
index aaa8a43..02417be 100644
--- a/payload_consumer/postinstall_runner_action.cc
+++ b/payload_consumer/postinstall_runner_action.cc
@@ -31,7 +31,6 @@
 #include <base/files/file_util.h>
 #include <base/logging.h>
 #include <base/strings/string_split.h>
-#include <base/strings/string_util.h>
 
 #include "update_engine/common/action_processor.h"
 #include "update_engine/common/boot_control_interface.h"
diff --git a/payload_consumer/postinstall_runner_action_unittest.cc b/payload_consumer/postinstall_runner_action_unittest.cc
index 38985dc..9eab1c1 100644
--- a/payload_consumer/postinstall_runner_action_unittest.cc
+++ b/payload_consumer/postinstall_runner_action_unittest.cc
@@ -29,7 +29,6 @@
 #if BASE_VER < 780000  // Android
 #include <base/message_loop/message_loop.h>
 #endif  // BASE_VER < 780000
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #if BASE_VER >= 780000  // CrOS
 #include <base/task/single_thread_task_executor.h>
diff --git a/payload_consumer/verified_source_fd.cc b/payload_consumer/verified_source_fd.cc
index ad3a0ef..addf534 100644
--- a/payload_consumer/verified_source_fd.cc
+++ b/payload_consumer/verified_source_fd.cc
@@ -23,7 +23,6 @@
 #include <vector>
 
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 
 #include "update_engine/common/error_code.h"
diff --git a/payload_generator/deflate_utils.cc b/payload_generator/deflate_utils.cc
index d196799..edd6fe1 100644
--- a/payload_generator/deflate_utils.cc
+++ b/payload_generator/deflate_utils.cc
@@ -22,7 +22,6 @@
 
 #include <base/files/file_util.h>
 #include <base/logging.h>
-#include <base/strings/string_util.h>
 
 #include "update_engine/common/utils.h"
 #include "update_engine/payload_generator/delta_diff_generator.h"
@@ -66,7 +65,7 @@
 bool IsSquashfsImage(const string& part_path,
                      const FilesystemInterface::File& file) {
   // Only check for files with img postfix.
-  if (base::EndsWith(file.name, ".img", base::CompareCase::SENSITIVE) &&
+  if (android::base::EndsWith(file.name, ".img") &&
       utils::BlocksInExtents(file.extents) >=
           kMinimumSquashfsImageSize / kBlockSize) {
     brillo::Blob super_block;
@@ -132,9 +131,7 @@
   return any_of(extensions.begin(),
                 extensions.end(),
                 [name = ToStringPiece(name)](const auto& ext) {
-                  return base::EndsWith(name,
-                                        ToStringPiece(ext),
-                                        base::CompareCase::INSENSITIVE_ASCII);
+                  return android::base::EndsWith(ToLower(name), ToLower(ext));
                 });
 }
 
diff --git a/payload_generator/delta_diff_utils.cc b/payload_generator/delta_diff_utils.cc
index 549a2b7..033d879 100644
--- a/payload_generator/delta_diff_utils.cc
+++ b/payload_generator/delta_diff_utils.cc
@@ -41,7 +41,6 @@
 
 #include <base/files/file_util.h>
 #include <base/format_macros.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <base/threading/simple_thread.h>
 #include <brillo/data_encoding.h>
diff --git a/payload_generator/erofs_filesystem_unittest.cc b/payload_generator/erofs_filesystem_unittest.cc
index af7ff5e..43a38ec 100644
--- a/payload_generator/erofs_filesystem_unittest.cc
+++ b/payload_generator/erofs_filesystem_unittest.cc
@@ -24,7 +24,6 @@
 #include <base/format_macros.h>
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gtest/gtest.h>
 
diff --git a/payload_generator/ext2_filesystem_unittest.cc b/payload_generator/ext2_filesystem_unittest.cc
index 2f21718..28f14c6 100644
--- a/payload_generator/ext2_filesystem_unittest.cc
+++ b/payload_generator/ext2_filesystem_unittest.cc
@@ -26,7 +26,6 @@
 #include <base/format_macros.h>
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gtest/gtest.h>
 
diff --git a/payload_generator/full_update_generator.cc b/payload_generator/full_update_generator.cc
index f360642..2491f76 100644
--- a/payload_generator/full_update_generator.cc
+++ b/payload_generator/full_update_generator.cc
@@ -24,7 +24,6 @@
 #include <memory>
 
 #include <base/format_macros.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <base/synchronization/lock.h>
 #include <base/threading/simple_thread.h>
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index 7507ff3..635d801 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -26,7 +26,6 @@
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
 #include <base/strings/string_split.h>
-#include <base/strings/string_util.h>
 #include <brillo/key_value_store.h>
 #include <brillo/message_loops/base_message_loop.h>
 #include <unistd.h>
@@ -280,7 +279,7 @@
   for (const auto& it : map) {
     result.emplace_back(it.first + ": " + it.second);
   }
-  return "{" + base::JoinString(result, ",") + "}";
+  return "{" + android::base::Join(result, ",") + "}";
 }
 
 bool ParsePerPartitionTimestamps(const string& partition_timestamps,
diff --git a/payload_generator/mapfile_filesystem_unittest.cc b/payload_generator/mapfile_filesystem_unittest.cc
index 567eb80..e3291aa 100644
--- a/payload_generator/mapfile_filesystem_unittest.cc
+++ b/payload_generator/mapfile_filesystem_unittest.cc
@@ -25,7 +25,6 @@
 #include <base/format_macros.h>
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gtest/gtest.h>
 
diff --git a/payload_generator/payload_properties.cc b/payload_generator/payload_properties.cc
index d47c059..60c682a 100644
--- a/payload_generator/payload_properties.cc
+++ b/payload_generator/payload_properties.cc
@@ -22,7 +22,6 @@
 #include <vector>
 
 #include <base/json/json_writer.h>
-#include <base/strings/string_util.h>
 #include <base/values.h>
 #include <brillo/data_encoding.h>
 
@@ -118,7 +117,7 @@
       base64_signatures.push_back(
           brillo::data_encoding::Base64Encode(sig.data()));
     }
-    metadata_signatures_ = base::JoinString(base64_signatures, ":");
+    metadata_signatures_ = android::base::Join(base64_signatures, ":");
   }
 
   is_delta_ = std::any_of(manifest.partitions().begin(),
diff --git a/payload_generator/squashfs_filesystem_unittest.cc b/payload_generator/squashfs_filesystem_unittest.cc
index b16375b..87eacf2 100644
--- a/payload_generator/squashfs_filesystem_unittest.cc
+++ b/payload_generator/squashfs_filesystem_unittest.cc
@@ -27,7 +27,6 @@
 #include <base/format_macros.h>
 #include <base/logging.h>
 #include <base/strings/string_number_conversions.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 #include <gtest/gtest.h>
 
diff --git a/test_http_server.cc b/test_http_server.cc
index 24f6261..2e07a23 100644
--- a/test_http_server.cc
+++ b/test_http_server.cc
@@ -41,9 +41,9 @@
 #include <base/logging.h>
 #include <base/posix/eintr_wrapper.h>
 #include <base/strings/string_split.h>
-#include <base/strings/string_util.h>
 #include <android-base/stringprintf.h>
 
+#include "android-base/strings.h"
 #include "update_engine/common/http_common.h"
 
 // HTTP end-of-line delimiter; sorry, this needs to be a macro.
@@ -86,7 +86,7 @@
       exit(RC_ERR_READ);
     }
     headers.append(buf, r);
-  } while (!base::EndsWith(headers, EOL EOL, base::CompareCase::SENSITIVE));
+  } while (!android::base::EndsWith(headers, EOL EOL));
 
   LOG(INFO) << "got headers:\n--8<------8<------8<------8<----\n"
             << headers << "\n--8<------8<------8<------8<----";
@@ -100,10 +100,7 @@
       base::SPLIT_WANT_ALL);
 
   // Decode URL line.
-  vector<string> terms = base::SplitString(lines[0],
-                                           base::kWhitespaceASCII,
-                                           base::KEEP_WHITESPACE,
-                                           base::SPLIT_WANT_NONEMPTY);
+  vector<string> terms = android::base::Tokenize(lines[0], " ");
   CHECK_EQ(terms.size(), static_cast<vector<string>::size_type>(3));
   CHECK_EQ(terms[0], "GET");
   request->url = terms[1];
@@ -112,16 +109,13 @@
   // Decode remaining lines.
   size_t i{};
   for (i = 1; i < lines.size(); i++) {
-    terms = base::SplitString(lines[i],
-                              base::kWhitespaceASCII,
-                              base::KEEP_WHITESPACE,
-                              base::SPLIT_WANT_NONEMPTY);
+    terms = android::base::Tokenize(lines[i], " ");
 
     if (terms[0] == "Range:") {
       CHECK_EQ(terms.size(), static_cast<vector<string>::size_type>(2));
       string& range = terms[1];
       LOG(INFO) << "range attribute: " << range;
-      CHECK(base::StartsWith(range, "bytes=", base::CompareCase::SENSITIVE) &&
+      CHECK(android::base::StartsWith(range, "bytes=") &&
             range.find('-') != string::npos);
       request->start_offset = atoll(range.c_str() + strlen("bytes="));
       // Decode end offset and increment it by one (so it is non-inclusive).
@@ -529,11 +523,10 @@
   LOG(INFO) << "pid(" << getpid() << "): handling url " << url;
   if (url == "/quitquitquit") {
     HandleQuit(fd);
-  } else if (base::StartsWith(
-                 url, "/download/", base::CompareCase::SENSITIVE)) {
+  } else if (android::base::StartsWith(url, "/download/")) {
     const UrlTerms terms(url, 2);
     HandleGet(fd, request, terms.GetSizeT(1));
-  } else if (base::StartsWith(url, "/flaky/", base::CompareCase::SENSITIVE)) {
+  } else if (android::base::StartsWith(url, "/flaky/")) {
     const UrlTerms terms(url, 5);
     HandleGet(fd,
               request,
@@ -545,8 +538,7 @@
     HandleRedirect(fd, request);
   } else if (url == "/error") {
     HandleError(fd, request);
-  } else if (base::StartsWith(
-                 url, "/error-if-offset/", base::CompareCase::SENSITIVE)) {
+  } else if (android::base::StartsWith(url, "/error-if-offset/")) {
     const UrlTerms terms(url, 3);
     HandleErrorIfOffset(fd, request, terms.GetSizeT(1), terms.GetInt(2));
   } else if (url == "/echo-headers") {