コード例 #1
0
ファイル: SpeechRecognition.cpp プロジェクト: seinlin/gecko
void
SpeechRecognition::Start(ErrorResult& aRv)
{
  if (!mCurrentState == STATE_IDLE) {
    aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
    return;
  }

  nsAutoCString speechRecognitionServiceCID;
  GetRecognitionServiceCID(speechRecognitionServiceCID);

  nsresult rv;
  mRecognitionService = do_GetService(speechRecognitionServiceCID.get(), &rv);
  NS_ENSURE_SUCCESS_VOID(rv);

  rv = mRecognitionService->Initialize(this->asWeakPtr());
  NS_ENSURE_SUCCESS_VOID(rv);

  AutoSafeJSContext cx;
  MediaStreamConstraints constraints;
  constraints.mAudio.SetAsBoolean() = true;

  if (!mTestConfig.mFakeFSMEvents) {
    MediaManager* manager = MediaManager::Get();
    manager->GetUserMedia(cx,
                          false,
                          GetOwner(),
                          constraints,
                          new GetUserMediaSuccessCallback(this),
                          new GetUserMediaErrorCallback(this));
  }

  nsRefPtr<SpeechEvent> event = new SpeechEvent(this, EVENT_START);
  NS_DispatchToMainThread(event);
}
コード例 #2
0
void
SpeechRecognition::Start(const Optional<NonNull<DOMMediaStream>>& aStream, ErrorResult& aRv)
{
    if (mCurrentState != STATE_IDLE) {
        aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
        return;
    }

    nsAutoCString speechRecognitionServiceCID;
    GetRecognitionServiceCID(speechRecognitionServiceCID);

    nsresult rv;
    mRecognitionService = do_GetService(speechRecognitionServiceCID.get(), &rv);
    NS_ENSURE_SUCCESS_VOID(rv);

    rv = mRecognitionService->Initialize(this);
    NS_ENSURE_SUCCESS_VOID(rv);

    MediaStreamConstraints constraints;
    constraints.mAudio.SetAsBoolean() = true;

    if (aStream.WasPassed()) {
        StartRecording(&aStream.Value());
    } else {
        MediaManager* manager = MediaManager::Get();
        manager->GetUserMedia(false,
                              GetOwner(),
                              constraints,
                              new GetUserMediaSuccessCallback(this),
                              new GetUserMediaErrorCallback(this));
    }

    nsRefPtr<SpeechEvent> event = new SpeechEvent(this, EVENT_START);
    NS_DispatchToMainThread(event);
}