OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/media/router/media_router_mojo_impl.h" | 5 #include "chrome/browser/media/router/media_router_mojo_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/guid.h" | 8 #include "base/guid.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/scoped_vector.h" | 10 #include "base/memory/scoped_vector.h" |
11 #include "base/observer_list.h" | 11 #include "base/observer_list.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
| 13 #include "chrome/browser/media/router/issues_observer.h" |
13 #include "chrome/browser/media/router/media_router_factory.h" | 14 #include "chrome/browser/media/router/media_router_factory.h" |
14 #include "chrome/browser/media/router/media_router_type_converters.h" | 15 #include "chrome/browser/media/router/media_router_type_converters.h" |
15 #include "chrome/browser/media/router/media_routes_observer.h" | 16 #include "chrome/browser/media/router/media_routes_observer.h" |
16 #include "chrome/browser/media/router/media_sinks_observer.h" | 17 #include "chrome/browser/media/router/media_sinks_observer.h" |
17 #include "extensions/browser/process_manager.h" | 18 #include "extensions/browser/process_manager.h" |
18 | 19 |
19 #define DVLOG_WITH_INSTANCE(level) \ | 20 #define DVLOG_WITH_INSTANCE(level) \ |
20 DVLOG(level) << "MR #" << instance_id_ << ": " | 21 DVLOG(level) << "MR #" << instance_id_ << ": " |
21 | 22 |
22 #define DLOG_WITH_INSTANCE(level) DLOG(level) << "MR #" << instance_id_ << ": " | 23 #define DLOG_WITH_INSTANCE(level) DLOG(level) << "MR #" << instance_id_ << ": " |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 DCHECK(thread_checker_.CalledOnValidThread()); | 137 DCHECK(thread_checker_.CalledOnValidThread()); |
137 | 138 |
138 media_route_provider_ = media_route_provider_ptr.Pass(); | 139 media_route_provider_ = media_route_provider_ptr.Pass(); |
139 media_route_provider_.set_connection_error_handler(base::Bind( | 140 media_route_provider_.set_connection_error_handler(base::Bind( |
140 &MediaRouterMojoImpl::OnConnectionError, base::Unretained(this))); | 141 &MediaRouterMojoImpl::OnConnectionError, base::Unretained(this))); |
141 callback.Run(instance_id_); | 142 callback.Run(instance_id_); |
142 ExecutePendingRequests(); | 143 ExecutePendingRequests(); |
143 } | 144 } |
144 | 145 |
145 void MediaRouterMojoImpl::OnIssue(const interfaces::IssuePtr issue) { | 146 void MediaRouterMojoImpl::OnIssue(const interfaces::IssuePtr issue) { |
146 // TODO(imcheng): Implement. (crbug.com/461815) | |
147 DCHECK(thread_checker_.CalledOnValidThread()); | 147 DCHECK(thread_checker_.CalledOnValidThread()); |
148 NOTIMPLEMENTED(); | 148 DVLOG_WITH_INSTANCE(1) << "OnIssue " << issue->title; |
| 149 const Issue& issue_converted = issue.To<Issue>(); |
| 150 issue_manager_.AddIssue(issue_converted); |
149 } | 151 } |
150 | 152 |
151 void MediaRouterMojoImpl::OnSinksReceived( | 153 void MediaRouterMojoImpl::OnSinksReceived( |
152 const mojo::String& media_source, | 154 const mojo::String& media_source, |
153 mojo::Array<interfaces::MediaSinkPtr> sinks) { | 155 mojo::Array<interfaces::MediaSinkPtr> sinks) { |
154 DCHECK(thread_checker_.CalledOnValidThread()); | 156 DCHECK(thread_checker_.CalledOnValidThread()); |
155 | 157 |
156 DVLOG_WITH_INSTANCE(1) << "OnSinksReceived"; | 158 DVLOG_WITH_INSTANCE(1) << "OnSinksReceived"; |
157 std::vector<MediaSink> sinks_converted; | 159 std::vector<MediaSink> sinks_converted; |
158 sinks_converted.reserve(sinks.size()); | 160 sinks_converted.reserve(sinks.size()); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 void MediaRouterMojoImpl::ListenForRouteMessages( | 249 void MediaRouterMojoImpl::ListenForRouteMessages( |
248 const std::vector<MediaRoute::Id>& route_ids, | 250 const std::vector<MediaRoute::Id>& route_ids, |
249 const PresentationSessionMessageCallback& message_cb) { | 251 const PresentationSessionMessageCallback& message_cb) { |
250 DCHECK(thread_checker_.CalledOnValidThread()); | 252 DCHECK(thread_checker_.CalledOnValidThread()); |
251 RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoListenForRouteMessages, | 253 RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoListenForRouteMessages, |
252 base::Unretained(this), route_ids, message_cb)); | 254 base::Unretained(this), route_ids, message_cb)); |
253 } | 255 } |
254 | 256 |
255 void MediaRouterMojoImpl::ClearIssue(const Issue::Id& issue_id) { | 257 void MediaRouterMojoImpl::ClearIssue(const Issue::Id& issue_id) { |
256 DCHECK(thread_checker_.CalledOnValidThread()); | 258 DCHECK(thread_checker_.CalledOnValidThread()); |
257 | 259 issue_manager_.ClearIssue(issue_id); |
258 RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoClearIssue, | 260 RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoClearIssue, |
259 base::Unretained(this), issue_id)); | 261 base::Unretained(this), issue_id)); |
260 } | 262 } |
261 | 263 |
262 void MediaRouterMojoImpl::RegisterMediaSinksObserver( | 264 void MediaRouterMojoImpl::RegisterMediaSinksObserver( |
263 MediaSinksObserver* observer) { | 265 MediaSinksObserver* observer) { |
264 DCHECK(thread_checker_.CalledOnValidThread()); | 266 DCHECK(thread_checker_.CalledOnValidThread()); |
265 | 267 |
266 // Create an observer list for the media source and add |observer| | 268 // Create an observer list for the media source and add |observer| |
267 // to it. Fail if |observer| is already registered. | 269 // to it. Fail if |observer| is already registered. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 return; | 323 return; |
322 | 324 |
323 routes_observers_.RemoveObserver(observer); | 325 routes_observers_.RemoveObserver(observer); |
324 if (!routes_observers_.might_have_observers()) { | 326 if (!routes_observers_.might_have_observers()) { |
325 RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoStopObservingMediaRoutes, | 327 RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoStopObservingMediaRoutes, |
326 base::Unretained(this))); | 328 base::Unretained(this))); |
327 } | 329 } |
328 } | 330 } |
329 | 331 |
330 void MediaRouterMojoImpl::RegisterIssuesObserver(IssuesObserver* observer) { | 332 void MediaRouterMojoImpl::RegisterIssuesObserver(IssuesObserver* observer) { |
331 // TODO(imcheng): Implement. (crbug.com/461815) | 333 DCHECK(thread_checker_.CalledOnValidThread()); |
332 NOTIMPLEMENTED(); | 334 issue_manager_.RegisterObserver(observer); |
333 } | 335 } |
334 | 336 |
335 void MediaRouterMojoImpl::UnregisterIssuesObserver(IssuesObserver* observer) { | 337 void MediaRouterMojoImpl::UnregisterIssuesObserver(IssuesObserver* observer) { |
336 // TODO(imcheng): Implement. (crbug.com/461815) | 338 DCHECK(thread_checker_.CalledOnValidThread()); |
337 NOTIMPLEMENTED(); | 339 issue_manager_.UnregisterObserver(observer); |
338 } | 340 } |
339 | 341 |
340 void MediaRouterMojoImpl::DoCreateRoute( | 342 void MediaRouterMojoImpl::DoCreateRoute( |
341 const MediaSource::Id& source_id, | 343 const MediaSource::Id& source_id, |
342 const MediaSink::Id& sink_id, | 344 const MediaSink::Id& sink_id, |
343 const std::string& origin, | 345 const std::string& origin, |
344 int tab_id, | 346 int tab_id, |
345 const std::vector<MediaRouteResponseCallback>& callbacks) { | 347 const std::vector<MediaRouteResponseCallback>& callbacks) { |
346 std::string presentation_id("mr_"); | 348 std::string presentation_id("mr_"); |
347 presentation_id += base::GenerateGUID(); | 349 presentation_id += base::GenerateGUID(); |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 return; | 473 return; |
472 } | 474 } |
473 | 475 |
474 for (const auto& next_request : pending_requests_) | 476 for (const auto& next_request : pending_requests_) |
475 next_request.Run(); | 477 next_request.Run(); |
476 | 478 |
477 pending_requests_.clear(); | 479 pending_requests_.clear(); |
478 } | 480 } |
479 | 481 |
480 } // namespace media_router | 482 } // namespace media_router |
OLD | NEW |