[Query Tiles]: instant fetch switch hookup

Bug: 1079411
Change-Id: I0f5c47dfe75817498cc599f94961097f514552b7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2188510
Commit-Queue: Shakti Sahu <[email protected]>
Reviewed-by: Hesen Zhang <[email protected]>
Reviewed-by: David Trainor <[email protected]>
Cr-Commit-Position: refs/heads/master@{#767098}
diff --git a/components/query_tiles/internal/tile_service_impl.cc b/components/query_tiles/internal/tile_service_impl.cc
index 298c99f8..cd8bf1b 100644
--- a/components/query_tiles/internal/tile_service_impl.cc
+++ b/components/query_tiles/internal/tile_service_impl.cc
@@ -8,10 +8,14 @@
 #include <utility>
 
 #include "base/bind.h"
+#include "base/bind_helpers.h"
+#include "base/command_line.h"
 #include "base/guid.h"
 #include "base/rand_util.h"
+#include "base/threading/thread_task_runner_handle.h"
 #include "components/query_tiles/internal/proto_conversion.h"
 #include "components/query_tiles/internal/tile_config.h"
+#include "components/query_tiles/switches.h"
 
 namespace upboarding {
 namespace {
@@ -28,6 +32,8 @@
 constexpr base::TimeDelta kBackgroundTaskFlexTime =
     base::TimeDelta::FromHours(2);
 
+void OnInstantFetchComplete(bool success) {}
+
 }  // namespace
 
 TileServiceImpl::TileServiceImpl(
@@ -41,8 +47,6 @@
       scheduler_(scheduler),
       tile_fetcher_(std::move(tile_fetcher)),
       clock_(clock) {
-  // TODO(crbug.com/1077172): Initialize tile_db within tile_manager from
-  // init_aware layer.
   ScheduleDailyTask();
 }
 
@@ -60,6 +64,16 @@
   DCHECK(callback);
   // TODO(xingliu): Handle TileGroupStatus::kInvalidGroup.
   std::move(callback).Run(success);
+
+  if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+          switches::kQueryTilesInstantBackgroundTask)) {
+    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+        FROM_HERE,
+        base::BindOnce(&TileServiceImpl::StartFetchForTiles,
+                       weak_ptr_factory_.GetWeakPtr(),
+                       base::BindOnce(&OnInstantFetchComplete)),
+        base::TimeDelta::FromSeconds(2));
+  }
 }
 
 void TileServiceImpl::GetQueryTiles(GetTilesCallback callback) {