| Index: blimp/client/app/linux/blimp_display_manager.cc
|
| diff --git a/blimp/client/app/linux/blimp_display_manager.cc b/blimp/client/app/linux/blimp_display_manager.cc
|
| deleted file mode 100644
|
| index 078c89366c59c90c7bb263680adf5013798eda6d..0000000000000000000000000000000000000000
|
| --- a/blimp/client/app/linux/blimp_display_manager.cc
|
| +++ /dev/null
|
| @@ -1,190 +0,0 @@
|
| -// 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 "blimp/client/app/linux/blimp_display_manager.h"
|
| -
|
| -#include "base/memory/ptr_util.h"
|
| -#include "blimp/client/app/compositor/browser_compositor.h"
|
| -#include "blimp/client/public/compositor/compositor_dependencies.h"
|
| -#include "blimp/client/public/contents/blimp_contents.h"
|
| -#include "blimp/client/public/contents/blimp_contents_view.h"
|
| -#include "blimp/client/public/contents/blimp_navigation_controller.h"
|
| -#include "ui/events/event.h"
|
| -#include "ui/events/gesture_detection/motion_event_generic.h"
|
| -#include "ui/events/gestures/motion_event_aura.h"
|
| -#include "ui/events/platform/platform_event_source.h"
|
| -#include "ui/gfx/geometry/dip_util.h"
|
| -#include "ui/gfx/geometry/size.h"
|
| -#include "ui/platform_window/platform_window.h"
|
| -#include "ui/platform_window/x11/x11_window.h"
|
| -
|
| -namespace blimp {
|
| -namespace {
|
| -constexpr int kPointer1Id = 0;
|
| -constexpr int kPointer2Id = 1;
|
| -constexpr int kZoomOffsetMultiplier = 4;
|
| -} // namespace
|
| -
|
| -namespace client {
|
| -
|
| -BlimpDisplayManager::BlimpDisplayManager(
|
| - BlimpDisplayManagerDelegate* delegate,
|
| - CompositorDependencies* compositor_dependencies)
|
| - : device_pixel_ratio_(1.f),
|
| - delegate_(delegate),
|
| - platform_event_source_(ui::PlatformEventSource::CreateDefault()),
|
| - platform_window_(new ui::X11Window(this)) {
|
| - compositor_ = base::MakeUnique<BrowserCompositor>(compositor_dependencies);
|
| -}
|
| -
|
| -BlimpDisplayManager::~BlimpDisplayManager() = default;
|
| -
|
| -void BlimpDisplayManager::SetWindowSize(const gfx::Size& window_size) {
|
| - platform_window_->SetBounds(
|
| - gfx::ConvertRectToPixel(device_pixel_ratio_, gfx::Rect(window_size)));
|
| -}
|
| -
|
| -void BlimpDisplayManager::SetBlimpContents(
|
| - std::unique_ptr<BlimpContents> contents) {
|
| - contents_ = std::move(contents);
|
| - compositor_->SetContentLayer(contents_->GetView()->GetLayer());
|
| - platform_window_->Show();
|
| -}
|
| -
|
| -void BlimpDisplayManager::OnBoundsChanged(const gfx::Rect& new_bounds) {
|
| - compositor_->SetSize(new_bounds.size());
|
| - if (contents_) {
|
| - contents_->GetView()->SetSizeAndScale(new_bounds.size(),
|
| - device_pixel_ratio_);
|
| - }
|
| -}
|
| -
|
| -void BlimpDisplayManager::DispatchEvent(ui::Event* event) {
|
| - if (event->IsMouseWheelEvent()) {
|
| - DispatchMouseWheelEvent(event->AsMouseWheelEvent());
|
| - } else if (event->IsMouseEvent()) {
|
| - DispatchMouseEvent(event->AsMouseEvent());
|
| - }
|
| -}
|
| -
|
| -void BlimpDisplayManager::DispatchMotionEventAura(
|
| - ui::MotionEventAura* touch_event_stream,
|
| - ui::EventType event_type,
|
| - int pointer_id,
|
| - int pointer_x,
|
| - int pointer_y) {
|
| - DCHECK(contents_);
|
| -
|
| - touch_event_stream->OnTouch(
|
| - ui::TouchEvent(event_type, gfx::Point(pointer_x, pointer_y), pointer_id,
|
| - base::TimeTicks::Now()));
|
| - contents_->GetView()->OnTouchEvent(*touch_event_stream);
|
| -}
|
| -
|
| -void BlimpDisplayManager::DispatchMouseWheelEvent(
|
| - ui::MouseWheelEvent* wheel_event) {
|
| - // In order to better simulate the Android experience on the Linux client
|
| - // we convert mousewheel scrolling events into pinch/zoom events.
|
| - bool zoom_out = wheel_event->y_offset() < 0;
|
| - Zoom(wheel_event->x(), wheel_event->y(), wheel_event->y_offset(), zoom_out);
|
| -}
|
| -
|
| -void BlimpDisplayManager::Zoom(int pointer_x,
|
| - int pointer_y,
|
| - int y_offset,
|
| - bool zoom_out) {
|
| - int pinch_distance = abs(y_offset * kZoomOffsetMultiplier);
|
| - int pointer2_y = pointer_y;
|
| - if (zoom_out) {
|
| - // Pointers start apart when zooming out.
|
| - pointer2_y -= pinch_distance;
|
| - }
|
| -
|
| - ui::MotionEventAura touch_event_stream;
|
| -
|
| - // Place two pointers.
|
| - DispatchMotionEventAura(&touch_event_stream, ui::ET_TOUCH_PRESSED,
|
| - kPointer1Id, pointer_x, pointer_y);
|
| - DispatchMotionEventAura(&touch_event_stream, ui::ET_TOUCH_PRESSED,
|
| - kPointer2Id, pointer_x, pointer2_y);
|
| -
|
| - // Pinch pointers. Need to simulate gradually in order for the event to be
|
| - // properly processed.
|
| - for (int pointer2_y_end = pointer2_y + pinch_distance;
|
| - pointer2_y < pointer2_y_end; ++pointer2_y) {
|
| - DispatchMotionEventAura(&touch_event_stream, ui::ET_TOUCH_MOVED,
|
| - kPointer2Id, pointer_x, pointer2_y);
|
| - }
|
| -
|
| - // Remove pointers.
|
| - DispatchMotionEventAura(&touch_event_stream, ui::ET_TOUCH_RELEASED,
|
| - kPointer1Id, pointer_x, pointer_y);
|
| - DispatchMotionEventAura(&touch_event_stream, ui::ET_TOUCH_RELEASED,
|
| - kPointer2Id, pointer_x, pointer2_y);
|
| -}
|
| -
|
| -ui::MotionEvent::Action MouseEventToAction(ui::MouseEvent* mouse_event) {
|
| - switch (mouse_event->type()) {
|
| - case ui::ET_MOUSE_PRESSED:
|
| - return ui::MotionEvent::ACTION_DOWN;
|
| - case ui::ET_MOUSE_RELEASED:
|
| - return ui::MotionEvent::ACTION_UP;
|
| - case ui::ET_MOUSE_DRAGGED:
|
| - return ui::MotionEvent::ACTION_MOVE;
|
| - default:
|
| - return ui::MotionEvent::ACTION_NONE;
|
| - }
|
| -}
|
| -
|
| -void BlimpDisplayManager::DispatchMouseEvent(ui::MouseEvent* mouse_event) {
|
| - ui::MotionEvent::Action action = MouseEventToAction(mouse_event);
|
| -
|
| - if (action != ui::MotionEvent::ACTION_NONE &&
|
| - mouse_event->IsOnlyLeftMouseButton()) {
|
| - DCHECK(contents_);
|
| -
|
| - ui::PointerProperties mouse_properties(mouse_event->x(), mouse_event->y(),
|
| - 0);
|
| - ui::MotionEventGeneric motion_event(action, mouse_event->time_stamp(),
|
| - mouse_properties);
|
| - contents_->GetView()->OnTouchEvent(motion_event);
|
| - }
|
| -}
|
| -
|
| -void BlimpDisplayManager::OnCloseRequest() {
|
| - DCHECK(contents_);
|
| -
|
| - contents_->Hide();
|
| - compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
|
| - platform_window_->Close();
|
| -}
|
| -
|
| -void BlimpDisplayManager::OnClosed() {
|
| - if (delegate_)
|
| - delegate_->OnClosed();
|
| -}
|
| -
|
| -void BlimpDisplayManager::OnAcceleratedWidgetAvailable(
|
| - gfx::AcceleratedWidget widget,
|
| - float device_pixel_ratio) {
|
| - DCHECK(contents_);
|
| -
|
| - device_pixel_ratio_ = device_pixel_ratio;
|
| - contents_->GetView()->SetSizeAndScale(platform_window_->GetBounds().size(),
|
| - device_pixel_ratio_);
|
| -
|
| - if (widget != gfx::kNullAcceleratedWidget) {
|
| - contents_->Show();
|
| - compositor_->SetAcceleratedWidget(widget);
|
| - }
|
| -}
|
| -
|
| -void BlimpDisplayManager::OnAcceleratedWidgetDestroyed() {
|
| - DCHECK(contents_);
|
| - contents_->Hide();
|
| - compositor_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
|
| -}
|
| -
|
| -} // namespace client
|
| -} // namespace blimp
|
|
|