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

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

Issue 1202963004: Gets presentation ID from route ID upon route creation, and overrides previous presentation ID with… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
Index: chrome/browser/media/router/media_route.cc
diff --git a/chrome/browser/media/router/media_route.cc b/chrome/browser/media/router/media_route.cc
index 0aa126f3a2177637b22291c92b07b0cc5fae3461..1279dd163c0883b2f67d5045ce8aa2aaaeb7d676 100644
--- a/chrome/browser/media/router/media_route.cc
+++ b/chrome/browser/media/router/media_route.cc
@@ -7,6 +7,10 @@
#include "base/logging.h"
#include "chrome/browser/media/router/media_source.h"
+namespace {
+const char kRouteUrnPrefix[] = "urn:x-org.chromium:media:route:";
+}
+
namespace media_router {
MediaRoute::MediaRoute(const MediaRoute::Id& media_route_id,
@@ -29,4 +33,33 @@ bool MediaRoute::Equals(const MediaRoute& other) const {
return media_route_id_ == other.media_route_id_;
}
+std::pair<std::string, std::string> GetPresentationIdAndUrl(
+ const MediaRoute::Id& id) {
+ if (id.find(kRouteUrnPrefix) != 0) {
+ LOG(ERROR) << "Invalid media route ID. Expecting prefix "
+ << kRouteUrnPrefix;
+ return std::make_pair(std::string(), std::string());
+ }
+ size_t prefix_len = strlen(kRouteUrnPrefix);
+ size_t first_delim = id.find("/");
+ if (first_delim == std::string::npos || first_delim == prefix_len) {
+ LOG(ERROR) << "Invalid media route ID. Expecting presentation ID.";
+ return std::make_pair(std::string(), std::string());
+ }
+
+ std::string presentation_id = id.substr(prefix_len, first_delim - prefix_len);
+ size_t second_delim = id.find("/", first_delim + 1);
+ if (second_delim == std::string::npos || second_delim == first_delim + 1) {
+ LOG(ERROR) << "Invalid media route ID. Expecting sink.";
+ return std::make_pair(std::string(), std::string());
+ }
+
+ if (second_delim == id.size() - 1) {
+ LOG(ERROR) << "Invalid media route ID. Expecting source.";
+ return std::make_pair(std::string(), std::string());
+ }
+ std::string source = id.substr(second_delim + 1);
+ return std::make_pair(presentation_id, source);
+}
+
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698