| |
| |
| |
|
|
| #ifndef CHROMEOS_SERVICES_MACHINE_LEARNING_PUBLIC_CPP_FAKE_SERVICE_CONNECTION_H_ |
| #define CHROMEOS_SERVICES_MACHINE_LEARNING_PUBLIC_CPP_FAKE_SERVICE_CONNECTION_H_ |
|
|
| #include <memory> |
| #include <vector> |
|
|
| #include "base/callback_forward.h" |
| #include "base/component_export.h" |
| #include "chromeos/services/machine_learning/public/cpp/service_connection.h" |
| #include "chromeos/services/machine_learning/public/mojom/document_scanner.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/grammar_checker.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/graph_executor.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/handwriting_recognizer.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/machine_learning_service.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/model.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/soda.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/tensor.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/text_classifier.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/text_suggester.mojom.h" |
| #include "chromeos/services/machine_learning/public/mojom/web_platform_handwriting.mojom.h" |
| #include "mojo/public/cpp/bindings/pending_receiver.h" |
| #include "mojo/public/cpp/bindings/receiver_set.h" |
| #include "mojo/public/cpp/bindings/remote_set.h" |
|
|
| namespace chromeos { |
| namespace machine_learning { |
|
|
| |
| |
| |
| |
| |
| |
| |
| class COMPONENT_EXPORT(CHROMEOS_MLSERVICE) FakeServiceConnectionImpl |
| : public ServiceConnection, |
| public mojom::MachineLearningService, |
| public mojom::Model, |
| public mojom::TextClassifier, |
| public mojom::HandwritingRecognizer, |
| public mojom::GrammarChecker, |
| public mojom::GraphExecutor, |
| public mojom::SodaRecognizer, |
| public mojom::TextSuggester, |
| public mojom::DocumentScanner, |
| public web_platform::mojom::HandwritingRecognizer { |
| public: |
| FakeServiceConnectionImpl(); |
|
|
| FakeServiceConnectionImpl(const FakeServiceConnectionImpl&) = delete; |
| FakeServiceConnectionImpl& operator=(const FakeServiceConnectionImpl&) = |
| delete; |
|
|
| ~FakeServiceConnectionImpl() override; |
|
|
| |
| mojom::MachineLearningService& GetMachineLearningService() override; |
| void BindMachineLearningService( |
| mojo::PendingReceiver<mojom::MachineLearningService> receiver) override; |
| void Initialize() override; |
|
|
| |
| void Clone( |
| mojo::PendingReceiver<mojom::MachineLearningService> receiver) override; |
|
|
| |
| |
| |
| void LoadBuiltinModel(mojom::BuiltinModelSpecPtr spec, |
| mojo::PendingReceiver<mojom::Model> receiver, |
| mojom::MachineLearningService::LoadBuiltinModelCallback |
| callback) override; |
| void LoadFlatBufferModel( |
| mojom::FlatBufferModelSpecPtr spec, |
| mojo::PendingReceiver<mojom::Model> receiver, |
| mojom::MachineLearningService::LoadFlatBufferModelCallback callback) |
| override; |
|
|
| void LoadTextClassifier( |
| mojo::PendingReceiver<mojom::TextClassifier> receiver, |
| mojom::MachineLearningService::LoadTextClassifierCallback callback) |
| override; |
|
|
| void LoadHandwritingModel( |
| mojom::HandwritingRecognizerSpecPtr spec, |
| mojo::PendingReceiver<mojom::HandwritingRecognizer> receiver, |
| mojom::MachineLearningService::LoadHandwritingModelCallback |
| result_callback) override; |
|
|
| |
| void LoadWebPlatformHandwritingModel( |
| web_platform::mojom::HandwritingModelConstraintPtr constraint, |
| mojo::PendingReceiver<web_platform::mojom::HandwritingRecognizer> |
| receiver, |
| LoadWebPlatformHandwritingModelCallback callback) override; |
|
|
| void LoadGrammarChecker( |
| mojo::PendingReceiver<mojom::GrammarChecker> receiver, |
| mojom::MachineLearningService::LoadGrammarCheckerCallback callback) |
| override; |
|
|
| void LoadSpeechRecognizer( |
| mojom::SodaConfigPtr soda_config, |
| mojo::PendingRemote<mojom::SodaClient> soda_client, |
| mojo::PendingReceiver<mojom::SodaRecognizer> soda_recognizer, |
| mojom::MachineLearningService::LoadSpeechRecognizerCallback callback) |
| override; |
|
|
| void LoadTextSuggester( |
| mojo::PendingReceiver<mojom::TextSuggester> receiver, |
| mojom::TextSuggesterSpecPtr spec, |
| mojom::MachineLearningService::LoadTextSuggesterCallback callback) |
| override; |
|
|
| void LoadDocumentScanner( |
| mojo::PendingReceiver<mojom::DocumentScanner> receiver, |
| mojom::MachineLearningService::LoadDocumentScannerCallback callback) |
| override; |
|
|
| |
| void REMOVED_0(mojo::PendingReceiver<mojom::GraphExecutor> receiver, |
| mojom::Model::REMOVED_0Callback callback) override; |
|
|
| |
| void REMOVED_4(mojom::HandwritingRecognizerSpecPtr spec, |
| mojo::PendingReceiver<mojom::HandwritingRecognizer> receiver, |
| mojom::MachineLearningService::REMOVED_4Callback |
| result_callback) override; |
|
|
| |
| void CreateGraphExecutor( |
| mojom::GraphExecutorOptionsPtr options, |
| mojo::PendingReceiver<mojom::GraphExecutor> receiver, |
| mojom::Model::CreateGraphExecutorCallback callback) override; |
|
|
| |
| |
| void Execute(base::flat_map<std::string, mojom::TensorPtr> inputs, |
| const std::vector<std::string>& output_names, |
| mojom::GraphExecutor::ExecuteCallback callback) override; |
|
|
| |
| |
| void SetLoadModelFailure(); |
| void SetCreateGraphExecutorFailure(); |
| void SetExecuteFailure(); |
| void SetLoadTextClassifierFailure(); |
| |
| void SetExecuteSuccess(); |
| |
| |
| |
| |
| |
| void SetTextClassifierSuccess(); |
|
|
| |
| void SetOutputValue(const std::vector<int64_t>& shape, |
| const std::vector<double>& value); |
|
|
| |
| |
| |
| |
| |
| |
| void SetAsyncMode(bool async_mode); |
| void RunPendingCalls(); |
|
|
| |
| void SetOutputAnnotation( |
| const std::vector<mojom::TextAnnotationPtr>& annotation); |
|
|
| |
| |
| void SetOutputLanguages(const std::vector<mojom::TextLanguagePtr>& languages); |
|
|
| |
| |
| void SetOutputGrammarCheckerResult( |
| const mojom::GrammarCheckerResultPtr& result); |
|
|
| |
| |
| void SetOutputHandwritingRecognizerResult( |
| const mojom::HandwritingRecognizerResultPtr& result); |
|
|
| |
| |
| void SetOutputWebPlatformHandwritingRecognizerResult( |
| const std::vector<web_platform::mojom::HandwritingPredictionPtr>& |
| predictions); |
|
|
| |
| |
| void SetOutputTextSuggesterResult( |
| const mojom::TextSuggesterResultPtr& result); |
|
|
| |
| |
| void SetOutputDetectCornersResult( |
| const mojom::DetectCornersResultPtr& result); |
|
|
| |
| |
| void SetOutputDoPostProcessingResult( |
| const mojom::DoPostProcessingResultPtr& result); |
|
|
| |
| void Annotate(mojom::TextAnnotationRequestPtr request, |
| mojom::TextClassifier::AnnotateCallback callback) override; |
|
|
| |
| void FindLanguages( |
| const std::string& text, |
| mojom::TextClassifier::FindLanguagesCallback callback) override; |
|
|
| |
| void REMOVED_1( |
| mojom::REMOVED_TextSuggestSelectionRequestPtr request, |
| mojom::TextClassifier::REMOVED_1Callback callback) override; |
|
|
| |
| void Recognize( |
| mojom::HandwritingRecognitionQueryPtr query, |
| mojom::HandwritingRecognizer::RecognizeCallback callback) override; |
|
|
| |
| void GetPrediction( |
| std::vector<web_platform::mojom::HandwritingStrokePtr> strokes, |
| web_platform::mojom::HandwritingHintsPtr hints, |
| web_platform::mojom::HandwritingRecognizer::GetPredictionCallback |
| callback) override; |
|
|
| |
| void Check(mojom::GrammarCheckerQueryPtr query, |
| mojom::GrammarChecker::CheckCallback callback) override; |
|
|
| |
| void AddAudio(const std::vector<uint8_t>& audio) override; |
| void Stop() override; |
| void Start() override; |
| void MarkDone() override; |
|
|
| |
| void Suggest(mojom::TextSuggesterQueryPtr query, |
| mojom::TextSuggester::SuggestCallback callback) override; |
|
|
| |
| void DetectCornersFromNV12Image( |
| base::ReadOnlySharedMemoryRegion nv12_image, |
| mojom::DocumentScanner::DetectCornersFromNV12ImageCallback callback) |
| override; |
| void DetectCornersFromJPEGImage( |
| base::ReadOnlySharedMemoryRegion jpeg_image, |
| mojom::DocumentScanner::DetectCornersFromJPEGImageCallback callback) |
| override; |
| void DoPostProcessing( |
| base::ReadOnlySharedMemoryRegion jpeg_image, |
| const std::vector<gfx::PointF>& corners, |
| chromeos::machine_learning::mojom::Rotation rotation, |
| mojom::DocumentScanner::DoPostProcessingCallback callback) override; |
|
|
| |
| void FlushForTesting(); |
|
|
| private: |
| void ScheduleCall(base::OnceClosure call); |
| void HandleLoadBuiltinModelCall( |
| mojo::PendingReceiver<mojom::Model> receiver, |
| mojom::MachineLearningService::LoadBuiltinModelCallback callback); |
| void HandleLoadFlatBufferModelCall( |
| mojo::PendingReceiver<mojom::Model> receiver, |
| mojom::MachineLearningService::LoadFlatBufferModelCallback callback); |
| void HandleCreateGraphExecutorCall( |
| mojom::GraphExecutorOptionsPtr options, |
| mojo::PendingReceiver<mojom::GraphExecutor> receiver, |
| mojom::Model::CreateGraphExecutorCallback callback); |
| void HandleExecuteCall(mojom::GraphExecutor::ExecuteCallback callback); |
| void HandleLoadTextClassifierCall( |
| mojo::PendingReceiver<mojom::TextClassifier> receiver, |
| mojom::MachineLearningService::LoadTextClassifierCallback callback); |
| void HandleAnnotateCall(mojom::TextAnnotationRequestPtr request, |
| mojom::TextClassifier::AnnotateCallback callback); |
| void HandleFindLanguagesCall( |
| std::string text, |
| mojom::TextClassifier::FindLanguagesCallback callback); |
| void HandleLoadHandwritingModelCall( |
| mojo::PendingReceiver<mojom::HandwritingRecognizer> receiver, |
| mojom::MachineLearningService::LoadHandwritingModelCallback callback); |
| void HandleLoadWebPlatformHandwritingModelCall( |
| mojo::PendingReceiver<web_platform::mojom::HandwritingRecognizer> |
| receiver, |
| mojom::MachineLearningService::LoadHandwritingModelCallback callback); |
| void HandleRecognizeCall( |
| mojom::HandwritingRecognitionQueryPtr query, |
| mojom::HandwritingRecognizer::RecognizeCallback callback); |
| void HandleGetPredictionCall( |
| std::vector<web_platform::mojom::HandwritingStrokePtr> strokes, |
| web_platform::mojom::HandwritingHintsPtr hints, |
| web_platform::mojom::HandwritingRecognizer::GetPredictionCallback |
| callback); |
| void HandleLoadGrammarCheckerCall( |
| mojo::PendingReceiver<mojom::GrammarChecker> receiver, |
| mojom::MachineLearningService::LoadGrammarCheckerCallback callback); |
| void HandleGrammarCheckerQueryCall( |
| mojom::GrammarCheckerQueryPtr query, |
| mojom::GrammarChecker::CheckCallback callback); |
| void HandleLoadSpeechRecognizerCall( |
| mojo::PendingRemote<mojom::SodaClient> soda_client, |
| mojo::PendingReceiver<mojom::SodaRecognizer> soda_recognizer, |
| mojom::MachineLearningService::LoadSpeechRecognizerCallback callback); |
| void HandleLoadTextSuggesterCall( |
| mojo::PendingReceiver<mojom::TextSuggester> receiver, |
| mojom::TextSuggesterSpecPtr spec, |
| mojom::MachineLearningService::LoadTextSuggesterCallback callback); |
| void HandleTextSuggesterSuggestCall( |
| mojom::TextSuggesterQueryPtr query, |
| mojom::TextSuggester::SuggestCallback callback); |
| void HandleLoadDocumentScannerCall( |
| mojo::PendingReceiver<mojom::DocumentScanner> receiver, |
| mojom::MachineLearningService::LoadDocumentScannerCallback callback); |
| void HandleDocumentScannerDetectNV12Call( |
| base::ReadOnlySharedMemoryRegion nv12_image, |
| mojom::DocumentScanner::DetectCornersFromNV12ImageCallback callback); |
| void HandleDocumentScannerDetectJPEGCall( |
| base::ReadOnlySharedMemoryRegion jpeg_image, |
| mojom::DocumentScanner::DetectCornersFromJPEGImageCallback callback); |
| void HandleDocumentScannerPostProcessingCall( |
| base::ReadOnlySharedMemoryRegion jpeg_image, |
| const std::vector<gfx::PointF>& corners, |
| mojom::DocumentScanner::DoPostProcessingCallback callback); |
|
|
| void HandleStopCall(); |
| void HandleStartCall(); |
| void HandleMarkDoneCall(); |
|
|
| |
| mojo::ReceiverSet<mojom::MachineLearningService> clone_ml_service_receivers_; |
|
|
| mojo::Remote<mojom::MachineLearningService> machine_learning_service_; |
| mojo::ReceiverSet<mojom::Model> model_receivers_; |
| mojo::ReceiverSet<mojom::GraphExecutor> graph_receivers_; |
| mojo::ReceiverSet<mojom::TextClassifier> text_classifier_receivers_; |
| mojo::ReceiverSet<mojom::HandwritingRecognizer> handwriting_receivers_; |
| mojo::ReceiverSet<web_platform::mojom::HandwritingRecognizer> |
| web_platform_handwriting_receivers_; |
| mojo::ReceiverSet<mojom::GrammarChecker> grammar_checker_receivers_; |
| mojo::ReceiverSet<mojom::SodaRecognizer> soda_recognizer_receivers_; |
| mojo::ReceiverSet<mojom::TextSuggester> text_suggester_receivers_; |
| mojo::ReceiverSet<mojom::DocumentScanner> document_scanner_receivers_; |
| mojo::RemoteSet<mojom::SodaClient> soda_client_remotes_; |
| mojom::TensorPtr output_tensor_; |
| mojom::LoadHandwritingModelResult load_handwriting_model_result_; |
| mojom::LoadHandwritingModelResult load_web_platform_handwriting_model_result_; |
| mojom::LoadModelResult load_model_result_; |
| mojom::LoadModelResult load_text_classifier_result_; |
| mojom::LoadModelResult load_soda_result_; |
| mojom::CreateGraphExecutorResult create_graph_executor_result_; |
| mojom::ExecuteResult execute_result_; |
| std::vector<mojom::TextAnnotationPtr> annotate_result_; |
| mojom::CodepointSpanPtr suggest_selection_result_; |
| std::vector<mojom::TextLanguagePtr> find_languages_result_; |
| mojom::HandwritingRecognizerResultPtr handwriting_result_; |
| std::vector<web_platform::mojom::HandwritingPredictionPtr> |
| web_platform_handwriting_result_; |
| mojom::GrammarCheckerResultPtr grammar_checker_result_; |
| mojom::TextSuggesterResultPtr text_suggester_result_; |
| mojom::DetectCornersResultPtr detect_corners_result_; |
| mojom::DoPostProcessingResultPtr do_post_processing_result_; |
|
|
| bool async_mode_; |
| std::vector<base::OnceClosure> pending_calls_; |
| }; |
|
|
| } |
| } |
|
|
| #endif |
|
|