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

Side by Side Diff: chrome/browser/media/router/presentation_frame_map.cc

Issue 1132903002: [MediaRouter] Add implementation of PresentationServiceDelegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 2015 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 #include "chrome/browser/media/router/presentation_frame_map.h"
6
7 #include "chrome/browser/media/router/media_router.h"
8 #include "chrome/browser/media/router/media_router_impl_factory.h"
9 #include "chrome/browser/media/router/presentation_frame.h"
10 #include "chrome/browser/media/router/presentation_media_sinks_observer.h"
11
12 namespace media_router {
13
14 PresentationFrameMap::PresentationFrameMap(content::WebContents* web_contents)
15 : web_contents_(web_contents),
16 router_(MediaRouterImplFactory::GetMediaRouterForBrowserContext(
17 web_contents_->GetBrowserContext())) {
18 DCHECK(router_);
19 }
20
21 PresentationFrameMap::~PresentationFrameMap() {
22 }
23
24 bool PresentationFrameMap::AddScreenAvailabilityListener(
25 int render_process_id,
26 int render_frame_id,
27 content::PresentationScreenAvailabilityListener* listener) {
28 if (num_sink_observers_ >= kMaxNumSources) {
mark a. foltz 2015/05/14 22:20:45 I would rename this to num_screen_availability_lis
haibinlu 2015/05/15 23:32:29 Done.
29 return false;
30 }
31
32 RenderFrameHostId rfh_id(render_process_id, render_frame_id);
33 auto frame = GetOrAddFrame(rfh_id);
mark a. foltz 2015/05/14 22:20:45 presentation_frame here and below (so as not to co
haibinlu 2015/05/15 23:32:29 Done.
34 if (frame->AddScreenAvailabilityListener(listener)) {
35 num_sink_observers_++;
36 return true;
37 }
38 return false;
39 }
40
41 void PresentationFrameMap::RemoveScreenAvailabilityListener(
42 int render_process_id,
43 int render_frame_id,
44 content::PresentationScreenAvailabilityListener* listener) {
45 DCHECK(listener);
46
47 RenderFrameHostId rfh_id(render_process_id, render_frame_id);
48 auto frame = frames_.get(rfh_id);
49 if (frame && frame->RemoveScreenAvailabilityListener(listener)) {
50 num_sink_observers_--;
51 return true;
52 }
53 return false;
54 }
55
56 void PresentationFrameMap::SetDefaultPresentationInfo(
57 int render_process_id,
58 int render_frame_id,
59 const std::string& default_presentation_url,
60 const std::string& default_presentation_id) {
61 RenderFrameHostId rfh_id(render_process_id, render_frame_id);
62 auto frame = GetOrAddFrame(rfh_id);
63 frame->SetDefaultPresentationInfo(default_presentation_url,
64 default_presentation_id);
65 }
66
67 std::string PresentationFrameMap::GetDefaultPresentationId(
68 RenderFrameHostId rfh_id) const {
69 auto frame = frames_.get(rfh_id);
70 return frame ? frame->GetDefaultPresentationId() : "";
71 }
72
73 void PresentationFrameMap::SetDelegateObserver(
74 int render_process_id,
75 int render_frame_id,
76 content::PresentationServiceDelegate::Observer* observer) {
77 RenderFrameHostId rfh_id(render_process_id, render_frame_id);
78 auto frame = GetOrAddFrame(rfh_id);
79 frame->SetDelegateObserver(observer);
80 }
81
82 DelegateObserver* PresentationFrameMap::GetDelegateObserver(
83 RenderFrameHostId rfh_id) const {
84 auto frame = frames_.get(rfh_id);
85 return frame ? frame->GetDelegateObserver(observer) : NULL;
86 }
87
88 void PresentationFrameMap::Reset(int render_process_id, int render_frame_id) {
89 RenderFrameHostId rfh_id(render_process_id, render_frame_id);
90 auto frame = frames_.get(rfh_id);
91 if (frame) {
mark a. foltz 2015/05/14 22:20:45 Omit { } on single-line if's
92 frame->Reset();
93 }
94 }
95
96 scoped_ptr<PresentationFrame>* PresentationFrameMap::GetOrAddFrame(
97 RenderFrameHostId rfh_id) {
98 auto frame = frames_.get(rfh_id);
99 if (!frames_.contains(rfh_id)) {
100 frames_.add(rfh_id,
101 scoped_ptr<PresentationFrame>(new PresentationFrame(web_contents));
102 }
103 return frames_.get(rfh_id);
104 }
105
106 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698