Checkout abseil into third_party/abseil-cpp.

Import abseil into third_party/abseil-cpp like Chromium and V8. This is
a requirement for using newer versions of V8.

Bug: pdfium:1726
Change-Id: Id9d1d825f46996e53dd584c8993c29d75d85d1da
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/85554
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/.gitignore b/.gitignore
index af0aa39..414cb29 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
 /buildtools
 /out
 /testing/corpus
+/third_party/abseil-cpp
 /third_party/android_ndk
 /third_party/catapult
 /third_party/depot_tools
diff --git a/DEPS b/DEPS
index 355ea59..a3d7a67 100644
--- a/DEPS
+++ b/DEPS
@@ -23,6 +23,10 @@
   'pdfium_git': 'https://pdfium.googlesource.com',
 
   # Three lines of non-changing comments so that
+  # the commit queue can handle CLs rolling abseil
+  # and whatever else without interference from each other.
+  'abseil_revision': 'a46a6332f7b310ce5280d1b9bd7d8b557d445c2d',
+  # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling android_ndk
   # and whatever else without interference from each other.
   'android_ndk_revision': '401019bf85744311b26c88ced255cd53401af8b7',
@@ -198,6 +202,10 @@
   'testing/corpus':
     Var('pdfium_git') + '/pdfium_tests@' + Var('pdfium_tests_revision'),
 
+  'third_party/abseil-cpp':
+    Var('chromium_git') + '/chromium/src/third_party/abseil-cpp.git@' +
+        Var('abseil_revision'),
+
   'third_party/android_ndk': {
     'url': Var('chromium_git') + '/android_ndk.git@' +
         Var('android_ndk_revision'),
@@ -321,6 +329,14 @@
   '+constants',
   '+testing',
   '+third_party/base',
+
+  # Abseil features must be allowlisted explicitly for now. See Chromium's
+  # //styleguide/c++/c++11.html. Allowed features' headers will be listed
+  # explicitly here.
+  '-absl',
+  '-third_party/abseil-cpp',
+  '+third_party/abseil-cpp/absl/types/optional.h',
+  '+third_party/abseil-cpp/absl/types/variant.h',
 ]
 
 specific_include_rules = {
diff --git a/third_party/BUILD.gn b/third_party/BUILD.gn
index bdddb24..41e339a 100644
--- a/third_party/BUILD.gn
+++ b/third_party/BUILD.gn
@@ -624,7 +624,10 @@
     "base/template_util.h",
   ]
 
-  public_deps = [ "../core/fxcrt:unowned_ptr" ]
+  public_deps = [
+    "../core/fxcrt:unowned_ptr",
+    "//third_party/abseil-cpp:absl",
+  ]
 
   if (is_win) {
     sources += [