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

Unified Diff: mojo/shell/application_instance.cc

Issue 1736663003: Eliminate Quit() from Shell, and roll Shell & Connector together. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@14cf
Patch Set: . Created 4 years, 10 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/public/cpp/connector.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 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
« no previous file with comments | « mojo/shell/application_instance.h ('k') | mojo/shell/public/cpp/connector.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698