// Copyright (c) 2013 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_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_GTK_H_ #define CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_GTK_H_ #pragma once #include "include/cef_render_handler.h" #include "cefclient/client_handler.h" #include "cefclient/osrenderer.h" class OSRBrowserProvider { public: virtual CefRefPtr GetBrowser() =0; protected: virtual ~OSRBrowserProvider() {} }; class OSRWindow : public ClientHandler::RenderHandler { public: // Create a new OSRWindow instance. |browser_provider| must outlive this // object. static CefRefPtr Create(OSRBrowserProvider* browser_provider, bool transparent, CefWindowHandle parentView); static CefRefPtr From( CefRefPtr renderHandler); CefWindowHandle GetWindowHandle() const { return glarea_; } CefRefPtr GetBrowserHost() const { return browser_provider_->GetBrowser()->GetHost(); } // ClientHandler::RenderHandler methods virtual void OnBeforeClose(CefRefPtr browser) OVERRIDE; // CefRenderHandler methods virtual bool GetViewRect(CefRefPtr browser, CefRect& rect) OVERRIDE; virtual bool GetScreenPoint(CefRefPtr browser, int viewX, int viewY, int& screenX, int& screenY) OVERRIDE; virtual void OnPopupShow(CefRefPtr browser, bool show) OVERRIDE; virtual void OnPopupSize(CefRefPtr browser, const CefRect& rect) OVERRIDE; virtual void OnPaint(CefRefPtr browser, PaintElementType type, const RectList& dirtyRects, const void* buffer, int width, int height) OVERRIDE; virtual void OnCursorChange(CefRefPtr browser, CefCursorHandle cursor) OVERRIDE; void Invalidate(); bool IsOverPopupWidget(int x, int y) const; int GetPopupXOffset() const; int GetPopupYOffset() const; void ApplyPopupOffset(int& x, int& y) const; private: OSRWindow(OSRBrowserProvider* browser_provider, bool transparent, CefWindowHandle parentView); virtual ~OSRWindow(); void Render(); void EnableGL(); void DisableGL(); ClientOSRenderer renderer_; OSRBrowserProvider* browser_provider_; CefWindowHandle glarea_; bool gl_enabled_; bool painting_popup_; bool render_task_pending_; IMPLEMENT_REFCOUNTING(OSRWindow); }; #endif // CEF_TESTS_CEFCLIENT_CEFCLIENT_OSR_WIDGET_GTK_H_