Fix file leaks in sync_file_system tests.

open. This CL takes a few extra steps to ensure that pending tasks are
run during teardown so that open files can be closed.

R=pwnall@chromium.org


base: :ScopedTempDir cannot delete its contents while files are
Bug: 546640
Change-Id: Id1a6db0b2a50140c6b77b39c21c243cb60658a99
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1895338
Auto-Submit: Greg Thompson <grt@chromium.org>
Commit-Queue: Victor Costan <pwnall@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712020}
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_db_migration_util_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_db_migration_util_unittest.cc
index 7dfa182..b17a035 100644
--- a/chrome/browser/sync_file_system/drive_backend/metadata_db_migration_util_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_db_migration_util_unittest.cc
@@ -72,8 +72,8 @@
   const char kDemotedDirtyIDKeyPrefix[] = "DEMOTED_DIRTY: ";
 
   // Set up environment.
-  std::unique_ptr<leveldb::DB> db;
   base::ScopedTempDir base_dir;
+  std::unique_ptr<leveldb::DB> db;
   ASSERT_TRUE(base_dir.CreateUniqueTempDir());
   {
     leveldb_env::Options options;
diff --git a/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc b/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
index a5c037b..a2871fe 100644
--- a/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
+++ b/chrome/browser/sync_file_system/local/canned_syncable_file_system.cc
@@ -17,6 +17,7 @@
 #include "base/macros.h"
 #include "base/run_loop.h"
 #include "base/single_thread_task_runner.h"
+#include "base/task/thread_pool/thread_pool_instance.h"
 #include "base/task_runner_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "chrome/browser/sync_file_system/file_change.h"
@@ -266,6 +267,7 @@
   // Make sure we give some more time to finish tasks on other threads.
   EnsureLastTaskRuns(io_task_runner_.get());
   EnsureLastTaskRuns(file_task_runner_.get());
+  base::ThreadPoolInstance::Get()->FlushForTesting();
 }
 
 FileSystemURL CannedSyncableFileSystem::URL(const std::string& path) const {
diff --git a/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc b/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc
index 755c2ebe..feabc20f 100644
--- a/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc
+++ b/chrome/browser/sync_file_system/local/local_file_change_tracker_unittest.cc
@@ -70,6 +70,7 @@
     // (CannedSyncableFileSystem::TearDown does not do this as there may be
     // multiple syncable file systems registered for the name)
     RevokeSyncableFileSystem();
+    content::RunAllTasksUntilIdle();
   }
 
  protected:
@@ -113,8 +114,8 @@
     change_tracker()->GetAllChangedURLs(urls);
   }
 
-  content::BrowserTaskEnvironment task_environment_;
   base::ScopedTempDir base_dir_;
+  content::BrowserTaskEnvironment task_environment_;
   std::unique_ptr<leveldb::Env> in_memory_env_;
   CannedSyncableFileSystem file_system_;