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

Unified Diff: mojo/shell/application_instance.cc

Issue 1578473002: Pass application ids via AcceptConnection & ConnectToApplication callback. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 11 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 8f4ce1b8ea2c1cff8853449301ba55d890c22f69..40b97ee13a99b1b30011646f8b8d6eb829a9f789 100644
--- a/mojo/shell/application_instance.cc
+++ b/mojo/shell/application_instance.cc
@@ -18,13 +18,6 @@
namespace mojo {
namespace shell {
-namespace {
-
-base::StaticAtomicSequenceNumber g_instance_id;
-
-const int kInvalidInstanceId = -1;
-
-} // namespace
ApplicationInstance::ApplicationInstance(
ApplicationPtr application,
@@ -44,17 +37,21 @@ ApplicationInstance::ApplicationInstance(
pid_receiver_binding_(this),
queue_requests_(false),
native_runner_(nullptr),
- pid_(base::kNullProcessId) {}
+ pid_(base::kNullProcessId) {
+ DCHECK_NE(Shell::kInvalidApplicationID, id_);
+}
ApplicationInstance::~ApplicationInstance() {
- for (auto request : queued_client_requests_)
- request->connect_callback().Run(kInvalidContentHandlerID);
+ for (auto request : queued_client_requests_) {
+ request->connect_callback().Run(kInvalidApplicationID,
+ kInvalidApplicationID);
+ }
STLDeleteElements(&queued_client_requests_);
}
void ApplicationInstance::InitializeApplication() {
application_->Initialize(binding_.CreateInterfacePtrAndBind(),
- identity_.url().spec());
+ identity_.url().spec(), id_);
binding_.set_connection_error_handler([this]() { OnConnectionError(); });
}
@@ -88,7 +85,7 @@ void ApplicationInstance::ConnectToApplication(
GURL url(url_string);
if (!url.is_valid()) {
LOG(ERROR) << "Error: invalid URL: " << url_string;
- callback.Run(kInvalidContentHandlerID);
+ callback.Run(kInvalidApplicationID, kInvalidApplicationID);
return;
}
if (allow_any_application_ ||
@@ -111,7 +108,7 @@ void ApplicationInstance::ConnectToApplication(
} else {
LOG(WARNING) << "CapabilityFilter prevented connection from: " <<
identity_.url() << " to: " << url.spec();
- callback.Run(kInvalidContentHandlerID);
+ callback.Run(kInvalidApplicationID, kInvalidApplicationID);
}
}
@@ -127,24 +124,26 @@ void ApplicationInstance::SetPID(uint32_t pid) {
manager_->ApplicationPIDAvailable(id_, pid);
}
-// static
-int ApplicationInstance::GenerateUniqueID() {
- int id = g_instance_id.GetNext() + 1;
- CHECK_NE(0, id);
- CHECK_NE(kInvalidInstanceId, id);
+uint32_t ApplicationInstance::GenerateUniqueID() const {
+ static uint32_t id = Shell::kInvalidApplicationID;
+ ++id;
+ CHECK_NE(Shell::kInvalidApplicationID, id);
return id;
}
void ApplicationInstance::CallAcceptConnection(
scoped_ptr<ConnectToApplicationParams> params) {
- params->connect_callback().Run(requesting_content_handler_id_);
+ params->connect_callback().Run(id_, requesting_content_handler_id_);
AllowedInterfaces interfaces;
interfaces.insert("*");
if (!params->source().is_null())
interfaces = GetAllowedInterfaces(params->source().filter(), identity_);
+ ApplicationInstance* source =
+ manager_->GetApplicationInstance(params->source());
+ uint32_t source_id = source ? source->id() : Shell::kInvalidApplicationID;
application_->AcceptConnection(
- params->source().url().spec(), params->TakeServices(),
+ params->source().url().spec(), source_id, params->TakeServices(),
params->TakeExposedServices(), Array<String>::From(interfaces),
params->target().url().spec());
}
« 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