Index: mojo/shell/application_instance.cc |
diff --git a/mojo/shell/application_instance.cc b/mojo/shell/application_instance.cc |
index e1a89d0290cc722d92d45a919df4136d3443eac6..e1930b16c3efefb4c45c43130da72e73378f4029 100644 |
--- a/mojo/shell/application_instance.cc |
+++ b/mojo/shell/application_instance.cc |
@@ -29,33 +29,36 @@ ApplicationInstance::ApplicationInstance( |
allow_any_application_(identity.filter().size() == 1 && |
identity.filter().count("*") == 1), |
shell_client_(std::move(shell_client)), |
- binding_(this), |
pid_receiver_binding_(this), |
- queue_requests_(false), |
native_runner_(nullptr), |
pid_(base::kNullProcessId) { |
DCHECK_NE(kInvalidApplicationID, id_); |
} |
-ApplicationInstance::~ApplicationInstance() { |
- for (auto request : queued_client_requests_) |
- request->connect_callback().Run(kInvalidApplicationID); |
- STLDeleteElements(&queued_client_requests_); |
-} |
+ApplicationInstance::~ApplicationInstance() {} |
void ApplicationInstance::InitializeApplication() { |
- shell_client_->Initialize(binding_.CreateInterfacePtrAndBind(), |
+ shell_client_->Initialize(connectors_.CreateInterfacePtrAndBind(this), |
identity_.url().spec(), id_, identity_.user_id()); |
- binding_.set_connection_error_handler([this]() { OnConnectionError(); }); |
+ connectors_.set_connection_error_handler( |
+ base::Bind(&ApplicationManager::OnApplicationInstanceError, |
+ base::Unretained(manager_), base::Unretained(this))); |
} |
void ApplicationInstance::ConnectToClient(scoped_ptr<ConnectParams> params) { |
- if (queue_requests_) { |
- queued_client_requests_.push_back(params.release()); |
- return; |
- } |
+ params->connect_callback().Run(id_); |
+ AllowedInterfaces interfaces; |
+ interfaces.insert("*"); |
+ if (!params->source().is_null()) |
+ interfaces = GetAllowedInterfaces(params->source().filter(), identity_); |
- CallAcceptConnection(std::move(params)); |
+ ApplicationInstance* source = |
+ manager_->GetApplicationInstance(params->source()); |
+ uint32_t source_id = source ? source->id() : kInvalidApplicationID; |
+ shell_client_->AcceptConnection( |
+ params->source().url().spec(), params->source().user_id(), source_id, |
+ params->TakeRemoteInterfaces(), params->TakeLocalInterfaces(), |
+ Array<String>::From(interfaces), params->target().url().spec()); |
} |
void ApplicationInstance::SetNativeRunner(NativeRunner* native_runner) { |
@@ -67,18 +70,6 @@ void ApplicationInstance::BindPIDReceiver( |
pid_receiver_binding_.Bind(std::move(pid_receiver)); |
} |
-// Shell implementation: |
-void ApplicationInstance::GetConnector(mojom::ConnectorRequest request) { |
- connectors_.AddBinding(this, std::move(request)); |
-} |
- |
-void ApplicationInstance::QuitApplication() { |
- queue_requests_ = true; |
- shell_client_->OnQuitRequested( |
- base::Bind(&ApplicationInstance::OnQuitRequestedResult, |
- base::Unretained(this))); |
-} |
- |
// Connector implementation: |
void ApplicationInstance::Connect( |
const String& app_url, |
@@ -124,46 +115,5 @@ uint32_t ApplicationInstance::GenerateUniqueID() const { |
return id; |
} |
-void ApplicationInstance::CallAcceptConnection( |
- scoped_ptr<ConnectParams> params) { |
- params->connect_callback().Run(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() : kInvalidApplicationID; |
- shell_client_->AcceptConnection( |
- params->source().url().spec(), params->source().user_id(), source_id, |
- params->TakeRemoteInterfaces(), params->TakeLocalInterfaces(), |
- Array<String>::From(interfaces), params->target().url().spec()); |
-} |
- |
-void ApplicationInstance::OnConnectionError() { |
- std::vector<ConnectParams*> queued_client_requests; |
- queued_client_requests_.swap(queued_client_requests); |
- auto manager = manager_; |
- manager_->OnApplicationInstanceError(this); |
- //|this| is deleted. |
- |
- // If any queued requests came to shell during time it was shutting down, |
- // start them now. |
- for (auto request : queued_client_requests) |
- manager->Connect(make_scoped_ptr(request)); |
-} |
- |
-void ApplicationInstance::OnQuitRequestedResult(bool can_quit) { |
- if (can_quit) |
- return; |
- |
- queue_requests_ = false; |
- for (auto request : queued_client_requests_) |
- CallAcceptConnection(make_scoped_ptr(request)); |
- |
- queued_client_requests_.clear(); |
-} |
- |
} // namespace shell |
} // namespace mojo |