Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / mojo / examples / compositor_app / compositor_app.cc
index 1e7cb66..3339804 100644 (file)
@@ -5,16 +5,16 @@
 #include <stdio.h>
 #include <string>
 
+#include "base/macros.h"
 #include "base/message_loop/message_loop.h"
 #include "mojo/examples/compositor_app/compositor_host.h"
-#include "mojo/examples/compositor_app/gles2_client_impl.h"
-#include "mojo/public/bindings/lib/remote_ptr.h"
-#include "mojo/public/gles2/gles2_cpp.h"
-#include "mojo/public/system/core.h"
-#include "mojo/public/system/macros.h"
+#include "mojo/public/cpp/bindings/allocation_scope.h"
+#include "mojo/public/cpp/gles2/gles2.h"
+#include "mojo/public/cpp/shell/application.h"
+#include "mojo/public/cpp/system/core.h"
+#include "mojo/public/interfaces/shell/shell.mojom.h"
 #include "mojo/services/native_viewport/geometry_conversions.h"
-#include "mojom/native_viewport.h"
-#include "mojom/shell.h"
+#include "mojo/services/native_viewport/native_viewport.mojom.h"
 #include "ui/gfx/rect.h"
 
 #if defined(WIN32)
 namespace mojo {
 namespace examples {
 
-class SampleApp : public ShellClient {
+class SampleApp : public Application, public NativeViewportClient {
  public:
-  explicit SampleApp(ScopedMessagePipeHandle shell_handle)
-      : shell_(shell_handle.Pass(), this) {
-    ScopedMessagePipeHandle client_handle, native_viewport_handle;
-    CreateMessagePipe(&client_handle, &native_viewport_handle);
-    native_viewport_client_.reset(
-        new NativeViewportClientImpl(native_viewport_handle.Pass()));
+  explicit SampleApp(MojoHandle shell_handle) : Application(shell_handle) {
     AllocationScope scope;
-    shell_->Connect("mojo:mojo_native_viewport_service", client_handle.Pass());
+
+    ConnectTo("mojo:mojo_native_viewport_service", &viewport_);
+    viewport_->SetClient(this);
+
+    viewport_->Create(gfx::Rect(10, 10, 800, 600));
+    viewport_->Show();
+
+    MessagePipe gles2_pipe;
+    viewport_->CreateGLES2Context(gles2_pipe.handle0.Pass());
+    host_.reset(new CompositorHost(gles2_pipe.handle1.Pass()));
+  }
+
+  virtual void OnCreated() OVERRIDE {
   }
 
-  virtual void AcceptConnection(ScopedMessagePipeHandle handle) MOJO_OVERRIDE {
-    NOTREACHED() << "SampleApp can't be connected to.";
+  virtual void OnDestroyed() OVERRIDE {
+    base::MessageLoop::current()->Quit();
+  }
+
+  virtual void OnBoundsChanged(const Rect& bounds) OVERRIDE {
+    host_->SetSize(bounds.size());
+  }
+
+  virtual void OnEvent(const Event& event,
+                       const mojo::Callback<void()>& callback) OVERRIDE {
+    callback.Run();
   }
 
  private:
-  class NativeViewportClientImpl : public NativeViewportClient {
-   public:
-    explicit NativeViewportClientImpl(ScopedMessagePipeHandle viewport_handle)
-        : viewport_(viewport_handle.Pass(), this) {
-      viewport_->Create(gfx::Rect(10, 10, 800, 600));
-      viewport_->Show();
-      ScopedMessagePipeHandle gles2_handle;
-      ScopedMessagePipeHandle gles2_client_handle;
-      CreateMessagePipe(&gles2_handle, &gles2_client_handle);
-
-      gles2_client_.reset(new GLES2ClientImpl(
-            gles2_handle.Pass(),
-            base::Bind(&NativeViewportClientImpl::DidCreateContext,
-                       base::Unretained(this))));
-      viewport_->CreateGLES2Context(gles2_client_handle.Pass());
-      host_.reset(new CompositorHost(gles2_client_.get()));
-    }
-
-    void DidCreateContext(gfx::Size viewport_size) {
-      host_->DidCreateContext(viewport_size);
-    }
-
-    virtual ~NativeViewportClientImpl() {}
-
-    virtual void OnCreated() MOJO_OVERRIDE {
-    }
-
-    virtual void OnDestroyed() MOJO_OVERRIDE {
-      base::MessageLoop::current()->Quit();
-    }
-
-    virtual void OnBoundsChanged(const Rect& bounds) MOJO_OVERRIDE {
-    }
-
-    virtual void OnEvent(const Event& event) MOJO_OVERRIDE {
-      if (!event.location().is_null()) {
-        viewport_->AckEvent(event);
-      }
-    }
-
-   private:
-    scoped_ptr<GLES2ClientImpl> gles2_client_;
-    RemotePtr<NativeViewport> viewport_;
-    scoped_ptr<CompositorHost> host_;
-  };
-  RemotePtr<Shell> shell_;
-  scoped_ptr<NativeViewportClientImpl> native_viewport_client_;
+  NativeViewportPtr viewport_;
+  scoped_ptr<CompositorHost> host_;
 };
 
 }  // namespace examples
@@ -104,9 +75,7 @@ extern "C" SAMPLE_APP_EXPORT MojoResult CDECL MojoMain(
   base::MessageLoop loop;
   mojo::GLES2Initializer gles2;
 
-  mojo::examples::SampleApp app(
-      mojo::MakeScopedHandle(mojo::MessagePipeHandle(shell_handle)).Pass());
+  mojo::examples::SampleApp app(shell_handle);
   loop.Run();
-
   return MOJO_RESULT_OK;
 }