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

Side by Side Diff: shell/application_manager/application_manager.cc

Issue 982903002: Shell: Strip query string from URL when looking to apply native options. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 9 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 unified diff | Download patch
« no previous file with comments | « shell/application_manager/application_manager.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "shell/application_manager/application_manager.h" 5 #include "shell/application_manager/application_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 fetcher->AsURLResponse(blocking_pool_, 0)); 281 fetcher->AsURLResponse(blocking_pool_, 0));
282 return; 282 return;
283 } 283 }
284 284
285 // TODO(aa): Sanity check that the thing we got looks vaguely like a mojo 285 // TODO(aa): Sanity check that the thing we got looks vaguely like a mojo
286 // application. That could either mean looking for the platform-specific dll 286 // application. That could either mean looking for the platform-specific dll
287 // header, or looking for some specific mojo signature prepended to the 287 // header, or looking for some specific mojo signature prepended to the
288 // library. 288 // library.
289 // TODO(vtl): (Maybe this should be done by the factory/runner?) 289 // TODO(vtl): (Maybe this should be done by the factory/runner?)
290 290
291 GURL base_resolved_url = GetBaseURLAndQuery(fetcher->GetURL(), nullptr);
291 NativeRunnerFactory::Options options; 292 NativeRunnerFactory::Options options;
292 if (url_to_native_options_.find(fetcher->GetURL()) != 293 if (url_to_native_options_.find(base_resolved_url) !=
293 url_to_native_options_.end()) { 294 url_to_native_options_.end()) {
294 DVLOG(2) << "Applying stored native options to resolved URL " 295 DVLOG(2) << "Applying stored native options to resolved URL "
295 << fetcher->GetURL() << " (requested URL " << requested_url << ")"; 296 << fetcher->GetURL() << " (requested URL " << requested_url << ")";
296 options = url_to_native_options_[fetcher->GetURL()]; 297 options = url_to_native_options_[base_resolved_url];
297 } 298 }
298 299
299 fetcher->AsPath( 300 fetcher->AsPath(
300 blocking_pool_, 301 blocking_pool_,
301 base::Bind(&ApplicationManager::RunNativeApplication, 302 base::Bind(&ApplicationManager::RunNativeApplication,
302 weak_ptr_factory_.GetWeakPtr(), base::Passed(request.Pass()), 303 weak_ptr_factory_.GetWeakPtr(), base::Passed(request.Pass()),
303 options, cleanup_behavior, base::Passed(fetcher.Pass()))); 304 options, cleanup_behavior, base::Passed(fetcher.Pass())));
304 } 305 }
305 306
306 void ApplicationManager::RunNativeApplication( 307 void ApplicationManager::RunNativeApplication(
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 } 387 }
387 388
388 void ApplicationManager::SetArgsForURL(const std::vector<std::string>& args, 389 void ApplicationManager::SetArgsForURL(const std::vector<std::string>& args,
389 const GURL& url) { 390 const GURL& url) {
390 url_to_args_[url] = args; 391 url_to_args_[url] = args;
391 } 392 }
392 393
393 void ApplicationManager::SetNativeOptionsForURL( 394 void ApplicationManager::SetNativeOptionsForURL(
394 const NativeRunnerFactory::Options& options, 395 const NativeRunnerFactory::Options& options,
395 const GURL& url) { 396 const GURL& url) {
397 DCHECK(!url.has_query()); // Precondition.
396 // Apply mappings and resolution to get the resolved URL. 398 // Apply mappings and resolution to get the resolved URL.
397 GURL resolved_url = delegate_->ResolveURL(delegate_->ResolveMappings(url)); 399 GURL resolved_url = delegate_->ResolveURL(delegate_->ResolveMappings(url));
400 DCHECK(!resolved_url.has_query()); // Still shouldn't have query.
398 // TODO(vtl): We should probably also remove/disregard the query string (and 401 // TODO(vtl): We should probably also remove/disregard the query string (and
399 // maybe canonicalize in other ways). 402 // maybe canonicalize in other ways).
400 DVLOG(2) << "Storing native options for resolved URL " << resolved_url 403 DVLOG(2) << "Storing native options for resolved URL " << resolved_url
401 << " (original URL " << url << ")"; 404 << " (original URL " << url << ")";
402 url_to_native_options_[resolved_url] = options; 405 url_to_native_options_[resolved_url] = options;
403 } 406 }
404 407
405 ApplicationLoader* ApplicationManager::GetLoaderForURL(const GURL& url) { 408 ApplicationLoader* ApplicationManager::GetLoaderForURL(const GURL& url) {
406 auto url_it = url_to_loader_.find(GetBaseURLAndQuery(url, nullptr)); 409 auto url_it = url_to_loader_.find(GetBaseURLAndQuery(url, nullptr));
407 if (url_it != url_to_loader_.end()) 410 if (url_it != url_to_loader_.end())
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 return Array<String>(); 454 return Array<String>();
452 } 455 }
453 456
454 void ApplicationManager::CleanupRunner(NativeRunner* runner) { 457 void ApplicationManager::CleanupRunner(NativeRunner* runner) {
455 native_runners_.erase( 458 native_runners_.erase(
456 std::find(native_runners_.begin(), native_runners_.end(), runner)); 459 std::find(native_runners_.begin(), native_runners_.end(), runner));
457 } 460 }
458 461
459 } // namespace shell 462 } // namespace shell
460 } // namespace mojo 463 } // namespace mojo
OLDNEW
« no previous file with comments | « shell/application_manager/application_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698