diff options
Diffstat (limited to 'java_tests')
-rw-r--r-- | java_tests/tests/detailed/MainFrame.java | 15 | ||||
-rw-r--r-- | java_tests/tests/detailed/handler/RequestHandler.java | 6 | ||||
-rw-r--r-- | java_tests/tests/detailed/ui/MenuBar.java | 82 | ||||
-rw-r--r-- | java_tests/tests/junittests/TestFrame.java | 6 |
4 files changed, 106 insertions, 3 deletions
diff --git a/java_tests/tests/detailed/MainFrame.java b/java_tests/tests/detailed/MainFrame.java index d01c7a1..06e1237 100644 --- a/java_tests/tests/detailed/MainFrame.java +++ b/java_tests/tests/detailed/MainFrame.java @@ -83,9 +83,14 @@ public class MainFrame extends BrowserFrame { private ControlPanel control_pane_; private StatusPanel status_panel_; private boolean browserFocus_ = true; + private boolean osr_enabled_; + private boolean transparent_painting_enabled_; public MainFrame(boolean osrEnabled, boolean transparentPaintingEnabled, boolean createImmediately, String[] args) { + this.osr_enabled_ = osrEnabled; + this.transparent_painting_enabled_ = transparentPaintingEnabled; + CefApp myApp; if (CefApp.getState() != CefApp.CefAppState.INITIALIZED) { JCefAppConfig config = JCefAppConfig.getInstance(); @@ -248,7 +253,7 @@ public class MainFrame extends BrowserFrame { menuBar.addBookmark("Binding Test", "client://tests/binding_test.html"); menuBar.addBookmark("Binding Test 2", "client://tests/binding_test2.html"); - menuBar.addBookmark("Download Test", "http://opensource.spotify.com/cefbuilds/index.html"); + menuBar.addBookmark("Download Test", "https://cef-builds.spotifycdn.com/index.html"); menuBar.addBookmark("Login Test (username:pumpkin, password:pie)", "http://www.colostate.edu/~ric/protect/your.html"); menuBar.addBookmark("Certificate-error Test", "https://www.k2go.de"); @@ -285,4 +290,12 @@ public class MainFrame extends BrowserFrame { contentPanel.add(status_panel_, BorderLayout.SOUTH); return contentPanel; } + + public boolean isOsrEnabled() { + return osr_enabled_; + } + + public boolean isTransparentPaintingEnabled() { + return transparent_painting_enabled_; + } } diff --git a/java_tests/tests/detailed/handler/RequestHandler.java b/java_tests/tests/detailed/handler/RequestHandler.java index 7ebd3c7..45ee1e6 100644 --- a/java_tests/tests/detailed/handler/RequestHandler.java +++ b/java_tests/tests/detailed/handler/RequestHandler.java @@ -66,6 +66,12 @@ public class RequestHandler extends CefResourceRequestHandlerAdapter implements } @Override + public boolean onOpenURLFromTab(CefBrowser browser, CefFrame frame, String target_url, + boolean user_gesture) { + return false; + } + + @Override public CefResourceRequestHandler getResourceRequestHandler(CefBrowser browser, CefFrame frame, CefRequest request, boolean isNavigation, boolean isDownload, String requestInitiator, BoolRef disableDefaultHandling) { diff --git a/java_tests/tests/detailed/ui/MenuBar.java b/java_tests/tests/detailed/ui/MenuBar.java index b9d39d9..f92741a 100644 --- a/java_tests/tests/detailed/ui/MenuBar.java +++ b/java_tests/tests/detailed/ui/MenuBar.java @@ -19,6 +19,8 @@ import org.cef.network.CefRequest; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; +import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -26,15 +28,21 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.util.Vector; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; +import javax.swing.JLabel; import javax.swing.JLayeredPane; import javax.swing.JMenu; import javax.swing.JMenuBar; @@ -71,7 +79,7 @@ public class MenuBar extends JMenuBar { } } - private final BrowserFrame owner_; + private final MainFrame owner_; private final CefBrowser browser_; private String last_selected_file_ = ""; private final JMenu bookmarkMenu_; @@ -80,7 +88,7 @@ public class MenuBar extends JMenuBar { private final CefCookieManager cookieManager_; private boolean reparentPending_ = false; - public MenuBar(BrowserFrame owner, CefBrowser browser, ControlPanel control_pane, + public MenuBar(MainFrame owner, CefBrowser browser, ControlPanel control_pane, DownloadDialog downloadDialog, CefCookieManager cookieManager) { owner_ = owner; browser_ = browser; @@ -457,6 +465,64 @@ public class MenuBar extends JMenuBar { }); testMenu.add(newwindow); + JMenuItem screenshotSync = new JMenuItem("Screenshot (on AWT thread, native res)"); + screenshotSync.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + long start = System.nanoTime(); + CompletableFuture<BufferedImage> shot = browser.createScreenshot(true); + System.out.println("Took screenshot from the AWT event thread in " + + TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) + " msecs"); + try { + displayScreenshot(shot.get()); + } catch (InterruptedException | ExecutionException exc) { + // cannot happen, future is already resolved in this case + } + } + }); + screenshotSync.setEnabled(owner.isOsrEnabled()); + testMenu.add(screenshotSync); + + JMenuItem screenshotSyncScaled = new JMenuItem("Screenshot (on AWT thread, scaled)"); + screenshotSyncScaled.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + long start = System.nanoTime(); + CompletableFuture<BufferedImage> shot = browser.createScreenshot(false); + System.out.println("Took screenshot from the AWT event thread in " + + TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) + " msecs"); + try { + displayScreenshot(shot.get()); + } catch (InterruptedException | ExecutionException exc) { + // cannot happen, future is already resolved in this case + } + } + }); + screenshotSyncScaled.setEnabled(owner.isOsrEnabled()); + testMenu.add(screenshotSyncScaled); + + JMenuItem screenshotAsync = new JMenuItem("Screenshot (from other thread, scaled)"); + screenshotAsync.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + long start = System.nanoTime(); + CompletableFuture<BufferedImage> shot = browser.createScreenshot(false); + shot.thenAccept((image) -> { + System.out.println("Took screenshot asynchronously in " + + TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start) + + " msecs"); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + displayScreenshot(image); + } + }); + }); + } + }); + screenshotAsync.setEnabled(owner.isOsrEnabled()); + testMenu.add(screenshotAsync); + add(fileMenu); add(bookmarkMenu_); add(testMenu); @@ -489,6 +555,18 @@ public class MenuBar extends JMenuBar { validate(); } + private void displayScreenshot(BufferedImage aScreenshot) { + JFrame frame = new JFrame("Screenshot"); + ImageIcon image = new ImageIcon(); + image.setImage(aScreenshot); + frame.setLayout(new FlowLayout()); + JLabel label = new JLabel(image); + label.setPreferredSize(new Dimension(aScreenshot.getWidth(), aScreenshot.getHeight())); + frame.add(label); + frame.setVisible(true); + frame.pack(); + } + public void addBookmarkSeparator() { bookmarkMenu_.addSeparator(); } diff --git a/java_tests/tests/junittests/TestFrame.java b/java_tests/tests/junittests/TestFrame.java index c643280..6fc30f8 100644 --- a/java_tests/tests/junittests/TestFrame.java +++ b/java_tests/tests/junittests/TestFrame.java @@ -223,6 +223,12 @@ class TestFrame extends JFrame implements CefLifeSpanHandler, CefLoadHandler, Ce } @Override + public boolean onOpenURLFromTab(CefBrowser browser, CefFrame frame, String target_url, + boolean user_gesture) { + return false; + } + + @Override public CefResourceRequestHandler getResourceRequestHandler(CefBrowser browser, CefFrame frame, CefRequest request, boolean isNavigation, boolean isDownload, String requestInitiator, BoolRef disableDefaultHandling) { |