Skip to content

Commit

Permalink
Move CursorFactoryOzone to ui/base/cursor/
Browse files Browse the repository at this point in the history
This CL moves cursor_factory_ozone.* to ui/base/cursor/cursor_factory.*
to serve as a superclass for all platform cursor factories.

Bug: 1029142, 1040499
Change-Id: I94370bfe98efd3af4c6596e2de652370d011ea7e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2188395
Commit-Queue: Henrique Ferreiro <hferreiro@igalia.com>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#771267}
  • Loading branch information
hferreiro authored and Commit Bot committed May 22, 2020
1 parent 3ee579a commit aaa2a62
Show file tree
Hide file tree
Showing 33 changed files with 143 additions and 172 deletions.
1 change: 1 addition & 0 deletions chrome/browser/vr/testapp/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ executable("vr_testapp") {
"//components/security_state/core",
"//components/tracing:startup_tracing",
"//components/vector_icons:vector_icons",
"//ui/base/cursor:cursor_base",
"//ui/display/types",
"//ui/events",
"//ui/events:dom_keycode_converter",
Expand Down
6 changes: 3 additions & 3 deletions chrome/browser/vr/testapp/vr_testapp.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "chrome/browser/vr/testapp/gl_renderer.h"
#include "chrome/browser/vr/testapp/vr_test_context.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/cursor/cursor_factory.h"
#include "ui/display/types/display_snapshot.h"
#include "ui/display/types/native_display_delegate.h"
#include "ui/display/types/native_display_observer.h"
Expand All @@ -28,7 +29,6 @@
#include "ui/gfx/geometry/rect.h"
#include "ui/gl/gl_surface.h"
#include "ui/gl/init/gl_factory.h"
#include "ui/ozone/public/cursor_factory_ozone.h"
#include "ui/ozone/public/ozone_gpu_test_helper.h"
#include "ui/ozone/public/ozone_platform.h"
#include "ui/platform_window/platform_window.h"
Expand Down Expand Up @@ -110,8 +110,8 @@ class AppWindow : public ui::PlatformWindowDelegate {

// Supply an empty cursor to override and hide the default system pointer.
platform_window_->SetCursor(
ui::CursorFactoryOzone::GetInstance()->CreateImageCursor(SkBitmap(),
{0, 0}, 0));
ui::CursorFactory::GetInstance()->CreateImageCursor(SkBitmap(), {0, 0},
0));
}
~AppWindow() override {}

Expand Down
8 changes: 4 additions & 4 deletions components/exo/pointer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
#endif

#if defined(USE_OZONE)
#include "ui/ozone/public/cursor_factory_ozone.h"
#include "ui/base/cursor/cursor_factory.h"
#endif

namespace exo {
Expand Down Expand Up @@ -684,8 +684,8 @@ void Pointer::UpdateCursor() {
// TODO(reveman): Add interface for creating cursors from GpuMemoryBuffers
// and use that here instead of the current bitmap API.
// https://crbug.com/686600
platform_cursor = ui::CursorFactoryOzone::GetInstance()->CreateImageCursor(
bitmap, hotspot, 0);
platform_cursor =
ui::CursorFactory::GetInstance()->CreateImageCursor(bitmap, hotspot, 0);
#elif defined(USE_X11)
XcursorImage* image = ui::SkBitmapToXcursorImage(&bitmap, hotspot);
platform_cursor = ui::CreateReffedCustomXCursor(image);
Expand All @@ -694,7 +694,7 @@ void Pointer::UpdateCursor() {
cursor_.set_custom_bitmap(bitmap);
cursor_.set_custom_hotspot(hotspot);
#if defined(USE_OZONE)
ui::CursorFactoryOzone::GetInstance()->UnrefImageCursor(platform_cursor);
ui::CursorFactory::GetInstance()->UnrefImageCursor(platform_cursor);
#elif defined(USE_X11)
ui::UnrefCustomXCursor(platform_cursor);
#endif
Expand Down
4 changes: 1 addition & 3 deletions content/common/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -345,9 +345,7 @@ source_set("common") {
deps += [ "//ppapi/proxy:ipc_sources" ]
}

if (use_ozone) {
deps += [ "//ui/ozone" ]
} else {
if (!use_ozone) {
sources -= [ "cursors/webcursor_ozone.cc" ]
}

Expand Down
8 changes: 0 additions & 8 deletions content/common/cursors/DEPS
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
include_rules = [
"+third_party/blink/public/platform",
]

specific_include_rules = {
# TODO(crbug.com/734668): Dependencies on ozone should be removed, as content
# embedded in mus won't be able to talk to the native ozone.
"webcursor_ozone.cc": [
"+ui/ozone/public/cursor_factory_ozone.h",
],
}
10 changes: 5 additions & 5 deletions content/common/cursors/webcursor_ozone.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

#include "base/check_op.h"
#include "ui/base/cursor/cursor.h"
#include "ui/base/cursor/cursor_factory.h"
#include "ui/base/cursor/mojom/cursor_type.mojom-shared.h"
#include "ui/ozone/public/cursor_factory_ozone.h"

namespace content {

Expand All @@ -18,7 +18,7 @@ ui::PlatformCursor WebCursor::GetPlatformCursor(const ui::Cursor& cursor) {
DCHECK_EQ(cursor.type(), ui::mojom::CursorType::kCustom);

if (!platform_cursor_) {
platform_cursor_ = ui::CursorFactoryOzone::GetInstance()->CreateImageCursor(
platform_cursor_ = ui::CursorFactory::GetInstance()->CreateImageCursor(
cursor.custom_bitmap(), cursor.custom_hotspot(),
cursor.image_scale_factor());
}
Expand Down Expand Up @@ -61,18 +61,18 @@ bool WebCursor::IsPlatformDataEqual(const WebCursor& other) const {

void WebCursor::CleanupPlatformData() {
if (platform_cursor_) {
ui::CursorFactoryOzone::GetInstance()->UnrefImageCursor(platform_cursor_);
ui::CursorFactory::GetInstance()->UnrefImageCursor(platform_cursor_);
platform_cursor_ = NULL;
}
custom_cursor_.reset();
}

void WebCursor::CopyPlatformData(const WebCursor& other) {
if (platform_cursor_)
ui::CursorFactoryOzone::GetInstance()->UnrefImageCursor(platform_cursor_);
ui::CursorFactory::GetInstance()->UnrefImageCursor(platform_cursor_);
platform_cursor_ = other.platform_cursor_;
if (platform_cursor_)
ui::CursorFactoryOzone::GetInstance()->RefImageCursor(platform_cursor_);
ui::CursorFactory::GetInstance()->RefImageCursor(platform_cursor_);

device_scale_factor_ = other.device_scale_factor_;
maximum_cursor_size_ = other.maximum_cursor_size_;
Expand Down
3 changes: 1 addition & 2 deletions docs/ozone_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ Ozone moves platform-specific code behind the following interfaces:
access to IPC between the browser & GPU processes. Some platforms need this
to provide additional services in the GPU process such as display
configuration.
* `CursorFactoryOzone` is used to load & set platform cursors.
* `OverlayManagerOzone` is used to manage overlays.
* `InputController` allows to control input devices such as keyboard, mouse or
touchpad.
Expand Down Expand Up @@ -91,7 +90,7 @@ Users of the Ozone abstraction need to do the following, at minimum:
invoke `PlatformWindowDelegate::DispatchEvent` to dispatch each event.
* Write a subclass of `SurfaceFactoryOzone` that handles allocating accelerated
surfaces. I'll call this `SurfaceFactoryOzoneImpl`.
* Write a subclass of `CursorFactoryOzone` to manage cursors, or use the
* Write a subclass of `CursorFactory` to manage cursors, or use the
`BitmapCursorFactoryOzone` implementation if only bitmap cursors need to be
supported.
* Write a subclass of `OverlayManagerOzone` or just use `StubOverlayManager` if
Expand Down
13 changes: 4 additions & 9 deletions ui/base/cursor/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,29 @@ import("//build/config/ui.gni")
# bringing all of //ui/base/cursor.
component("cursor_base") {
output_name = "ui_base_cursor_base"

sources = [
"cursor.cc",
"cursor.h",
"cursor_factory.cc",
"cursor_factory.h",
"cursor_size.h",
]

defines = [ "IS_UI_BASE_CURSOR_BASE_IMPL" ]

public_deps = [
"//base",
"//skia",
"//ui/base/cursor/mojom:cursor_type",
"//ui/gfx/geometry",
]

deps = [ "//ui/gfx:geometry_skia" ]

if (use_x11 && use_aura) {
if (use_x11) {
sources += [ "cursor_x11.cc" ]

deps += [ "//ui/base/x" ]
}

if (use_ozone) {
sources += [ "cursor_ozone.cc" ]

deps += [ "//ui/ozone:ozone_base" ]
}

if (is_win) {
Expand Down Expand Up @@ -109,8 +104,8 @@ if (use_aura) {
"ozone/bitmap_cursor_factory_ozone.h",
]
public_deps += [
"//skia",
"//ui/gfx/geometry",
"//ui/ozone:ozone_base",
]
}
}
Expand Down
3 changes: 0 additions & 3 deletions ui/base/cursor/DEPS

This file was deleted.

63 changes: 63 additions & 0 deletions ui/base/cursor/cursor_factory.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Copyright 2014 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 "ui/base/cursor/cursor_factory.h"

#include "base/check.h"
#include "base/check_op.h"
#include "base/notreached.h"

namespace ui {

namespace {

CursorFactory* g_instance = nullptr;

} // namespace

CursorFactory::CursorFactory() {
DCHECK(!g_instance) << "There should only be a single CursorFactory.";
g_instance = this;
}

CursorFactory::~CursorFactory() {
DCHECK_EQ(g_instance, this);
g_instance = nullptr;
}

CursorFactory* CursorFactory::GetInstance() {
DCHECK(g_instance);
return g_instance;
}

PlatformCursor CursorFactory::GetDefaultCursor(mojom::CursorType type) {
NOTIMPLEMENTED();
return 0;
}

PlatformCursor CursorFactory::CreateImageCursor(const SkBitmap& bitmap,
const gfx::Point& hotspot,
float bitmap_dpi) {
NOTIMPLEMENTED();
return 0;
}

PlatformCursor CursorFactory::CreateAnimatedCursor(
const std::vector<SkBitmap>& bitmaps,
const gfx::Point& hotspot,
int frame_delay_ms,
float bitmap_dpi) {
NOTIMPLEMENTED();
return 0;
}

void CursorFactory::RefImageCursor(PlatformCursor cursor) {
NOTIMPLEMENTED();
}

void CursorFactory::UnrefImageCursor(PlatformCursor cursor) {
NOTIMPLEMENTED();
}

} // namespace ui
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_OZONE_PUBLIC_CURSOR_FACTORY_OZONE_H_
#define UI_OZONE_PUBLIC_CURSOR_FACTORY_OZONE_H_
#ifndef UI_BASE_CURSOR_CURSOR_FACTORY_H_
#define UI_BASE_CURSOR_CURSOR_FACTORY_H_

#include <vector>

#include "base/component_export.h"
#include "ui/base/cursor/cursor.h"
#include "ui/base/cursor/mojom/cursor_type.mojom-forward.h"
#include "ui/gfx/native_widget_types.h"

class SkBitmap;

namespace gfx {
class Point;
}

namespace ui {

typedef void* PlatformCursor;

class COMPONENT_EXPORT(OZONE_BASE) CursorFactoryOzone {
class COMPONENT_EXPORT(UI_BASE_CURSOR_BASE) CursorFactory {
public:
CursorFactoryOzone();
virtual ~CursorFactoryOzone();
CursorFactory();
virtual ~CursorFactory();

// Returns the thread-local instance.
static CursorFactoryOzone* GetInstance();
static CursorFactory* GetInstance();

// Return the default cursor of the specified type. The types are listed in
// ui/base/cursor/cursor.h. Default cursors are managed by the implementation
Expand Down Expand Up @@ -58,4 +58,4 @@ class COMPONENT_EXPORT(OZONE_BASE) CursorFactoryOzone {

} // namespace ui

#endif // UI_OZONE_PUBLIC_CURSOR_FACTORY_OZONE_H_
#endif // UI_BASE_CURSOR_CURSOR_FACTORY_H_
4 changes: 2 additions & 2 deletions ui/base/cursor/cursor_loader_ozone.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

#include <vector>

#include "ui/base/cursor/cursor_factory.h"
#include "ui/base/cursor/cursor_util.h"
#include "ui/base/cursor/mojom/cursor_type.mojom-shared.h"
#include "ui/ozone/public/cursor_factory_ozone.h"

namespace ui {

CursorLoaderOzone::CursorLoaderOzone() {
factory_ = CursorFactoryOzone::GetInstance();
factory_ = CursorFactory::GetInstance();
}

CursorLoaderOzone::~CursorLoaderOzone() {
Expand Down
7 changes: 2 additions & 5 deletions ui/base/cursor/cursor_loader_ozone.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,10 @@
#include "ui/base/cursor/mojom/cursor_type.mojom-forward.h"

namespace ui {

class CursorFactoryOzone;
class CursorFactory;

class COMPONENT_EXPORT(UI_BASE_CURSOR) CursorLoaderOzone : public CursorLoader {
public:
// CursorLoaderOzone will use CursorFactoryOzone corresponding to the thread
// it was constructed on.
CursorLoaderOzone();
~CursorLoaderOzone() override;

Expand All @@ -38,7 +35,7 @@ class COMPONENT_EXPORT(UI_BASE_CURSOR) CursorLoaderOzone : public CursorLoader {
private:
// Pointers are owned by ResourceBundle and must not be freed here.
std::map<mojom::CursorType, PlatformCursor> image_cursors_;
CursorFactoryOzone* factory_ = nullptr;
CursorFactory* factory_ = nullptr;

DISALLOW_COPY_AND_ASSIGN(CursorLoaderOzone);
};
Expand Down
6 changes: 3 additions & 3 deletions ui/base/cursor/cursor_ozone.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@

#include "ui/base/cursor/cursor.h"

#include "ui/ozone/public/cursor_factory_ozone.h"
#include "ui/base/cursor/cursor_factory.h"

namespace ui {

void Cursor::RefCustomCursor() {
if (platform_cursor_)
CursorFactoryOzone::GetInstance()->RefImageCursor(platform_cursor_);
CursorFactory::GetInstance()->RefImageCursor(platform_cursor_);
}

void Cursor::UnrefCustomCursor() {
if (platform_cursor_)
CursorFactoryOzone::GetInstance()->UnrefImageCursor(platform_cursor_);
CursorFactory::GetInstance()->UnrefImageCursor(platform_cursor_);
}

} // namespace ui
6 changes: 3 additions & 3 deletions ui/base/cursor/ozone/bitmap_cursor_factory_ozone.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
#include "base/memory/ref_counted.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/cursor/cursor.h"
#include "ui/base/cursor/cursor_factory.h"
#include "ui/base/cursor/mojom/cursor_type.mojom-forward.h"
#include "ui/gfx/geometry/point.h"
#include "ui/ozone/public/cursor_factory_ozone.h"

namespace ui {

Expand Down Expand Up @@ -46,15 +46,15 @@ class COMPONENT_EXPORT(UI_BASE_CURSOR) BitmapCursorOzone
DISALLOW_COPY_AND_ASSIGN(BitmapCursorOzone);
};

// CursorFactoryOzone implementation for bitmapped cursors.
// CursorFactory implementation for bitmapped cursors.
//
// This is a base class for platforms where PlatformCursor is an SkBitmap
// combined with a gfx::Point for the hotspot.
//
// Subclasses need only implement SetBitmapCursor() as everything else is
// implemented here.
class COMPONENT_EXPORT(UI_BASE_CURSOR) BitmapCursorFactoryOzone
: public CursorFactoryOzone {
: public CursorFactory {
public:
BitmapCursorFactoryOzone();
~BitmapCursorFactoryOzone() override;
Expand Down
Loading

0 comments on commit aaa2a62

Please sign in to comment.