1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#ifndef MOJO_SHELL_NETWORK_APPLICATION_LOADER_H_ 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define MOJO_SHELL_NETWORK_APPLICATION_LOADER_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <map> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/containers/scoped_ptr_hash_map.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h" 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/application_manager/application_loader.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_delegate.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/public/cpp/application/interface_factory.h" 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/network/network_context.h" 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo { 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass ApplicationImpl; 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class NetworkService; 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace shell { 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// ApplicationLoader responsible for creating connections to the NetworkService. 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class NetworkApplicationLoader : public ApplicationLoader, 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public ApplicationDelegate, 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public InterfaceFactory<NetworkService> { 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) NetworkApplicationLoader(); 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual ~NetworkApplicationLoader(); 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // ApplicationLoader overrides: 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual void Load(ApplicationManager* manager, 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GURL& url, 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_refptr<LoadCallbacks> callbacks) OVERRIDE; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnApplicationError(ApplicationManager* manager, 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const GURL& url) OVERRIDE; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // ApplicationDelegate overrides. 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void Initialize(ApplicationImpl* app) OVERRIDE; 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual bool ConfigureIncomingConnection( 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ApplicationConnection* connection) OVERRIDE; 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // InterfaceFactory<NetworkService> overrides. 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void Create(ApplicationConnection* connection, 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) InterfaceRequest<NetworkService> request) OVERRIDE; 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::ScopedPtrHashMap<uintptr_t, ApplicationImpl> apps_; 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<NetworkContext> context_; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NetworkApplicationLoader); 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace shell 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace mojo 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif // MOJO_SHELL_NETWORK_APPLICATION_LOADER_H_ 59