blob: f8b16797cdf18eecd8a09be8490ba2c7000fb36e [file] [log] [blame]
// Copyright 2023 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/navigation_predictor/preloading_model_handler.h"
#include "base/task/thread_pool.h"
#include "chrome/browser/navigation_predictor/preloading_model_executor.h"
PreloadingModelHandler::PreloadingModelHandler(
optimization_guide::OptimizationGuideModelProvider* model_provider)
: ModelHandler<float, const std::vector<float>&>(
model_provider,
base::ThreadPool::CreateSequencedTaskRunner(
{base::MayBlock(), base::TaskPriority::USER_VISIBLE}),
std::make_unique<PreloadingModelExecutor>(),
/*model_inference_timeout=*/std::nullopt,
optimization_guide::proto::OptimizationTarget::
OPTIMIZATION_TARGET_PRELOADING_HEURISTICS,
/*model_metadata=*/std::nullopt) {
// Store the model in memory as soon as it is available and keep it loaded for
// the whole browser session since model inference is latency sensitive and it
// cannot wait for the model to be loaded from disk.
SetShouldPreloadModel(true);
SetShouldUnloadModelOnComplete(false);
}
PreloadingModelHandler::~PreloadingModelHandler() = default;