Reland "Trim down FileWrapper class to be merely a wrapper owning a FILE*"

This is a reland of 80b95de7651caa0cfeb684ffc200860989f667dc

Original change's description:
> Trim down FileWrapper class to be merely a wrapper owning a FILE*
> 
> Bug: webrtc:6463
> Change-Id: If71e2f3a75dc1863bc805ab71de1e2d33294f805
> Reviewed-on: https://webrtc-review.googlesource.com/c/117881
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26311}

Bug: webrtc:6463
Change-Id: I12154ef65744c1b7811974a1d871e05ed3fbbc27
Reviewed-on: https://webrtc-review.googlesource.com/c/118660
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26337}
diff --git a/modules/audio_processing/transient/file_utils_unittest.cc b/modules/audio_processing/transient/file_utils_unittest.cc
index ced06b1..0bded02 100644
--- a/modules/audio_processing/transient/file_utils_unittest.cc
+++ b/modules/audio_processing/transient/file_utils_unittest.cc
@@ -158,22 +158,20 @@
 TEST_F(TransientFileUtilsTest, MAYBE_ReadInt16BufferFromFile) {
   std::string test_filename = kTestFileName;
 
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
-  file->OpenFile(test_filename.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kTestFileName.c_str();
+  FileWrapper file = FileWrapper::OpenReadOnly(test_filename.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kTestFileName.c_str();
 
   const size_t kBufferLength = 12;
   std::unique_ptr<int16_t[]> buffer(new int16_t[kBufferLength]);
 
   EXPECT_EQ(kBufferLength,
-            ReadInt16BufferFromFile(file.get(), kBufferLength, buffer.get()));
+            ReadInt16BufferFromFile(&file, kBufferLength, buffer.get()));
   EXPECT_EQ(22377, buffer[4]);
   EXPECT_EQ(16389, buffer[7]);
   EXPECT_EQ(17631, buffer[kBufferLength - 1]);
 
-  file->Rewind();
+  file.Rewind();
 
   // The next test is for checking the case where there are not as much data as
   // needed in the file, but reads to the end, and it returns the number of
@@ -181,7 +179,7 @@
   const size_t kBufferLenghtLargerThanFile = kBufferLength * 2;
   buffer.reset(new int16_t[kBufferLenghtLargerThanFile]);
   EXPECT_EQ(kBufferLength,
-            ReadInt16BufferFromFile(file.get(), kBufferLenghtLargerThanFile,
+            ReadInt16BufferFromFile(&file, kBufferLenghtLargerThanFile,
                                     buffer.get()));
   EXPECT_EQ(11544, buffer[0]);
   EXPECT_EQ(22377, buffer[4]);
@@ -198,24 +196,22 @@
 TEST_F(TransientFileUtilsTest, MAYBE_ReadInt16FromFileToFloatBuffer) {
   std::string test_filename = kTestFileName;
 
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
-  file->OpenFile(test_filename.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kTestFileName.c_str();
+  FileWrapper file = FileWrapper::OpenReadOnly(test_filename.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kTestFileName.c_str();
 
   const size_t kBufferLength = 12;
   std::unique_ptr<float[]> buffer(new float[kBufferLength]);
 
-  EXPECT_EQ(kBufferLength, ReadInt16FromFileToFloatBuffer(
-                               file.get(), kBufferLength, buffer.get()));
+  EXPECT_EQ(kBufferLength,
+            ReadInt16FromFileToFloatBuffer(&file, kBufferLength, buffer.get()));
 
   EXPECT_DOUBLE_EQ(11544, buffer[0]);
   EXPECT_DOUBLE_EQ(22377, buffer[4]);
   EXPECT_DOUBLE_EQ(16389, buffer[7]);
   EXPECT_DOUBLE_EQ(17631, buffer[kBufferLength - 1]);
 
-  file->Rewind();
+  file.Rewind();
 
   // The next test is for checking the case where there are not as much data as
   // needed in the file, but reads to the end, and it returns the number of
@@ -223,8 +219,8 @@
   const size_t kBufferLenghtLargerThanFile = kBufferLength * 2;
   buffer.reset(new float[kBufferLenghtLargerThanFile]);
   EXPECT_EQ(kBufferLength,
-            ReadInt16FromFileToFloatBuffer(
-                file.get(), kBufferLenghtLargerThanFile, buffer.get()));
+            ReadInt16FromFileToFloatBuffer(&file, kBufferLenghtLargerThanFile,
+                                           buffer.get()));
   EXPECT_DOUBLE_EQ(11544, buffer[0]);
   EXPECT_DOUBLE_EQ(22377, buffer[4]);
   EXPECT_DOUBLE_EQ(16389, buffer[7]);
@@ -240,23 +236,21 @@
 TEST_F(TransientFileUtilsTest, MAYBE_ReadInt16FromFileToDoubleBuffer) {
   std::string test_filename = kTestFileName;
 
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
-  file->OpenFile(test_filename.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kTestFileName.c_str();
+  FileWrapper file = FileWrapper::OpenReadOnly(test_filename.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kTestFileName.c_str();
 
   const size_t kBufferLength = 12;
   std::unique_ptr<double[]> buffer(new double[kBufferLength]);
 
-  EXPECT_EQ(kBufferLength, ReadInt16FromFileToDoubleBuffer(
-                               file.get(), kBufferLength, buffer.get()));
+  EXPECT_EQ(kBufferLength, ReadInt16FromFileToDoubleBuffer(&file, kBufferLength,
+                                                           buffer.get()));
   EXPECT_DOUBLE_EQ(11544, buffer[0]);
   EXPECT_DOUBLE_EQ(22377, buffer[4]);
   EXPECT_DOUBLE_EQ(16389, buffer[7]);
   EXPECT_DOUBLE_EQ(17631, buffer[kBufferLength - 1]);
 
-  file->Rewind();
+  file.Rewind();
 
   // The next test is for checking the case where there are not as much data as
   // needed in the file, but reads to the end, and it returns the number of
@@ -264,8 +258,8 @@
   const size_t kBufferLenghtLargerThanFile = kBufferLength * 2;
   buffer.reset(new double[kBufferLenghtLargerThanFile]);
   EXPECT_EQ(kBufferLength,
-            ReadInt16FromFileToDoubleBuffer(
-                file.get(), kBufferLenghtLargerThanFile, buffer.get()));
+            ReadInt16FromFileToDoubleBuffer(&file, kBufferLenghtLargerThanFile,
+                                            buffer.get()));
   EXPECT_DOUBLE_EQ(11544, buffer[0]);
   EXPECT_DOUBLE_EQ(22377, buffer[4]);
   EXPECT_DOUBLE_EQ(16389, buffer[7]);
@@ -280,22 +274,20 @@
 TEST_F(TransientFileUtilsTest, MAYBE_ReadFloatBufferFromFile) {
   std::string test_filename = kTestFileNamef;
 
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
-  file->OpenFile(test_filename.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kTestFileNamef.c_str();
+  FileWrapper file = FileWrapper::OpenReadOnly(test_filename.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kTestFileNamef.c_str();
 
   const size_t kBufferLength = 3;
   std::unique_ptr<float[]> buffer(new float[kBufferLength]);
 
   EXPECT_EQ(kBufferLength,
-            ReadFloatBufferFromFile(file.get(), kBufferLength, buffer.get()));
+            ReadFloatBufferFromFile(&file, kBufferLength, buffer.get()));
   EXPECT_FLOAT_EQ(kPi, buffer[0]);
   EXPECT_FLOAT_EQ(kE, buffer[1]);
   EXPECT_FLOAT_EQ(kAvogadro, buffer[2]);
 
-  file->Rewind();
+  file.Rewind();
 
   // The next test is for checking the case where there are not as much data as
   // needed in the file, but reads to the end, and it returns the number of
@@ -303,7 +295,7 @@
   const size_t kBufferLenghtLargerThanFile = kBufferLength * 2;
   buffer.reset(new float[kBufferLenghtLargerThanFile]);
   EXPECT_EQ(kBufferLength,
-            ReadFloatBufferFromFile(file.get(), kBufferLenghtLargerThanFile,
+            ReadFloatBufferFromFile(&file, kBufferLenghtLargerThanFile,
                                     buffer.get()));
   EXPECT_FLOAT_EQ(kPi, buffer[0]);
   EXPECT_FLOAT_EQ(kE, buffer[1]);
@@ -318,22 +310,20 @@
 TEST_F(TransientFileUtilsTest, MAYBE_ReadDoubleBufferFromFile) {
   std::string test_filename = kTestFileName;
 
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
-  file->OpenFile(test_filename.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kTestFileName.c_str();
+  FileWrapper file = FileWrapper::OpenReadOnly(test_filename.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kTestFileName.c_str();
 
   const size_t kBufferLength = 3;
   std::unique_ptr<double[]> buffer(new double[kBufferLength]);
 
   EXPECT_EQ(kBufferLength,
-            ReadDoubleBufferFromFile(file.get(), kBufferLength, buffer.get()));
+            ReadDoubleBufferFromFile(&file, kBufferLength, buffer.get()));
   EXPECT_DOUBLE_EQ(kPi, buffer[0]);
   EXPECT_DOUBLE_EQ(kE, buffer[1]);
   EXPECT_DOUBLE_EQ(kAvogadro, buffer[2]);
 
-  file->Rewind();
+  file.Rewind();
 
   // The next test is for checking the case where there are not as much data as
   // needed in the file, but reads to the end, and it returns the number of
@@ -341,7 +331,7 @@
   const size_t kBufferLenghtLargerThanFile = kBufferLength * 2;
   buffer.reset(new double[kBufferLenghtLargerThanFile]);
   EXPECT_EQ(kBufferLength,
-            ReadDoubleBufferFromFile(file.get(), kBufferLenghtLargerThanFile,
+            ReadDoubleBufferFromFile(&file, kBufferLenghtLargerThanFile,
                                      buffer.get()));
   EXPECT_DOUBLE_EQ(kPi, buffer[0]);
   EXPECT_DOUBLE_EQ(kE, buffer[1]);
@@ -354,14 +344,12 @@
 #define MAYBE_WriteInt16BufferToFile WriteInt16BufferToFile
 #endif
 TEST_F(TransientFileUtilsTest, MAYBE_WriteInt16BufferToFile) {
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
   std::string kOutFileName =
       CreateTempFilename(test::OutputPath(), "utils_test");
 
-  file->OpenFile(kOutFileName.c_str(), false);  // Write mode.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kOutFileName.c_str();
+  FileWrapper file = FileWrapper::OpenWriteOnly(kOutFileName.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kOutFileName.c_str();
 
   const size_t kBufferLength = 3;
   std::unique_ptr<int16_t[]> written_buffer(new int16_t[kBufferLength]);
@@ -371,17 +359,17 @@
   written_buffer[1] = 2;
   written_buffer[2] = 3;
 
-  EXPECT_EQ(kBufferLength, WriteInt16BufferToFile(file.get(), kBufferLength,
-                                                  written_buffer.get()));
+  EXPECT_EQ(kBufferLength,
+            WriteInt16BufferToFile(&file, kBufferLength, written_buffer.get()));
 
-  file->CloseFile();
+  file.Close();
 
-  file->OpenFile(kOutFileName.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kOutFileName.c_str();
+  file = FileWrapper::OpenReadOnly(kOutFileName.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kOutFileName.c_str();
 
-  EXPECT_EQ(kBufferLength, ReadInt16BufferFromFile(file.get(), kBufferLength,
-                                                   read_buffer.get()));
+  EXPECT_EQ(kBufferLength,
+            ReadInt16BufferFromFile(&file, kBufferLength, read_buffer.get()));
   EXPECT_EQ(0, memcmp(written_buffer.get(), read_buffer.get(),
                       kBufferLength * sizeof(written_buffer[0])));
 }
@@ -392,14 +380,12 @@
 #define MAYBE_WriteFloatBufferToFile WriteFloatBufferToFile
 #endif
 TEST_F(TransientFileUtilsTest, MAYBE_WriteFloatBufferToFile) {
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
   std::string kOutFileName =
       CreateTempFilename(test::OutputPath(), "utils_test");
 
-  file->OpenFile(kOutFileName.c_str(), false);  // Write mode.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kOutFileName.c_str();
+  FileWrapper file = FileWrapper::OpenWriteOnly(kOutFileName.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kOutFileName.c_str();
 
   const size_t kBufferLength = 3;
   std::unique_ptr<float[]> written_buffer(new float[kBufferLength]);
@@ -409,17 +395,17 @@
   written_buffer[1] = static_cast<float>(kE);
   written_buffer[2] = static_cast<float>(kAvogadro);
 
-  EXPECT_EQ(kBufferLength, WriteFloatBufferToFile(file.get(), kBufferLength,
-                                                  written_buffer.get()));
+  EXPECT_EQ(kBufferLength,
+            WriteFloatBufferToFile(&file, kBufferLength, written_buffer.get()));
 
-  file->CloseFile();
+  file.Close();
 
-  file->OpenFile(kOutFileName.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kOutFileName.c_str();
+  file = FileWrapper::OpenReadOnly(kOutFileName.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kOutFileName.c_str();
 
-  EXPECT_EQ(kBufferLength, ReadFloatBufferFromFile(file.get(), kBufferLength,
-                                                   read_buffer.get()));
+  EXPECT_EQ(kBufferLength,
+            ReadFloatBufferFromFile(&file, kBufferLength, read_buffer.get()));
   EXPECT_EQ(0, memcmp(written_buffer.get(), read_buffer.get(),
                       kBufferLength * sizeof(written_buffer[0])));
 }
@@ -430,14 +416,12 @@
 #define MAYBE_WriteDoubleBufferToFile WriteDoubleBufferToFile
 #endif
 TEST_F(TransientFileUtilsTest, MAYBE_WriteDoubleBufferToFile) {
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
-
   std::string kOutFileName =
       CreateTempFilename(test::OutputPath(), "utils_test");
 
-  file->OpenFile(kOutFileName.c_str(), false);  // Write mode.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kOutFileName.c_str();
+  FileWrapper file = FileWrapper::OpenWriteOnly(kOutFileName.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kOutFileName.c_str();
 
   const size_t kBufferLength = 3;
   std::unique_ptr<double[]> written_buffer(new double[kBufferLength]);
@@ -447,17 +431,17 @@
   written_buffer[1] = kE;
   written_buffer[2] = kAvogadro;
 
-  EXPECT_EQ(kBufferLength, WriteDoubleBufferToFile(file.get(), kBufferLength,
+  EXPECT_EQ(kBufferLength, WriteDoubleBufferToFile(&file, kBufferLength,
                                                    written_buffer.get()));
 
-  file->CloseFile();
+  file.Close();
 
-  file->OpenFile(kOutFileName.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kOutFileName.c_str();
+  file = FileWrapper::OpenReadOnly(kOutFileName.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kOutFileName.c_str();
 
-  EXPECT_EQ(kBufferLength, ReadDoubleBufferFromFile(file.get(), kBufferLength,
-                                                    read_buffer.get()));
+  EXPECT_EQ(kBufferLength,
+            ReadDoubleBufferFromFile(&file, kBufferLength, read_buffer.get()));
   EXPECT_EQ(0, memcmp(written_buffer.get(), read_buffer.get(),
                       kBufferLength * sizeof(written_buffer[0])));
 }
@@ -473,7 +457,7 @@
   double value;
   std::unique_ptr<int16_t[]> int16_buffer(new int16_t[1]);
   std::unique_ptr<double[]> double_buffer(new double[1]);
-  std::unique_ptr<FileWrapper> file(FileWrapper::Create());
+  FileWrapper file;
 
   EXPECT_EQ(-1, ConvertByteArrayToDouble(NULL, &value));
   EXPECT_EQ(-1, ConvertByteArrayToDouble(kPiBytes, NULL));
@@ -481,37 +465,35 @@
   EXPECT_EQ(-1, ConvertDoubleToByteArray(kPi, NULL));
 
   // Tests with file not opened.
-  EXPECT_EQ(0u, ReadInt16BufferFromFile(file.get(), 1, int16_buffer.get()));
-  EXPECT_EQ(
-      0u, ReadInt16FromFileToDoubleBuffer(file.get(), 1, double_buffer.get()));
-  EXPECT_EQ(0u, ReadDoubleBufferFromFile(file.get(), 1, double_buffer.get()));
-  EXPECT_EQ(0u, WriteInt16BufferToFile(file.get(), 1, int16_buffer.get()));
-  EXPECT_EQ(0u, WriteDoubleBufferToFile(file.get(), 1, double_buffer.get()));
+  EXPECT_EQ(0u, ReadInt16BufferFromFile(&file, 1, int16_buffer.get()));
+  EXPECT_EQ(0u, ReadInt16FromFileToDoubleBuffer(&file, 1, double_buffer.get()));
+  EXPECT_EQ(0u, ReadDoubleBufferFromFile(&file, 1, double_buffer.get()));
+  EXPECT_EQ(0u, WriteInt16BufferToFile(&file, 1, int16_buffer.get()));
+  EXPECT_EQ(0u, WriteDoubleBufferToFile(&file, 1, double_buffer.get()));
 
-  file->OpenFile(test_filename.c_str(), true);  // Read only.
-  ASSERT_TRUE(file->is_open()) << "File could not be opened:\n"
-                               << kTestFileName.c_str();
+  file = FileWrapper::OpenReadOnly(test_filename.c_str());
+  ASSERT_TRUE(file.is_open()) << "File could not be opened:\n"
+                              << kTestFileName.c_str();
 
   EXPECT_EQ(0u, ReadInt16BufferFromFile(NULL, 1, int16_buffer.get()));
-  EXPECT_EQ(0u, ReadInt16BufferFromFile(file.get(), 1, NULL));
-  EXPECT_EQ(0u, ReadInt16BufferFromFile(file.get(), 0, int16_buffer.get()));
+  EXPECT_EQ(0u, ReadInt16BufferFromFile(&file, 1, NULL));
+  EXPECT_EQ(0u, ReadInt16BufferFromFile(&file, 0, int16_buffer.get()));
 
   EXPECT_EQ(0u, ReadInt16FromFileToDoubleBuffer(NULL, 1, double_buffer.get()));
-  EXPECT_EQ(0u, ReadInt16FromFileToDoubleBuffer(file.get(), 1, NULL));
-  EXPECT_EQ(
-      0u, ReadInt16FromFileToDoubleBuffer(file.get(), 0, double_buffer.get()));
+  EXPECT_EQ(0u, ReadInt16FromFileToDoubleBuffer(&file, 1, NULL));
+  EXPECT_EQ(0u, ReadInt16FromFileToDoubleBuffer(&file, 0, double_buffer.get()));
 
   EXPECT_EQ(0u, ReadDoubleBufferFromFile(NULL, 1, double_buffer.get()));
-  EXPECT_EQ(0u, ReadDoubleBufferFromFile(file.get(), 1, NULL));
-  EXPECT_EQ(0u, ReadDoubleBufferFromFile(file.get(), 0, double_buffer.get()));
+  EXPECT_EQ(0u, ReadDoubleBufferFromFile(&file, 1, NULL));
+  EXPECT_EQ(0u, ReadDoubleBufferFromFile(&file, 0, double_buffer.get()));
 
   EXPECT_EQ(0u, WriteInt16BufferToFile(NULL, 1, int16_buffer.get()));
-  EXPECT_EQ(0u, WriteInt16BufferToFile(file.get(), 1, NULL));
-  EXPECT_EQ(0u, WriteInt16BufferToFile(file.get(), 0, int16_buffer.get()));
+  EXPECT_EQ(0u, WriteInt16BufferToFile(&file, 1, NULL));
+  EXPECT_EQ(0u, WriteInt16BufferToFile(&file, 0, int16_buffer.get()));
 
   EXPECT_EQ(0u, WriteDoubleBufferToFile(NULL, 1, double_buffer.get()));
-  EXPECT_EQ(0u, WriteDoubleBufferToFile(file.get(), 1, NULL));
-  EXPECT_EQ(0u, WriteDoubleBufferToFile(file.get(), 0, double_buffer.get()));
+  EXPECT_EQ(0u, WriteDoubleBufferToFile(&file, 1, NULL));
+  EXPECT_EQ(0u, WriteDoubleBufferToFile(&file, 0, double_buffer.get()));
 }
 
 }  // namespace webrtc