// Copyright 2014 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.

#ifndef MOJO_SHELL_VIEW_MANAGER_LOADER_H_
#define MOJO_SHELL_VIEW_MANAGER_LOADER_H_

#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/scoped_vector.h"
#include "mojo/application_manager/application_loader.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/interface_factory.h"
#include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h"
#include "mojo/services/view_manager/view_manager_init_service_context.h"

namespace mojo {

class Application;

namespace shell {

// ApplicationLoader responsible for creating connections to the ViewManager.
class ViewManagerLoader : public ApplicationLoader,
                          public ApplicationDelegate,
                          public InterfaceFactory<ViewManagerInitService> {
 public:
  ViewManagerLoader();
  virtual ~ViewManagerLoader();

 private:
  // ApplicationLoader overrides:
  virtual void Load(ApplicationManager* manager,
                    const GURL& url,
                    LoadCallback callback) override;
  virtual void OnApplicationError(ApplicationManager* manager,
                                  const GURL& url) override;

  // ApplicationDelegate overrides.
  virtual bool ConfigureIncomingConnection(
      mojo::ApplicationConnection* connection) override;

  // InterfaceFactory<ViewManagerInitService> overrides.
  virtual void Create(
      ApplicationConnection* connection,
      InterfaceRequest<ViewManagerInitService> request) override;

  ScopedVector<Application> apps_;
  service::ViewManagerInitServiceContext context_;

  DISALLOW_COPY_AND_ASSIGN(ViewManagerLoader);
};

}  // namespace shell
}  // namespace mojo

#endif  // MOJO_SHELL_VIEW_MANAGER_LOADER_H_
