Class WebKit.Webkit2AsyncToSync
java.lang.Object
org.eclipse.swt.browser.WebKit.Webkit2AsyncToSync
- Enclosing class:
WebKit
Webkit2 introduces async api. However SWT has sync execution model. This class it to convert async api to sync.
Be careful about using these methods in synchronous callbacks from webkit, as those can cause deadlocks. (See inner javadocs).
The mechanism generates an ID for each callback and waits for that callback to complete.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classEvery callback is tagged with a unique ID.private static classObject used to return data from callback to original call -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) static Objectprivate static WebKit.Webkit2AsyncToSync.Webkit2AsyncReturnObjexecAsyncAndWaitForReturn(Browser browser, Consumer<Integer> asyncFunc, String additionalErrorInfo) You should check 'retObj.swtAsyncTimeout' after making a call to this.(package private) static Stringprivate static voidgetCookie_callback(long cookieManager, long result, long user_data) (package private) static Stringprivate static voidgetText_callback(long WebResource, long GAsyncResult, long user_data) private static voidgtk3_runjavascript_callback(long GObject_source, long GAsyncResult, long user_data) private static voidgtk4_runjavascript_callback(long GObject_source, long GAsyncResult, long user_data) (package private) static Objectrunjavascript(String script, Browser browser, long webView) Run javascript, wait for a return value.(package private) static booleanprivate static voidsetCookie_callback(long cookieManager, long result, long user_data) (package private) static voidsetCookieBrowser(Browser toSet) Associates a Browser instance with this class, mainly so we can get its Display and check for disposal.
-
Field Details
-
cookieBrowser
We need a way to associate a Browser instance with this class for cookie functionality -
runjavascript_callback
-
getText_callback
-
setCookie_callback
-
getCookie_callback
-
-
Constructor Details
-
Webkit2AsyncToSync
private Webkit2AsyncToSync()
-
-
Method Details
-
evaluate
-
runjavascript
Run javascript, wait for a return value. Developer note: Be EXTRA careful with this method, it can cause deadlocks in situations where javascript is executed in a callback that provides a return value to webkit. In otherwords, if webkit does a sync callback (one that requires a return value), then running javascript will lead to a deadlock because webkit will not execute the javascript until it's sync callback finished. As a note, SWT's callback mechanism hard-codes 'long' return even when a callback is actually 'void'. So reference webkit callback signature documentation and not SWT implementation. If in doubt, you should use nonBlockingExecute() where possible :-). -
gtk4_runjavascript_callback
private static void gtk4_runjavascript_callback(long GObject_source, long GAsyncResult, long user_data) -
gtk3_runjavascript_callback
private static void gtk3_runjavascript_callback(long GObject_source, long GAsyncResult, long user_data) -
getText
-
getText_callback
private static void getText_callback(long WebResource, long GAsyncResult, long user_data) -
setCookieBrowser
Associates a Browser instance with this class, mainly so we can get its Display and check for disposal.- Parameters:
toSet- the Browser instance to set
-
setCookie
-
setCookie_callback
private static void setCookie_callback(long cookieManager, long result, long user_data) -
getCookie
-
getCookie_callback
private static void getCookie_callback(long cookieManager, long result, long user_data) -
execAsyncAndWaitForReturn
private static WebKit.Webkit2AsyncToSync.Webkit2AsyncReturnObj execAsyncAndWaitForReturn(Browser browser, Consumer<Integer> asyncFunc, String additionalErrorInfo) You should check 'retObj.swtAsyncTimeout' after making a call to this.
-