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

Unified Diff: examples/ui/tile/tile_app.cc

Issue 1869263002: Mozart: Enhance tile app to test various sync behaviors. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-1
Patch Set: Created 4 years, 8 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 | « examples/ui/tile/tile_app.h ('k') | examples/ui/tile/tile_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: examples/ui/tile/tile_app.cc
diff --git a/examples/ui/tile/tile_app.cc b/examples/ui/tile/tile_app.cc
index 23f1b30f5409e7af97f40aece1b66a000a142c88..31a721e03cf73ab70b24cf20ec0985bafaf6ca2a 100644
--- a/examples/ui/tile/tile_app.cc
+++ b/examples/ui/tile/tile_app.cc
@@ -2,12 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <vector>
-
#include "base/strings/string_split.h"
#include "examples/ui/tile/tile_app.h"
#include "examples/ui/tile/tile_view.h"
-#include "url/gurl.h"
+#include "url/url_parse.h"
namespace examples {
@@ -20,17 +18,61 @@ void TileApp::CreateView(
mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner_request,
mojo::InterfaceRequest<mojo::ServiceProvider> services,
mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
- GURL url(connection_url);
- std::vector<std::string> view_urls;
- base::SplitString(url.query(), ',', &view_urls);
-
- if (view_urls.empty()) {
- LOG(ERROR) << "Must supply comma-delimited URLs of mojo views to tile as a "
- "query parameter.";
+ TileParams params;
+ if (!ParseParams(connection_url, &params)) {
+ LOG(ERROR) << "Missing or invalid URL parameters. See README.";
return;
}
- new TileView(app_impl(), view_owner_request.Pass(), view_urls);
+ new TileView(app_impl(), view_owner_request.Pass(), params);
+}
+
+bool TileApp::ParseParams(const std::string& connection_url,
+ TileParams* params) {
+ url::Parsed parsed;
+ url::ParseStandardURL(connection_url.c_str(), connection_url.size(), &parsed);
+ url::Component query = parsed.query;
+
+ for (;;) {
+ url::Component key, value;
+ if (!url::ExtractQueryKeyValue(connection_url.c_str(), &query, &key,
+ &value))
+ break;
+ std::string key_str(connection_url, key.begin, key.len);
+ std::string value_str(connection_url, value.begin, value.len);
+ if (key_str == "views") {
+ base::SplitString(value_str, ',', &params->view_urls);
+ } else if (key_str == "vm") {
+ if (value_str == "any")
+ params->version_mode = TileParams::VersionMode::kAny;
+ else if (value_str == "exact")
+ params->version_mode = TileParams::VersionMode::kExact;
+ else
+ return false;
+ } else if (key_str == "cm") {
+ if (value_str == "merge")
+ params->combinator_mode = TileParams::CombinatorMode::kMerge;
+ else if (value_str == "prune")
+ params->combinator_mode = TileParams::CombinatorMode::kPrune;
+ else if (value_str == "flash")
+ params->combinator_mode = TileParams::CombinatorMode::kFallbackFlash;
+ else if (value_str == "dim")
+ params->combinator_mode = TileParams::CombinatorMode::kFallbackDim;
+ else
+ return false;
+ } else if (key_str == "o") {
+ if (value_str == "h")
+ params->orientation_mode = TileParams::OrientationMode::kHorizontal;
+ else if (value_str == "v")
+ params->orientation_mode = TileParams::OrientationMode::kVertical;
+ else
+ return false;
+ } else {
+ return false;
+ }
+ }
+
+ return !params->view_urls.empty();
}
} // namespace examples
« no previous file with comments | « examples/ui/tile/tile_app.h ('k') | examples/ui/tile/tile_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698