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

Unified Diff: mojo/shell/application_instance.cc

Issue 1311353005: Adds a way to determine id of content handler that created app (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tweaks Created 5 years, 4 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: mojo/shell/application_instance.cc
diff --git a/mojo/shell/application_instance.cc b/mojo/shell/application_instance.cc
index 13a25763e6b44e4e7b18c2dc555a1088716faf48..0a378fb43182e382e67a8313ac03d2dee5172d49 100644
--- a/mojo/shell/application_instance.cc
+++ b/mojo/shell/application_instance.cc
@@ -10,9 +10,11 @@
#include "mojo/common/common_type_converters.h"
#include "mojo/common/url_type_converters.h"
#include "mojo/shell/application_manager.h"
+#include "mojo/shell/content_handler_connection.h"
namespace mojo {
namespace shell {
+namespace {
// It's valid to specify mojo: URLs in the filter either as mojo:foo or
// mojo://foo/ - but we store the filter in the latter form.
@@ -29,6 +31,8 @@ CapabilityFilter CanonicalizeFilter(const CapabilityFilter& filter) {
return canonicalized;
}
+} // namespace
+
ApplicationInstance::QueuedClientRequest::QueuedClientRequest()
: originator(nullptr) {}
@@ -41,12 +45,14 @@ ApplicationInstance::ApplicationInstance(
const Identity& originator_identity,
const Identity& identity,
const CapabilityFilter& filter,
+ uint32_t requesting_content_handler_id,
const base::Closure& on_application_end)
: manager_(manager),
originator_identity_(originator_identity),
identity_(identity),
filter_(CanonicalizeFilter(filter)),
allow_any_application_(filter.size() == 1 && filter.count("*") == 1),
+ requesting_content_handler_id_(requesting_content_handler_id),
on_application_end_(on_application_end),
application_(application.Pass()),
binding_(this),
@@ -108,24 +114,27 @@ void ApplicationInstance::ConnectToApplication(
URLRequestPtr app_request,
InterfaceRequest<ServiceProvider> services,
ServiceProviderPtr exposed_services,
- CapabilityFilterPtr filter) {
+ CapabilityFilterPtr filter,
+ const ConnectToApplicationCallback& callback) {
std::string url_string = app_request->url.To<std::string>();
GURL url(url_string);
if (!url.is_valid()) {
LOG(ERROR) << "Error: invalid URL: " << url_string;
+ callback.Run(ApplicationManager::kInvalidContentHandlerID);
Ben Goodger (Google) 2015/08/31 17:41:07 if it's an expected part of the api that your call
sky 2015/08/31 19:46:06 I didn't realize you could have constants in the m
return;
}
if (allow_any_application_ || filter_.find(url.spec()) != filter_.end()) {
CapabilityFilter capability_filter = GetPermissiveCapabilityFilter();
if (!filter.is_null())
capability_filter = filter->filter.To<CapabilityFilter>();
- manager_->ConnectToApplication(this, app_request.Pass(), std::string(),
- identity_.url, services.Pass(),
- exposed_services.Pass(), capability_filter,
- base::Closure());
+ manager_->ConnectToApplication(
+ this, app_request.Pass(), std::string(), identity_.url,
+ ApplicationManager::kInvalidContentHandlerID, services.Pass(),
+ exposed_services.Pass(), capability_filter, base::Closure(), callback);
} else {
LOG(WARNING) << "CapabilityFilter prevented connection from: " <<
identity_.url << " to: " << url.spec();
+ callback.Run(ApplicationManager::kInvalidContentHandlerID);
}
}
@@ -167,12 +176,11 @@ void ApplicationInstance::OnConnectionError() {
url->url = mojo::String::From(request->requested_url.spec());
ApplicationInstance* originator =
manager->GetApplicationInstance(originator_identity_);
- manager->ConnectToApplication(originator, url.Pass(), std::string(),
- request->requestor_url,
- request->services.Pass(),
- request->exposed_services.Pass(),
- request->filter,
- base::Closure());
+ manager->ConnectToApplication(
+ originator, url.Pass(), std::string(), request->requestor_url,
+ ApplicationManager::kInvalidContentHandlerID, request->services.Pass(),
+ request->exposed_services.Pass(), request->filter, base::Closure(),
+ EmptyConnectCallback());
}
STLDeleteElements(&queued_client_requests);
}
@@ -183,11 +191,9 @@ void ApplicationInstance::OnQuitRequestedResult(bool can_quit) {
queue_requests_ = false;
for (auto request : queued_client_requests_) {
- CallAcceptConnection(request->originator,
- request->requestor_url,
- request->services.Pass(),
- request->exposed_services.Pass(),
- request->requested_url);
+ CallAcceptConnection(
+ request->originator, request->requestor_url, request->services.Pass(),
+ request->exposed_services.Pass(), request->requested_url);
}
STLDeleteElements(&queued_client_requests_);
}

Powered by Google App Engine
This is Rietveld 408576698