Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/media/webaudio/ScriptProcessorNode.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim:set ts=2 sw=2 sts=2 et cindent: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef ScriptProcessorNode_h_
8
#define ScriptProcessorNode_h_
9
10
#include "AudioNode.h"
11
12
namespace mozilla {
13
namespace dom {
14
15
class AudioContext;
16
class SharedBuffers;
17
18
class ScriptProcessorNode final : public AudioNode
19
{
20
public:
21
  ScriptProcessorNode(AudioContext* aContext,
22
                      uint32_t aBufferSize,
23
                      uint32_t aNumberOfInputChannels,
24
                      uint32_t aNumberOfOutputChannels);
25
26
  NS_INLINE_DECL_REFCOUNTING_INHERITED(ScriptProcessorNode, AudioNode)
27
28
  IMPL_EVENT_HANDLER(audioprocess)
29
30
  using EventTarget::EventListenerAdded;
31
  void EventListenerAdded(nsAtom* aType) override;
32
33
  using EventTarget::EventListenerRemoved;
34
  void EventListenerRemoved(nsAtom* aType) override;
35
36
  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
37
38
  AudioNode* Connect(AudioNode& aDestination, uint32_t aOutput,
39
                     uint32_t aInput, ErrorResult& aRv) override
40
0
  {
41
0
    AudioNode* node = AudioNode::Connect(aDestination, aOutput, aInput, aRv);
42
0
    if (!aRv.Failed()) {
43
0
      UpdateConnectedStatus();
44
0
    }
45
0
    return node;
46
0
  }
47
48
  void Connect(AudioParam& aDestination, uint32_t aOutput,
49
               ErrorResult& aRv) override
50
0
  {
51
0
    AudioNode::Connect(aDestination, aOutput, aRv);
52
0
    if (!aRv.Failed()) {
53
0
      UpdateConnectedStatus();
54
0
    }
55
0
  }
56
  void Disconnect(ErrorResult& aRv) override
57
0
  {
58
0
    AudioNode::Disconnect(aRv);
59
0
    UpdateConnectedStatus();
60
0
  }
61
  void Disconnect(uint32_t aOutput, ErrorResult& aRv) override
62
0
  {
63
0
    AudioNode::Disconnect(aOutput, aRv);
64
0
    UpdateConnectedStatus();
65
0
  }
66
  void NotifyInputsChanged() override
67
0
  {
68
0
    UpdateConnectedStatus();
69
0
  }
70
  void NotifyHasPhantomInput() override
71
0
  {
72
0
    mHasPhantomInput = true;
73
0
    // No need to UpdateConnectedStatus() because there was previously an
74
0
    // input in InputNodes().
75
0
  }
76
  void Disconnect(AudioNode& aDestination, ErrorResult& aRv) override
77
0
  {
78
0
    AudioNode::Disconnect(aDestination, aRv);
79
0
    UpdateConnectedStatus();
80
0
  }
81
  void Disconnect(AudioNode& aDestination, uint32_t aOutput, ErrorResult& aRv) override
82
0
  {
83
0
    AudioNode::Disconnect(aDestination, aOutput, aRv);
84
0
    UpdateConnectedStatus();
85
0
  }
86
  void Disconnect(AudioNode& aDestination, uint32_t aOutput, uint32_t aInput, ErrorResult& aRv) override
87
0
  {
88
0
    AudioNode::Disconnect(aDestination, aOutput, aInput, aRv);
89
0
    UpdateConnectedStatus();
90
0
  }
91
  void Disconnect(AudioParam& aDestination, ErrorResult& aRv) override
92
0
  {
93
0
    AudioNode::Disconnect(aDestination, aRv);
94
0
    UpdateConnectedStatus();
95
0
  }
96
  void Disconnect(AudioParam& aDestination, uint32_t aOutput, ErrorResult& aRv) override
97
0
  {
98
0
    AudioNode::Disconnect(aDestination, aOutput, aRv);
99
0
    UpdateConnectedStatus();
100
0
  }
101
  void SetChannelCount(uint32_t aChannelCount, ErrorResult& aRv) override
102
0
  {
103
0
    if (aChannelCount != ChannelCount()) {
104
0
      aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
105
0
    }
106
0
  }
107
  void SetChannelCountModeValue(ChannelCountMode aMode, ErrorResult& aRv) override
108
0
  {
109
0
    if (aMode != ChannelCountMode::Explicit) {
110
0
      aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
111
0
    }
112
0
  }
113
114
  uint32_t BufferSize() const
115
  {
116
    return mBufferSize;
117
  }
118
119
  uint32_t NumberOfOutputChannels() const
120
  {
121
    return mNumberOfOutputChannels;
122
  }
123
124
  using DOMEventTargetHelper::DispatchTrustedEvent;
125
126
  const char* NodeType() const override
127
0
  {
128
0
    return "ScriptProcessorNode";
129
0
  }
130
131
  size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const override;
132
  size_t SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const override;
133
134
private:
135
  virtual ~ScriptProcessorNode();
136
137
  void UpdateConnectedStatus();
138
139
  const uint32_t mBufferSize;
140
  const uint32_t mNumberOfOutputChannels;
141
  bool mHasPhantomInput = false;
142
};
143
144
} // namespace dom
145
} // namespace mozilla
146
147
#endif
148