| // Copyright 2016 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_TRANSLATE_CORE_BROWSER_TRANSLATE_RANKER_H_ |
| #define COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_RANKER_H_ |
| |
| #include <memory> |
| #include <vector> |
| |
| #include "components/keyed_service/core/keyed_service.h" |
| #include "services/metrics/public/cpp/ukm_source_id.h" |
| |
| namespace metrics { |
| class TranslateEventProto; |
| } // namespace metrics |
| |
| namespace translate { |
| |
| class TranslateMetricsLogger; |
| |
| // If enabled, downloads a translate ranker model and uses it to determine |
| // whether the user should be given a translation prompt or not. |
| class TranslateRanker : public KeyedService { |
| public: |
| TranslateRanker() = default; |
| |
| TranslateRanker(const TranslateRanker&) = delete; |
| TranslateRanker& operator=(const TranslateRanker&) = delete; |
| |
| // Returns the version id for the ranker model. |
| virtual uint32_t GetModelVersion() const = 0; |
| |
| // Returns true if executing the ranker model in the translation prompt |
| // context described by |translate_event| and possibly |
| // other global browser context attributes suggests that the user should be |
| // prompted as to whether translation should be performed. |
| virtual bool ShouldOfferTranslation( |
| metrics::TranslateEventProto* translate_event, |
| TranslateMetricsLogger* translate_metrics_logger) = 0; |
| |
| // Transfers cached translate events to the given vector pointer and clears |
| // the cache. |
| virtual void FlushTranslateEvents( |
| std::vector<metrics::TranslateEventProto>* events) = 0; |
| |
| // Record |translate_event| with the given |event_type| and |url|. |
| // |event_type| must be one of the values defined by |
| // metrics::TranslateEventProto::EventType. |
| virtual void RecordTranslateEvent( |
| int event_type, |
| ukm::SourceId ukm_source_id, |
| metrics::TranslateEventProto* translate_event) = 0; |
| |
| // If override of MATCHES_PREVIOUS_LANGUAGE is enabled, will return true and |
| // add MATCHES_PREVIOUS_LANGUAGE to |translate_event.decision_overrides()|. If |
| // override is disabled, returns false and finalizes and records |
| // |translate_event| with MATCHES_PREVIOUS_LANGUAGE event type. |
| virtual bool ShouldOverrideMatchesPreviousLanguageDecision( |
| ukm::SourceId ukm_source_id, |
| metrics::TranslateEventProto* translate_event) = 0; |
| |
| // Override the default enabled/disabled state of translate event logging. |
| virtual void EnableLogging(bool enable_logging) = 0; |
| }; |
| |
| } // namespace translate |
| |
| #endif // COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_RANKER_H_ |