chromium/chrome/browser/android/background_task_scheduler/chrome_background_task_factory.cc

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/android/background_task_scheduler/chrome_background_task_factory.h"

#include <memory>
#include <utility>

#include "chrome/android/chrome_jni_headers/ChromeBackgroundTaskFactory_jni.h"
#include "components/background_task_scheduler/task_ids.h"
#include "chrome/browser/feed/android/background_refresh_task.h"
#include "components/feed/core/v2/public/types.h"

// static
void ChromeBackgroundTaskFactory::SetAsDefault() {
  JNIEnv* env = jni_zero::AttachCurrentThread();
  Java_ChromeBackgroundTaskFactory_setAsDefault(env);
}

std::unique_ptr<background_task::BackgroundTask>
ChromeBackgroundTaskFactory::GetNativeBackgroundTaskFromTaskId(int task_id) {
  // Add your tasks here with mappings to the given task_id.
  switch (task_id) {
    case static_cast<int>(background_task::TaskIds::FEEDV2_REFRESH_JOB_ID):
      return std::make_unique<feed::BackgroundRefreshTask>(
          feed::RefreshTaskId::kRefreshForYouFeed);
    case static_cast<int>(background_task::TaskIds::WEBFEEDS_REFRESH_JOB_ID):
      return std::make_unique<feed::BackgroundRefreshTask>(
          feed::RefreshTaskId::kRefreshWebFeed);
    default:
      break;
  }
  return nullptr;
}