* Singleton class, has all of the CEF singleton stuff hidden inside. */
| 26 | import org.cef.handler.CefLifeSpanHandler |
| 27 | import org.cef.browser.CefFrame |
| 28 | import org.cef.handler.CefDisplayHandler |
| 29 | import org.cef.handler.CefLoadHandlerAdapter |
| 30 | import org.cef.network.CefRequest.TransitionType |
| 31 | import org.cef.handler.CefLoadHandler |
| 32 | import org.cef.handler.CefMessageRouterHandler |
| 33 | import org.cef.callback.CefQueryCallback |
| 34 | import java.awt.Point |
| 35 | import java.awt.Rectangle |
| 36 | import java.nio.ByteBuffer |
| 37 | import java.util.ArrayList |
| 38 | import java.util.function.Consumer |
| 39 | |
| 40 | /** |
| 41 | * Singleton class, has all of the CEF singleton stuff hidden inside. |
| 42 | */ |
| 43 | class CefSystem protected constructor() { |
| 44 | private val cefApp: CefApp |
| 45 | private val client: CefClient |
| 46 | private val router: CefMessageRouter |
| 47 | |
| 48 | fun interface PaintCallback { |
| 49 | fun onPaint(popup: Boolean, dirtyRects: Array<Rectangle>?, buffer: ByteBuffer?, width: Int, height: Int) |
| 50 | } |
| 51 | |
| 52 | fun interface MessageCallback { |
| 53 | fun message(id: Long, message: String?, answer: Consumer<String?>?) |
| 54 | } |
| 55 | |
| 56 | var callbacks: MutableMap<CefBrowser, MessageCallback> = MapMaker().weakKeys().makeMap() |
| 57 | var completionCallbacks: MutableMap<CefBrowser, Runnable> = MapMaker().weakKeys().makeMap() |
| 58 | fun makeBrowser( |
| 59 | w: Int, |
| 60 | h: Int, |
| 61 | callback: PaintCallback, |
| 62 | message: MessageCallback, |
| 63 | completionCallback: Runnable |
| 64 | ): CefBrowserOsrWithHandler { |
| 65 | // CefRenderer cefRenderer = new CefRenderer(false) { |
| 66 | // |
| 67 | // |
| 68 | // @Override |
| 69 | // public void onPaint(boolean popup, Rectangle[] dirtyRects, ByteBuffer buffer, int width, int height) { |
| 70 | // callback.onPaint(popup, dirtyRects, buffer, width, height); |
| 71 | // } |
| 72 | // }; |
| 73 | // CefRendererBrowserBuffer browser = (CefRendererBrowserBuffer) CefBrowserFactory.create(client, null, CefRendering.BYTEBUFFER, false, null, w, h, cefRenderer); |
| 74 | val r = Rectangle(0, 0, w, h) |
| 75 | val browser = CefBrowserOsrWithHandler( |
| 76 | client, |
| 77 | null, |
| 78 | CefRequestContext.getGlobalContext(), |
| 79 | object : CefRenderHandlerAdapter() { |
| 80 | override fun getViewRect(browser: CefBrowser): Rectangle { |
| 81 | // println(" ** getViewRect $browser ** ") |
| 82 | // return super.getViewRect(browser); |
| 83 | return r |
| 84 | } |
| 85 |
nothing calls this directly
no test coverage detected