Revert "Use absl::optional instead or rtc::Optional"

This reverts commit 7ba9e92fa0dfb16579f4f6ecd746397bdfdd174d.

Reason for revert: Breaks Chromium static initialized regression test.
https://ci.chromium.org/p/chromium/builders/luci.chromium.try/android-marshmallow-arm64-rel/5068

Original change's description:
> Use absl::optional instead or rtc::Optional
> 
> BUG: webrtc:9078
> Change-Id: I69aedce324d86e8894b81210a2de17c5ef68fd11
> Reviewed-on: https://webrtc-review.googlesource.com/77082
> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23440}

TBR=danilchap@webrtc.org,mbonadei@webrtc.org,kwiberg@webrtc.org

Change-Id: I09ae74bddc69d0b25c8dfbcacc4ec906b34ca748
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/79980
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23449}
diff --git a/api/optional_unittest.cc b/api/optional_unittest.cc
index f56dc6d..ad700dc 100644
--- a/api/optional_unittest.cc
+++ b/api/optional_unittest.cc
@@ -8,9 +8,6 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-// TODO(bugs.webrtc.org/8821): Delete this file when absl unittests run on
-// webrtc bots.
-
 #include <memory>
 #include <sstream>
 #include <string>
@@ -705,16 +702,31 @@
 
 TEST(OptionalTest, TestDereferenceWithDefault) {
   auto log = Logger::Setup();
-  const Logger a(17), b(42);
-  Optional<Logger> x(a);
-  Optional<Logger> y;
-  EXPECT_EQ(a, x.value_or(Logger(42)));
-  EXPECT_EQ(b, y.value_or(Logger(42)));
-  EXPECT_EQ(a, Optional<Logger>(Logger(17)).value_or(b));
-  EXPECT_EQ(b, Optional<Logger>().value_or(b));
-  // Can't expect exact list of constructors and destructors because it is
-  // compiler-dependent. i.e. msvc produce different output than clang. Calls
-  // above are subject to copy elision that allow to change behavior.
+  {
+    const Logger a(17), b(42);
+    Optional<Logger> x(a);
+    Optional<Logger> y;
+    log->push_back("-1-");
+    EXPECT_EQ(a, x.value_or(Logger(42)));
+    log->push_back("-2-");
+    EXPECT_EQ(b, y.value_or(Logger(42)));
+    log->push_back("-3-");
+    EXPECT_EQ(a, Optional<Logger>(Logger(17)).value_or(b));
+    log->push_back("-4-");
+    EXPECT_EQ(b, Optional<Logger>().value_or(b));
+    log->push_back("-5-");
+  }
+  EXPECT_EQ(
+      V("0:17. explicit constructor", "1:42. explicit constructor",
+        "2:17. copy constructor (from 0:17)", "-1-",
+        "3:42. explicit constructor", "operator== 0:17, 2:17",
+        "3:42. destructor", "-2-", "4:42. explicit constructor",
+        "operator== 1:42, 4:42", "4:42. destructor", "-3-",
+        "5:17. explicit constructor", "6:17. move constructor (from 5:17)",
+        "operator== 0:17, 6:17", "6:17. destructor", "5:17. destructor", "-4-",
+        "operator== 1:42, 1:42", "-5-", "2:17. destructor", "1:42. destructor",
+        "0:17. destructor"),
+      *log);
 }
 
 TEST(OptionalTest, TestEquality) {
@@ -859,16 +871,8 @@
       *log);
 }
 
-// Nice printing available only when GTEST aware ABSL is present
-#ifdef GTEST_HAS_ABSL
-#define MaybeTestPrintTo TestPrintTo
-#define MaybeTestUnprintablePrintTo TestUnprintablePrintTo
-#else
-#define MaybeTestPrintTo DISABLED_TestPrintTo
-#define MaybeTestUnprintablePrintTo DISABLED_TestUnprintablePrintTo
-#endif
-TEST(OptionalTest, MaybeTestPrintTo) {
-  constexpr char kEmptyOptionalMessage[] = "(nullopt)";
+TEST(OptionalTest, TestPrintTo) {
+  constexpr char kEmptyOptionalMessage[] = "<empty optional>";
   const Optional<MyUnprintableType> empty_unprintable;
   const Optional<MyPrintableType> empty_printable;
   const Optional<MyOstreamPrintableType> empty_ostream_printable;
@@ -876,22 +880,14 @@
   EXPECT_EQ(kEmptyOptionalMessage, ::testing::PrintToString(empty_printable));
   EXPECT_EQ(kEmptyOptionalMessage,
             ::testing::PrintToString(empty_ostream_printable));
-  EXPECT_NE("(1)", ::testing::PrintToString(Optional<MyUnprintableType>({1})));
-  EXPECT_NE("(1)", ::testing::PrintToString(Optional<MyPrintableType>({1})));
-  EXPECT_EQ("(The value is 1)",
+  EXPECT_NE("1", ::testing::PrintToString(Optional<MyUnprintableType>({1})));
+  EXPECT_NE("1", ::testing::PrintToString(Optional<MyPrintableType>({1})));
+  EXPECT_EQ("The value is 1",
             ::testing::PrintToString(Optional<MyPrintableType>({1})));
-  EXPECT_EQ("(1)",
+  EXPECT_EQ("1",
             ::testing::PrintToString(Optional<MyOstreamPrintableType>({1})));
 }
 
-TEST(OptionalTest, MaybeTestUnprintablePrintTo) {
-  struct UnprintableType {
-    uint8_t value[5];
-  };
-  Optional<UnprintableType> opt({0xa1, 0xb2, 0xc3, 0xd4, 0xe5});
-  EXPECT_EQ("(5-byte object <A1-B2 C3-D4 E5>)", ::testing::PrintToString(opt));
-}
-
 void UnusedFunctionWorkaround() {
   // These are here to ensure we don't get warnings about ostream and PrintTo
   // for MyPrintableType never getting called.