| Index: mandoline/ui/aura/window_tree_host_mojo.cc
|
| diff --git a/mandoline/ui/aura/window_tree_host_mojo.cc b/mandoline/ui/aura/window_tree_host_mojo.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b41742a3a6e0339b5bb46bd2e68b510b796a0369
|
| --- /dev/null
|
| +++ b/mandoline/ui/aura/window_tree_host_mojo.cc
|
| @@ -0,0 +1,117 @@
|
| +// Copyright 2015 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 "mandoline/ui/aura/window_tree_host_mojo.h"
|
| +
|
| +#include "components/view_manager/public/cpp/view_manager.h"
|
| +#include "mandoline/ui/aura/surface_context_factory.h"
|
| +#include "mojo/converters/geometry/geometry_type_converters.h"
|
| +#include "mojo/public/interfaces/application/shell.mojom.h"
|
| +#include "ui/aura/env.h"
|
| +#include "ui/aura/window.h"
|
| +#include "ui/aura/window_event_dispatcher.h"
|
| +#include "ui/events/event.h"
|
| +#include "ui/events/event_constants.h"
|
| +
|
| +namespace mandoline {
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// WindowTreeHostMojo, public:
|
| +
|
| +WindowTreeHostMojo::WindowTreeHostMojo(mojo::Shell* shell, mojo::View* view)
|
| + : view_(view), bounds_(view->bounds().To<gfx::Rect>()) {
|
| + view_->AddObserver(this);
|
| +
|
| + context_factory_.reset(new SurfaceContextFactory(shell, view_));
|
| + // WindowTreeHost creates the compositor using the ContextFactory from
|
| + // aura::Env. Install |context_factory_| there so that |context_factory_| is
|
| + // picked up.
|
| + ui::ContextFactory* default_context_factory =
|
| + aura::Env::GetInstance()->context_factory();
|
| + aura::Env::GetInstance()->set_context_factory(context_factory_.get());
|
| + CreateCompositor(GetAcceleratedWidget());
|
| + aura::Env::GetInstance()->set_context_factory(default_context_factory);
|
| + DCHECK_EQ(context_factory_.get(), compositor()->context_factory());
|
| +}
|
| +
|
| +WindowTreeHostMojo::~WindowTreeHostMojo() {
|
| + view_->RemoveObserver(this);
|
| + DestroyCompositor();
|
| + DestroyDispatcher();
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// WindowTreeHostMojo, aura::WindowTreeHost implementation:
|
| +
|
| +ui::EventSource* WindowTreeHostMojo::GetEventSource() {
|
| + return this;
|
| +}
|
| +
|
| +gfx::AcceleratedWidget WindowTreeHostMojo::GetAcceleratedWidget() {
|
| + return gfx::kNullAcceleratedWidget;
|
| +}
|
| +
|
| +void WindowTreeHostMojo::Show() {
|
| + window()->Show();
|
| +}
|
| +
|
| +void WindowTreeHostMojo::Hide() {
|
| +}
|
| +
|
| +gfx::Rect WindowTreeHostMojo::GetBounds() const {
|
| + return bounds_;
|
| +}
|
| +
|
| +void WindowTreeHostMojo::SetBounds(const gfx::Rect& bounds) {
|
| + window()->SetBounds(gfx::Rect(bounds.size()));
|
| +}
|
| +
|
| +gfx::Point WindowTreeHostMojo::GetLocationOnNativeScreen() const {
|
| + return gfx::Point(0, 0);
|
| +}
|
| +
|
| +void WindowTreeHostMojo::SetCapture() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void WindowTreeHostMojo::ReleaseCapture() {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void WindowTreeHostMojo::SetCursorNative(gfx::NativeCursor cursor) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void WindowTreeHostMojo::MoveCursorToNative(const gfx::Point& location) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +void WindowTreeHostMojo::OnCursorVisibilityChangedNative(bool show) {
|
| + NOTIMPLEMENTED();
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// WindowTreeHostMojo, ui::EventSource implementation:
|
| +
|
| +ui::EventProcessor* WindowTreeHostMojo::GetEventProcessor() {
|
| + return dispatcher();
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// WindowTreeHostMojo, ViewObserver implementation:
|
| +
|
| +void WindowTreeHostMojo::OnViewBoundsChanged(
|
| + mojo::View* view,
|
| + const mojo::Rect& old_bounds,
|
| + const mojo::Rect& new_bounds) {
|
| + gfx::Rect old_bounds2 = old_bounds.To<gfx::Rect>();
|
| + gfx::Rect new_bounds2 = new_bounds.To<gfx::Rect>();
|
| + bounds_ = new_bounds2;
|
| + if (old_bounds2.origin() != new_bounds2.origin())
|
| + OnHostMoved(bounds_.origin());
|
| + if (old_bounds2.size() != new_bounds2.size())
|
| + OnHostResized(bounds_.size());
|
| +}
|
| +
|
| +} // namespace mandoline
|
|
|