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

Unified Diff: chrome/browser/media/router/presentation_service_delegate_impl.cc

Issue 2927503002: [Presentation API / Media Router] Relax PresentationRequest URL check. (Closed)
Patch Set: Really add #include Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/media/router/presentation_service_delegate_impl.cc
diff --git a/chrome/browser/media/router/presentation_service_delegate_impl.cc b/chrome/browser/media/router/presentation_service_delegate_impl.cc
index d9b55d7051f3c6fa6a5d4f00b2ca79679b20149c..8fd25dd2127fc5dc97976f27c0ae4bb98a84bc6e 100644
--- a/chrome/browser/media/router/presentation_service_delegate_impl.cc
+++ b/chrome/browser/media/router/presentation_service_delegate_impl.cc
@@ -132,7 +132,7 @@ class PresentationFrame {
// Mirror corresponding APIs in PresentationServiceDelegateImpl.
bool SetScreenAvailabilityListener(
content::PresentationScreenAvailabilityListener* listener);
- bool RemoveScreenAvailabilityListener(
+ void RemoveScreenAvailabilityListener(
content::PresentationScreenAvailabilityListener* listener);
bool HasScreenAvailabilityListenerForTest(
const MediaSource::Id& source_id) const;
@@ -217,6 +217,11 @@ const MediaRoute::Id PresentationFrame::GetRouteId(
bool PresentationFrame::SetScreenAvailabilityListener(
content::PresentationScreenAvailabilityListener* listener) {
MediaSource source(GetMediaSourceFromListener(listener));
+ if (!IsValidPresentationUrl(source.url())) {
+ listener->OnScreenAvailabilityChanged(false);
+ return false;
+ }
+
auto& sinks_observer = url_to_sinks_observer_[source.id()];
if (sinks_observer && sinks_observer->listener() == listener)
return false;
@@ -234,16 +239,14 @@ bool PresentationFrame::SetScreenAvailabilityListener(
return true;
}
-bool PresentationFrame::RemoveScreenAvailabilityListener(
+void PresentationFrame::RemoveScreenAvailabilityListener(
content::PresentationScreenAvailabilityListener* listener) {
MediaSource source(GetMediaSourceFromListener(listener));
auto sinks_observer_it = url_to_sinks_observer_.find(source.id());
if (sinks_observer_it != url_to_sinks_observer_.end() &&
sinks_observer_it->second->listener() == listener) {
url_to_sinks_observer_.erase(sinks_observer_it);
- return true;
}
- return false;
}
bool PresentationFrame::HasScreenAvailabilityListenerForTest(
@@ -394,7 +397,7 @@ class PresentationFrameManager {
bool SetScreenAvailabilityListener(
const RenderFrameHostId& render_frame_host_id,
content::PresentationScreenAvailabilityListener* listener);
- bool RemoveScreenAvailabilityListener(
+ void RemoveScreenAvailabilityListener(
const RenderFrameHostId& render_frame_host_id,
content::PresentationScreenAvailabilityListener* listener);
void ListenForConnectionStateChange(
@@ -553,13 +556,13 @@ bool PresentationFrameManager::SetScreenAvailabilityListener(
return presentation_frame->SetScreenAvailabilityListener(listener);
}
-bool PresentationFrameManager::RemoveScreenAvailabilityListener(
+void PresentationFrameManager::RemoveScreenAvailabilityListener(
const RenderFrameHostId& render_frame_host_id,
content::PresentationScreenAvailabilityListener* listener) {
DCHECK(listener);
const auto it = presentation_frames_.find(render_frame_host_id);
- return it != presentation_frames_.end() &&
- it->second->RemoveScreenAvailabilityListener(listener);
+ if (it != presentation_frames_.end())
+ it->second->RemoveScreenAvailabilityListener(listener);
}
bool PresentationFrameManager::HasScreenAvailabilityListenerForTest(
« no previous file with comments | « no previous file | chrome/browser/media/router/presentation_service_delegate_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698