1 // Copyright 2014 Samsung Electronics Inc. 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.
5 #ifndef CONTENT_BROWSER_MEDIA_TIZEN_MEDIA_WEB_CONTENTS_OBSERVER_EFL_H_
6 #define CONTENT_BROWSER_MEDIA_TIZEN_MEDIA_WEB_CONTENTS_OBSERVER_EFL_H_
8 #include "base/compiler_specific.h"
9 #include "base/containers/scoped_ptr_hash_map.h"
10 #include "content/common/content_export.h"
11 #include "content/public/browser/web_contents_observer.h"
15 class BrowserMediaPlayerManagerEfl;
17 #if defined(ENABLE_TIZEN_MEDIA_RECORDER)
18 class BrowserMediaCaptureHandler;
20 typedef base::ScopedPtrHashMap<uintptr_t,
21 std::unique_ptr<BrowserMediaCaptureHandler> >
22 MediaCaptureManagerMap;
25 // This class manages all RenderFrame based media related managers at the
26 // browser side. It receives IPC messages from media RenderFrameObservers and
27 // forwards them to the corresponding managers. The managers are responsible
28 // for sending IPCs back to the RenderFrameObservers at the render side.
29 class CONTENT_EXPORT MediaWebContentsObserver : public WebContentsObserver {
31 explicit MediaWebContentsObserver(WebContents* web_contents);
32 virtual ~MediaWebContentsObserver();
34 // Called by WebContentsImpl when the audible state may have changed.
35 void MaybeUpdateAudibleState();
37 // WebContentsObserver implementations.
38 virtual void RenderFrameDeleted(RenderFrameHost* render_frame_host) override;
39 virtual bool OnMessageReceived(const IPC::Message& message,
40 RenderFrameHost* render_frame_host) override;
42 // Gets the media player manager associated with |render_frame_host|. Creates
43 // a new one if it doesn't exist. The caller doesn't own the returned pointer.
44 BrowserMediaPlayerManagerEfl* GetMediaPlayerManager();
46 #if defined(ENABLE_TIZEN_MEDIA_RECORDER)
48 BrowserMediaCaptureHandler* GetMediaCaptureManager(
49 RenderFrameHost* render_frame_host);
51 // Map from RenderFrameHost* to BrowserMediaCaptureHandler.
52 MediaCaptureManagerMap media_capture_managers_;
55 DISALLOW_COPY_AND_ASSIGN(MediaWebContentsObserver);
58 } // namespace content
60 #endif // CONTENT_BROWSER_MEDIA_TIZEN_MEDIA_WEB_CONTENTS_OBSERVER_EFL_H_