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 #ifndef MOJO_SHELL_VIEW_MANAGER_LOADER_H_ 6 #define MOJO_SHELL_VIEW_MANAGER_LOADER_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_vector.h" 10 #include "mojo/application_manager/application_loader.h" 11 #include "mojo/public/cpp/application/application_delegate.h" 12 #include "mojo/public/cpp/application/interface_factory.h" 13 #include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" 14 #include "mojo/services/view_manager/view_manager_init_service_context.h" 15 16 namespace mojo { 17 18 class Application; 19 20 namespace shell { 21 22 // ApplicationLoader responsible for creating connections to the ViewManager. 23 class ViewManagerLoader : public ApplicationLoader, 24 public ApplicationDelegate, 25 public InterfaceFactory<ViewManagerInitService> { 26 public: 27 ViewManagerLoader(); 28 virtual ~ViewManagerLoader(); 29 30 private: 31 // ApplicationLoader overrides: 32 virtual void Load(ApplicationManager* manager, 33 const GURL& url, 34 scoped_refptr<LoadCallbacks> callbacks) OVERRIDE; 35 virtual void OnApplicationError(ApplicationManager* manager, 36 const GURL& url) OVERRIDE; 37 38 // ApplicationDelegate overrides. 39 virtual bool ConfigureIncomingConnection( 40 mojo::ApplicationConnection* connection) OVERRIDE; 41 42 // InterfaceFactory<ViewManagerInitService> overrides. 43 virtual void Create( 44 ApplicationConnection* connection, 45 InterfaceRequest<ViewManagerInitService> request) OVERRIDE; 46 47 ScopedVector<Application> apps_; 48 service::ViewManagerInitServiceContext context_; 49 50 DISALLOW_COPY_AND_ASSIGN(ViewManagerLoader); 51 }; 52 53 } // namespace shell 54 } // namespace mojo 55 56 #endif // MOJO_SHELL_VIEW_MANAGER_LOADER_H_ 57