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_IMPL_H_ 6 #define MOJO_SERVICES_VIEW_MANAGER_VIEW_MANAGER_INIT_SERVICE_IMPL_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/compiler_specific.h" 12 #include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" 13 #include "mojo/services/view_manager/root_node_manager.h" 14 #include "mojo/services/view_manager/root_view_manager_delegate.h" 15 #include "mojo/services/view_manager/view_manager_export.h" 16 17 namespace mojo { 18 19 class ServiceProvider; 20 21 namespace view_manager { 22 namespace service { 23 24 #if defined(OS_WIN) 25 // Equivalent of NON_EXPORTED_BASE which does not work with the template snafu 26 // below. 27 #pragma warning(push) 28 #pragma warning(disable : 4275) 29 #endif 30 31 // Used to create the initial ViewManagerClient. Doesn't initiate the Connect() 32 // until the WindowTreeHost has been created. 33 class MOJO_VIEW_MANAGER_EXPORT ViewManagerInitServiceImpl 34 : public InterfaceImpl<ViewManagerInitService>, 35 public RootViewManagerDelegate { 36 public: 37 explicit ViewManagerInitServiceImpl(ServiceProvider* service_provider); 38 virtual ~ViewManagerInitServiceImpl(); 39 40 private: 41 struct ConnectParams { 42 ConnectParams(); 43 ~ConnectParams(); 44 45 std::string url; 46 Callback<void(bool)> callback; 47 }; 48 49 void MaybeEmbedRoot(const std::string& url, 50 const Callback<void(bool)>& callback); 51 52 // ViewManagerInitService overrides: 53 virtual void EmbedRoot(const String& url, 54 const Callback<void(bool)>& callback) OVERRIDE; 55 56 // RootViewManagerDelegate overrides: 57 virtual void OnRootViewManagerWindowTreeHostCreated() OVERRIDE; 58 59 ServiceProvider* service_provider_; 60 61 RootNodeManager root_node_manager_; 62 63 // Parameters passed to Connect(). If non-null Connect() has been invoked. 64 scoped_ptr<ConnectParams> connect_params_; 65 66 bool is_tree_host_ready_; 67 68 DISALLOW_COPY_AND_ASSIGN(ViewManagerInitServiceImpl); 69 }; 70 71 #if defined(OS_WIN) 72 #pragma warning(pop) 73 #endif 74 75 } // namespace service 76 } // namespace view_manager 77 } // namespace mojo 78 79 #endif // MOJO_SERVICES_VIEW_MANAGER_VIEW_MANAGER_INIT_SERVICE_IMPL_H_ 80