Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2057)

Side by Side Diff: chrome/browser/media/media_stream_capture_indicator.h

Issue 2307083002: Cleanup: move WebRTC related files from chrome/browser/media to chrome/browser/media/webrtc/ (Closed)
Patch Set: Removed file wrongly resuscitated during rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 CHROME_BROWSER_MEDIA_MEDIA_STREAM_CAPTURE_INDICATOR_H_
6 #define CHROME_BROWSER_MEDIA_MEDIA_STREAM_CAPTURE_INDICATOR_H_
7
8 #include <vector>
9
10 #include "base/callback_forward.h"
11 #include "base/containers/scoped_ptr_hash_map.h"
12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h"
14 #include "chrome/browser/status_icons/status_icon_menu_model.h"
15 #include "content/public/common/media_stream_request.h"
16
17 namespace content {
18 class WebContents;
19 } // namespace content
20
21 namespace gfx {
22 class ImageSkia;
23 } // namespace gfx
24
25 class StatusIcon;
26
27 // This indicator is owned by MediaCaptureDevicesDispatcher
28 // (MediaCaptureDevicesDispatcher is a singleton).
29 class MediaStreamCaptureIndicator
30 : public base::RefCountedThreadSafe<MediaStreamCaptureIndicator>,
31 public StatusIconMenuModel::Delegate {
32 public:
33 MediaStreamCaptureIndicator();
34
35 // Registers a new media stream for |web_contents| and returns UI object
36 // that's used by the content layer to notify about state of the stream.
37 std::unique_ptr<content::MediaStreamUI> RegisterMediaStream(
38 content::WebContents* web_contents,
39 const content::MediaStreamDevices& devices);
40
41 // Overrides from StatusIconMenuModel::Delegate implementation.
42 void ExecuteCommand(int command_id, int event_flags) override;
43
44 // Returns true if the |web_contents| is capturing user media (e.g., webcam or
45 // microphone input).
46 bool IsCapturingUserMedia(content::WebContents* web_contents) const;
47
48 // Returns true if the |web_contents| is capturing video (e.g., webcam).
49 bool IsCapturingVideo(content::WebContents* web_contents) const;
50
51 // Returns true if the |web_contents| is capturing audio (e.g., microphone).
52 bool IsCapturingAudio(content::WebContents* web_contents) const;
53
54 // Returns true if the |web_contents| itself is being mirrored (e.g., a source
55 // of media for remote broadcast).
56 bool IsBeingMirrored(content::WebContents* web_contents) const;
57
58 private:
59 class UIDelegate;
60 class WebContentsDeviceUsage;
61 friend class WebContentsDeviceUsage;
62
63 friend class base::RefCountedThreadSafe<MediaStreamCaptureIndicator>;
64 ~MediaStreamCaptureIndicator() override;
65
66 // Following functions/variables are executed/accessed only on UI thread.
67
68 // Called by WebContentsDeviceUsage when it's about to destroy itself, i.e.
69 // when WebContents is being destroyed.
70 void UnregisterWebContents(content::WebContents* web_contents);
71
72 // Updates the status tray menu. Called by WebContentsDeviceUsage.
73 void UpdateNotificationUserInterface();
74
75 // Helpers to create and destroy status tray icon. Called from
76 // UpdateNotificationUserInterface().
77 void EnsureStatusTrayIconResources();
78 void MaybeCreateStatusTrayIcon(bool audio, bool video);
79 void MaybeDestroyStatusTrayIcon();
80
81 // Gets the status icon image and the string to use as the tooltip.
82 void GetStatusTrayIconInfo(bool audio,
83 bool video,
84 gfx::ImageSkia* image,
85 base::string16* tool_tip);
86
87 // Reference to our status icon - owned by the StatusTray. If null,
88 // the platform doesn't support status icons.
89 StatusIcon* status_icon_;
90
91 // These images are owned by ResourceBundle and need not be destroyed.
92 gfx::ImageSkia* mic_image_;
93 gfx::ImageSkia* camera_image_;
94
95 // A map that contains the usage counts of the opened capture devices for each
96 // WebContents instance.
97 base::ScopedPtrHashMap<content::WebContents*,
98 std::unique_ptr<WebContentsDeviceUsage>>
99 usage_map_;
100
101 // A vector which maps command IDs to their associated WebContents
102 // instance. This is rebuilt each time the status tray icon context menu is
103 // updated.
104 typedef std::vector<content::WebContents*> CommandTargets;
105 CommandTargets command_targets_;
106
107 DISALLOW_COPY_AND_ASSIGN(MediaStreamCaptureIndicator);
108 };
109
110 #endif // CHROME_BROWSER_MEDIA_MEDIA_STREAM_CAPTURE_INDICATOR_H_
OLDNEW
« no previous file with comments | « chrome/browser/media/media_permission.cc ('k') | chrome/browser/media/media_stream_capture_indicator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698