03e5dfbd0063cf52e9d523df07ea75191a34bdee
[platform/framework/web/crosswalk-tizen.git] /
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.
4
5 #ifndef CONTENT_BROWSER_MEDIA_TIZEN_MEDIA_WEB_CONTENTS_OBSERVER_EFL_H_
6 #define CONTENT_BROWSER_MEDIA_TIZEN_MEDIA_WEB_CONTENTS_OBSERVER_EFL_H_
7
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"
12
13 namespace content {
14
15 class BrowserMediaPlayerManagerEfl;
16
17 #if defined(ENABLE_TIZEN_MEDIA_RECORDER)
18 class BrowserMediaCaptureHandler;
19
20 typedef base::ScopedPtrHashMap<uintptr_t,
21                                std::unique_ptr<BrowserMediaCaptureHandler> >
22     MediaCaptureManagerMap;
23 #endif
24
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 {
30  public:
31   explicit MediaWebContentsObserver(WebContents* web_contents);
32   virtual ~MediaWebContentsObserver();
33
34   // Called by WebContentsImpl when the audible state may have changed.
35   void MaybeUpdateAudibleState();
36
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;
41
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();
45
46 #if defined(ENABLE_TIZEN_MEDIA_RECORDER)
47  private:
48   BrowserMediaCaptureHandler* GetMediaCaptureManager(
49       RenderFrameHost* render_frame_host);
50
51   // Map from RenderFrameHost* to BrowserMediaCaptureHandler.
52   MediaCaptureManagerMap media_capture_managers_;
53 #endif
54
55   DISALLOW_COPY_AND_ASSIGN(MediaWebContentsObserver);
56 };
57
58 }  // namespace content
59
60 #endif  // CONTENT_BROWSER_MEDIA_TIZEN_MEDIA_WEB_CONTENTS_OBSERVER_EFL_H_