diff --git a/.gitignore b/.gitignore
index 526938f..a232e2c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
 build
 buildtools
 testing
+third_party/abseil-cpp/
 third_party/angle/
 third_party/clang-format/
 third_party/glfw/
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4fefeb4..0d949b5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,6 +94,7 @@
 
 set(DAWN_THIRD_PARTY_DIR "${Dawn_SOURCE_DIR}/third_party" CACHE STRING "Directory in which to find third-party dependencies.")
 
+set(DAWN_ABSEIL_DIR "${DAWN_THIRD_PARTY_DIR}/abseil-cpp" CACHE STRING "Directory in which to find Abseil")
 set(DAWN_GLFW_DIR "${DAWN_THIRD_PARTY_DIR}/glfw" CACHE STRING "Directory in which to find GLFW")
 set(DAWN_GLM_DIR "${DAWN_THIRD_PARTY_DIR}/glm" CACHE STRING "Directory in which to find GLM")
 set(DAWN_JINJA2_DIR "${DAWN_THIRD_PARTY_DIR}/jinja2" CACHE STRING "Directory in which to find Jinja2")
diff --git a/DEPS b/DEPS
index b519131..089c2f0 100644
--- a/DEPS
+++ b/DEPS
@@ -9,6 +9,21 @@
   'swiftshader_git': 'https://swiftshader.googlesource.com',
 
   'dawn_standalone': True,
+
+  # Current revision of googletest.
+  # Note: this dep cannot be auto-rolled b/c of nesting.
+  'googletest_revision': '2d924d7a971e9667d76ad09727fb2402b4f8a1e3',
+
+  # Current revision of Chrome's third_party googletest directory. This
+  # repository is mirrored as a separate repository, with separate git hashes
+  # that don't match the external googletest repository or Chrome. Mirrored
+  # patches will have a different git hash associated with them.
+  # To roll, first get the new hash for chromium_googletest_revision from the
+  # mirror of third_party/googletest located here:
+  # https://chromium.googlesource.com/chromium/src/third_party/googletest/
+  # Then get the new hash for googletest_revision from the root Chrome DEPS
+  # file: https://source.chromium.org/chromium/chromium/src/+/main:DEPS
+  'chromium_googletest_revision': '17bbed2084d3127bd7bcd27283f18d7a5861bea8',
 }
 
 deps = {
@@ -80,7 +95,7 @@
     'condition': 'dawn_standalone',
   },
   'third_party/googletest': {
-    'url': '{chromium_git}/external/github.com/google/googletest@2828773179fa425ee406df61890a150577178ea2',
+    'url': '{chromium_git}/chromium/src/third_party/googletest@{chromium_googletest_revision}',
     'condition': 'dawn_standalone',
   },
 
@@ -135,6 +150,11 @@
     'url': '{chromium_git}/chromium/src/third_party/zlib@c29ee8c9c3824ca013479bf8115035527967fe02',
     'condition': 'dawn_standalone',
   },
+
+  'third_party/abseil-cpp': {
+    'url': '{chromium_git}/chromium/src/third_party/abseil-cpp@789af048b388657987c59d4da406859034fe310f',
+    'condition': 'dawn_standalone',
+  },
 }
 
 hooks = [
@@ -232,5 +252,6 @@
 ]
 
 recursedeps = [
+  'third_party/googletest',
   'third_party/vulkan-deps',
 ]
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
index e883854..1dad137 100644
--- a/build_overrides/build.gni
+++ b/build_overrides/build.gni
@@ -23,6 +23,10 @@
   # Android 32-bit non-component, non-clang builds cannot have symbol_level=2
   # due to 4GiB file size limit, see https://crbug.com/648948.
   ignore_elf32_limitations = false
+
+  # If true, it assumes that //third_party/abseil-cpp is an available
+  # dependency for googletest.
+  gtest_enable_absl_printers = false
 }
 
 # Detect whether we can use the hermetic XCode like in Chromium and do so if
diff --git a/build_overrides/dawn.gni b/build_overrides/dawn.gni
index d0190b10..4e9d4907 100644
--- a/build_overrides/dawn.gni
+++ b/build_overrides/dawn.gni
@@ -27,6 +27,7 @@
 # users of Dawn don't have to set dirs if they happen to use the same as Dawn.
 
 # The paths to Dawn's dependencies
+dawn_abseil_dir = "//third_party/abseil-cpp"
 dawn_angle_dir = "//third_party/angle"
 dawn_jinja2_dir = "//third_party/jinja2"
 dawn_glfw_dir = "//third_party/glfw"
diff --git a/scripts/dawn_overrides_with_defaults.gni b/scripts/dawn_overrides_with_defaults.gni
index acb5a70..4b30ec2 100644
--- a/scripts/dawn_overrides_with_defaults.gni
+++ b/scripts/dawn_overrides_with_defaults.gni
@@ -76,3 +76,7 @@
   # Default to Tint being Dawn's DEPS
   dawn_tint_dir = "${dawn_root}/third_party/tint"
 }
+
+if (!defined(dawn_abseil_dir)) {
+  dawn_abseil_dir = "//third_party/abseil-cpp"
+}
diff --git a/src/dawn_native/BUILD.gn b/src/dawn_native/BUILD.gn
index ad46ffc..edbc594 100644
--- a/src/dawn_native/BUILD.gn
+++ b/src/dawn_native/BUILD.gn
@@ -53,6 +53,32 @@
       dawn_enable_vulkan_loader && dawn_vulkan_loader_dir != ""
 }
 
+config("dawn_abseil_config") {
+  if (dawn_standalone && is_clang) {
+    cflags = [
+      # Allow the use of enable_if()
+      "-Wno-gcc-compat",
+    ]
+  }
+
+  configs = [
+    "$dawn_abseil_dir:absl_define_config",
+    "$dawn_abseil_dir:absl_include_config",
+  ]
+}
+
+group("dawn_abseil") {
+  # When build_with_chromium=true we need to include "//third_party/abseil-cpp:absl" while
+  # we can be more specific when building standalone Dawn.
+  if (build_with_chromium) {
+    public_deps = [ "$dawn_abseil_dir:absl" ]
+  } else {
+    public_deps = [ "$dawn_abseil_dir/absl/strings:str_format" ]
+  }
+
+  public_configs = [ ":dawn_abseil_config" ]
+}
+
 config("dawn_native_internal") {
   configs = [ "${dawn_root}/src/common:dawn_internal" ]
 
@@ -142,6 +168,7 @@
 # except those that define exported symbols.
 source_set("dawn_native_sources") {
   deps = [
+    ":dawn_abseil",
     ":dawn_native_headers",
     ":dawn_native_utils_gen",
     "${dawn_root}/src/common",
diff --git a/src/dawn_native/ShaderModule.cpp b/src/dawn_native/ShaderModule.cpp
index f821606..f108c33 100644
--- a/src/dawn_native/ShaderModule.cpp
+++ b/src/dawn_native/ShaderModule.cpp
@@ -14,6 +14,7 @@
 
 #include "dawn_native/ShaderModule.h"
 
+#include "absl/strings/str_format.h"
 #include "common/Constants.h"
 #include "common/HashUtils.h"
 #include "dawn_native/BindGroupLayout.h"
@@ -35,10 +36,8 @@
     namespace {
 
         std::string GetShaderDeclarationString(BindGroupIndex group, BindingNumber binding) {
-            std::ostringstream ostream;
-            ostream << "the shader module declaration at set " << static_cast<uint32_t>(group)
-                    << " binding " << static_cast<uint32_t>(binding);
-            return ostream.str();
+            return absl::StrFormat("the shader module declaration at set %u, binding %u",
+                                   static_cast<uint32_t>(group), static_cast<uint32_t>(binding));
         }
 
         tint::transform::VertexFormat ToTintVertexFormat(wgpu::VertexFormat format) {
diff --git a/src/tests/BUILD.gn b/src/tests/BUILD.gn
index 6fbe81b..6b8c850 100644
--- a/src/tests/BUILD.gn
+++ b/src/tests/BUILD.gn
@@ -39,7 +39,7 @@
 if (!build_with_chromium) {
   # When we aren't in Chromium we define out own targets based on the location
   # of the googletest repo.
-  googletest_dir = dawn_googletest_dir
+  googletest_dir = "${dawn_googletest_dir}/src"
 
   config("gtest_config") {
     include_dirs = [
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
index 94e5d83..f7eb8c2 100644
--- a/third_party/CMakeLists.txt
+++ b/third_party/CMakeLists.txt
@@ -59,6 +59,11 @@
     add_subdirectory(${DAWN_TINT_DIR})
 endif()
 
+if (NOT TARGET libabsl)
+    message(STATUS "Dawn: using Abseil at ${DAWN_ABSEIL_DIR}")
+    add_subdirectory(${DAWN_ABSEIL_DIR})
+endif()
+
 # Header-only library for khrplatform.h
 add_library(dawn_khronos_platform INTERFACE)
 target_sources(dawn_khronos_platform INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/khronos/KHR/khrplatform.h")
