diff --git a/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas b/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas
index 2a844a66..85c9c3f5 100644
--- a/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas
+++ b/demos/FMXExternalPumpBrowser/uFMXExternalPumpBrowser.pas
@@ -89,7 +89,7 @@ type
procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
procedure chrmosrCursorChange(Sender: TObject; const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
- procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect; out Result: Boolean);
+ procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect);
procedure chrmosrGetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer; out Result: Boolean);
procedure chrmosrGetScreenInfo(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean);
procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean);
@@ -579,8 +579,7 @@ end;
procedure TFMXExternalPumpBrowserFrm.chrmosrGetViewRect(Sender : TObject;
const browser : ICefBrowser;
- var rect : TCefRect;
- out Result : Boolean);
+ var rect : TCefRect);
begin
if (GlobalCEFApp <> nil) then
begin
@@ -588,10 +587,7 @@ begin
rect.y := 0;
rect.width := round(Panel1.Width);
rect.height := round(Panel1.Height);
- Result := True;
- end
- else
- Result := False;
+ end;
end;
procedure TFMXExternalPumpBrowserFrm.chrmosrPaint(Sender : TObject;
diff --git a/demos/KioskOSRBrowser/uKioskOSRBrowser.pas b/demos/KioskOSRBrowser/uKioskOSRBrowser.pas
index 33fd7721..53587418 100644
--- a/demos/KioskOSRBrowser/uKioskOSRBrowser.pas
+++ b/demos/KioskOSRBrowser/uKioskOSRBrowser.pas
@@ -94,7 +94,7 @@ type
procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
procedure chrmosrCursorChange(Sender: TObject; const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
- procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect; out Result: Boolean);
+ procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect);
procedure chrmosrGetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer; out Result: Boolean);
procedure chrmosrGetScreenInfo(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean);
procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean);
@@ -479,8 +479,7 @@ end;
procedure TForm1.chrmosrGetViewRect( Sender : TObject;
const browser : ICefBrowser;
- var rect : TCefRect;
- out Result : Boolean);
+ var rect : TCefRect);
begin
if (GlobalCEFApp <> nil) then
begin
@@ -488,10 +487,7 @@ begin
rect.y := 0;
rect.width := DeviceToLogical(Panel1.Width, GlobalCEFApp.DeviceScaleFactor);
rect.height := DeviceToLogical(Panel1.Height, GlobalCEFApp.DeviceScaleFactor);
- Result := True;
- end
- else
- Result := False;
+ end;
end;
procedure TForm1.chrmosrPaint( Sender : TObject;
diff --git a/demos/MiniBrowser/uMiniBrowser.dfm b/demos/MiniBrowser/uMiniBrowser.dfm
index 6a15e762..dcecf727 100644
--- a/demos/MiniBrowser/uMiniBrowser.dfm
+++ b/demos/MiniBrowser/uMiniBrowser.dfm
@@ -153,6 +153,9 @@ object MiniBrowserFrm: TMiniBrowserFrm
'https://www.w3schools.com/Tags/tryit.asp?filename=tryhtml_iframe' +
'_name'
+
+ 'http://www-db.deis.unibo.it/courses/TW/DOCS/w3schools/html/tryit' +
+ '.asp-filename=tryhtml5_html_manifest.html'
'https://www.browserleaks.com/webrtc'
'https://frames-per-second.appspot.com/'
'chrome://version/'
diff --git a/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas b/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
index 18f9a927..001dd34e 100644
--- a/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
+++ b/demos/OSRExternalPumpBrowser/uOSRExternalPumpBrowser.pas
@@ -88,7 +88,7 @@ type
procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
procedure chrmosrCursorChange(Sender: TObject; const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
- procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect; out Result: Boolean);
+ procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect);
procedure chrmosrGetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer; out Result: Boolean);
procedure chrmosrGetScreenInfo(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean);
procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean);
@@ -405,8 +405,7 @@ end;
procedure TOSRExternalPumpBrowserFrm.chrmosrGetViewRect(Sender : TObject;
const browser : ICefBrowser;
- var rect : TCefRect;
- out Result : Boolean);
+ var rect : TCefRect);
begin
if (GlobalCEFApp <> nil) then
begin
@@ -414,10 +413,7 @@ begin
rect.y := 0;
rect.width := DeviceToLogical(Panel1.Width, GlobalCEFApp.DeviceScaleFactor);
rect.height := DeviceToLogical(Panel1.Height, GlobalCEFApp.DeviceScaleFactor);
- Result := True;
- end
- else
- Result := False;
+ end;
end;
procedure TOSRExternalPumpBrowserFrm.chrmosrPaint(Sender : TObject;
diff --git a/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps b/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps
index 1674b0f2..91b1d3d1 100644
--- a/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps
+++ b/demos/SimpleLazOSRBrowser/SimpleLazOSRBrowser.lps
@@ -8,9 +8,10 @@
+
-
-
+
+
@@ -20,15 +21,14 @@
-
-
-
+
+
+
-
+
-
@@ -164,11 +164,9 @@
-
-
-
-
-
-
+
+
+
+
diff --git a/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas b/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas
index 5d9ba34e..f86b4739 100644
--- a/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas
+++ b/demos/SimpleLazOSRBrowser/usimplelazosrbrowser.pas
@@ -86,7 +86,7 @@ type
procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; aWidth, aHeight: Integer);
procedure chrmosrCursorChange(Sender: TObject; const browser: ICefBrowser; aCursor: HICON; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
- procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect; out Result: Boolean);
+ procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect);
procedure chrmosrGetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer; out Result: Boolean);
procedure chrmosrGetScreenInfo(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean);
procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; aShow: Boolean);
@@ -284,8 +284,7 @@ end;
procedure TForm1.chrmosrGetViewRect(Sender : TObject;
const browser : ICefBrowser;
- var rect : TCefRect;
- out Result : Boolean);
+ var rect : TCefRect);
begin
if (GlobalCEFApp <> nil) then
begin
@@ -293,10 +292,7 @@ begin
rect.y := 0;
rect.width := DeviceToLogical(Panel1.Width, GlobalCEFApp.DeviceScaleFactor);
rect.height := DeviceToLogical(Panel1.Height, GlobalCEFApp.DeviceScaleFactor);
- Result := True;
- end
- else
- Result := False;
+ end;
end;
procedure TForm1.chrmosrPaint(Sender: TObject; const browser: ICefBrowser;
diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm
index b57a044a..e9dd2436 100644
--- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm
+++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm
@@ -99,7 +99,6 @@ object Form1: TForm1
TabOrder = 1
OnClick = SnapshotBtnClick
OnEnter = SnapshotBtnEnter
- ExplicitLeft = 72
end
end
end
@@ -120,7 +119,6 @@ object Form1: TForm1
OnMouseUp = Panel1MouseUp
OnResize = Panel1Resize
OnMouseLeave = Panel1MouseLeave
- ExplicitHeight = 458
end
object chrmosr: TChromium
OnTooltip = chrmosrTooltip
diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas
index 08e52974..6bb4b527 100644
--- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas
+++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas
@@ -88,7 +88,7 @@ type
procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
procedure chrmosrCursorChange(Sender: TObject; const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
- procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect; out Result: Boolean);
+ procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect);
procedure chrmosrGetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer; out Result: Boolean);
procedure chrmosrGetScreenInfo(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean);
procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean);
@@ -384,8 +384,7 @@ end;
procedure TForm1.chrmosrGetViewRect(Sender : TObject;
const browser : ICefBrowser;
- var rect : TCefRect;
- out Result : Boolean);
+ var rect : TCefRect);
begin
if (GlobalCEFApp <> nil) then
begin
@@ -393,10 +392,7 @@ begin
rect.y := 0;
rect.width := DeviceToLogical(Panel1.Width, GlobalCEFApp.DeviceScaleFactor);
rect.height := DeviceToLogical(Panel1.Height, GlobalCEFApp.DeviceScaleFactor);
- Result := True;
- end
- else
- Result := False;
+ end;
end;
procedure TForm1.chrmosrPaint(Sender : TObject;
diff --git a/source/uCEFApplication.pas b/source/uCEFApplication.pas
index 07934ee4..6d27b5e0 100644
--- a/source/uCEFApplication.pas
+++ b/source/uCEFApplication.pas
@@ -58,14 +58,14 @@ uses
const
CEF_SUPPORTED_VERSION_MAJOR = 3;
- CEF_SUPPORTED_VERSION_MINOR = 3538;
- CEF_SUPPORTED_VERSION_RELEASE = 1852;
+ CEF_SUPPORTED_VERSION_MINOR = 3578;
+ CEF_SUPPORTED_VERSION_RELEASE = 1860;
CEF_SUPPORTED_VERSION_BUILD = 0;
- CEF_CHROMEELF_VERSION_MAJOR = 70;
+ CEF_CHROMEELF_VERSION_MAJOR = 71;
CEF_CHROMEELF_VERSION_MINOR = 0;
- CEF_CHROMEELF_VERSION_RELEASE = 3538;
- CEF_CHROMEELF_VERSION_BUILD = 102;
+ CEF_CHROMEELF_VERSION_RELEASE = 3578;
+ CEF_CHROMEELF_VERSION_BUILD = 80;
LIBCEF_DLL = 'libcef.dll';
CHROMEELF_DLL = 'chrome_elf.dll';
diff --git a/source/uCEFBrowser.pas b/source/uCEFBrowser.pas
index 88306b25..14016b8d 100644
--- a/source/uCEFBrowser.pas
+++ b/source/uCEFBrowser.pas
@@ -121,6 +121,7 @@ type
procedure NotifyScreenInfoChanged;
procedure WasHidden(hidden: Boolean);
procedure Invalidate(kind: TCefPaintElementType);
+ procedure SendExternalBeginFrame;
procedure SendKeyEvent(const event: PCefKeyEvent);
procedure SendMouseClickEvent(const event: PCefMouseEvent; kind: TCefMouseButtonType; mouseUp: Boolean; clickCount: Integer);
procedure SendMouseMoveEvent(const event: PCefMouseEvent; mouseLeave: Boolean);
@@ -157,6 +158,9 @@ uses
uCEFRunFileDialogCallback, uCEFRequestContext, uCEFNavigationEntryVisitor, uCEFNavigationEntry,
uCEFExtension, uCEFStringList;
+
+// TCefBrowserRef
+
function TCefBrowserRef.GetHost: ICefBrowserHost;
begin
Result := TCefBrowserHostRef.UnWrap(PCefBrowser(FData)^.get_host(PCefBrowser(FData)));
@@ -305,11 +309,12 @@ begin
Result := nil;
end;
+
// TCefBrowserHostRef
procedure TCefBrowserHostRef.CloseDevTools;
begin
- PCefBrowserHost(FData)^.close_dev_tools(FData);
+ PCefBrowserHost(FData)^.close_dev_tools(PCefBrowserHost(FData));
end;
procedure TCefBrowserHostRef.DownloadImage(const imageUrl : ustring;
@@ -321,7 +326,12 @@ var
url: TCefString;
begin
url := CefString(imageUrl);
- PCefBrowserHost(FData)^.download_image(FData, @url, Ord(isFavicon), maxImageSize, Ord(bypassCache), CefGetData(callback));
+ PCefBrowserHost(FData)^.download_image(PCefBrowserHost(FData),
+ @url,
+ Ord(isFavicon),
+ maxImageSize,
+ Ord(bypassCache),
+ CefGetData(callback));
end;
procedure TCefBrowserHostRef.DownloadImageProc(const imageUrl : ustring;
@@ -335,12 +345,12 @@ end;
procedure TCefBrowserHostRef.DragSourceEndedAt(x, y: Integer; op: TCefDragOperation);
begin
- PCefBrowserHost(FData)^.drag_source_ended_at(FData, x, y, op);
+ PCefBrowserHost(FData)^.drag_source_ended_at(PCefBrowserHost(FData), x, y, op);
end;
procedure TCefBrowserHostRef.DragSourceSystemDragEnded;
begin
- PCefBrowserHost(FData)^.drag_source_system_drag_ended(FData);
+ PCefBrowserHost(FData)^.drag_source_system_drag_ended(PCefBrowserHost(FData));
end;
function TCefBrowserHostRef.GetVisibleNavigationEntry : ICefNavigationEntry;
@@ -350,42 +360,42 @@ end;
procedure TCefBrowserHostRef.SetAccessibilityState(accessibilityState: TCefState);
begin
- PCefBrowserHost(FData)^.set_accessibility_state(FData, accessibilityState);
+ PCefBrowserHost(FData)^.set_accessibility_state(PCefBrowserHost(FData), accessibilityState);
end;
procedure TCefBrowserHostRef.SetAutoResizeEnabled(enabled: boolean; const min_size, max_size: PCefSize);
begin
- PCefBrowserHost(FData)^.set_auto_resize_enabled(FData, Ord(enabled), min_size, max_size);
+ PCefBrowserHost(FData)^.set_auto_resize_enabled(PCefBrowserHost(FData), Ord(enabled), min_size, max_size);
end;
function TCefBrowserHostRef.GetExtension : ICefExtension;
begin
- Result := TCefExtensionRef.UnWrap(PCefBrowserHost(FData)^.get_extension(FData));
+ Result := TCefExtensionRef.UnWrap(PCefBrowserHost(FData)^.get_extension(PCefBrowserHost(FData)));
end;
function TCefBrowserHostRef.IsBackgroundHost : boolean;
begin
- Result := PCefBrowserHost(FData)^.is_background_host(FData) <> 0;
+ Result := PCefBrowserHost(FData)^.is_background_host(PCefBrowserHost(FData)) <> 0;
end;
procedure TCefBrowserHostRef.DragTargetDragEnter(const dragData: ICefDragData; const event: PCefMouseEvent; allowedOps: TCefDragOperations);
begin
- PCefBrowserHost(FData)^.drag_target_drag_enter(FData, CefGetData(dragData), event, allowedOps);
+ PCefBrowserHost(FData)^.drag_target_drag_enter(PCefBrowserHost(FData), CefGetData(dragData), event, allowedOps);
end;
procedure TCefBrowserHostRef.DragTargetDragLeave;
begin
- PCefBrowserHost(FData)^.drag_target_drag_leave(FData);
+ PCefBrowserHost(FData)^.drag_target_drag_leave(PCefBrowserHost(FData));
end;
procedure TCefBrowserHostRef.DragTargetDragOver(const event: PCefMouseEvent; allowedOps: TCefDragOperations);
begin
- PCefBrowserHost(FData)^.drag_target_drag_over(FData, event, allowedOps);
+ PCefBrowserHost(FData)^.drag_target_drag_over(PCefBrowserHost(FData), event, allowedOps);
end;
procedure TCefBrowserHostRef.DragTargetDrop(event: PCefMouseEvent);
begin
- PCefBrowserHost(FData)^.drag_target_drop(FData, event);
+ PCefBrowserHost(FData)^.drag_target_drop(PCefBrowserHost(FData), event);
end;
procedure TCefBrowserHostRef.Find(identifier: Integer; const searchText: ustring; forward, matchCase, findNext: Boolean);
@@ -393,7 +403,7 @@ var
TempText : TCefString;
begin
TempText := CefString(searchText);
- PCefBrowserHost(FData)^.find(FData, identifier, @TempText, Ord(forward), Ord(matchCase), Ord(findNext));
+ PCefBrowserHost(FData)^.find(PCefBrowserHost(FData), identifier, @TempText, Ord(forward), Ord(matchCase), Ord(findNext));
end;
function TCefBrowserHostRef.GetBrowser: ICefBrowser;
@@ -413,7 +423,7 @@ var
str: TCefString;
begin
str := CefString(path);
- PCefBrowserHost(FData)^.print_to_pdf(FData, @str, settings, CefGetData(callback));
+ PCefBrowserHost(FData)^.print_to_pdf(PCefBrowserHost(FData), @str, settings, CefGetData(callback));
end;
procedure TCefBrowserHostRef.PrintToPdfProc(const path : ustring;
@@ -428,7 +438,7 @@ var
str: TCefString;
begin
str := CefString(word);
- PCefBrowserHost(FData)^.replace_misspelling(FData, @str);
+ PCefBrowserHost(FData)^.replace_misspelling(PCefBrowserHost(FData), @str);
end;
procedure TCefBrowserHostRef.RunFileDialog( mode : TCefFileDialogMode;
@@ -475,7 +485,7 @@ var
str: TCefString;
begin
str := CefString(word);
- PCefBrowserHost(FData)^.add_word_to_dictionary(FData, @str);
+ PCefBrowserHost(FData)^.add_word_to_dictionary(PCefBrowserHost(FData), @str);
end;
procedure TCefBrowserHostRef.CloseBrowser(forceClose: Boolean);
@@ -485,17 +495,17 @@ end;
procedure TCefBrowserHostRef.SendCaptureLostEvent;
begin
- PCefBrowserHost(FData)^.send_capture_lost_event(FData);
+ PCefBrowserHost(FData)^.send_capture_lost_event(PCefBrowserHost(FData));
end;
procedure TCefBrowserHostRef.SendFocusEvent(aSetFocus: Boolean);
begin
- PCefBrowserHost(FData)^.send_focus_event(FData, Ord(aSetFocus));
+ PCefBrowserHost(FData)^.send_focus_event(PCefBrowserHost(FData), Ord(aSetFocus));
end;
procedure TCefBrowserHostRef.SendKeyEvent(const event: PCefKeyEvent);
begin
- PCefBrowserHost(FData)^.send_key_event(FData, event);
+ PCefBrowserHost(FData)^.send_key_event(PCefBrowserHost(FData), event);
end;
procedure TCefBrowserHostRef.SendMouseClickEvent(const event : PCefMouseEvent;
@@ -503,17 +513,17 @@ procedure TCefBrowserHostRef.SendMouseClickEvent(const event : PCefMouseEve
mouseUp : Boolean;
clickCount : Integer);
begin
- PCefBrowserHost(FData)^.send_mouse_click_event(FData, event, kind, Ord(mouseUp), clickCount);
+ PCefBrowserHost(FData)^.send_mouse_click_event(PCefBrowserHost(FData), event, kind, Ord(mouseUp), clickCount);
end;
procedure TCefBrowserHostRef.SendMouseMoveEvent(const event: PCefMouseEvent; mouseLeave: Boolean);
begin
- PCefBrowserHost(FData)^.send_mouse_move_event(FData, event, Ord(mouseLeave));
+ PCefBrowserHost(FData)^.send_mouse_move_event(PCefBrowserHost(FData), event, Ord(mouseLeave));
end;
procedure TCefBrowserHostRef.SendMouseWheelEvent(const event: PCefMouseEvent; deltaX, deltaY: Integer);
begin
- PCefBrowserHost(FData)^.send_mouse_wheel_event(FData, event, deltaX, deltaY);
+ PCefBrowserHost(FData)^.send_mouse_wheel_event(PCefBrowserHost(FData), event, deltaX, deltaY);
end;
procedure TCefBrowserHostRef.SetFocus(focus: Boolean);
@@ -548,12 +558,12 @@ end;
function TCefBrowserHostRef.GetRequestContext: ICefRequestContext;
begin
- Result := TCefRequestContextRef.UnWrap(PCefBrowserHost(FData)^.get_request_context(FData));
+ Result := TCefRequestContextRef.UnWrap(PCefBrowserHost(FData)^.get_request_context(PCefBrowserHost(FData)));
end;
procedure TCefBrowserHostRef.GetNavigationEntries(const visitor: ICefNavigationEntryVisitor; currentOnly: Boolean);
begin
- PCefBrowserHost(FData)^.get_navigation_entries(FData, CefGetData(visitor), Ord(currentOnly));
+ PCefBrowserHost(FData)^.get_navigation_entries(PCefBrowserHost(FData), CefGetData(visitor), Ord(currentOnly));
end;
procedure TCefBrowserHostRef.GetNavigationEntriesProc(const proc: TCefNavigationEntryVisitorProc; currentOnly: Boolean);
@@ -575,7 +585,12 @@ var
TempString : TCefString;
begin
TempString := CefString(text);
- PCefBrowserHost(FData)^.ime_set_composition(PCefBrowserHost(FData), @TempString, underlinesCount, underlines, replacement_range, selection_range);
+ PCefBrowserHost(FData)^.ime_set_composition(PCefBrowserHost(FData),
+ @TempString,
+ underlinesCount,
+ underlines,
+ replacement_range,
+ selection_range);
end;
procedure TCefBrowserHostRef.IMECommitText(const text: ustring; const replacement_range : PCefRange; relative_cursor_pos : integer);
@@ -598,27 +613,32 @@ end;
function TCefBrowserHostRef.HasDevTools: Boolean;
begin
- Result := PCefBrowserHost(FData)^.has_dev_tools(FData) <> 0;
+ Result := PCefBrowserHost(FData)^.has_dev_tools(PCefBrowserHost(FData)) <> 0;
end;
function TCefBrowserHostRef.HasView: Boolean;
begin
- Result := PCefBrowserHost(FData)^.has_view(FData) <> 0;
+ Result := PCefBrowserHost(FData)^.has_view(PCefBrowserHost(FData)) <> 0;
end;
procedure TCefBrowserHostRef.Invalidate(kind: TCefPaintElementType);
begin
- PCefBrowserHost(FData)^.invalidate(FData, kind);
+ PCefBrowserHost(FData)^.invalidate(PCefBrowserHost(FData), kind);
+end;
+
+procedure TCefBrowserHostRef.SendExternalBeginFrame;
+begin
+ PCefBrowserHost(FData)^.send_external_begin_frame(PCefBrowserHost(FData));
end;
function TCefBrowserHostRef.IsMouseCursorChangeDisabled: Boolean;
begin
- Result := PCefBrowserHost(FData)^.is_mouse_cursor_change_disabled(FData) <> 0;
+ Result := PCefBrowserHost(FData)^.is_mouse_cursor_change_disabled(PCefBrowserHost(FData)) <> 0;
end;
function TCefBrowserHostRef.IsWindowRenderingDisabled: Boolean;
begin
- Result := PCefBrowserHost(FData)^.is_window_rendering_disabled(FData) <> 0;
+ Result := PCefBrowserHost(FData)^.is_window_rendering_disabled(PCefBrowserHost(FData)) <> 0;
end;
procedure TCefBrowserHostRef.NotifyMoveOrResizeStarted;
@@ -641,7 +661,11 @@ procedure TCefBrowserHostRef.ShowDevTools(const windowInfo : PCefWindowInf
const settings : PCefBrowserSettings;
inspectElementAt : PCefPoint);
begin
- PCefBrowserHost(FData)^.show_dev_tools(FData, windowInfo, CefGetData(client), settings, inspectElementAt);
+ PCefBrowserHost(FData)^.show_dev_tools(PCefBrowserHost(FData),
+ windowInfo,
+ CefGetData(client),
+ settings,
+ inspectElementAt);
end;
procedure TCefBrowserHostRef.StartDownload(const url: ustring);
@@ -654,12 +678,12 @@ end;
procedure TCefBrowserHostRef.StopFinding(clearSelection: Boolean);
begin
- PCefBrowserHost(FData)^.stop_finding(FData, Ord(clearSelection));
+ PCefBrowserHost(FData)^.stop_finding(PCefBrowserHost(FData), Ord(clearSelection));
end;
function TCefBrowserHostRef.TryCloseBrowser: Boolean;
begin
- Result := PCefBrowserHost(FData)^.try_close_browser(FData) <> 0;
+ Result := PCefBrowserHost(FData)^.try_close_browser(PCefBrowserHost(FData)) <> 0;
end;
class function TCefBrowserHostRef.UnWrap(data: Pointer): ICefBrowserHost;
@@ -672,12 +696,12 @@ end;
procedure TCefBrowserHostRef.WasHidden(hidden: Boolean);
begin
- PCefBrowserHost(FData)^.was_hidden(FData, Ord(hidden));
+ PCefBrowserHost(FData)^.was_hidden(PCefBrowserHost(FData), Ord(hidden));
end;
procedure TCefBrowserHostRef.WasResized;
begin
- PCefBrowserHost(FData)^.was_resized(FData);
+ PCefBrowserHost(FData)^.was_resized(PCefBrowserHost(FData));
end;
diff --git a/source/uCEFChromium.pas b/source/uCEFChromium.pas
index 5923f81c..ff8eedb8 100644
--- a/source/uCEFChromium.pas
+++ b/source/uCEFChromium.pas
@@ -212,6 +212,7 @@ type
FOnPopupShow : TOnPopupShow;
FOnPopupSize : TOnPopupSize;
FOnPaint : TOnPaint;
+ FOnAcceleratedPaint : TOnAcceleratedPaint;
FOnCursorChange : TOnCursorChange;
FOnStartDragging : TOnStartDragging;
FOnUpdateDragCursor : TOnUpdateDragCursor;
@@ -435,12 +436,13 @@ type
// ICefRenderHandler
procedure doOnGetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler); virtual;
function doOnGetRootScreenRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; virtual;
- function doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; virtual;
+ procedure doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect); virtual;
function doOnGetScreenPoint(const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer): Boolean; virtual;
function doOnGetScreenInfo(const browser: ICefBrowser; var screenInfo: TCefScreenInfo): Boolean; virtual;
procedure doOnPopupShow(const browser: ICefBrowser; show: Boolean); virtual;
procedure doOnPopupSize(const browser: ICefBrowser; const rect: PCefRect); virtual;
procedure doOnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); virtual;
+ procedure doOnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); virtual;
procedure doOnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); virtual;
function doOnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; virtual;
procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual;
@@ -544,6 +546,7 @@ type
procedure NotifyScreenInfoChanged;
procedure NotifyMoveOrResizeStarted;
procedure Invalidate(kind: TCefPaintElementType = PET_VIEW);
+ procedure SendExternalBeginFrame;
procedure SendKeyEvent(const event: PCefKeyEvent);
procedure SendMouseClickEvent(const event: PCefMouseEvent; kind: TCefMouseButtonType; mouseUp: Boolean; clickCount: Integer);
procedure SendMouseMoveEvent(const event: PCefMouseEvent; mouseLeave: Boolean);
@@ -719,6 +722,7 @@ type
property OnPopupShow : TOnPopupShow read FOnPopupShow write FOnPopupShow;
property OnPopupSize : TOnPopupSize read FOnPopupSize write FOnPopupSize;
property OnPaint : TOnPaint read FOnPaint write FOnPaint;
+ property OnAcceleratedPaint : TOnAcceleratedPaint read FOnAcceleratedPaint write FOnAcceleratedPaint;
property OnCursorChange : TOnCursorChange read FOnCursorChange write FOnCursorChange;
property OnStartDragging : TOnStartDragging read FOnStartDragging write FOnStartDragging;
property OnUpdateDragCursor : TOnUpdateDragCursor read FOnUpdateDragCursor write FOnUpdateDragCursor;
@@ -1071,6 +1075,7 @@ begin
FOnPopupShow := nil;
FOnPopupSize := nil;
FOnPaint := nil;
+ FOnAcceleratedPaint := nil;
FOnCursorChange := nil;
FOnStartDragging := nil;
FOnUpdateDragCursor := nil;
@@ -3460,11 +3465,9 @@ begin
if Assigned(FOnGetScreenPoint) then FOnGetScreenPoint(Self, browser, viewX, viewY, screenX, screenY, Result);
end;
-function TChromium.doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
+procedure TChromium.doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect);
begin
- Result := False;
-
- if Assigned(FOnGetViewRect) then FOnGetViewRect(Self, browser, rect, Result);
+ if Assigned(FOnGetViewRect) then FOnGetViewRect(Self, browser, rect);
end;
procedure TChromium.doOnGotFocus(const browser: ICefBrowser);
@@ -3552,6 +3555,15 @@ begin
if Assigned(FOnPaint) then FOnPaint(Self, browser, kind, dirtyRectsCount, dirtyRects, buffer, width, height);
end;
+procedure TChromium.doOnAcceleratedPaint(const browser : ICefBrowser;
+ kind : TCefPaintElementType;
+ dirtyRectsCount : NativeUInt;
+ const dirtyRects : PCefRectArray;
+ shared_handle : Pointer);
+begin
+ if Assigned(FOnAcceleratedPaint) then FOnAcceleratedPaint(Self, browser, kind, dirtyRectsCount, dirtyRects, shared_handle);
+end;
+
function TChromium.doOnSelectClientCertificate(const browser : ICefBrowser;
isProxy : boolean;
const host : ustring;
@@ -3948,6 +3960,11 @@ begin
end;
end;
+procedure TChromium.SendExternalBeginFrame;
+begin
+ if Initialized then FBrowser.Host.SendExternalBeginFrame;
+end;
+
procedure TChromium.SendKeyEvent(const event: PCefKeyEvent);
begin
if Initialized then FBrowser.Host.SendKeyEvent(event);
diff --git a/source/uCEFChromiumEvents.pas b/source/uCEFChromiumEvents.pas
index f863422b..a7a7d9f8 100644
--- a/source/uCEFChromiumEvents.pas
+++ b/source/uCEFChromiumEvents.pas
@@ -134,12 +134,13 @@ type
// ICefRenderHandler
TOnGetAccessibilityHandler = procedure(Sender: TObject; var aAccessibilityHandler : ICefAccessibilityHandler) of Object;
TOnGetRootScreenRect = procedure(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect; out Result: Boolean) of Object;
- TOnGetViewRect = procedure(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect; out Result: Boolean) of Object;
+ TOnGetViewRect = procedure(Sender: TObject; const browser: ICefBrowser; var rect: TCefRect) of Object;
TOnGetScreenPoint = procedure(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer; out Result: Boolean) of Object;
TOnGetScreenInfo = procedure(Sender: TObject; const browser: ICefBrowser; var screenInfo: TCefScreenInfo; out Result: Boolean) of Object;
TOnPopupShow = procedure(Sender: TObject; const browser: ICefBrowser; show: Boolean) of Object;
TOnPopupSize = procedure(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect) of Object;
TOnPaint = procedure(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer) of Object;
+ TOnAcceleratedPaint = procedure(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer) of Object;
TOnCursorChange = procedure(Sender: TObject; const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo) of Object;
TOnStartDragging = procedure(Sender: TObject; const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer; out Result: Boolean) of Object;
TOnUpdateDragCursor = procedure(Sender: TObject; const browser: ICefBrowser; operation: TCefDragOperation) of Object;
diff --git a/source/uCEFInterfaces.pas b/source/uCEFInterfaces.pas
index e4a4dad3..d01fbc5a 100644
--- a/source/uCEFInterfaces.pas
+++ b/source/uCEFInterfaces.pas
@@ -342,12 +342,13 @@ type
// ICefRenderHandler
procedure doOnGetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler);
function doOnGetRootScreenRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
- function doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
+ procedure doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect);
function doOnGetScreenPoint(const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer): Boolean;
function doOnGetScreenInfo(const browser: ICefBrowser; var screenInfo: TCefScreenInfo): Boolean;
procedure doOnPopupShow(const browser: ICefBrowser; show: Boolean);
procedure doOnPopupSize(const browser: ICefBrowser; const rect: PCefRect);
procedure doOnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
+ procedure doOnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer);
procedure doOnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
function doOnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean;
procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation);
@@ -478,6 +479,7 @@ type
procedure WasHidden(hidden: Boolean);
procedure NotifyScreenInfoChanged;
procedure Invalidate(kind: TCefPaintElementType);
+ procedure SendExternalBeginFrame;
procedure SendKeyEvent(const event: PCefKeyEvent);
procedure SendMouseClickEvent(const event: PCefMouseEvent; kind: TCefMouseButtonType; mouseUp: Boolean; clickCount: Integer);
procedure SendMouseMoveEvent(const event: PCefMouseEvent; mouseLeave: Boolean);
@@ -1733,12 +1735,13 @@ type
['{1FC1C22B-085A-4741-9366-5249B88EC410}']
procedure GetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler);
function GetRootScreenRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
- function GetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
+ procedure GetViewRect(const browser: ICefBrowser; var rect: TCefRect);
function GetScreenPoint(const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer): Boolean;
function GetScreenInfo(const browser: ICefBrowser; var screenInfo: TCefScreenInfo): Boolean;
procedure OnPopupShow(const browser: ICefBrowser; show: Boolean);
procedure OnPopupSize(const browser: ICefBrowser; const rect: PCefRect);
procedure OnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
+ procedure OnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer);
procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
function OnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean;
procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation);
diff --git a/source/uCEFMiscFunctions.pas b/source/uCEFMiscFunctions.pas
index 0f7de516..74b025ea 100644
--- a/source/uCEFMiscFunctions.pas
+++ b/source/uCEFMiscFunctions.pas
@@ -493,6 +493,8 @@ begin
aWindowInfo.parent_window := aParent;
aWindowInfo.menu := 0;
aWindowInfo.windowless_rendering_enabled := ord(False);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.window := 0;
end;
@@ -508,6 +510,8 @@ begin
aWindowInfo.parent_window := aParent;
aWindowInfo.menu := 0;
aWindowInfo.windowless_rendering_enabled := ord(False);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.window := 0;
end;
@@ -523,6 +527,8 @@ begin
aWindowInfo.parent_window := aParent;
aWindowInfo.menu := 0;
aWindowInfo.windowless_rendering_enabled := ord(True);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.window := 0;
end;
{$ENDIF}
@@ -538,6 +544,8 @@ begin
aWindowInfo.hidden := Ord(aHidden);
aWindowInfo.parent_view := aParent;
aWindowInfo.windowless_rendering_enabled := ord(False);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.view := 0;
end;
@@ -551,6 +559,8 @@ begin
aWindowInfo.hidden := Ord(aHidden);
aWindowInfo.parent_view := aParent;
aWindowInfo.windowless_rendering_enabled := ord(False);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.view := 0;
end;
@@ -565,6 +575,8 @@ begin
aWindowInfo.hidden := Ord(aHidden);
aWindowInfo.parent_view := aParent;
aWindowInfo.windowless_rendering_enabled := ord(True);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.view := 0;
end;
{$ENDIF}
@@ -578,6 +590,8 @@ begin
aWindowInfo.height := aRect.bottom - aRect.top;
aWindowInfo.parent_window := aParent;
aWindowInfo.windowless_rendering_enabled := ord(False);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.window := 0;
end;
@@ -589,6 +603,8 @@ begin
aWindowInfo.height := integer(CW_USEDEFAULT);
aWindowInfo.parent_window := aParent;
aWindowInfo.windowless_rendering_enabled := ord(False);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.window := 0;
end;
@@ -600,6 +616,8 @@ begin
aWindowInfo.height := 0;
aWindowInfo.parent_window := aParent;
aWindowInfo.windowless_rendering_enabled := ord(False);
+ aWindowInfo.shared_texture_enabled := ord(False);
+ aWindowInfo.external_begin_frame_enabled := ord(False);
aWindowInfo.window := 0;
end;
{$ENDIF}
diff --git a/source/uCEFRenderHandler.pas b/source/uCEFRenderHandler.pas
index 89dca0b3..f68fca28 100644
--- a/source/uCEFRenderHandler.pas
+++ b/source/uCEFRenderHandler.pas
@@ -56,12 +56,13 @@ type
protected
procedure GetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler); virtual;
function GetRootScreenRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; virtual;
- function GetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; virtual;
+ procedure GetViewRect(const browser: ICefBrowser; var rect: TCefRect); virtual;
function GetScreenPoint(const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer): Boolean; virtual;
function GetScreenInfo(const browser: ICefBrowser; var screenInfo: TCefScreenInfo): Boolean; virtual;
procedure OnPopupShow(const browser: ICefBrowser; show: Boolean); virtual;
procedure OnPopupSize(const browser: ICefBrowser; const rect: PCefRect); virtual;
procedure OnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); virtual;
+ procedure OnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); virtual;
procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); virtual;
function OnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; virtual;
procedure OnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual;
@@ -81,11 +82,12 @@ type
procedure GetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler); override;
function GetRootScreenRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; override;
- function GetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; override;
+ procedure GetViewRect(const browser: ICefBrowser; var rect: TCefRect); override;
function GetScreenPoint(const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer): Boolean; override;
procedure OnPopupShow(const browser: ICefBrowser; show: Boolean); override;
procedure OnPopupSize(const browser: ICefBrowser; const rect: PCefRect); override;
procedure OnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); override;
+ procedure OnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); override;
procedure OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); override;
function GetScreenInfo(const browser: ICefBrowser; var screenInfo: TCefScreenInfo): Boolean; override;
function OnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; override;
@@ -143,18 +145,17 @@ begin
rect^));
end;
-function cef_render_handler_get_view_rect(self : PCefRenderHandler;
- browser : PCefBrowser;
- rect : PCefRect): Integer; stdcall;
+procedure cef_render_handler_get_view_rect(self : PCefRenderHandler;
+ browser : PCefBrowser;
+ rect : PCefRect); stdcall;
var
TempObject : TObject;
begin
- Result := Ord(False);
TempObject := CefGetObject(self);
if (TempObject <> nil) and (TempObject is TCefRenderHandlerOwn) then
- Result := Ord(TCefRenderHandlerOwn(TempObject).GetViewRect(TCefBrowserRef.UnWrap(browser),
- rect^));
+ TCefRenderHandlerOwn(TempObject).GetViewRect(TCefBrowserRef.UnWrap(browser),
+ rect^);
end;
function cef_render_handler_get_screen_point(self : PCefRenderHandler;
@@ -238,6 +239,25 @@ begin
height);
end;
+procedure cef_render_handler_on_accelerated_paint( self : PCefRenderHandler;
+ browser : PCefBrowser;
+ kind : TCefPaintElementType;
+ dirtyRectsCount : NativeUInt;
+ const dirtyRects : PCefRectArray;
+ shared_handle : Pointer); stdcall;
+var
+ TempObject : TObject;
+begin
+ TempObject := CefGetObject(self);
+
+ if (TempObject <> nil) and (TempObject is TCefRenderHandlerOwn) then
+ TCefRenderHandlerOwn(TempObject).OnAcceleratedPaint(TCefBrowserRef.UnWrap(browser),
+ kind,
+ dirtyRectsCount,
+ dirtyRects,
+ shared_handle);
+end;
+
procedure cef_render_handler_on_cursor_change( self : PCefRenderHandler;
browser : PCefBrowser;
cursor : TCefCursorHandle;
@@ -348,6 +368,7 @@ begin
on_popup_show := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_popup_show;
on_popup_size := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_popup_size;
on_paint := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_paint;
+ on_accelerated_paint := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_accelerated_paint;
on_cursor_change := {$IFDEF FPC}@{$ENDIF}cef_render_handler_on_cursor_change;
start_dragging := {$IFDEF FPC}@{$ENDIF}cef_render_handler_start_dragging;
update_drag_cursor := {$IFDEF FPC}@{$ENDIF}cef_render_handler_update_drag_cursor;
@@ -377,9 +398,9 @@ begin
Result := False;
end;
-function TCefRenderHandlerOwn.GetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
+procedure TCefRenderHandlerOwn.GetViewRect(const browser: ICefBrowser; var rect: TCefRect);
begin
- Result := False;
+ //
end;
procedure TCefRenderHandlerOwn.OnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; CursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
@@ -392,6 +413,11 @@ begin
//
end;
+procedure TCefRenderHandlerOwn.OnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer);
+begin
+ //
+end;
+
procedure TCefRenderHandlerOwn.OnPopupShow(const browser: ICefBrowser; show: Boolean);
begin
//
@@ -487,12 +513,12 @@ begin
Result := inherited GetScreenPoint(browser, viewX, viewY, screenX, screenY);
end;
-function TCustomRenderHandler.GetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
+procedure TCustomRenderHandler.GetViewRect(const browser: ICefBrowser; var rect: TCefRect);
begin
if (FEvents <> nil) then
- Result := IChromiumEvents(FEvents).doOnGetViewRect(browser, rect)
+ IChromiumEvents(FEvents).doOnGetViewRect(browser, rect)
else
- Result := inherited GetViewRect(browser, rect);
+ inherited GetViewRect(browser, rect);
end;
procedure TCustomRenderHandler.OnCursorChange(const browser : ICefBrowser;
@@ -514,6 +540,15 @@ begin
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnPaint(browser, kind, dirtyRectsCount, dirtyRects, buffer, width, height);
end;
+procedure TCustomRenderHandler.OnAcceleratedPaint(const browser : ICefBrowser;
+ kind : TCefPaintElementType;
+ dirtyRectsCount : NativeUInt;
+ const dirtyRects : PCefRectArray;
+ shared_handle : Pointer);
+begin
+ if (FEvents <> nil) then IChromiumEvents(FEvents).doOnAcceleratedPaint(browser, kind, dirtyRectsCount, dirtyRects, shared_handle);
+end;
+
procedure TCustomRenderHandler.OnPopupShow(const browser: ICefBrowser; show: Boolean);
begin
if (FEvents <> nil) then IChromiumEvents(FEvents).doOnPopupShow(browser, show);
diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas
index dac7d78a..44aac696 100644
--- a/source/uCEFTypes.pas
+++ b/source/uCEFTypes.pas
@@ -1013,6 +1013,8 @@ type
parent_window : TCefWindowHandle;
menu : HMENU;
windowless_rendering_enabled : Integer;
+ shared_texture_enabled : Integer;
+ external_begin_frame_enabled : Integer;
window : TCefWindowHandle;
{$ENDIF}
{$IFDEF MACOS}
@@ -1024,6 +1026,8 @@ type
hidden : Integer;
parent_view : TCefWindowHandle;
windowless_rendering_enabled : Integer;
+ shared_texture_enabled : Integer;
+ external_begin_frame_enabled : Integer;
view : TCefWindowHandle;
{$ENDIF}
{$IFDEF LINUX}
@@ -1033,6 +1037,8 @@ type
height : uint32;
parent_window : TCefWindowHandle;
windowless_rendering_enabled : Integer;
+ shared_texture_enabled : Integer;
+ external_begin_frame_enabled : Integer;
window : TCefWindowHandle;
{$ENDIF}
end;
@@ -1399,12 +1405,13 @@ type
base : TCefBaseRefCounted;
get_accessibility_handler : function(self: PCefRenderHandler): PCefAccessibilityHandler; stdcall;
get_root_screen_rect : function(self: PCefRenderHandler; browser: PCefBrowser; rect: PCefRect): Integer; stdcall;
- get_view_rect : function(self: PCefRenderHandler; browser: PCefBrowser; rect: PCefRect): Integer; stdcall;
+ get_view_rect : procedure(self: PCefRenderHandler; browser: PCefBrowser; rect: PCefRect); stdcall;
get_screen_point : function(self: PCefRenderHandler; browser: PCefBrowser; viewX, viewY: Integer; screenX, screenY: PInteger): Integer; stdcall;
get_screen_info : function(self: PCefRenderHandler; browser: PCefBrowser; screen_info: PCefScreenInfo): Integer; stdcall;
on_popup_show : procedure(self: PCefRenderHandler; browser: PCefBrowser; show: Integer); stdcall;
on_popup_size : procedure(self: PCefRenderHandler; browser: PCefBrowser; const rect: PCefRect); stdcall;
on_paint : procedure(self: PCefRenderHandler; browser: PCefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); stdcall;
+ on_accelerated_paint : procedure(self: PCefRenderHandler; browser: PCefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); stdcall;
on_cursor_change : procedure(self: PCefRenderHandler; browser: PCefBrowser; cursor: TCefCursorHandle; type_: TCefCursorType; const custom_cursor_info: PCefCursorInfo); stdcall;
start_dragging : function(self: PCefRenderHandler; browser: PCefBrowser; drag_data: PCefDragData; allowed_ops: TCefDragOperations; x, y: Integer): Integer; stdcall;
update_drag_cursor : procedure(self: PCefRenderHandler; browser: PCefBrowser; operation: TCefDragOperation); stdcall;
@@ -2536,6 +2543,7 @@ type
was_hidden : procedure(self: PCefBrowserHost; hidden: Integer); stdcall;
notify_screen_info_changed : procedure(self: PCefBrowserHost); stdcall;
invalidate : procedure(self: PCefBrowserHost; kind: TCefPaintElementType); stdcall;
+ send_external_begin_frame : procedure(self: PCefBrowserHost); stdcall;
send_key_event : procedure(self: PCefBrowserHost; const event: PCefKeyEvent); stdcall;
send_mouse_click_event : procedure(self: PCefBrowserHost; const event: PCefMouseEvent; kind: TCefMouseButtonType; mouseUp, clickCount: Integer); stdcall;
send_mouse_move_event : procedure(self: PCefBrowserHost; const event: PCefMouseEvent; mouseLeave: Integer); stdcall;
diff --git a/source/uFMXChromium.pas b/source/uFMXChromium.pas
index e2621257..66729529 100644
--- a/source/uFMXChromium.pas
+++ b/source/uFMXChromium.pas
@@ -198,6 +198,7 @@ type
FOnPopupShow : TOnPopupShow;
FOnPopupSize : TOnPopupSize;
FOnPaint : TOnPaint;
+ FOnAcceleratedPaint : TOnAcceleratedPaint;
FOnCursorChange : TOnCursorChange;
FOnScrollOffsetChanged : TOnScrollOffsetChanged;
FOnIMECompositionRangeChanged : TOnIMECompositionRangeChanged;
@@ -406,12 +407,13 @@ type
// ICefRenderHandler
procedure doOnGetAccessibilityHandler(var aAccessibilityHandler : ICefAccessibilityHandler); virtual;
function doOnGetRootScreenRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; virtual;
- function doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean; virtual;
+ procedure doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect); virtual;
function doOnGetScreenPoint(const browser: ICefBrowser; viewX, viewY: Integer; var screenX, screenY: Integer): Boolean; virtual;
function doOnGetScreenInfo(const browser: ICefBrowser; var screenInfo: TCefScreenInfo): Boolean; virtual;
procedure doOnPopupShow(const browser: ICefBrowser; show: Boolean); virtual;
procedure doOnPopupSize(const browser: ICefBrowser; const rect: PCefRect); virtual;
procedure doOnPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer); virtual;
+ procedure doOnAcceleratedPaint(const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; shared_handle: Pointer); virtual;
procedure doOnCursorChange(const browser: ICefBrowser; cursor: TCefCursorHandle; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo); virtual;
function doOnStartDragging(const browser: ICefBrowser; const dragData: ICefDragData; allowedOps: TCefDragOperations; x, y: Integer): Boolean; virtual;
procedure doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation); virtual;
@@ -510,6 +512,7 @@ type
procedure NotifyScreenInfoChanged;
procedure NotifyMoveOrResizeStarted;
procedure Invalidate(kind: TCefPaintElementType = PET_VIEW);
+ procedure SendExternalBeginFrame;
procedure SendKeyEvent(const event: PCefKeyEvent);
procedure SendMouseClickEvent(const event: PCefMouseEvent; kind: TCefMouseButtonType; mouseUp: Boolean; clickCount: Integer);
procedure SendMouseMoveEvent(const event: PCefMouseEvent; mouseLeave: Boolean);
@@ -684,6 +687,7 @@ type
property OnPopupShow : TOnPopupShow read FOnPopupShow write FOnPopupShow;
property OnPopupSize : TOnPopupSize read FOnPopupSize write FOnPopupSize;
property OnPaint : TOnPaint read FOnPaint write FOnPaint;
+ property OnAcceleratedPaint : TOnAcceleratedPaint read FOnAcceleratedPaint write FOnAcceleratedPaint;
property OnCursorChange : TOnCursorChange read FOnCursorChange write FOnCursorChange;
property OnScrollOffsetChanged : TOnScrollOffsetChanged read FOnScrollOffsetChanged write FOnScrollOffsetChanged;
property OnIMECompositionRangeChanged : TOnIMECompositionRangeChanged read FOnIMECompositionRangeChanged write FOnIMECompositionRangeChanged;
@@ -988,6 +992,7 @@ begin
FOnPopupShow := nil;
FOnPopupSize := nil;
FOnPaint := nil;
+ FOnAcceleratedPaint := nil;
FOnCursorChange := nil;
FOnScrollOffsetChanged := nil;
FOnIMECompositionRangeChanged := nil;
@@ -3087,11 +3092,9 @@ begin
if Assigned(FOnGetScreenPoint) then FOnGetScreenPoint(Self, browser, viewX, viewY, screenX, screenY, Result);
end;
-function TFMXChromium.doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect): Boolean;
+procedure TFMXChromium.doOnGetViewRect(const browser: ICefBrowser; var rect: TCefRect);
begin
- Result := False;
-
- if Assigned(FOnGetViewRect) then FOnGetViewRect(Self, browser, rect, Result);
+ if Assigned(FOnGetViewRect) then FOnGetViewRect(Self, browser, rect);
end;
procedure TFMXChromium.doOnGotFocus(const browser: ICefBrowser);
@@ -3179,6 +3182,15 @@ begin
if Assigned(FOnPaint) then FOnPaint(Self, browser, kind, dirtyRectsCount, dirtyRects, buffer, width, height);
end;
+procedure TFMXChromium.doOnAcceleratedPaint(const browser : ICefBrowser;
+ kind : TCefPaintElementType;
+ dirtyRectsCount : NativeUInt;
+ const dirtyRects : PCefRectArray;
+ shared_handle : Pointer);
+begin
+ if Assigned(FOnAcceleratedPaint) then FOnAcceleratedPaint(Self, browser, kind, dirtyRectsCount, dirtyRects, shared_handle);
+end;
+
function TFMXChromium.doOnSelectClientCertificate(const browser : ICefBrowser;
isProxy : boolean;
const host : ustring;
@@ -3647,6 +3659,11 @@ begin
end;
end;
+procedure TFMXChromium.SendExternalBeginFrame;
+begin
+ if Initialized then FBrowser.Host.SendExternalBeginFrame;
+end;
+
procedure TFMXChromium.SendKeyEvent(const event: PCefKeyEvent);
begin
if Initialized then FBrowser.Host.SendKeyEvent(event);