mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
- Factor platform-specific code out of CefBrowserHostImpl (issue #1749).
- Introduce native/ and osr/ folders for native (non-platform-agnostic) and osr (windowless) code respectively. - Introduce CefBrowserPlatformDelegate for abstracting platform-specific implementations of browser host functionality. - Move dialog and menu code to separate manager and platform-specific runner implementations exposed via CefBrowserPlatformDelegate. - Standardize focus-handling behavior between windowed and windowless implementations. CefFocusHandler::OnSetFocus() will now also be called for osr focus changes. - Support multiple simultaneous popups (issue #1289).
This commit is contained in:
48
libcef/browser/native/browser_platform_delegate_native.h
Normal file
48
libcef/browser/native/browser_platform_delegate_native.h
Normal file
@@ -0,0 +1,48 @@
|
||||
// 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:
|
||||
void WasResized() override;
|
||||
void SendKeyEvent(const content::NativeWebKeyboardEvent& event) override;
|
||||
void SendMouseEvent(const blink::WebMouseEvent& event) override;
|
||||
void SendMouseWheelEvent(const blink::WebMouseWheelEvent& event) override;
|
||||
bool IsWindowless() const override;
|
||||
|
||||
const CefWindowInfo& window_info() const { return window_info_; }
|
||||
|
||||
void set_windowless_handler(WindowlessHandler* handler) {
|
||||
windowless_handler_ = handler;
|
||||
}
|
||||
|
||||
protected:
|
||||
explicit CefBrowserPlatformDelegateNative(const CefWindowInfo& window_info);
|
||||
|
||||
CefWindowInfo window_info_;
|
||||
|
||||
WindowlessHandler* windowless_handler_; // Not owned by this object.
|
||||
};
|
||||
|
||||
#endif // CEF_LIBCEF_BROWSER_NATIVE_BROWSER_PLATFORM_DELEGATE_NATIVE_H_
|
Reference in New Issue
Block a user