// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_SELECTION_SEGMENT_RESULT_PROVIDER_H_ #define COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_SELECTION_SEGMENT_RESULT_PROVIDER_H_ #include <optional> #include "base/functional/callback.h" #include "base/memory/scoped_refptr.h" #include "components/segmentation_platform/internal/database/segment_info_database.h" #include "components/segmentation_platform/internal/execution/execution_request.h" #include "components/segmentation_platform/public/input_context.h" #include "components/segmentation_platform/public/proto/segmentation_platform.pb.h" namespace base { class Clock; } namespace segmentation_platform { class ExecutionService; class SignalStorageConfig; // Used for retrieving the result of a particular model. // The steps to get result for the model are as follows: // 1. Returns score from database as result if present and valid. Do this step // only if `ignore_db_score = false` else jump to step 2. // 2. If there is no valid score present in database or `ignore_db_scores = // true`, run the server model. If a valid score is computed return it as // result and save it to database. // 3. If there is no valid score from server model execution, return default // model score from database. Do this step only if `ignore_db_score = false` // else jump to step 4. // 4. If there is no valid score from database and server model execution, // execute and get score from default model. If a valid score is computed // return it as result and save it to database. class SegmentResultProvider { … }; } // namespace segmentation_platform #endif // COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_SELECTION_SEGMENT_RESULT_PROVIDER_H_