| 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());
|
| }
|
|
|