#ifndef ASH_PUBLIC_CPP_PROJECTOR_PROJECTOR_CONTROLLER_H_
#define ASH_PUBLIC_CPP_PROJECTOR_PROJECTOR_CONTROLLER_H_
#include "ash/public/cpp/ash_public_export.h"
#include "base/files/safe_base_name.h"
#include "base/time/time.h"
#include "media/mojo/mojom/speech_recognition.mojom.h"
namespace ash {
struct NewScreencastPrecondition;
class ProjectorClient;
class ASH_PUBLIC_EXPORT ProjectorController {
public:
ProjectorController();
ProjectorController(const ProjectorController&) = delete;
ProjectorController& operator=(const ProjectorController&) = delete;
virtual ~ProjectorController();
static ProjectorController* Get();
static bool AreExtendedProjectorFeaturesDisabled();
virtual void StartProjectorSession(const base::SafeBaseName& storage_dir) = 0;
virtual void SetClient(ProjectorClient* client) = 0;
virtual void OnSpeechRecognitionAvailabilityChanged() = 0;
virtual void OnTranscription(
const media::SpeechRecognitionResult& result) = 0;
virtual void OnTranscriptionError() = 0;
virtual void OnSpeechRecognitionStopped(bool forced) = 0;
virtual NewScreencastPrecondition GetNewScreencastPrecondition() const = 0;
};
}
#endif