1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "mojo/shell/view_manager_loader.h"
6
7#include "mojo/public/cpp/application/application_connection.h"
8#include "mojo/public/cpp/application/application_impl.h"
9#include "mojo/services/view_manager/view_manager_init_service_impl.h"
10
11namespace mojo {
12
13using service::ViewManagerInitServiceImpl;
14
15namespace shell {
16
17ViewManagerLoader::ViewManagerLoader() {
18}
19
20ViewManagerLoader::~ViewManagerLoader() {
21}
22
23void ViewManagerLoader::Load(ApplicationManager* manager,
24                             const GURL& url,
25                             scoped_refptr<LoadCallbacks> callbacks) {
26  ScopedMessagePipeHandle shell_handle = callbacks->RegisterApplication();
27  if (!shell_handle.is_valid())
28    return;
29
30  // TODO(sky): this needs some sort of authentication as well as making sure
31  // we only ever have one active at a time.
32  scoped_ptr<ApplicationImpl> app(
33      new ApplicationImpl(this, shell_handle.Pass()));
34  apps_.push_back(app.release());
35}
36
37void ViewManagerLoader::OnApplicationError(ApplicationManager* manager,
38                                           const GURL& url) {
39}
40
41bool ViewManagerLoader::ConfigureIncomingConnection(
42    ApplicationConnection* connection)  {
43  context_.ConfigureIncomingConnection(connection);
44  connection->AddService(this);
45  return true;
46}
47
48void ViewManagerLoader::Create(
49    ApplicationConnection* connection,
50    InterfaceRequest<ViewManagerInitService> request) {
51  BindToRequest(new ViewManagerInitServiceImpl(connection, &context_),
52                &request);
53}
54
55}  // namespace shell
56}  // namespace mojo
57