| Index: mojo/examples/aura_demo/root_window_host_mojo.cc
|
| diff --git a/mojo/examples/aura_demo/root_window_host_mojo.cc b/mojo/examples/aura_demo/root_window_host_mojo.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..db3e13dbc60c0b74635ae3369dc736e9fdced0e4
|
| --- /dev/null
|
| +++ b/mojo/examples/aura_demo/root_window_host_mojo.cc
|
| @@ -0,0 +1,176 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "mojo/examples/aura_demo/root_window_host_mojo.h"
|
| +
|
| +#include "mojo/examples/aura_demo/demo_context_factory.h"
|
| +#include "mojo/examples/compositor_app/gles2_client_impl.h"
|
| +#include "mojo/public/gles2/gles2.h"
|
| +#include "ui/aura/env.h"
|
| +#include "ui/aura/window.h"
|
| +#include "ui/aura/window_tree_host_delegate.h"
|
| +#include "ui/compositor/compositor.h"
|
| +#include "ui/gfx/geometry/insets.h"
|
| +#include "ui/gfx/geometry/rect.h"
|
| +
|
| +namespace mojo {
|
| +namespace examples {
|
| +
|
| +// static
|
| +ui::ContextFactory* RootWindowHostMojo::context_factory_ = NULL;
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// RootWindowHostMojo, public:
|
| +
|
| +RootWindowHostMojo::RootWindowHostMojo(
|
| + ScopedMessagePipeHandle viewport_handle,
|
| + const base::Callback<void()>& compositor_created_callback)
|
| + : native_viewport_(viewport_handle.Pass()),
|
| + compositor_created_callback_(compositor_created_callback) {
|
| + native_viewport_.SetPeer(this);
|
| + native_viewport_->Open();
|
| +
|
| + ScopedMessagePipeHandle gles2_handle;
|
| + ScopedMessagePipeHandle gles2_client_handle;
|
| + CreateMessagePipe(&gles2_handle, &gles2_client_handle);
|
| +
|
| + // The ContextFactory must exist before any Compositors are created.
|
| + if (!context_factory_) {
|
| + scoped_ptr<DemoContextFactory> cf(new DemoContextFactory(this));
|
| + if (cf->Initialize())
|
| + context_factory_ = cf.release();
|
| + ui::ContextFactory::SetInstance(context_factory_);
|
| + }
|
| + CHECK(context_factory_) << "No GL bindings.";
|
| +
|
| + gles2_client_.reset(new GLES2ClientImpl(
|
| + gles2_handle.Pass(),
|
| + base::Bind(&RootWindowHostMojo::DidCreateContext,
|
| + base::Unretained(this))));
|
| + native_viewport_->CreateGLES2Context(gles2_client_handle.Pass());
|
| +}
|
| +
|
| +RootWindowHostMojo::~RootWindowHostMojo() {}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// RootWindowHostMojo, aura::RootWindowHost implementation:
|
| +
|
| +aura::RootWindow* RootWindowHostMojo::GetRootWindow() {
|
| + return delegate_->AsRootWindow();
|
| +}
|
| +
|
| +gfx::AcceleratedWidget RootWindowHostMojo::GetAcceleratedWidget() {
|
| + NOTIMPLEMENTED();
|
| + return gfx::kNullAcceleratedWidget;
|
| +}
|
| +
|
| +void RootWindowHostMojo::Show() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::Hide() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::ToggleFullScreen() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +gfx::Rect RootWindowHostMojo::GetBounds() const {
|
| + NOTIMPLEMENTED();
|
| + return gfx::Rect(500, 500);
|
| +}
|
| +
|
| +void RootWindowHostMojo::SetBounds(const gfx::Rect& bounds) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +gfx::Insets RootWindowHostMojo::GetInsets() const {
|
| + NOTIMPLEMENTED();
|
| + return gfx::Insets();
|
| +}
|
| +
|
| +void RootWindowHostMojo::SetInsets(const gfx::Insets& insets) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +gfx::Point RootWindowHostMojo::GetLocationOnNativeScreen() const {
|
| + return gfx::Point(0, 0);
|
| +}
|
| +
|
| +void RootWindowHostMojo::SetCapture() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::ReleaseCapture() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::SetCursor(gfx::NativeCursor cursor) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +bool RootWindowHostMojo::QueryMouseLocation(gfx::Point* location_return) {
|
| + NOTIMPLEMENTED();
|
| + return false;
|
| +}
|
| +
|
| +bool RootWindowHostMojo::ConfineCursorToRootWindow() {
|
| + NOTIMPLEMENTED();
|
| + return false;
|
| +}
|
| +
|
| +void RootWindowHostMojo::UnConfineCursor() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::OnCursorVisibilityChanged(bool show) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::MoveCursorTo(const gfx::Point& location) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::PostNativeEvent(
|
| + const base::NativeEvent& native_event) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::OnDeviceScaleFactorChanged(float device_scale_factor) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void RootWindowHostMojo::PrepareForShutdown() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// RootWindowHostMojo, NativeViewportClientStub implementation:
|
| +
|
| +void RootWindowHostMojo::OnCreated() {
|
| +}
|
| +
|
| +void RootWindowHostMojo::OnDestroyed() {
|
| + base::MessageLoop::current()->Quit();
|
| +}
|
| +
|
| +void RootWindowHostMojo::OnEvent(const Event& event) {
|
| + if (!event.location().is_null())
|
| + native_viewport_->AckEvent(event);
|
| +
|
| + // TODO(beng): fwd to rootwindow.
|
| +};
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// RootWindowHostMojo, private:
|
| +
|
| +void RootWindowHostMojo::DidCreateContext(gfx::Size viewport_size) {
|
| + CreateCompositor(GetAcceleratedWidget());
|
| + compositor_created_callback_.Run();
|
| + NotifyHostResized(viewport_size);
|
| +}
|
| +
|
| +} // namespace examples
|
| +} // namespace mojo
|
|
|