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 17namespace mojo { 18 19class ApplicationImpl; 20class NetworkService; 21 22namespace shell { 23 24// ApplicationLoader responsible for creating connections to the NetworkService. 25class 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