2015-11-17 19:20:13 +01:00
|
|
|
// Copyright 2015 The Chromium Embedded Framework Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
|
|
|
#ifndef CEF_LIBCEF_BROWSER_NATIVE_BROWSER_PLATFORM_DELEGATE_NATIVE_H_
|
|
|
|
#define CEF_LIBCEF_BROWSER_NATIVE_BROWSER_PLATFORM_DELEGATE_NATIVE_H_
|
|
|
|
|
|
|
|
#include "libcef/browser/browser_platform_delegate.h"
|
|
|
|
|
|
|
|
// Base implementation of native browser functionality.
|
|
|
|
class CefBrowserPlatformDelegateNative : public CefBrowserPlatformDelegate {
|
|
|
|
public:
|
|
|
|
// Used by the windowless implementation to override specific functionality
|
|
|
|
// when delegating to the native implementation.
|
|
|
|
class WindowlessHandler {
|
|
|
|
public:
|
|
|
|
// Returns the parent window handle.
|
|
|
|
virtual CefWindowHandle GetParentWindowHandle() const = 0;
|
|
|
|
|
|
|
|
// Convert from view coordinates to screen coordinates.
|
|
|
|
virtual gfx::Point GetParentScreenPoint(const gfx::Point& view) const = 0;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual ~WindowlessHandler() {}
|
|
|
|
};
|
|
|
|
|
|
|
|
// CefBrowserPlatformDelegate methods:
|
2018-07-03 02:46:03 +02:00
|
|
|
bool CanUseSharedTexture() const override;
|
|
|
|
bool CanUseExternalBeginFrame() const override;
|
2017-04-20 21:28:17 +02:00
|
|
|
SkColor GetBackgroundColor() const override;
|
2018-05-17 10:58:21 +02:00
|
|
|
void SynchronizeVisualProperties() override;
|
2015-11-17 19:20:13 +01:00
|
|
|
bool IsWindowless() const override;
|
2016-01-19 21:09:01 +01:00
|
|
|
bool IsViewsHosted() const override;
|
2015-11-17 19:20:13 +01:00
|
|
|
|
2020-01-23 22:58:01 +01:00
|
|
|
// Translate CEF events to Chromium/Blink Web events.
|
|
|
|
virtual content::NativeWebKeyboardEvent TranslateWebKeyEvent(
|
|
|
|
const CefKeyEvent& key_event) const = 0;
|
|
|
|
virtual blink::WebMouseEvent TranslateWebClickEvent(
|
|
|
|
const CefMouseEvent& mouse_event,
|
|
|
|
CefBrowserHost::MouseButtonType type,
|
|
|
|
bool mouseUp,
|
|
|
|
int clickCount) const = 0;
|
|
|
|
virtual blink::WebMouseEvent TranslateWebMoveEvent(
|
|
|
|
const CefMouseEvent& mouse_event,
|
|
|
|
bool mouseLeave) const = 0;
|
|
|
|
virtual blink::WebMouseWheelEvent TranslateWebWheelEvent(
|
|
|
|
const CefMouseEvent& mouse_event,
|
|
|
|
int deltaX,
|
|
|
|
int deltaY) const = 0;
|
2015-11-17 19:20:13 +01:00
|
|
|
|
2020-01-23 22:58:01 +01:00
|
|
|
const CefWindowInfo& window_info() const { return window_info_; }
|
2015-11-17 19:20:13 +01:00
|
|
|
|
|
|
|
protected:
|
2020-01-23 22:58:01 +01:00
|
|
|
// Delegates that can wrap a native delegate.
|
|
|
|
friend class CefBrowserPlatformDelegateBackground;
|
|
|
|
friend class CefBrowserPlatformDelegateOsr;
|
|
|
|
friend class CefBrowserPlatformDelegateViews;
|
|
|
|
|
2017-04-20 21:28:17 +02:00
|
|
|
CefBrowserPlatformDelegateNative(const CefWindowInfo& window_info,
|
2018-07-03 02:46:03 +02:00
|
|
|
SkColor background_color,
|
|
|
|
bool use_shared_texture,
|
|
|
|
bool use_external_begin_frame);
|
2015-11-17 19:20:13 +01:00
|
|
|
|
2020-01-23 22:58:01 +01:00
|
|
|
// Methods used by delegates that can wrap a native delegate.
|
|
|
|
void set_windowless_handler(WindowlessHandler* handler) {
|
|
|
|
windowless_handler_ = handler;
|
|
|
|
}
|
|
|
|
void set_browser(CefBrowserHostImpl* browser) { browser_ = browser; }
|
|
|
|
|
2015-11-17 19:20:13 +01:00
|
|
|
CefWindowInfo window_info_;
|
2017-04-20 21:28:17 +02:00
|
|
|
const SkColor background_color_;
|
2018-07-03 02:46:03 +02:00
|
|
|
const bool use_shared_texture_;
|
|
|
|
const bool use_external_begin_frame_;
|
2015-11-17 19:20:13 +01:00
|
|
|
|
|
|
|
WindowlessHandler* windowless_handler_; // Not owned by this object.
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // CEF_LIBCEF_BROWSER_NATIVE_BROWSER_PLATFORM_DELEGATE_NATIVE_H_
|