Commit a92d963e authored by Sophie Chang's avatar Sophie Chang Committed by Commit Bot

Add API for observing changes to the model file in the Opt Guide

Bug: 1146151
Change-Id: If63c626ce0ef01d86d7465a0715cfea7470a3ec5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2552886Reviewed-by: default avatarMichael Crouse <mcrouse@chromium.org>
Commit-Queue: Sophie Chang <sophiechang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#829882}
parent ba4acf02
...@@ -210,6 +210,20 @@ void OptimizationGuideKeyedService::ShouldTargetNavigationAsync( ...@@ -210,6 +210,20 @@ void OptimizationGuideKeyedService::ShouldTargetNavigationAsync(
optimization_target, std::move(callback), target_decision); optimization_target, std::move(callback), target_decision);
} }
void OptimizationGuideKeyedService::AddObserverForOptimizationTargetModel(
optimization_guide::proto::OptimizationTarget optimization_target,
optimization_guide::OptimizationTargetModelObserver* observer) {
// TODO(crbug/1146151): Passthrough to prediction manager.
NOTREACHED();
}
void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel(
optimization_guide::proto::OptimizationTarget optimization_target,
optimization_guide::OptimizationTargetModelObserver* observer) {
// TODO(crbug/1146151): Passthrough to prediction manager.
NOTREACHED();
}
void OptimizationGuideKeyedService::RegisterOptimizationTypes( void OptimizationGuideKeyedService::RegisterOptimizationTypes(
const std::vector<optimization_guide::proto::OptimizationType>& const std::vector<optimization_guide::proto::OptimizationType>&
optimization_types) { optimization_types) {
......
...@@ -62,6 +62,12 @@ class OptimizationGuideKeyedService ...@@ -62,6 +62,12 @@ class OptimizationGuideKeyedService
float>& client_model_feature_values, float>& client_model_feature_values,
optimization_guide::OptimizationGuideTargetDecisionCallback callback) optimization_guide::OptimizationGuideTargetDecisionCallback callback)
override; override;
void AddObserverForOptimizationTargetModel(
optimization_guide::proto::OptimizationTarget optimization_target,
optimization_guide::OptimizationTargetModelObserver* observer) override;
void RemoveObserverForOptimizationTargetModel(
optimization_guide::proto::OptimizationTarget optimization_target,
optimization_guide::OptimizationTargetModelObserver* observer) override;
void RegisterOptimizationTypes( void RegisterOptimizationTypes(
const std::vector<optimization_guide::proto::OptimizationType>& const std::vector<optimization_guide::proto::OptimizationType>&
optimization_types) override; optimization_types) override;
......
...@@ -52,6 +52,7 @@ static_library("optimization_guide") { ...@@ -52,6 +52,7 @@ static_library("optimization_guide") {
"optimization_guide_util.h", "optimization_guide_util.h",
"optimization_metadata.cc", "optimization_metadata.cc",
"optimization_metadata.h", "optimization_metadata.h",
"optimization_target_model_observer.h",
"prediction_model.cc", "prediction_model.cc",
"prediction_model.h", "prediction_model.h",
"store_update_data.cc", "store_update_data.cc",
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/containers/flat_map.h" #include "base/containers/flat_map.h"
#include "base/optional.h" #include "base/optional.h"
#include "components/optimization_guide/optimization_metadata.h" #include "components/optimization_guide/optimization_metadata.h"
#include "components/optimization_guide/optimization_target_model_observer.h"
#include "components/optimization_guide/proto/hints.pb.h" #include "components/optimization_guide/proto/hints.pb.h"
#include "components/optimization_guide/proto/models.pb.h" #include "components/optimization_guide/proto/models.pb.h"
...@@ -68,6 +69,27 @@ class OptimizationGuideDecider { ...@@ -68,6 +69,27 @@ class OptimizationGuideDecider {
client_model_feature_values, client_model_feature_values,
OptimizationGuideTargetDecisionCallback callback) = 0; OptimizationGuideTargetDecisionCallback callback) = 0;
// Adds an observer for updates to the model for |optimization_target|.
//
// It is assumed that any model retrieved this way will be passed to the
// Machine Learning Service for inference.
//
// Still being implemented - DO NOT USE YET.
virtual void AddObserverForOptimizationTargetModel(
proto::OptimizationTarget optimization_target,
OptimizationTargetModelObserver* observer) = 0;
// Removes an observer for updates to the model for |optimization_target|.
//
// If |observer| is registered for multiple targets, |observer| must be
// removed for all targets that it is added for in order for it to be fully
// removed from receiving any calls.
//
// Still being implemented - DO NOT USE YET.
virtual void RemoveObserverForOptimizationTargetModel(
proto::OptimizationTarget optimization_target,
OptimizationTargetModelObserver* observer) = 0;
// Registers the optimization types that intend to be queried during the // Registers the optimization types that intend to be queried during the
// session. It is expected for this to be called after the browser has been // session. It is expected for this to be called after the browser has been
// initialized. // initialized.
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_TARGET_MODEL_OBSERVER_H_
#define COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_TARGET_MODEL_OBSERVER_H_
#include "base/files/file_path.h"
#include "base/observer_list_types.h"
#include "components/optimization_guide/proto/models.pb.h"
namespace optimization_guide {
// Observes |optimization_guide::OptimizationGuideDecider| for updates to models
// for a particular optimization target.
class OptimizationTargetModelObserver : public base::CheckedObserver {
public:
// Invoked when a model for |optimization_target| has been updated. It is
// guaranteed that this method will only be invoked for targets that |this|
// is added as an observer for.
//
// When this observer is first added, it will call this function with the
// file path it already has on device, if applicable.
virtual void OnModelFileUpdated(proto::OptimizationTarget optimization_target,
const base::FilePath& file_path) = 0;
};
} // namespace optimization_guide
#endif // COMPONENTS_OPTIMIZATION_GUIDE_OPTIMIZATION_TARGET_MODEL_OBSERVER_H_
...@@ -34,6 +34,14 @@ void TestOptimizationGuideDecider::CanApplyOptimizationAsync( ...@@ -34,6 +34,14 @@ void TestOptimizationGuideDecider::CanApplyOptimizationAsync(
/*optimization_metadata=*/{}); /*optimization_metadata=*/{});
} }
void TestOptimizationGuideDecider::AddObserverForOptimizationTargetModel(
optimization_guide::proto::OptimizationTarget optimization_target,
optimization_guide::OptimizationTargetModelObserver* observer) {}
void TestOptimizationGuideDecider::RemoveObserverForOptimizationTargetModel(
optimization_guide::proto::OptimizationTarget optimization_target,
optimization_guide::OptimizationTargetModelObserver* observer) {}
OptimizationGuideDecision TestOptimizationGuideDecider::CanApplyOptimization( OptimizationGuideDecision TestOptimizationGuideDecider::CanApplyOptimization(
const GURL& url, const GURL& url,
proto::OptimizationType optimization_type, proto::OptimizationType optimization_type,
......
...@@ -29,6 +29,12 @@ class TestOptimizationGuideDecider : public OptimizationGuideDecider { ...@@ -29,6 +29,12 @@ class TestOptimizationGuideDecider : public OptimizationGuideDecider {
const base::flat_map<proto::ClientModelFeature, float>& const base::flat_map<proto::ClientModelFeature, float>&
client_model_feature_values, client_model_feature_values,
OptimizationGuideTargetDecisionCallback callback) override; OptimizationGuideTargetDecisionCallback callback) override;
void AddObserverForOptimizationTargetModel(
proto::OptimizationTarget optimization_target,
OptimizationTargetModelObserver* observer) override;
void RemoveObserverForOptimizationTargetModel(
proto::OptimizationTarget optimization_target,
OptimizationTargetModelObserver* observer) override;
void RegisterOptimizationTypes( void RegisterOptimizationTypes(
const std::vector<proto::OptimizationType>& optimization_types) override; const std::vector<proto::OptimizationType>& optimization_types) override;
void CanApplyOptimizationAsync( void CanApplyOptimizationAsync(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment