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

Unified Diff: chrome/browser/media/router/mojo/media_router_mojo_impl.cc

Issue 2678123003: Revert of Convert MediaRouter mojom apis to intake url::Origin objects instead of strings (Closed)
Patch Set: Created 3 years, 10 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
Index: chrome/browser/media/router/mojo/media_router_mojo_impl.cc
diff --git a/chrome/browser/media/router/mojo/media_router_mojo_impl.cc b/chrome/browser/media/router/mojo/media_router_mojo_impl.cc
index fc356db6c33eadda0d38b1fa34cdd3f056d9638d..91c840db4e345016fb91f90ed364b62f39c13094 100644
--- a/chrome/browser/media/router/mojo/media_router_mojo_impl.cc
+++ b/chrome/browser/media/router/mojo/media_router_mojo_impl.cc
@@ -176,7 +176,7 @@
void MediaRouterMojoImpl::OnSinksReceived(
const std::string& media_source,
std::vector<mojom::MediaSinkPtr> sinks,
- const std::vector<url::Origin>& origins) {
+ const std::vector<std::string>& origins) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DVLOG_WITH_INSTANCE(1) << "OnSinksReceived";
auto it = sinks_queries_.find(media_source);
@@ -185,6 +185,18 @@
return;
}
+ std::vector<GURL> origin_list;
+ origin_list.reserve(origins.size());
+ for (size_t i = 0; i < origins.size(); ++i) {
+ GURL origin(origins[i]);
+ if (!origin.is_valid()) {
+ LOG(WARNING) << "Received invalid origin: " << origin
+ << ". Dropping result.";
+ return;
+ }
+ origin_list.push_back(origin);
+ }
+
std::vector<MediaSink> sink_list;
sink_list.reserve(sinks.size());
for (size_t i = 0; i < sinks.size(); ++i)
@@ -192,7 +204,7 @@
auto* sinks_query = it->second.get();
sinks_query->has_cached_result = true;
- sinks_query->origins = origins;
+ sinks_query->origins.swap(origin_list);
sinks_query->cached_sink_list.swap(sink_list);
if (!sinks_query->observers.might_have_observers()) {
@@ -267,36 +279,55 @@
void MediaRouterMojoImpl::CreateRoute(
const MediaSource::Id& source_id,
const MediaSink::Id& sink_id,
- const url::Origin& origin,
+ const GURL& origin,
content::WebContents* web_contents,
const std::vector<MediaRouteResponseCallback>& callbacks,
base::TimeDelta timeout,
bool incognito) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (!origin.is_valid()) {
+ DVLOG_WITH_INSTANCE(1) << "Invalid origin: " << origin;
+ std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromError(
+ "Invalid origin", RouteRequestResult::INVALID_ORIGIN);
+ MediaRouterMojoMetrics::RecordCreateRouteResultCode(result->result_code());
+ RunRouteRequestCallbacks(std::move(result), callbacks);
+ return;
+ }
+
SetWakeReason(MediaRouteProviderWakeReason::CREATE_ROUTE);
int tab_id = SessionTabHelper::IdForTab(web_contents);
RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoCreateRoute,
- base::Unretained(this), source_id, sink_id, origin,
- tab_id, callbacks, timeout, incognito));
+ base::Unretained(this), source_id, sink_id,
+ origin.is_empty() ? "" : origin.spec(), tab_id,
+ callbacks, timeout, incognito));
}
void MediaRouterMojoImpl::JoinRoute(
const MediaSource::Id& source_id,
const std::string& presentation_id,
- const url::Origin& origin,
+ const GURL& origin,
content::WebContents* web_contents,
const std::vector<MediaRouteResponseCallback>& callbacks,
base::TimeDelta timeout,
bool incognito) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (!HasJoinableRoute()) {
+ std::unique_ptr<RouteRequestResult> error_result;
+ if (!origin.is_valid()) {
+ DVLOG_WITH_INSTANCE(1) << "Invalid origin: " << origin;
+ error_result = RouteRequestResult::FromError(
+ "Invalid origin", RouteRequestResult::INVALID_ORIGIN);
+ } else if (!HasJoinableRoute()) {
DVLOG_WITH_INSTANCE(1) << "No joinable routes";
- std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromError(
+ error_result = RouteRequestResult::FromError(
"Route not found", RouteRequestResult::ROUTE_NOT_FOUND);
- MediaRouterMojoMetrics::RecordJoinRouteResultCode(result->result_code());
- RunRouteRequestCallbacks(std::move(result), callbacks);
+ }
+
+ if (error_result) {
+ MediaRouterMojoMetrics::RecordJoinRouteResultCode(
+ error_result->result_code());
+ RunRouteRequestCallbacks(std::move(error_result), callbacks);
return;
}
@@ -304,24 +335,35 @@
int tab_id = SessionTabHelper::IdForTab(web_contents);
RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoJoinRoute,
base::Unretained(this), source_id, presentation_id,
- origin, tab_id, callbacks, timeout, incognito));
+ origin.is_empty() ? "" : origin.spec(), tab_id,
+ callbacks, timeout, incognito));
}
void MediaRouterMojoImpl::ConnectRouteByRouteId(
const MediaSource::Id& source_id,
const MediaRoute::Id& route_id,
- const url::Origin& origin,
+ const GURL& origin,
content::WebContents* web_contents,
const std::vector<MediaRouteResponseCallback>& callbacks,
base::TimeDelta timeout,
bool incognito) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (!origin.is_valid()) {
+ DVLOG_WITH_INSTANCE(1) << "Invalid origin: " << origin;
+ std::unique_ptr<RouteRequestResult> result = RouteRequestResult::FromError(
+ "Invalid origin", RouteRequestResult::INVALID_ORIGIN);
+ MediaRouterMojoMetrics::RecordJoinRouteResultCode(result->result_code());
+ RunRouteRequestCallbacks(std::move(result), callbacks);
+ return;
+ }
+
SetWakeReason(MediaRouteProviderWakeReason::CONNECT_ROUTE_BY_ROUTE_ID);
int tab_id = SessionTabHelper::IdForTab(web_contents);
RunOrDefer(base::Bind(&MediaRouterMojoImpl::DoConnectRouteByRouteId,
- base::Unretained(this), source_id, route_id, origin,
- tab_id, callbacks, timeout, incognito));
+ base::Unretained(this), source_id, route_id,
+ origin.is_empty() ? "" : origin.spec(), tab_id,
+ callbacks, timeout, incognito));
}
void MediaRouterMojoImpl::TerminateRoute(const MediaRoute::Id& route_id) {
@@ -417,8 +459,7 @@
// |observer| can be immediately notified with an empty list.
sinks_query->observers.AddObserver(observer);
if (availability_ == mojom::MediaRouter::SinkAvailability::UNAVAILABLE) {
- observer->OnSinksUpdated(std::vector<MediaSink>(),
- std::vector<url::Origin>());
+ observer->OnSinksUpdated(std::vector<MediaSink>(), std::vector<GURL>());
} else {
// Need to call MRPM to start observing sinks if the query is new.
if (new_query) {
@@ -561,7 +602,7 @@
void MediaRouterMojoImpl::DoCreateRoute(
const MediaSource::Id& source_id,
const MediaSink::Id& sink_id,
- const url::Origin& origin,
+ const std::string& origin,
int tab_id,
const std::vector<MediaRouteResponseCallback>& callbacks,
base::TimeDelta timeout,
@@ -569,6 +610,7 @@
std::string presentation_id = MediaRouterBase::CreatePresentationId();
DVLOG_WITH_INSTANCE(1) << "DoCreateRoute " << source_id << "=>" << sink_id
<< ", presentation ID: " << presentation_id;
+
media_route_provider_->CreateRoute(
source_id, sink_id, presentation_id, origin, tab_id, timeout, incognito,
base::Bind(&MediaRouterMojoImpl::RouteResponseReceived,
@@ -579,7 +621,7 @@
void MediaRouterMojoImpl::DoJoinRoute(
const MediaSource::Id& source_id,
const std::string& presentation_id,
- const url::Origin& origin,
+ const std::string& origin,
int tab_id,
const std::vector<MediaRouteResponseCallback>& callbacks,
base::TimeDelta timeout,
@@ -597,7 +639,7 @@
void MediaRouterMojoImpl::DoConnectRouteByRouteId(
const MediaSource::Id& source_id,
const MediaRoute::Id& route_id,
- const url::Origin& origin,
+ const std::string& origin,
int tab_id,
const std::vector<MediaRouteResponseCallback>& callbacks,
base::TimeDelta timeout,

Powered by Google App Engine
This is Rietveld 408576698