| Index: mojo/shell/application_manager/shell_impl.cc
|
| diff --git a/mojo/shell/application_manager/shell_impl.cc b/mojo/shell/application_manager/shell_impl.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ed8c5ea021a96453a33e600cfa1626491247e9cd
|
| --- /dev/null
|
| +++ b/mojo/shell/application_manager/shell_impl.cc
|
| @@ -0,0 +1,62 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// 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/shell_impl.h"
|
| +
|
| +#include "mojo/common/common_type_converters.h"
|
| +#include "mojo/common/url_type_converters.h"
|
| +#include "mojo/shell/application_manager/application_manager.h"
|
| +#include "third_party/mojo_services/src/content_handler/public/interfaces/content_handler.mojom.h"
|
| +
|
| +namespace mojo {
|
| +namespace shell {
|
| +
|
| +ShellImpl::ShellImpl(ApplicationPtr application,
|
| + ApplicationManager* manager,
|
| + const Identity& identity,
|
| + const base::Closure& on_application_end)
|
| + : manager_(manager),
|
| + identity_(identity),
|
| + on_application_end_(on_application_end),
|
| + application_(application.Pass()),
|
| + binding_(this) {
|
| + binding_.set_error_handler(this);
|
| +}
|
| +
|
| +ShellImpl::~ShellImpl() {
|
| +}
|
| +
|
| +void ShellImpl::InitializeApplication(Array<String> args) {
|
| + ShellPtr shell;
|
| + binding_.Bind(GetProxy(&shell));
|
| + application_->Initialize(shell.Pass(), args.Pass(), identity_.url.spec());
|
| +}
|
| +
|
| +void ShellImpl::ConnectToClient(const GURL& requested_url,
|
| + const GURL& requestor_url,
|
| + InterfaceRequest<ServiceProvider> services,
|
| + ServiceProviderPtr exposed_services) {
|
| + application_->AcceptConnection(String::From(requestor_url), services.Pass(),
|
| + exposed_services.Pass(), requested_url.spec());
|
| +}
|
| +
|
| +// Shell implementation:
|
| +void ShellImpl::ConnectToApplication(const String& app_url,
|
| + InterfaceRequest<ServiceProvider> services,
|
| + ServiceProviderPtr exposed_services) {
|
| + GURL app_gurl(app_url);
|
| + if (!app_gurl.is_valid()) {
|
| + LOG(ERROR) << "Error: invalid URL: " << app_url;
|
| + return;
|
| + }
|
| + manager_->ConnectToApplication(app_gurl, identity_.url, services.Pass(),
|
| + exposed_services.Pass(), base::Closure());
|
| +}
|
| +
|
| +void ShellImpl::OnConnectionError() {
|
| + manager_->OnShellImplError(this);
|
| +}
|
| +
|
| +} // namespace shell
|
| +} // namespace mojo
|
|
|