|
4 | 4 |
|
5 | 5 | package org.cef.browser; |
6 | 6 |
|
| 7 | +import org.cef.CefBrowserSettings; |
7 | 8 | import org.cef.CefClient; |
8 | 9 | import org.cef.browser.CefDevToolsClient.DevToolsException; |
9 | 10 | import org.cef.callback.CefDragData; |
@@ -49,14 +50,19 @@ abstract class CefBrowser_N extends CefNativeAdapter implements CefBrowser { |
49 | 50 | private boolean closeAllowed_ = false; |
50 | 51 | private volatile boolean isClosed_ = false; |
51 | 52 | private volatile boolean isClosing_ = false; |
| 53 | + private final CefBrowserSettings settings_; |
52 | 54 |
|
53 | 55 | protected CefBrowser_N(CefClient client, String url, CefRequestContext context, |
54 | | - CefBrowser_N parent, Point inspectAt) { |
| 56 | + CefBrowser_N parent, Point inspectAt, CefBrowserSettings settings) { |
55 | 57 | client_ = client; |
56 | 58 | url_ = url; |
57 | 59 | request_context_ = context; |
58 | 60 | parent_ = parent; |
59 | 61 | inspectAt_ = inspectAt; |
| 62 | + if (settings != null) |
| 63 | + settings_ = settings.clone(); |
| 64 | + else |
| 65 | + settings_ = new CefBrowserSettings(); |
60 | 66 | } |
61 | 67 |
|
62 | 68 | protected String getUrl() { |
@@ -162,7 +168,7 @@ public synchronized CefDevToolsClient getDevToolsClient() { |
162 | 168 |
|
163 | 169 | CompletableFuture<Integer> executeDevToolsMethod(String method, String parametersAsJson) { |
164 | 170 | CompletableFuture<Integer> future = new CompletableFuture<>(); |
165 | | - N_ExecuteDevToolsMethod(method, parametersAsJson, new DevToolsMethodCallback() { |
| 171 | + N_ExecuteDevToolsMethod(method, parametersAsJson, new IntCallback() { |
166 | 172 | @Override |
167 | 173 | public void onComplete(int generatedMessageId) { |
168 | 174 | if (generatedMessageId <= 0) { |
@@ -190,8 +196,8 @@ protected void createBrowser(CefClientHandler clientHandler, long windowHandle, |
190 | 196 | boolean osr, boolean transparent, Component canvas, CefRequestContext context) { |
191 | 197 | if (getNativeRef("CefBrowser") == 0 && !isPending_) { |
192 | 198 | try { |
193 | | - N_CreateBrowser( |
194 | | - clientHandler, windowHandle, url, osr, transparent, canvas, context); |
| 199 | + N_CreateBrowser(clientHandler, windowHandle, url, osr, transparent, canvas, context, |
| 200 | + settings_); |
195 | 201 | } catch (UnsatisfiedLinkError err) { |
196 | 202 | err.printStackTrace(); |
197 | 203 | } |
@@ -789,17 +795,36 @@ protected final void notifyMoveOrResizeStarted() { |
789 | 795 | } |
790 | 796 | } |
791 | 797 |
|
792 | | - private interface DevToolsMethodCallback { |
793 | | - void onComplete(int generatedMessageId); |
| 798 | + public void setWindowlessFrameRate(int frameRate) { |
| 799 | + try { |
| 800 | + N_SetWindowlessFrameRate(frameRate); |
| 801 | + } catch (UnsatisfiedLinkError ule) { |
| 802 | + ule.printStackTrace(); |
| 803 | + } |
| 804 | + } |
| 805 | + |
| 806 | + public CompletableFuture<Integer> getWindowlessFrameRate() { |
| 807 | + final CompletableFuture<Integer> future = new CompletableFuture<>(); |
| 808 | + try { |
| 809 | + N_GetWindowlessFrameRate(future::complete); |
| 810 | + } catch (UnsatisfiedLinkError ule) { |
| 811 | + ule.printStackTrace(); |
| 812 | + future.complete(0); |
| 813 | + } |
| 814 | + return future; |
| 815 | + } |
| 816 | + |
| 817 | + private interface IntCallback { |
| 818 | + void onComplete(int value); |
794 | 819 | } |
795 | 820 |
|
796 | 821 | private final native boolean N_CreateBrowser(CefClientHandler clientHandler, long windowHandle, |
797 | 822 | String url, boolean osr, boolean transparent, Component canvas, |
798 | | - CefRequestContext context); |
| 823 | + CefRequestContext context, CefBrowserSettings settings); |
799 | 824 | private final native boolean N_CreateDevTools(CefBrowser parent, CefClientHandler clientHandler, |
800 | 825 | long windowHandle, boolean osr, boolean transparent, Component canvas, Point inspectAt); |
801 | 826 | private final native void N_ExecuteDevToolsMethod( |
802 | | - String method, String parametersAsJson, DevToolsMethodCallback callback); |
| 827 | + String method, String parametersAsJson, IntCallback callback); |
803 | 828 | private final native CefRegistration N_AddDevToolsMessageObserver( |
804 | 829 | CefDevToolsMessageObserver observer); |
805 | 830 | private final native long N_GetWindowHandle(long surfaceHandle); |
@@ -860,4 +885,6 @@ private final native void N_DragTargetDragEnter( |
860 | 885 | private final native void N_UpdateUI(Rectangle contentRect, Rectangle browserRect); |
861 | 886 | private final native void N_SetParent(long windowHandle, Component canvas); |
862 | 887 | private final native void N_NotifyMoveOrResizeStarted(); |
| 888 | + private final native void N_SetWindowlessFrameRate(int frameRate); |
| 889 | + private final native void N_GetWindowlessFrameRate(IntCallback frameRateCallback); |
863 | 890 | } |
0 commit comments