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_SERVICES_VIEW_MANAGER_VIEW_MANAGER_INIT_SERVICE_CONTEXT_H_ 6 #define MOJO_SERVICES_VIEW_MANAGER_VIEW_MANAGER_INIT_SERVICE_CONTEXT_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "mojo/public/cpp/bindings/callback.h" 10 #include "mojo/public/cpp/bindings/interface_request.h" 11 #include "mojo/public/interfaces/application/service_provider.mojom.h" 12 #include "mojo/services/view_manager/view_manager_export.h" 13 14 namespace mojo { 15 class ApplicationConnection; 16 17 namespace service { 18 19 class ConnectionManager; 20 class ViewManagerInitServiceImpl; 21 22 // State shared between all ViewManagerInitService impls. 23 class MOJO_VIEW_MANAGER_EXPORT ViewManagerInitServiceContext { 24 public: 25 ViewManagerInitServiceContext(); 26 virtual ~ViewManagerInitServiceContext(); 27 28 void AddConnection(ViewManagerInitServiceImpl* connection); 29 void RemoveConnection(ViewManagerInitServiceImpl* connection); 30 31 void ConfigureIncomingConnection(ApplicationConnection* connection); 32 33 void Embed(const String& url, 34 ServiceProviderPtr service_provider, 35 const Callback<void(bool)>& callback); 36 37 ConnectionManager* connection_manager() { return connection_manager_.get(); } 38 39 private: 40 typedef std::vector<ViewManagerInitServiceImpl*> Connections; 41 42 struct ConnectParams { 43 ConnectParams(); 44 ~ConnectParams(); 45 46 std::string url; 47 InterfaceRequest<ServiceProvider> service_provider; 48 Callback<void(bool)> callback; 49 }; 50 51 void OnNativeViewportDeleted(); 52 53 scoped_ptr<ConnectionManager> connection_manager_; 54 Connections connections_; 55 56 bool deleting_connection_; 57 58 DISALLOW_COPY_AND_ASSIGN(ViewManagerInitServiceContext); 59 }; 60 61 } // namespace service 62 } // namespace mojo 63 64 #endif // MOJO_SERVICES_VIEW_MANAGER_VIEW_MANAGER_INIT_SERVICE_CONTEXT_H_ 65