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

Unified Diff: mojo/shell/standalone/context.cc

Issue 1714753002: 7/ Eliminate on_application_end from ConnectParams (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@client_request
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
Index: mojo/shell/standalone/context.cc
diff --git a/mojo/shell/standalone/context.cc b/mojo/shell/standalone/context.cc
index 589e7db4850d30dc8f1e8ee4784b5f06d55ad3c8..77a0ab449b868f50baf427f5ae8493a8f2192694 100644
--- a/mojo/shell/standalone/context.cc
+++ b/mojo/shell/standalone/context.cc
@@ -89,6 +89,11 @@ scoped_ptr<base::Thread> CreateIOThread(const char* name) {
return thread;
}
+void OnInstanceQuit(const GURL& url, const Identity& identity) {
+ if (url == identity.url())
+ base::MessageLoop::current()->QuitWhenIdle();
sky 2016/02/19 05:20:51 Ick, quitting arbitrary messageloop is error prone
+}
+
} // namespace
Context::Context()
@@ -142,7 +147,7 @@ void Context::Init(const base::FilePath& shell_file_root) {
new OutOfProcessNativeRunnerFactory(blocking_pool_.get()));
}
application_manager_.reset(new ApplicationManager(
- std::move(runner_factory), blocking_pool_.get(), true));
+ std::move(runner_factory), blocking_pool_.get(), true));
shell::mojom::InterfaceProviderPtr tracing_remote_interfaces;
shell::mojom::InterfaceProviderPtr tracing_local_interfaces;
@@ -201,50 +206,31 @@ void Context::OnShutdownComplete() {
base::MessageLoop::current()->QuitWhenIdle();
}
-void Context::Run(const GURL& url) {
- DCHECK(app_complete_callback_.is_null());
- shell::mojom::InterfaceProviderPtr remote_interfaces;
- shell::mojom::InterfaceProviderPtr local_interfaces;
-
- app_urls_.insert(url);
-
- scoped_ptr<ConnectParams> params(new ConnectParams);
- params->set_target(
- Identity(url, std::string(), GetPermissiveCapabilityFilter()));
- params->set_remote_interfaces(GetProxy(&remote_interfaces));
- params->set_local_interfaces(std::move(local_interfaces));
- params->set_on_application_end(
- base::Bind(&Context::OnApplicationEnd, base::Unretained(this), url));
- application_manager_->Connect(std::move(params));
-}
-
-void Context::RunCommandLineApplication(const base::Closure& callback) {
- DCHECK(app_urls_.empty());
- DCHECK(app_complete_callback_.is_null());
+void Context::RunCommandLineApplication() {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
base::CommandLine::StringVector args = command_line->GetArgs();
for (size_t i = 0; i < args.size(); ++i) {
GURL possible_app(args[i]);
if (possible_app.SchemeIs("mojo")) {
Run(possible_app);
- app_complete_callback_ = callback;
break;
}
}
}
-void Context::OnApplicationEnd(const GURL& url) {
- if (app_urls_.find(url) != app_urls_.end()) {
- app_urls_.erase(url);
- if (app_urls_.empty() && base::MessageLoop::current()->is_running()) {
- DCHECK_EQ(base::MessageLoop::current()->task_runner(), shell_runner_);
- if (app_complete_callback_.is_null()) {
- base::MessageLoop::current()->QuitWhenIdle();
- } else {
- app_complete_callback_.Run();
- }
- }
- }
+void Context::Run(const GURL& url) {
+ application_manager_->SetInstanceQuitCallback(
sky 2016/02/19 05:20:51 If Run() is called multiple-times doesn't the new
+ base::Bind(&OnInstanceQuit, url));
+
+ shell::mojom::InterfaceProviderPtr remote_interfaces;
+ shell::mojom::InterfaceProviderPtr local_interfaces;
+
+ scoped_ptr<ConnectParams> params(new ConnectParams);
+ params->set_target(
+ Identity(url, std::string(), GetPermissiveCapabilityFilter()));
+ params->set_remote_interfaces(GetProxy(&remote_interfaces));
+ params->set_local_interfaces(std::move(local_interfaces));
+ application_manager_->Connect(std::move(params));
}
} // namespace shell

Powered by Google App Engine
This is Rietveld 408576698