Chromium Code Reviews| Index: content/renderer/pepper/pepper_audio_control_delegate.cc |
| diff --git a/content/renderer/pepper/pepper_audio_control_delegate.cc b/content/renderer/pepper/pepper_audio_control_delegate.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e228eb89e2dd57f7fb23051bbfc674c371656551 |
| --- /dev/null |
| +++ b/content/renderer/pepper/pepper_audio_control_delegate.cc |
| @@ -0,0 +1,70 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/renderer/pepper/pepper_audio_control_delegate.h" |
| + |
| +#include "content/renderer/pepper/pepper_plugin_instance_impl.h" |
| +#include "content/renderer/pepper/ppb_audio_impl.h" |
| +#include "content/renderer/render_frame_impl.h" |
| + |
| +namespace content { |
| + |
| +PepperAudioControlDelegate::PepperAudioControlDelegate( |
| + PepperPluginInstanceImpl* pepper_instance) |
| + : pepper_instance_(pepper_instance) { |
| + DCHECK(pepper_instance_); |
| +} |
| + |
| +PepperAudioControlDelegate::~PepperAudioControlDelegate() { |
| + DCHECK(!pepper_instance_); |
|
bbudge
2016/06/22 18:14:55
It seems to me like you could instead:
if (instan
Zhiqiang Zhang (Slow)
2016/06/22 21:00:42
Done.
|
| +} |
| + |
| +void PepperAudioControlDelegate::AddActiveAudioInstance(PPB_Audio_Impl* audio) { |
| + if (!pepper_instance_) return; |
| + if (ppb_audios_.count(audio)) return; |
|
bbudge
2016/06/22 18:14:54
It might be better to DCHECK that the instance isn
Zhiqiang Zhang (Slow)
2016/06/22 21:00:42
The StartPlayback signal originates from Pepper. I
|
| + |
| + if (ppb_audios_.empty()) { |
| + RenderFrameImpl* render_frame = pepper_instance_->render_frame(); |
| + if (render_frame) |
| + render_frame->PepperStartsPlayback(pepper_instance_); |
| + } |
| + |
| + ppb_audios_.insert(audio); |
| +} |
| + |
| +void PepperAudioControlDelegate::RemoveActiveAudioInstance( |
| + PPB_Audio_Impl* audio) { |
| + if (!pepper_instance_) return; |
| + if (!ppb_audios_.count(audio)) return; |
|
bbudge
2016/06/22 18:14:54
DCHECK?
Zhiqiang Zhang (Slow)
2016/06/22 21:00:42
Ditto.
|
| + |
| + ppb_audios_.erase(audio); |
| + |
| + if (ppb_audios_.empty()) { |
| + RenderFrameImpl* render_frame = pepper_instance_->render_frame(); |
| + if (render_frame) |
| + render_frame->PepperStopsPlayback(pepper_instance_); |
| + } |
| +} |
| + |
| +void PepperAudioControlDelegate::SetVolume(double volume) { |
| + if (!pepper_instance_) return; |
| + |
| + for (auto* ppb_audio : ppb_audios_) |
| + ppb_audio->SetVolume(volume); |
| +} |
| + |
| +void PepperAudioControlDelegate::OnPepperInstanceDeleted() { |
| + DCHECK(!pepper_instance_); |
|
bbudge
2016/06/22 18:14:54
DCHECK(instance_);
Zhiqiang Zhang (Slow)
2016/06/22 21:00:42
Done.
|
| + |
| + if (!ppb_audios_.empty()) { |
| + RenderFrameImpl* render_frame = pepper_instance_->render_frame(); |
| + if (render_frame) |
| + render_frame->PepperStopsPlayback(pepper_instance_); |
| + } |
|
bbudge
2016/06/22 18:14:54
This duplicated code could be moved to a private h
Zhiqiang Zhang (Slow)
2016/06/22 21:00:42
Done.
|
| + |
| + ppb_audios_.clear(); |
| + pepper_instance_ = nullptr; |
| +} |
| + |
| +} |