Skip to content

Commit 30075b1

Browse files
committed
Fixed CI and tests
1 parent 6e27a6d commit 30075b1

12 files changed

Lines changed: 649 additions & 147 deletions

File tree

.github/workflows/javase-cef-ffmpeg-smoke.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
name: JavaSE CEF/FFmpeg Smoke
22

3+
permissions:
4+
contents: read
5+
36
on:
47
pull_request:
58
paths:

Ports/JavaSE/src/com/codename1/impl/javase/cef/RequestHandler.java

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
import org.cef.browser.CefBrowser;
1010
import org.cef.browser.CefFrame;
1111
import org.cef.callback.CefAuthCallback;
12-
import org.cef.callback.CefCallback;
13-
import org.cef.handler.CefLoadHandler.ErrorCode;
14-
import org.cef.handler.CefRequestHandler;
12+
import org.cef.handler.CefRequestHandlerAdapter;
1513
import org.cef.handler.CefResourceHandler;
1614
import org.cef.handler.CefResourceRequestHandler;
1715
import org.cef.handler.CefResourceRequestHandlerAdapter;
@@ -31,10 +29,21 @@
3129
//import tests.detailed.dialog.CertErrorDialog;
3230
//import tests.detailed.dialog.PasswordDialog;
3331

34-
public class RequestHandler extends CefResourceRequestHandlerAdapter implements CefRequestHandler {
32+
public class RequestHandler extends CefRequestHandlerAdapter {
3533
private final WeakReference<Container> ownerRef;
3634
//private BrowserComponent browserComponent_;
3735
private final BrowserNavigationCallback navigationCallback_;
36+
private final CefResourceRequestHandler resourceRequestHandler = new CefResourceRequestHandlerAdapter() {
37+
@Override
38+
public boolean onBeforeResourceLoad(CefBrowser browser, CefFrame frame, CefRequest request) {
39+
return RequestHandler.this.onBeforeResourceLoadImpl(browser, frame, request);
40+
}
41+
42+
@Override
43+
public CefResourceHandler getResourceHandler(CefBrowser browser, CefFrame frame, CefRequest request) {
44+
return RequestHandler.this.getResourceHandlerImpl(browser, frame, request);
45+
}
46+
};
3847

3948

4049
public RequestHandler(Container owner, BrowserNavigationCallback navigationCallback) {
@@ -85,20 +94,14 @@ public void run() {
8594
return false;
8695
}
8796

88-
@Override
89-
public boolean onOpenURLFromTab(CefBrowser browser, CefFrame frame, String targetUrl, boolean userGesture) {
90-
return false;
91-
}
92-
9397
@Override
9498
public CefResourceRequestHandler getResourceRequestHandler(CefBrowser browser, CefFrame frame,
9599
CefRequest request, boolean isNavigation, boolean isDownload, String requestInitiator,
96100
BoolRef disableDefaultHandling) {
97-
return this;
101+
return resourceRequestHandler;
98102
}
99103

100-
@Override
101-
public boolean onBeforeResourceLoad(CefBrowser browser, CefFrame frame, CefRequest request) {
104+
private boolean onBeforeResourceLoadImpl(CefBrowser browser, CefFrame frame, CefRequest request) {
102105
// If you send a HTTP-POST request to http://www.google.com/
103106
// google rejects your request because they don't allow HTTP-POST.
104107
//
@@ -149,8 +152,7 @@ else if (s.startsWith("sendAsGet")) {
149152
return false;
150153
}
151154

152-
@Override
153-
public CefResourceHandler getResourceHandler(
155+
private CefResourceHandler getResourceHandlerImpl(
154156
CefBrowser browser, CefFrame frame, CefRequest request) {
155157
// the non existing domain "foo.bar" is handled by the ResourceHandler implementation
156158
// E.g. if you try to load the URL http://www.foo.bar, you'll be forwarded
@@ -173,19 +175,6 @@ public boolean getAuthCredentials(CefBrowser browser, String origin_url, boolean
173175
return true;
174176
}
175177

176-
@Override
177-
public boolean onQuotaRequest(
178-
CefBrowser browser, String origin_url, long new_size, CefCallback callback) {
179-
return false;
180-
}
181-
182-
@Override
183-
public boolean onCertificateError(CefBrowser browser, ErrorCode cert_error, String request_url,
184-
CefCallback callback) {
185-
//SwingUtilities.invokeLater(new CertErrorDialog(owner_, cert_error, request_url, callback));
186-
return true;
187-
}
188-
189178
@Override
190179
public void onPluginCrashed(CefBrowser browser, String pluginPath) {
191180
System.out.println("Plugin " + pluginPath + "CRASHED");

Ports/JavaSE/src/com/codename1/impl/javase/ffmpeg/FFMPEGMedia.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,15 @@ public void setVariable(String key, Object value) {
317317

318318
@Override
319319
public Object getVariable(String key) {
320+
if ("ffmpeg.videoFrameRendered".equals(key)) {
321+
return Boolean.valueOf(videoPanel != null && videoPanel.hasFrame());
322+
}
323+
if ("ffmpeg.videoFrameCount".equals(key)) {
324+
return Integer.valueOf(videoPanel != null ? videoPanel.getFrameCount() : 0);
325+
}
326+
if ("ffmpeg.videoAverageColor".equals(key)) {
327+
return videoPanel != null ? videoPanel.getAverageColor() : "";
328+
}
320329
return null;
321330
}
322331

@@ -630,6 +639,7 @@ private static class ProbeData {
630639

631640
private static class VideoPanel extends JPanel implements HierarchyListener {
632641
private volatile BufferedImage image;
642+
private volatile int frameCount;
633643

634644
VideoPanel(int width, int height) {
635645
setBackground(Color.BLACK);
@@ -652,9 +662,43 @@ void updateFrame(byte[] bytes, int width, int height) {
652662
}
653663
next.setRGB(0, 0, width, height, argb, 0, width);
654664
image = next;
665+
frameCount++;
655666
repaint();
656667
}
657668

669+
boolean hasFrame() {
670+
return image != null;
671+
}
672+
673+
int getFrameCount() {
674+
return frameCount;
675+
}
676+
677+
String getAverageColor() {
678+
BufferedImage current = image;
679+
if (current == null) {
680+
return "";
681+
}
682+
long r = 0;
683+
long g = 0;
684+
long b = 0;
685+
int width = current.getWidth();
686+
int height = current.getHeight();
687+
int count = width * height;
688+
if (count == 0) {
689+
return "";
690+
}
691+
for (int y = 0; y < height; y++) {
692+
for (int x = 0; x < width; x++) {
693+
int rgb = current.getRGB(x, y);
694+
r += (rgb >> 16) & 0xff;
695+
g += (rgb >> 8) & 0xff;
696+
b += rgb & 0xff;
697+
}
698+
}
699+
return (r / count) + "," + (g / count) + "," + (b / count);
700+
}
701+
658702
@Override
659703
protected void paintComponent(Graphics g) {
660704
super.paintComponent(g);

Ports/JavaSE/src/org/cef/browser/CN1CefBrowser.java

Lines changed: 54 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
*/
3131
import org.cef.CefClient;
3232
import org.cef.callback.CefDragData;
33+
import org.cef.handler.CefRenderHandlerAdapter;
3334
import org.cef.handler.CefRenderHandler;
3435

3536
import java.awt.Component;
@@ -61,7 +62,7 @@
6162
* The visibility of this class is "package". To create a new
6263
* CefBrowser instance, please use CefBrowserFactory.
6364
*/
64-
public class CN1CefBrowser extends CefBrowser_N implements CefRenderHandler {
65+
public class CN1CefBrowser extends CefBrowser_N {
6566
//private CefRenderer renderer_;
6667
//private GLCanvas canvas_;
6768
private long window_handle_ = 0;
@@ -72,6 +73,47 @@ public class CN1CefBrowser extends CefBrowser_N implements CefRenderHandler {
7273
//private BufferedImage bufferedImage_;
7374
private WeakReference<PixelBuffer> bufferRef;
7475
private byte[] buf_;
76+
private final CefRenderHandler renderHandler_ = new CefRenderHandlerAdapter() {
77+
@Override
78+
public Rectangle getViewRect(CefBrowser browser) {
79+
return CN1CefBrowser.this.getViewRectImpl(browser);
80+
}
81+
82+
@Override
83+
public boolean getScreenInfo(CefBrowser browser, CefScreenInfo screenInfo) {
84+
return CN1CefBrowser.this.getScreenInfoImpl(browser, screenInfo);
85+
}
86+
87+
@Override
88+
public Point getScreenPoint(CefBrowser browser, Point viewPoint) {
89+
return CN1CefBrowser.this.getScreenPointImpl(browser, viewPoint);
90+
}
91+
92+
@Override
93+
public void onPopupShow(CefBrowser browser, boolean show) {
94+
CN1CefBrowser.this.onPopupShowImpl(browser, show);
95+
}
96+
97+
@Override
98+
public void onPopupSize(CefBrowser browser, Rectangle size) {
99+
CN1CefBrowser.this.onPopupSizeImpl(browser, size);
100+
}
101+
102+
@Override
103+
public void onPaint(CefBrowser browser, boolean popup, Rectangle[] dirtyRects, ByteBuffer buffer, int width, int height) {
104+
CN1CefBrowser.this.onPaintImpl(browser, popup, dirtyRects, buffer, width, height);
105+
}
106+
107+
@Override
108+
public boolean startDragging(CefBrowser browser, CefDragData dragData, int mask, int x, int y) {
109+
return CN1CefBrowser.this.startDraggingImpl(browser, dragData, mask, x, y);
110+
}
111+
112+
@Override
113+
public void updateDragCursor(CefBrowser browser, int operation) {
114+
CN1CefBrowser.this.updateDragCursorImpl(browser, operation);
115+
}
116+
};
75117

76118

77119
public CN1CefBrowser(CefClient client, String url, boolean transparent, CefRequestContext context) {
@@ -110,7 +152,7 @@ public Component getUIComponent() {
110152

111153
@Override
112154
public CefRenderHandler getRenderHandler() {
113-
return this;
155+
return renderHandler_;
114156
}
115157

116158
@Override
@@ -120,7 +162,6 @@ protected CefBrowser_N createDevToolsBrowser(CefClient client, String url,
120162
client, url, isTransparent_, context, (CN1CefBrowser) this, inspectAt);
121163
}
122164

123-
@Override
124165
public CompletableFuture<BufferedImage> createScreenshot(boolean nativeResolution) {
125166
return CompletableFuture.completedFuture(null);
126167
}
@@ -365,13 +406,11 @@ public void setFocus(boolean enable) {
365406

366407

367408

368-
@Override
369-
public Rectangle getViewRect(CefBrowser browser) {
409+
public Rectangle getViewRectImpl(CefBrowser browser) {
370410
return browser_rect_;
371411
}
372412

373-
@Override
374-
public Point getScreenPoint(CefBrowser browser, Point viewPoint) {
413+
public Point getScreenPointImpl(CefBrowser browser, Point viewPoint) {
375414
try {
376415
Point screenPoint = new Point(screenPoint_);
377416
screenPoint.translate(viewPoint.x, viewPoint.y);
@@ -383,8 +422,7 @@ public Point getScreenPoint(CefBrowser browser, Point viewPoint) {
383422
}
384423
}
385424

386-
@Override
387-
public void onPopupShow(CefBrowser browser, boolean show) {
425+
public void onPopupShowImpl(CefBrowser browser, boolean show) {
388426
try {
389427
if (!show) {
390428
//renderer_.clearPopupRects();
@@ -396,8 +434,7 @@ public void onPopupShow(CefBrowser browser, boolean show) {
396434
}
397435
}
398436

399-
@Override
400-
public void onPopupSize(CefBrowser browser, Rectangle size) {
437+
public void onPopupSizeImpl(CefBrowser browser, Rectangle size) {
401438
try {
402439
//renderer_.onPopupSize(size);
403440
} catch (Throwable t) {
@@ -408,16 +445,15 @@ public void onPopupSize(CefBrowser browser, Rectangle size) {
408445

409446
private boolean firstPaint=true;
410447

411-
@Override
412-
public void onPaint(final CefBrowser browser, final boolean popup, final Rectangle[] dirtyRects,
448+
public void onPaintImpl(final CefBrowser browser, final boolean popup, final Rectangle[] dirtyRects,
413449
final ByteBuffer buffer, final int width, final int height) {
414450
try {
415-
_onPaint(browser, popup, dirtyRects, buffer, width, height);
451+
_onPaintImpl(browser, popup, dirtyRects, buffer, width, height);
416452
} catch (Throwable t) {
417453
t.printStackTrace();
418454
}
419455
}
420-
public void _onPaint(final CefBrowser browser, final boolean popup, final Rectangle[] dirtyRects,
456+
public void _onPaintImpl(final CefBrowser browser, final boolean popup, final Rectangle[] dirtyRects,
421457
final ByteBuffer buffer, final int width, final int height) {
422458
final PixelBuffer buffer_ = bufferRef.get();
423459
if (buffer_ == null) {
@@ -494,24 +530,12 @@ public void run() {
494530
}
495531
}
496532

497-
@Override
498-
public boolean onCursorChange(CefBrowser browser, final int cursorType) {
499-
SwingUtilities.invokeLater(new Runnable() {
500-
public void run() {
501-
component_.setCursor(new Cursor(cursorType));
502-
}
503-
});
504-
return true;
505-
}
506-
507-
@Override
508-
public boolean startDragging(CefBrowser browser, CefDragData dragData, int mask, int x, int y) {
533+
public boolean startDraggingImpl(CefBrowser browser, CefDragData dragData, int mask, int x, int y) {
509534
// TODO(JCEF) Prepared for DnD support using OSR mode.
510535
return false;
511536
}
512537

513-
@Override
514-
public void updateDragCursor(CefBrowser browser, int operation) {
538+
public void updateDragCursorImpl(CefBrowser browser, int operation) {
515539
// TODO(JCEF) Prepared for DnD support using OSR mode.
516540
}
517541

@@ -550,8 +574,7 @@ public static void setComponentFactory(ComponentFactory factory) {
550574
componentFactory = factory;
551575
}
552576

553-
@Override
554-
public boolean getScreenInfo(CefBrowser browser, CefScreenInfo screenInfo) {
577+
public boolean getScreenInfoImpl(CefBrowser browser, CefScreenInfo screenInfo) {
555578
try {
556579
GraphicsDevice graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
557580
GraphicsConfiguration graphicsConfig = graphicsDevice.getDefaultConfiguration();

maven/codenameone-maven-plugin/src/main/java/com/codename1/maven/AbstractCN1Mojo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -954,7 +954,7 @@ private void setExecutableRecursive(File root, Collection<String> patterns) {
954954
}
955955

956956
private File extractCefBundle(File nativeJar) {
957-
File extractedDir = new File(nativeJar.getParentFile(), nativeJar.getName() + "-extracted");
957+
File extractedDir = new File(project.getBuild().getDirectory(), "cn1-cef-" + getCefPlatform());
958958
File cefRoot = new File(extractedDir, "cef");
959959
File runtimeDir = new File(cefRoot, getCefRuntimeSubdir());
960960
File tempExtract = new File(extractedDir, "tmp");

maven/tests/javase-cef-ffmpeg-smoke/codenameone_settings.properties renamed to maven/tests/javase-cef-ffmpeg-smoke/common/codenameone_settings.properties

File renamed without changes.

0 commit comments

Comments
 (0)