1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_BROWSER_MEDIA_CAPTURE_WEB_CONTENTS_AUDIO_MUTER_H_ 6 #define CONTENT_BROWSER_MEDIA_CAPTURE_WEB_CONTENTS_AUDIO_MUTER_H_ 7 8 #include "base/memory/ref_counted.h" 9 10 namespace content { 11 12 class WebContents; 13 14 // Mutes all audio output from a WebContents. Internally, this is accomplished 15 // by providing a MirroringDestination implementation, similar to that found in 16 // WebContentsAudioInputStream for audio capture/mirroring. However, the 17 // WebContentsAudioMuter::MuteDestination only pumps the audio data and discards 18 // it. 19 class WebContentsAudioMuter { 20 public: 21 explicit WebContentsAudioMuter(WebContents* web_contents); 22 ~WebContentsAudioMuter(); 23 24 bool is_muting() const { return is_muting_; } 25 26 void StartMuting(); 27 void StopMuting(); 28 29 private: 30 // AudioMirroringManager::MirroringDestination implementation which is 31 // ref-counted so it remains alive as tasks referencing it are posted on both 32 // the UI and IO threads. 33 class MuteDestination; 34 const scoped_refptr<MuteDestination> destination_; 35 36 bool is_muting_; 37 38 DISALLOW_COPY_AND_ASSIGN(WebContentsAudioMuter); 39 }; 40 41 } // namespace content 42 43 #endif // CONTENT_BROWSER_MEDIA_CAPTURE_WEB_CONTENTS_AUDIO_MUTER_H_ 44