13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org// Copyright 2014 The Chromium Authors. All rights reserved.
23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org// Use of this source code is governed by a BSD-style license that can be
33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org// found in the LICENSE file.
43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef MOJO_SHELL_VIEW_MANAGER_LOADER_H_
63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define MOJO_SHELL_VIEW_MANAGER_LOADER_H_
73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "base/memory/scoped_ptr.h"
93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "base/memory/scoped_vector.h"
103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "mojo/application_manager/application_loader.h"
113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "mojo/public/cpp/application/application_delegate.h"
123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "mojo/public/cpp/application/interface_factory.h"
133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h"
143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "mojo/services/view_manager/view_manager_init_service_context.h"
153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnamespace mojo {
173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgclass Application;
193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgnamespace shell {
213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org// ApplicationLoader responsible for creating connections to the ViewManager.
233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgclass ViewManagerLoader : public ApplicationLoader,
243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                          public ApplicationDelegate,
253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                          public InterfaceFactory<ViewManagerInitService> {
263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org public:
273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  ViewManagerLoader();
283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  virtual ~ViewManagerLoader();
293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org private:
313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  // ApplicationLoader overrides:
32760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org  virtual void Load(ApplicationManager* manager,
333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                    const GURL& url,
343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                    scoped_refptr<LoadCallbacks> callbacks) OVERRIDE;
353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  virtual void OnApplicationError(ApplicationManager* manager,
363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org                                  const GURL& url) OVERRIDE;
373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  // ApplicationDelegate overrides.
393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  virtual bool ConfigureIncomingConnection(
403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org      mojo::ApplicationConnection* connection) OVERRIDE;
413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  // InterfaceFactory<ViewManagerInitService> overrides.
433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  virtual void Create(
443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org      ApplicationConnection* connection,
453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org      InterfaceRequest<ViewManagerInitService> request) OVERRIDE;
463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  ScopedVector<Application> apps_;
483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  service::ViewManagerInitServiceContext context_;
493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org  DISALLOW_COPY_AND_ASSIGN(ViewManagerLoader);
513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org};
523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}  // namespace shell
543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org}  // namespace mojo
553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org
563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif  // MOJO_SHELL_VIEW_MANAGER_LOADER_H_
573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org