146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/basictypes.h"
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/bind.h"
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/application/application_runner_chromium.h"
803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/c/system/main.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_delegate.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_impl.h"
116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "mojo/public/interfaces/application/service_provider.mojom.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/services/public/cpp/view_manager/view_manager.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/services/public/cpp/view_manager/view_manager_context.h"
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace examples {
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// ViewManagerInit is responsible for establishing the initial connection to
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// the view manager. When established it loads |mojo_aura_demo|.
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ViewManagerInit : public mojo::ApplicationDelegate {
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ViewManagerInit() {}
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual ~ViewManagerInit() {}
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void Initialize(mojo::ApplicationImpl* app) MOJO_OVERRIDE {
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    context_.reset(new mojo::ViewManagerContext(app));
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    context_->Embed("mojo:mojo_aura_demo");
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private:
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<mojo::ViewManagerContext> context_;
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ViewManagerInit);
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace examples
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)MojoResult MojoMain(MojoHandle shell_handle) {
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  mojo::ApplicationRunnerChromium runner(new examples::ViewManagerInit);
3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  return runner.Run(shell_handle);
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
41