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

Unified Diff: mojo/shell/application_manager.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
« no previous file with comments | « mojo/shell/application_manager.h ('k') | mojo/shell/connect_params.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/shell/application_manager.cc
diff --git a/mojo/shell/application_manager.cc b/mojo/shell/application_manager.cc
index 58e047e5c88fb97deb653e21497becc5fc996b50..b2c4a49ef1bcb00488dabfabdf3539d51cc27db9 100644
--- a/mojo/shell/application_manager.cc
+++ b/mojo/shell/application_manager.cc
@@ -92,6 +92,11 @@ ApplicationManager::~ApplicationManager() {
runner.reset();
}
+void ApplicationManager::SetInstanceQuitCallback(
+ base::Callback<void(const Identity&)> callback) {
+ instance_quit_callback_ = callback;
+}
+
void ApplicationManager::Connect(scoped_ptr<ConnectParams> params) {
TRACE_EVENT_INSTANT1("mojo_shell", "ApplicationManager::Connect",
TRACE_EVENT_SCOPE_THREAD, "original_url",
@@ -123,9 +128,7 @@ void ApplicationManager::TerminateShellConnections() {
void ApplicationManager::OnApplicationInstanceError(
ApplicationInstance* instance) {
- // Called from ~ApplicationInstance, so we do not need to call Destroy here.
const Identity identity = instance->identity();
- base::Closure on_application_end = instance->on_application_end();
// Remove the shell.
auto it = identity_to_instance_.find(identity);
DCHECK(it != identity_to_instance_.end());
@@ -136,8 +139,8 @@ void ApplicationManager::OnApplicationInstanceError(
[this, id](mojom::ApplicationManagerListener* listener) {
listener->ApplicationInstanceDestroyed(id);
});
- if (!on_application_end.is_null())
- on_application_end.Run();
+ if (!instance_quit_callback_.is_null())
+ instance_quit_callback_.Run(identity);
}
ApplicationInstance* ApplicationManager::GetApplicationInstance(
@@ -194,8 +197,7 @@ void ApplicationManager::CreateInstanceForHandle(
Identity target_id(url.To<GURL>(), std::string(), local_filter);
mojom::ShellClientRequest request;
// TODO(beng): do better than url.spec() for application name.
- ApplicationInstance* instance =
- CreateInstance(target_id, base::Closure(), url, &request);
+ ApplicationInstance* instance = CreateInstance(target_id, url, &request);
instance->BindPIDReceiver(std::move(pid_receiver));
scoped_ptr<NativeRunner> runner =
native_runner_factory_->Create(base::FilePath());
@@ -223,7 +225,7 @@ void ApplicationManager::InitPackageManager(bool register_mojo_url_schemes) {
mojom::ShellClientRequest request;
GURL url("mojo://package_manager/");
- CreateInstance(Identity(url), base::Closure(), url.spec(), &request);
+ CreateInstance(Identity(url), url.spec(), &request);
loader->Load(url, std::move(request));
SetLoaderForURL(std::move(loader), url);
@@ -242,14 +244,12 @@ bool ApplicationManager::ConnectToExistingInstance(
ApplicationInstance* ApplicationManager::CreateInstance(
const Identity& target_id,
- const base::Closure& on_application_end,
const String& application_name,
mojom::ShellClientRequest* request) {
mojom::ShellClientPtr shell_client;
*request = GetProxy(&shell_client);
ApplicationInstance* instance = new ApplicationInstance(
- std::move(shell_client), this, target_id, on_application_end,
- application_name);
+ std::move(shell_client), this, target_id, application_name);
DCHECK(identity_to_instance_.find(target_id) ==
identity_to_instance_.end());
identity_to_instance_[target_id] = instance;
@@ -315,9 +315,8 @@ void ApplicationManager::OnGotResolvedURL(
Identity source = params->source(), target = params->target();
mojom::ShellClientRequest request;
- ApplicationInstance* instance = CreateInstance(
- params->target(), params->on_application_end(), application_name,
- &request);
+ ApplicationInstance* instance =
+ CreateInstance(params->target(), application_name, &request);
instance->ConnectToClient(std::move(params));
if (LoadWithLoader(target, &request))
« no previous file with comments | « mojo/shell/application_manager.h ('k') | mojo/shell/connect_params.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698