content/media/webspeech/synth/ipc/SpeechSynthesisChild.cpp

Fri, 16 Jan 2015 04:50:19 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 04:50:19 +0100
branch
TOR_BUG_9701
changeset 13
44a2da4a2ab2
permissions
-rw-r--r--

Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     3  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #include "SpeechSynthesisChild.h"
     6 #include "nsSynthVoiceRegistry.h"
     8 namespace mozilla {
     9 namespace dom {
    11 SpeechSynthesisChild::SpeechSynthesisChild()
    12 {
    13   MOZ_COUNT_CTOR(SpeechSynthesisChild);
    14 }
    16 SpeechSynthesisChild::~SpeechSynthesisChild()
    17 {
    18   MOZ_COUNT_DTOR(SpeechSynthesisChild);
    19 }
    21 bool
    22 SpeechSynthesisChild::RecvVoiceAdded(const RemoteVoice& aVoice)
    23 {
    24   nsSynthVoiceRegistry::RecvAddVoice(aVoice);
    25   return true;
    26 }
    28 bool
    29 SpeechSynthesisChild::RecvVoiceRemoved(const nsString& aUri)
    30 {
    31   nsSynthVoiceRegistry::RecvRemoveVoice(aUri);
    32   return true;
    33 }
    35 bool
    36 SpeechSynthesisChild::RecvSetDefaultVoice(const nsString& aUri,
    37                                           const bool& aIsDefault)
    38 {
    39   nsSynthVoiceRegistry::RecvSetDefaultVoice(aUri, aIsDefault);
    40   return true;
    41 }
    43 PSpeechSynthesisRequestChild*
    44 SpeechSynthesisChild::AllocPSpeechSynthesisRequestChild(const nsString& aText,
    45                                                         const nsString& aLang,
    46                                                         const nsString& aUri,
    47                                                         const float& aVolume,
    48                                                         const float& aRate,
    49                                                         const float& aPitch)
    50 {
    51   MOZ_CRASH("Caller is supposed to manually construct a request!");
    52 }
    54 bool
    55 SpeechSynthesisChild::DeallocPSpeechSynthesisRequestChild(PSpeechSynthesisRequestChild* aActor)
    56 {
    57   delete aActor;
    58   return true;
    59 }
    61 // SpeechSynthesisRequestChild
    63 SpeechSynthesisRequestChild::SpeechSynthesisRequestChild(SpeechTaskChild* aTask)
    64   : mTask(aTask)
    65 {
    66   mTask->mActor = this;
    67   MOZ_COUNT_CTOR(SpeechSynthesisRequestChild);
    68 }
    70 SpeechSynthesisRequestChild::~SpeechSynthesisRequestChild()
    71 {
    72   MOZ_COUNT_DTOR(SpeechSynthesisRequestChild);
    73 }
    75 bool
    76 SpeechSynthesisRequestChild::RecvOnStart()
    77 {
    78   mTask->DispatchStartImpl();
    79   return true;
    80 }
    82 bool
    83 SpeechSynthesisRequestChild::Recv__delete__(const bool& aIsError,
    84                                             const float& aElapsedTime,
    85                                             const uint32_t& aCharIndex)
    86 {
    87   mTask->mActor = nullptr;
    89   if (aIsError) {
    90     mTask->DispatchErrorImpl(aElapsedTime, aCharIndex);
    91   } else {
    92     mTask->DispatchEndImpl(aElapsedTime, aCharIndex);
    93   }
    95   return true;
    96 }
    98 bool
    99 SpeechSynthesisRequestChild::RecvOnPause(const float& aElapsedTime,
   100                                          const uint32_t& aCharIndex)
   101 {
   102   mTask->DispatchPauseImpl(aElapsedTime, aCharIndex);
   103   return true;
   104 }
   106 bool
   107 SpeechSynthesisRequestChild::RecvOnResume(const float& aElapsedTime,
   108                                           const uint32_t& aCharIndex)
   109 {
   110   mTask->DispatchResumeImpl(aElapsedTime, aCharIndex);
   111   return true;
   112 }
   114 bool
   115 SpeechSynthesisRequestChild::RecvOnBoundary(const nsString& aName,
   116                                             const float& aElapsedTime,
   117                                             const uint32_t& aCharIndex)
   118 {
   119   mTask->DispatchBoundaryImpl(aName, aElapsedTime, aCharIndex);
   120   return true;
   121 }
   123 bool
   124 SpeechSynthesisRequestChild::RecvOnMark(const nsString& aName,
   125                                         const float& aElapsedTime,
   126                                         const uint32_t& aCharIndex)
   127 {
   128   mTask->DispatchMarkImpl(aName, aElapsedTime, aCharIndex);
   129   return true;
   130 }
   132 // SpeechTaskChild
   134 SpeechTaskChild::SpeechTaskChild(SpeechSynthesisUtterance* aUtterance)
   135   : nsSpeechTask(aUtterance)
   136 {
   137 }
   139 NS_IMETHODIMP
   140 SpeechTaskChild::Setup(nsISpeechTaskCallback* aCallback,
   141                        uint32_t aChannels, uint32_t aRate, uint8_t argc)
   142 {
   143   MOZ_CRASH("Should never be called from child");
   144 }
   146 NS_IMETHODIMP
   147 SpeechTaskChild::SendAudio(JS::Handle<JS::Value> aData, JS::Handle<JS::Value> aLandmarks,
   148                            JSContext* aCx)
   149 {
   150   MOZ_CRASH("Should never be called from child");
   151 }
   153 NS_IMETHODIMP
   154 SpeechTaskChild::SendAudioNative(int16_t* aData, uint32_t aDataLen)
   155 {
   156   MOZ_CRASH("Should never be called from child");
   157 }
   159 void
   160 SpeechTaskChild::Pause()
   161 {
   162   MOZ_ASSERT(mActor);
   163   mActor->SendPause();
   164 }
   166 void
   167 SpeechTaskChild::Resume()
   168 {
   169   MOZ_ASSERT(mActor);
   170   mActor->SendResume();
   171 }
   173 void
   174 SpeechTaskChild::Cancel()
   175 {
   176   MOZ_ASSERT(mActor);
   177   mActor->SendCancel();
   178 }
   180 } // namespace dom
   181 } // namespace mozilla

mercurial