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