view_manager_init.cc revision 46d4c2bc3267f3f028f39e7e311b0f89aba2e4fd
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"
746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/public/cpp/application/application.h"
846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h"
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace mojo {
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace examples {
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// ViewManagerInit is responsible for establishing the initial connection to
1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// the view manager. When established it loads |mojo_aura_demo|.
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class ViewManagerInit : public Application {
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ViewManagerInit() {}
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual ~ViewManagerInit() {}
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void Initialize() OVERRIDE {
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    ConnectTo("mojo:mojo_view_manager", &view_manager_init_);
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    view_manager_init_->Connect("mojo:mojo_aura_demo",
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                base::Bind(&ViewManagerInit::DidConnect,
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                           base::Unretained(this)));
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) private:
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void DidConnect(bool result) {
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    DCHECK(result);
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    VLOG(1) << "ViewManagerInit::DidConnection result=" << result;
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  view_manager::IViewManagerInitPtr view_manager_init_;
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ViewManagerInit);
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace examples
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// static
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)Application* Application::Create() {
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return new examples::ViewManagerInit();
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace mojo
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
47