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 <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/guid.h" | 11 #include "base/guid.h" |
12 #include "base/logging.h" | 12 #include "base/logging.h" |
13 #include "base/memory/scoped_vector.h" | 13 #include "base/memory/scoped_vector.h" |
14 #include "base/observer_list.h" | 14 #include "base/observer_list.h" |
15 #include "base/stl_util.h" | 15 #include "base/stl_util.h" |
16 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
17 #include "build/build_config.h" | |
17 #include "chrome/browser/media/router/issues_observer.h" | 18 #include "chrome/browser/media/router/issues_observer.h" |
19 #include "chrome/browser/media/router/media_route_provider_util_win.h" | |
18 #include "chrome/browser/media/router/media_router_factory.h" | 20 #include "chrome/browser/media/router/media_router_factory.h" |
19 #include "chrome/browser/media/router/media_router_metrics.h" | 21 #include "chrome/browser/media/router/media_router_metrics.h" |
20 #include "chrome/browser/media/router/media_router_type_converters.h" | 22 #include "chrome/browser/media/router/media_router_type_converters.h" |
21 #include "chrome/browser/media/router/media_routes_observer.h" | 23 #include "chrome/browser/media/router/media_routes_observer.h" |
22 #include "chrome/browser/media/router/media_sinks_observer.h" | 24 #include "chrome/browser/media/router/media_sinks_observer.h" |
23 #include "chrome/browser/media/router/presentation_session_messages_observer.h" | 25 #include "chrome/browser/media/router/presentation_session_messages_observer.h" |
24 #include "chrome/browser/sessions/session_tab_helper.h" | 26 #include "chrome/browser/sessions/session_tab_helper.h" |
25 #include "extensions/browser/process_manager.h" | 27 #include "extensions/browser/process_manager.h" |
26 | 28 |
27 #define DVLOG_WITH_INSTANCE(level) \ | 29 #define DVLOG_WITH_INSTANCE(level) \ |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
74 MediaRouterMojoImpl::MediaSinksQuery::~MediaSinksQuery() = default; | 76 MediaRouterMojoImpl::MediaSinksQuery::~MediaSinksQuery() = default; |
75 | 77 |
76 MediaRouterMojoImpl::MediaRouterMojoImpl( | 78 MediaRouterMojoImpl::MediaRouterMojoImpl( |
77 extensions::EventPageTracker* event_page_tracker) | 79 extensions::EventPageTracker* event_page_tracker) |
78 : event_page_tracker_(event_page_tracker), | 80 : event_page_tracker_(event_page_tracker), |
79 instance_id_(base::GenerateGUID()), | 81 instance_id_(base::GenerateGUID()), |
80 availability_(interfaces::MediaRouter::SinkAvailability::UNAVAILABLE), | 82 availability_(interfaces::MediaRouter::SinkAvailability::UNAVAILABLE), |
81 current_wake_reason_(MediaRouteProviderWakeReason::TOTAL_COUNT), | 83 current_wake_reason_(MediaRouteProviderWakeReason::TOTAL_COUNT), |
82 weak_factory_(this) { | 84 weak_factory_(this) { |
83 DCHECK(event_page_tracker_); | 85 DCHECK(event_page_tracker_); |
86 #if defined(OS_WIN) | |
87 should_enable_mdns_discovery_ = false; | |
88 CanFirewallUseLocalPorts( | |
89 base::Bind(&MediaRouterMojoImpl::EnableMdnsFromFirewallCheck, | |
90 base::Unretained(this))); | |
91 #endif | |
84 } | 92 } |
85 | 93 |
86 MediaRouterMojoImpl::~MediaRouterMojoImpl() { | 94 MediaRouterMojoImpl::~MediaRouterMojoImpl() { |
87 DCHECK(thread_checker_.CalledOnValidThread()); | 95 DCHECK(thread_checker_.CalledOnValidThread()); |
88 } | 96 } |
89 | 97 |
90 // static | 98 // static |
91 void MediaRouterMojoImpl::BindToRequest( | 99 void MediaRouterMojoImpl::BindToRequest( |
92 const extensions::Extension* extension, | 100 const extensions::Extension* extension, |
93 content::BrowserContext* context, | 101 content::BrowserContext* context, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
150 AttemptWakeEventPage(); | 158 AttemptWakeEventPage(); |
151 return; | 159 return; |
152 } | 160 } |
153 | 161 |
154 media_route_provider_ = std::move(media_route_provider_ptr); | 162 media_route_provider_ = std::move(media_route_provider_ptr); |
155 media_route_provider_.set_connection_error_handler(base::Bind( | 163 media_route_provider_.set_connection_error_handler(base::Bind( |
156 &MediaRouterMojoImpl::OnConnectionError, base::Unretained(this))); | 164 &MediaRouterMojoImpl::OnConnectionError, base::Unretained(this))); |
157 callback.Run(instance_id_); | 165 callback.Run(instance_id_); |
158 ExecutePendingRequests(); | 166 ExecutePendingRequests(); |
159 wakeup_attempt_count_ = 0; | 167 wakeup_attempt_count_ = 0; |
168 #if defined(OS_WIN) | |
169 if (should_enable_mdns_discovery_) { | |
170 media_route_provider_->EnableMdnsDiscovery(); | |
171 } | |
172 #endif | |
160 } | 173 } |
161 | 174 |
162 void MediaRouterMojoImpl::OnIssue(const interfaces::IssuePtr issue) { | 175 void MediaRouterMojoImpl::OnIssue(const interfaces::IssuePtr issue) { |
163 DCHECK(thread_checker_.CalledOnValidThread()); | 176 DCHECK(thread_checker_.CalledOnValidThread()); |
164 DVLOG_WITH_INSTANCE(1) << "OnIssue " << issue->title; | 177 DVLOG_WITH_INSTANCE(1) << "OnIssue " << issue->title; |
165 const Issue& issue_converted = issue.To<Issue>(); | 178 const Issue& issue_converted = issue.To<Issue>(); |
166 issue_manager_.AddIssue(issue_converted); | 179 issue_manager_.AddIssue(issue_converted); |
167 } | 180 } |
168 | 181 |
169 void MediaRouterMojoImpl::OnSinksReceived( | 182 void MediaRouterMojoImpl::OnSinksReceived( |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
395 void MediaRouterMojoImpl::AddIssue(const Issue& issue) { | 408 void MediaRouterMojoImpl::AddIssue(const Issue& issue) { |
396 DCHECK(thread_checker_.CalledOnValidThread()); | 409 DCHECK(thread_checker_.CalledOnValidThread()); |
397 issue_manager_.AddIssue(issue); | 410 issue_manager_.AddIssue(issue); |
398 } | 411 } |
399 | 412 |
400 void MediaRouterMojoImpl::ClearIssue(const Issue::Id& issue_id) { | 413 void MediaRouterMojoImpl::ClearIssue(const Issue::Id& issue_id) { |
401 DCHECK(thread_checker_.CalledOnValidThread()); | 414 DCHECK(thread_checker_.CalledOnValidThread()); |
402 issue_manager_.ClearIssue(issue_id); | 415 issue_manager_.ClearIssue(issue_id); |
403 } | 416 } |
404 | 417 |
418 bool MediaRouterMojoImpl::should_enable_mdns_discovery() const { | |
419 return should_enable_mdns_discovery_; | |
420 } | |
421 | |
422 void MediaRouterMojoImpl::EnsureMdnsDiscoveryEnabled() { | |
423 if (media_route_provider_) { | |
424 media_route_provider_->EnableMdnsDiscovery(); | |
imcheng
2016/03/25 06:26:30
So when this is called, it is possible that the MR
btolsch
2016/03/25 18:57:04
Done.
| |
425 } | |
426 should_enable_mdns_discovery_ = true; | |
427 } | |
428 | |
405 bool MediaRouterMojoImpl::RegisterMediaSinksObserver( | 429 bool MediaRouterMojoImpl::RegisterMediaSinksObserver( |
406 MediaSinksObserver* observer) { | 430 MediaSinksObserver* observer) { |
407 DCHECK(thread_checker_.CalledOnValidThread()); | 431 DCHECK(thread_checker_.CalledOnValidThread()); |
408 | 432 |
409 // Create an observer list for the media source and add |observer| | 433 // Create an observer list for the media source and add |observer| |
410 // to it. Fail if |observer| is already registered. | 434 // to it. Fail if |observer| is already registered. |
411 const std::string& source_id = observer->source().id(); | 435 const std::string& source_id = observer->source().id(); |
412 auto* sinks_query = sinks_queries_.get(source_id); | 436 auto* sinks_query = sinks_queries_.get(source_id); |
413 bool new_query = false; | 437 bool new_query = false; |
414 if (!sinks_query) { | 438 if (!sinks_query) { |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
923 DCHECK(reason != MediaRouteProviderWakeReason::TOTAL_COUNT); | 947 DCHECK(reason != MediaRouteProviderWakeReason::TOTAL_COUNT); |
924 if (current_wake_reason_ == MediaRouteProviderWakeReason::TOTAL_COUNT) | 948 if (current_wake_reason_ == MediaRouteProviderWakeReason::TOTAL_COUNT) |
925 current_wake_reason_ = reason; | 949 current_wake_reason_ = reason; |
926 } | 950 } |
927 | 951 |
928 void MediaRouterMojoImpl::ClearWakeReason() { | 952 void MediaRouterMojoImpl::ClearWakeReason() { |
929 DCHECK(current_wake_reason_ != MediaRouteProviderWakeReason::TOTAL_COUNT); | 953 DCHECK(current_wake_reason_ != MediaRouteProviderWakeReason::TOTAL_COUNT); |
930 current_wake_reason_ = MediaRouteProviderWakeReason::TOTAL_COUNT; | 954 current_wake_reason_ = MediaRouteProviderWakeReason::TOTAL_COUNT; |
931 } | 955 } |
932 | 956 |
957 void MediaRouterMojoImpl::EnableMdnsFromFirewallCheck( | |
958 bool firewall_can_use_local_ports) { | |
959 if (firewall_can_use_local_ports) { | |
960 EnsureMdnsDiscoveryEnabled(); | |
961 } | |
962 } | |
963 | |
933 } // namespace media_router | 964 } // namespace media_router |
OLD | NEW |