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

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: nuke comment 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
« no previous file with comments | « mojo/shell/application_instance.h ('k') | mojo/shell/application_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/shell/application_instance.cc
diff --git a/mojo/shell/application_instance.cc b/mojo/shell/application_instance.cc
index 13a25763e6b44e4e7b18c2dc555a1088716faf48..1c2479b1a1a88205307d453e55b928dcd8dc1199 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),
@@ -70,7 +76,9 @@ void ApplicationInstance::ConnectToClient(
const GURL& requestor_url,
InterfaceRequest<ServiceProvider> services,
ServiceProviderPtr exposed_services,
- const CapabilityFilter& filter) {
+ const CapabilityFilter& filter,
+ const ConnectToApplicationCallback& callback) {
+ callback.Run(requesting_content_handler_id_);
if (queue_requests_) {
QueuedClientRequest* queued_request = new QueuedClientRequest();
queued_request->originator = originator;
@@ -108,24 +116,26 @@ 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(kInvalidContentHandlerID);
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, services.Pass(),
+ exposed_services.Pass(), capability_filter, base::Closure(), callback);
} else {
LOG(WARNING) << "CapabilityFilter prevented connection from: " <<
identity_.url << " to: " << url.spec();
+ callback.Run(kInvalidContentHandlerID);
}
}
@@ -167,12 +177,10 @@ 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,
+ 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_);
}
« no previous file with comments | « mojo/shell/application_instance.h ('k') | mojo/shell/application_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698