SpeechRecognitionPermissionManager.h [plain text]
#pragma once
#include "SpeechRecognitionPermissionRequest.h"
#include <wtf/Deque.h>
#include <wtf/WeakPtr.h>
namespace WebKit {
class WebPageProxy;
class SpeechRecognitionPermissionManager : public CanMakeWeakPtr<SpeechRecognitionPermissionManager> {
WTF_MAKE_FAST_ALLOCATED;
public:
enum class CheckResult { Denied, Granted, Unknown };
explicit SpeechRecognitionPermissionManager(WebPageProxy&);
~SpeechRecognitionPermissionManager();
void request(const String& lang, const WebCore::ClientOrigin&, WebCore::FrameIdentifier, SpeechRecognitionPermissionRequestCallback&&);
void decideByDefaultAction(const WebCore::SecurityOrigin&, CompletionHandler<void(bool)>&&);
WebPageProxy& page() { return m_page; }
private:
void startNextRequest();
void startProcessingRequest();
void continueProcessingRequest();
void completeCurrentRequest(Optional<WebCore::SpeechRecognitionError>&& = WTF::nullopt);
void requestMicrophoneAccess();
void requestSpeechRecognitionServiceAccess();
void requestUserPermission();
WebPageProxy& m_page;
Deque<Ref<SpeechRecognitionPermissionRequest>> m_requests;
CheckResult m_microphoneCheck { CheckResult::Unknown };
CheckResult m_speechRecognitionServiceCheck { CheckResult::Unknown };
CheckResult m_userPermissionCheck { CheckResult::Unknown };
};
}