Index: mojo/shell/shell.cc |
diff --git a/mojo/shell/application_manager.cc b/mojo/shell/shell.cc |
similarity index 78% |
rename from mojo/shell/application_manager.cc |
rename to mojo/shell/shell.cc |
index fd1b8e5de92e1365223b8114c0484b65483f038c..4f5e7f846330955e4e5bfd78c83b938de964c3a3 100644 |
--- a/mojo/shell/application_manager.cc |
+++ b/mojo/shell/shell.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "mojo/shell/application_manager.h" |
+#include "mojo/shell/shell.h" |
#include <stdint.h> |
@@ -25,7 +25,7 @@ |
#include "mojo/shell/public/cpp/connect.h" |
#include "mojo/shell/public/cpp/names.h" |
#include "mojo/shell/public/cpp/shell_connection.h" |
-#include "mojo/shell/public/interfaces/application_manager.mojom.h" |
+#include "mojo/shell/public/interfaces/connector.mojom.h" |
#include "mojo/shell/public/interfaces/shell.mojom.h" |
#include "mojo/shell/public/interfaces/shell_client.mojom.h" |
#include "mojo/util/filename_util.h" |
@@ -43,18 +43,17 @@ void EmptyResolverCallback(const String& resolved_name, |
} |
// Encapsulates a connection to an instance of an application, tracked by the |
-// shell's ApplicationManager. |
-class ApplicationManager::Instance |
- : public mojom::Connector, |
- public mojom::PIDReceiver, |
- public ShellClient, |
- public InterfaceFactory<mojom::ApplicationManager>, |
- public mojom::ApplicationManager { |
+// shell's Shell. |
+class Shell::Instance : public mojom::Connector, |
+ public mojom::PIDReceiver, |
+ public ShellClient, |
+ public InterfaceFactory<mojom::Shell>, |
+ public mojom::Shell { |
public: |
Instance(mojom::ShellClientPtr shell_client, |
- mojo::shell::ApplicationManager* manager, |
+ mojo::shell::Shell* shell, |
const Identity& identity) |
- : manager_(manager), |
+ : shell_(shell), |
id_(GenerateUniqueID()), |
identity_(identity), |
allow_any_application_(identity.filter().size() == 1 && |
@@ -63,7 +62,7 @@ class ApplicationManager::Instance |
pid_receiver_binding_(this), |
weak_factory_(this) { |
if (identity_.name() == "mojo:shell" || |
- manager_->GetLoaderForName(identity_.name())) { |
+ shell_->GetLoaderForName(identity_.name())) { |
pid_ = base::Process::Current().Pid(); |
} |
DCHECK_NE(kInvalidApplicationID, id_); |
@@ -75,8 +74,8 @@ class ApplicationManager::Instance |
shell_client_->Initialize(connectors_.CreateInterfacePtrAndBind(this), |
identity_.name(), id_, identity_.user_id()); |
connectors_.set_connection_error_handler( |
- base::Bind(&mojo::shell::ApplicationManager::OnInstanceError, |
- base::Unretained(manager_), base::Unretained(this))); |
+ base::Bind(&mojo::shell::Shell::OnInstanceError, |
+ base::Unretained(shell_), base::Unretained(this))); |
} |
void ConnectToClient(scoped_ptr<ConnectParams> params) { |
@@ -86,7 +85,7 @@ class ApplicationManager::Instance |
if (!params->source().is_null()) |
interfaces = GetAllowedInterfaces(params->source().filter(), identity_); |
- Instance* source = manager_->GetExistingInstance(params->source()); |
+ Instance* source = shell_->GetExistingInstance(params->source()); |
uint32_t source_id = source ? source->id() : kInvalidApplicationID; |
shell_client_->AcceptConnection( |
params->source().name(), source_id, params->source().user_id(), |
@@ -104,8 +103,8 @@ class ApplicationManager::Instance |
runner_->Start(path, identity_, start_sandboxed, std::move(request), |
base::Bind(&Instance::PIDAvailable, |
weak_factory_.GetWeakPtr()), |
- base::Bind(&mojo::shell::ApplicationManager::CleanupRunner, |
- manager_->weak_ptr_factory_.GetWeakPtr(), |
+ base::Bind(&mojo::shell::Shell::CleanupRunner, |
+ shell_->weak_ptr_factory_.GetWeakPtr(), |
runner_)); |
return runner; |
} |
@@ -138,7 +137,7 @@ class ApplicationManager::Instance |
// ShellClient: |
bool AcceptConnection(Connection* connection) override { |
- connection->AddInterface<mojom::ApplicationManager>(this); |
+ connection->AddInterface<mojom::Shell>(this); |
return true; |
} |
@@ -164,7 +163,7 @@ class ApplicationManager::Instance |
params->set_remote_interfaces(std::move(remote_interfaces)); |
params->set_local_interfaces(std::move(local_interfaces)); |
params->set_connect_callback(callback); |
- manager_->Connect(std::move(params)); |
+ shell_->Connect(std::move(params)); |
} |
else { |
LOG(WARNING) << "CapabilityFilter prevented connection from: " << |
@@ -181,13 +180,13 @@ class ApplicationManager::Instance |
PIDAvailable(pid); |
} |
- // InterfaceFactory<mojom::ApplicationManager>: |
+ // InterfaceFactory<mojom::Shell>: |
void Create(Connection* connection, |
- mojom::ApplicationManagerRequest request) override { |
- application_manager_bindings_.AddBinding(this, std::move(request)); |
+ mojom::ShellRequest request) override { |
+ shell_bindings_.AddBinding(this, std::move(request)); |
} |
- // mojom::ApplicationManager implementation: |
+ // mojom::Shell implementation: |
void CreateInstanceForFactory( |
mojom::ShellClientFactoryPtr factory, |
const String& name, |
@@ -198,14 +197,14 @@ class ApplicationManager::Instance |
// allowed to pass different user_ids. |
if (user_id == mojom::Connector::kUserInherit) |
user_id = identity_.user_id(); |
- manager_->CreateInstanceForFactory(std::move(factory), name, user_id, |
- std::move(filter), |
- std::move(pid_receiver)); |
+ shell_->CreateInstanceForFactory(std::move(factory), name, user_id, |
+ std::move(filter), |
+ std::move(pid_receiver)); |
} |
void AddInstanceListener(mojom::InstanceListenerPtr listener) override { |
// TODO(beng): this should only track the instances matching this user, and |
// root. |
- manager_->AddInstanceListener(std::move(listener)); |
+ shell_->AddInstanceListener(std::move(listener)); |
} |
uint32_t GenerateUniqueID() const { |
@@ -217,10 +216,10 @@ class ApplicationManager::Instance |
void PIDAvailable(base::ProcessId pid) { |
pid_ = pid; |
- manager_->NotifyPIDAvailable(id_, pid_); |
+ shell_->NotifyPIDAvailable(id_, pid_); |
} |
- mojo::shell::ApplicationManager* const manager_; |
+ mojo::shell::Shell* const shell_; |
// An id that identifies this instance. Distinct from pid, as a single process |
// may vend multiple application instances, and this object may exist before a |
// process is launched. |
@@ -230,7 +229,7 @@ class ApplicationManager::Instance |
mojom::ShellClientPtr shell_client_; |
Binding<mojom::PIDReceiver> pid_receiver_binding_; |
BindingSet<mojom::Connector> connectors_; |
- BindingSet<mojom::ApplicationManager> application_manager_bindings_; |
+ BindingSet<mojom::Shell> shell_bindings_; |
NativeRunner* runner_ = nullptr; |
base::ProcessId pid_ = base::kNullProcessId; |
base::WeakPtrFactory<Instance> weak_factory_; |
@@ -239,26 +238,20 @@ class ApplicationManager::Instance |
}; |
// static |
-ApplicationManager::TestAPI::TestAPI(ApplicationManager* manager) |
- : manager_(manager) { |
-} |
- |
-ApplicationManager::TestAPI::~TestAPI() { |
-} |
+Shell::TestAPI::TestAPI(Shell* shell) : shell_(shell) {} |
+Shell::TestAPI::~TestAPI() {} |
-bool ApplicationManager::TestAPI::HasRunningInstanceForName( |
- const std::string& name) const { |
- return manager_->identity_to_instance_.find(Identity(name)) != |
- manager_->identity_to_instance_.end(); |
+bool Shell::TestAPI::HasRunningInstanceForName(const std::string& name) const { |
+ return shell_->identity_to_instance_.find(Identity(name)) != |
+ shell_->identity_to_instance_.end(); |
} |
//////////////////////////////////////////////////////////////////////////////// |
-// ApplicationManager, public: |
+// Shell, public: |
-ApplicationManager::ApplicationManager( |
- scoped_ptr<NativeRunnerFactory> native_runner_factory, |
- base::TaskRunner* file_task_runner, |
- scoped_ptr<package_manager::ApplicationCatalogStore> app_catalog) |
+Shell::Shell(scoped_ptr<NativeRunnerFactory> native_runner_factory, |
+ base::TaskRunner* file_task_runner, |
+ scoped_ptr<package_manager::ApplicationCatalogStore> app_catalog) |
: file_task_runner_(file_task_runner), |
native_runner_factory_(std::move(native_runner_factory)), |
weak_ptr_factory_(this) { |
@@ -269,20 +262,20 @@ ApplicationManager::ApplicationManager( |
InitPackageManager(std::move(app_catalog)); |
} |
-ApplicationManager::~ApplicationManager() { |
+Shell::~Shell() { |
TerminateShellConnections(); |
STLDeleteValues(&name_to_loader_); |
for (auto& runner : native_runners_) |
runner.reset(); |
} |
-void ApplicationManager::SetInstanceQuitCallback( |
+void Shell::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", |
+void Shell::Connect(scoped_ptr<ConnectParams> params) { |
+ TRACE_EVENT_INSTANT1("mojo_shell", "Shell::Connect", |
TRACE_EVENT_SCOPE_THREAD, "original_name", |
params->target().name()); |
DCHECK(IsValidName(params->target().name())); |
@@ -303,11 +296,11 @@ void ApplicationManager::Connect(scoped_ptr<ConnectParams> params) { |
std::string name = params->target().name(); |
shell_resolver_->ResolveMojoName( |
name, |
- base::Bind(&ApplicationManager::OnGotResolvedName, |
+ base::Bind(&Shell::OnGotResolvedName, |
weak_ptr_factory_.GetWeakPtr(), base::Passed(¶ms))); |
} |
-mojom::ShellClientRequest ApplicationManager::InitInstanceForEmbedder( |
+mojom::ShellClientRequest Shell::InitInstanceForEmbedder( |
const std::string& name) { |
DCHECK(!embedder_instance_); |
@@ -323,8 +316,8 @@ mojom::ShellClientRequest ApplicationManager::InitInstanceForEmbedder( |
return request; |
} |
-void ApplicationManager::SetLoaderForName(scoped_ptr<Loader> loader, |
- const std::string& name) { |
+void Shell::SetLoaderForName(scoped_ptr<Loader> loader, |
+ const std::string& name) { |
NameToLoaderMap::iterator it = name_to_loader_.find(name); |
if (it != name_to_loader_.end()) |
delete it->second; |
@@ -332,13 +325,13 @@ void ApplicationManager::SetLoaderForName(scoped_ptr<Loader> loader, |
} |
//////////////////////////////////////////////////////////////////////////////// |
-// ApplicationManager, ShellClient implementation: |
+// Shell, ShellClient implementation: |
-bool ApplicationManager::AcceptConnection(Connection* connection) { |
- // The only interface we expose is mojom::ApplicationManager, and access to |
- // this interface is brokered by a policy specific to each caller, managed by |
- // the caller's instance. Here we look to see who's calling, and forward to |
- // the caller's instance to continue. |
+bool Shell::AcceptConnection(Connection* connection) { |
+ // The only interface we expose is mojom::Shell, and access to this interface |
+ // is brokered by a policy specific to each caller, managed by the caller's |
+ // instance. Here we look to see who's calling, and forward to the caller's |
+ // instance to continue. |
uint32_t caller_instance_id = mojom::Connector::kInvalidApplicationID; |
CHECK(connection->GetRemoteApplicationID(&caller_instance_id)); |
Instance* instance = nullptr; |
@@ -353,9 +346,9 @@ bool ApplicationManager::AcceptConnection(Connection* connection) { |
} |
//////////////////////////////////////////////////////////////////////////////// |
-// ApplicationManager, private: |
+// Shell, private: |
-void ApplicationManager::InitPackageManager( |
+void Shell::InitPackageManager( |
scoped_ptr<package_manager::ApplicationCatalogStore> app_catalog) { |
scoped_ptr<Loader> loader( |
new package_manager::Loader(file_task_runner_, std::move(app_catalog))); |
@@ -377,11 +370,11 @@ void ApplicationManager::InitPackageManager( |
} |
} |
-void ApplicationManager::TerminateShellConnections() { |
+void Shell::TerminateShellConnections() { |
STLDeleteValues(&identity_to_instance_); |
} |
-void ApplicationManager::OnInstanceError(Instance* instance) { |
+void Shell::OnInstanceError(Instance* instance) { |
const Identity identity = instance->identity(); |
// Remove the shell. |
auto it = identity_to_instance_.find(identity); |
@@ -396,20 +389,18 @@ void ApplicationManager::OnInstanceError(Instance* instance) { |
instance_quit_callback_.Run(identity); |
} |
-ApplicationManager::Instance* ApplicationManager::GetExistingInstance( |
- const Identity& identity) const { |
+Shell::Instance* Shell::GetExistingInstance(const Identity& identity) const { |
const auto& it = identity_to_instance_.find(identity); |
return it != identity_to_instance_.end() ? it->second : nullptr; |
} |
-void ApplicationManager::NotifyPIDAvailable(uint32_t id, base::ProcessId pid) { |
+void Shell::NotifyPIDAvailable(uint32_t id, base::ProcessId pid) { |
instance_listeners_.ForAllPtrs([id, pid](mojom::InstanceListener* listener) { |
listener->InstancePIDAvailable(id, pid); |
}); |
} |
-bool ApplicationManager::ConnectToExistingInstance( |
- scoped_ptr<ConnectParams>* params) { |
+bool Shell::ConnectToExistingInstance(scoped_ptr<ConnectParams>* params) { |
Instance* instance = GetExistingInstance((*params)->target()); |
if (!instance) { |
Identity root_identity = (*params)->target(); |
@@ -421,9 +412,8 @@ bool ApplicationManager::ConnectToExistingInstance( |
return true; |
} |
-ApplicationManager::Instance* ApplicationManager::CreateInstance( |
- const Identity& target_id, |
- mojom::ShellClientRequest* request) { |
+Shell::Instance* Shell::CreateInstance(const Identity& target_id, |
+ mojom::ShellClientRequest* request) { |
mojom::ShellClientPtr shell_client; |
*request = GetProxy(&shell_client); |
Instance* instance = new Instance(std::move(shell_client), this, target_id); |
@@ -439,7 +429,7 @@ ApplicationManager::Instance* ApplicationManager::CreateInstance( |
return instance; |
} |
-void ApplicationManager::CreateInstanceForFactory( |
+void Shell::CreateInstanceForFactory( |
mojom::ShellClientFactoryPtr factory, |
const String& name, |
uint32_t user_id, |
@@ -460,8 +450,7 @@ void ApplicationManager::CreateInstanceForFactory( |
native_runner_factory_.get())); |
} |
-void ApplicationManager::AddInstanceListener( |
- mojom::InstanceListenerPtr listener) { |
+void Shell::AddInstanceListener(mojom::InstanceListenerPtr listener) { |
// TODO(beng): filter instances provided by those visible to this client. |
Array<mojom::InstanceInfoPtr> instances; |
for (auto& instance : identity_to_instance_) |
@@ -471,17 +460,16 @@ void ApplicationManager::AddInstanceListener( |
instance_listeners_.AddInterfacePtr(std::move(listener)); |
} |
-void ApplicationManager::CreateShellClient( |
- const Identity& source, |
- const Identity& shell_client_factory, |
- const std::string& name, |
- mojom::ShellClientRequest request) { |
+void Shell::CreateShellClient(const Identity& source, |
+ const Identity& shell_client_factory, |
+ const std::string& name, |
+ mojom::ShellClientRequest request) { |
mojom::ShellClientFactory* factory = |
GetShellClientFactory(shell_client_factory, source); |
factory->CreateShellClient(std::move(request), name); |
} |
-mojom::ShellClientFactory* ApplicationManager::GetShellClientFactory( |
+mojom::ShellClientFactory* Shell::GetShellClientFactory( |
const Identity& shell_client_factory_identity, |
const Identity& source_identity) { |
auto it = shell_client_factories_.find(shell_client_factory_identity); |
@@ -494,26 +482,25 @@ mojom::ShellClientFactory* ApplicationManager::GetShellClientFactory( |
&factory); |
mojom::ShellClientFactory* factory_interface = factory.get(); |
factory.set_connection_error_handler( |
- base::Bind(&ApplicationManager::OnShellClientFactoryLost, |
+ base::Bind(&Shell::OnShellClientFactoryLost, |
weak_ptr_factory_.GetWeakPtr(), |
shell_client_factory_identity)); |
shell_client_factories_[shell_client_factory_identity] = std::move(factory); |
return factory_interface; |
} |
-void ApplicationManager::OnShellClientFactoryLost(const Identity& which) { |
+void Shell::OnShellClientFactoryLost(const Identity& which) { |
// Remove the mapping. |
auto it = shell_client_factories_.find(which); |
DCHECK(it != shell_client_factories_.end()); |
shell_client_factories_.erase(it); |
} |
-void ApplicationManager::OnGotResolvedName( |
- scoped_ptr<ConnectParams> params, |
- const String& resolved_name, |
- const String& resolved_qualifier, |
- mojom::CapabilityFilterPtr base_filter, |
- const String& file_url) { |
+void Shell::OnGotResolvedName(scoped_ptr<ConnectParams> params, |
+ const String& resolved_name, |
+ const String& resolved_qualifier, |
+ mojom::CapabilityFilterPtr base_filter, |
+ const String& file_url) { |
std::string qualifier = params->target().qualifier(); |
if (qualifier == GetNamePath(params->target().name())) |
qualifier = resolved_qualifier; |
@@ -560,8 +547,8 @@ void ApplicationManager::OnGotResolvedName( |
} |
} |
-bool ApplicationManager::LoadWithLoader(const Identity& target, |
- mojom::ShellClientRequest* request) { |
+bool Shell::LoadWithLoader(const Identity& target, |
+ mojom::ShellClientRequest* request) { |
Loader* loader = GetLoaderForName(target.name()); |
if (!loader) |
return false; |
@@ -569,14 +556,14 @@ bool ApplicationManager::LoadWithLoader(const Identity& target, |
return true; |
} |
-Loader* ApplicationManager::GetLoaderForName(const std::string& name) { |
+Loader* Shell::GetLoaderForName(const std::string& name) { |
auto name_it = name_to_loader_.find(name); |
if (name_it != name_to_loader_.end()) |
return name_it->second; |
return default_loader_.get(); |
} |
-void ApplicationManager::CleanupRunner(NativeRunner* runner) { |
+void Shell::CleanupRunner(NativeRunner* runner) { |
for (auto it = native_runners_.begin(); it != native_runners_.end(); ++it) { |
if (it->get() == runner) { |
native_runners_.erase(it); |