Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / mojo / services / public / cpp / view_manager / view_manager_context.h
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_PUBLIC_CPP_VIEW_MANAGER_VIEW_MANAGER_CONTEXT_H_
6 #define MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_MANAGER_CONTEXT_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/bind.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "mojo/public/cpp/application/service_provider_impl.h"
14
15 namespace mojo {
16 class ApplicationImpl;
17
18 class ViewManagerContext {
19  public:
20   explicit ViewManagerContext(ApplicationImpl* application_impl);
21   ~ViewManagerContext();
22
23   // Embed an application @ |url| at an appropriate View.
24   // The first time this method is called in the life time of the View Manager
25   // service the "appropriate View" is defined as being the service' root View.
26   // Subsequent times, the implementation of this method is delegated to the
27   // application embedded at the service root View. This application will have a
28   // specific definition of where within its View hierarchy to embed an
29   // un-parented URL. |exported_services| encapsulates services offered by the
30   // application calling Embed() to the application being embedded. Returns
31   // an object implementing ServiceProvider encapsulating services offered by
32   // the embedded application to the embedder.
33   void Embed(const String& url);
34   scoped_ptr<ServiceProvider> Embed(
35       const String& url,
36       scoped_ptr<ServiceProviderImpl> exported_services);
37
38  private:
39   class InternalState;
40   scoped_ptr<InternalState> state_;
41
42   MOJO_DISALLOW_COPY_AND_ASSIGN(ViewManagerContext);
43 };
44
45 }  // namespace mojo
46
47 #endif  // MOJO_SERVICES_PUBLIC_CPP_VIEW_MANAGER_VIEW_MANAGER_CONTEXT_H_