From e337dc6c6c1568ea51dd866093a6445898bc3cc6 Mon Sep 17 00:00:00 2001 From: Dhruvit Raithatha Date: Sun, 11 Aug 2019 12:19:10 +0530 Subject: [PATCH 01/10] Changes for JDK 11 --- .gitignore | 96 ++++++++++++++ .travis.yml | 6 +- appveyor.yml | 2 +- build.gradle | 10 +- patches/jcef-270.txt | 8 +- patches/jcef-build-xml.txt | 10 ++ .../journey/proxy/CefClientProxy.java | 7 +- .../proxy/browser/CefMessageRouterProxy.java | 117 ++++++++++++++++++ .../proxy/callback/CefQueryCallbackProxy.java | 32 +++++ .../handler/CefMessageRouterHandlerProxy.java | 63 ++++++++++ .../proxy/handler/CefNativeDefault.java | 27 ++++ .../com/codebrig/journey/JourneyBrowser.java | 30 +++++ 12 files changed, 397 insertions(+), 11 deletions(-) create mode 100644 .gitignore create mode 100644 patches/jcef-build-xml.txt create mode 100644 src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java create mode 100644 src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java create mode 100644 src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java create mode 100644 src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e1e9bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,96 @@ +# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig + +# Created by https://www.gitignore.io/api/macos,visualstudiocode,gradle,java,java-web +# Edit at https://www.gitignore.io/?templates=macos,visualstudiocode,gradle,java,java-web + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### Java-Web ### +## ignoring target file +target/ + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history + +### Gradle ### +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +### Gradle Patch ### +**/build/ + +# End of https://www.gitignore.io/api/macos,visualstudiocode,gradle,java,java-web + +# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) + diff --git a/.travis.yml b/.travis.yml index 6ee9b0d..547badd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,9 +23,9 @@ deploy: provider: releases api_key: $GH_TOKEN file: - - /home/travis/build/CodeBrig/Journey/build/libs/journey-browser-0.3.3.jar - - /home/travis/build/CodeBrig/Journey/jcef/binary_distrib/jcef-distrib-linux64.zip - - /Users/travis/build/CodeBrig/Journey/jcef/binary_distrib/jcef-distrib-macintosh64.zip + - "$TRAVIS_BUILD_DIR/build/libs/journey-browser-0.3.4.jar" + - "$TRAVIS_BUILD_DIR/jcef/binary_distrib/jcef-distrib-linux64.zip" + - "$TRAVIS_BUILD_DIR/jcef/binary_distrib/jcef-distrib-macintosh64.zip" skip_cleanup: true on: tags: true diff --git a/appveyor.yml b/appveyor.yml index 0a3655a..7373455 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -44,7 +44,7 @@ deploy: description: 'Release description' provider: GitHub auth_token: - secure: Dta1mWx33cdacZT+HJzfI0I9aauuITU8bbHzCg7F7i9nL0UpE+ZsTXzbKbGWd8gy + secure: N/NGcjsvSaZvxFrx3I41RrzmJ1Xfxc7gg6t0NmZxaaw3EQuQDHPeYKR5JCSS8PRX artifact: jcef\binary_distrib\jcef-distrib-%fullBuildType%.zip draft: false prerelease: false diff --git a/build.gradle b/build.gradle index 99488a3..1891bbc 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'java' -group 'com.codebrig' -version '0.3.3' +version '0.3.4' +group 'com.dhruvit-r' sourceCompatibility = 1.8 archivesBaseName = 'journey-browser' ext { - projectUrl = 'https://github.com/CodeBrig/Journey' + projectUrl = 'https://github.com/dhruvit-r/Journey' jcefVersion = [ '67': '67.0.3396.62', @@ -140,6 +140,10 @@ task patchJCEF { def cefAppFile = file('jcef/java/org/cef/CefApp.java') cefAppFile.text = cefAppFile.text.replace('System.loadLibrary("jawt");', file('patches/jcef-317.txt').text) + // println "Patching build.xml" + // def cefBuildFile = file('jcef/build.xml') + // cefBuildFile.text = cefBuildFile.text.replace('', file('patches/jcef-build-xml.txt').text) + if (System.getenv("TRAVIS_OS_NAME") == "osx") { //https://bitbucket.org/chromiumembedded/java-cef/issues/270 println "Patching java-cef#270" diff --git a/patches/jcef-270.txt b/patches/jcef-270.txt index 2fa26a9..0130025 100644 --- a/patches/jcef-270.txt +++ b/patches/jcef-270.txt @@ -9,6 +9,8 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import sun.awt.AWTAccessor; + @SuppressWarnings("unused") public class CefBrowserWindowMac implements CefBrowserWindow { @@ -39,8 +41,8 @@ public class CefBrowserWindowMac implements CefBrowserWindow { comp = comp.getParent(); continue; } - @SuppressWarnings("deprecation") - ComponentPeer peer = comp.getPeer(); + + ComponentPeer peer = AWTAccessor.getComponentAccessor().getPeer(comp); if (LWComponentPeer.isInstance(peer)) { Object pWindow; @@ -52,7 +54,7 @@ public class CefBrowserWindowMac implements CefBrowserWindow { if (CPlatformWindow.isInstance(pWindow)) { try { Object nativeActionProxy = Proxy.newProxyInstance(getClass().getClassLoader(), - new Class[]{CFNativeAction}, new InvocationHandler() { + new Class[] { CFNativeAction }, new InvocationHandler() { @Override public Object invoke(Object o, Method method, Object[] args) { if ("run".equals(method.getName())) { diff --git a/patches/jcef-build-xml.txt b/patches/jcef-build-xml.txt new file mode 100644 index 0000000..a1e7c1b --- /dev/null +++ b/patches/jcef-build-xml.txt @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java b/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java index 60e0e6b..53f72ca 100644 --- a/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java @@ -1,5 +1,6 @@ package com.codebrig.journey.proxy; +import com.codebrig.journey.proxy.browser.CefMessageRouterProxy; import com.codebrig.journey.proxy.handler.CefLifeSpanHandlerProxy; import org.joor.Reflect; @@ -11,7 +12,7 @@ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.3.4 * @since 0.2.0 */ @SuppressWarnings("unused") @@ -20,6 +21,8 @@ public interface CefClientProxy extends Reflect.ProxyObject { Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { if ("addLifeSpanHandler".equals(methodName)) { args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); + } else if ("addMessageRouter".equals(methodName)) { + args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); } }; @@ -38,6 +41,8 @@ public interface CefClientProxy extends Reflect.ProxyObject { CefClientProxy addLifeSpanHandler(CefLifeSpanHandlerProxy handler); + void addMessageRouter(CefMessageRouterProxy messageRouter); + void removeContextMenuHandler(); void removeDialogHandler(); diff --git a/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java new file mode 100644 index 0000000..f25933e --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java @@ -0,0 +1,117 @@ +package com.codebrig.journey.proxy.browser; + +import java.lang.reflect.Proxy; + +import com.codebrig.journey.JourneyLoader; +import com.codebrig.journey.proxy.CefBrowserProxy; +import com.codebrig.journey.proxy.handler.CefMessageRouterHandlerProxy; + +import org.joor.Reflect; +import org.joor.Reflect.ProxyArgumentsConverter; +import org.joor.Reflect.ProxyValueConverter; + +/** + * Journey local proxy for CefMessageRouterProxy. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Dhruvit Raithatha + * @version 0.3.4 + * @since 0.3.4 + */ +public abstract interface CefMessageRouterProxy extends Reflect.ProxyObject { + + ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { + if ("addHandler".equals(methodName)) { + args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); + } else if ("removeHandler".equals(methodName)) { + args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); + } else if ("cancelPending".equals(methodName)) { + args[0] = Reflect.on(args[0]).as(CefBrowserProxy.class); + args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); + } else if ("getPendingCount".equals(methodName)) { + args[0] = Reflect.on(args[0]).as(CefBrowserProxy.class); + args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); + } + }; + + ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + + /** + * Create a new router with the default configuration. + * + * @return in instance of CefMessageRouterProxy + */ + static CefMessageRouterProxy create() { + JourneyLoader classLoader = JourneyLoader.getJourneyClassLoader(); + Class CefMessageRouterClass = classLoader.loadClass("org.cef.browser.CefMessageRouter"); + + // Object realCefMessageRouter = Reflect.onClass(CefMessageRouterClass).call("create").get(); + // return Reflect.on(realCefMessageRouter).as(CefMessageRouterProxy.class); + Object realCefMessageRouter = Reflect + .onClass(CefMessageRouterClass) + .call("create") + .get(); + CefMessageRouterProxy cefMessageRoute = Reflect + .on(realCefMessageRouter) + .as( + CefMessageRouterProxy.class, + JourneyLoader.getJourneyClassLoader() + ); + return cefMessageRoute; + }; + + /** + * Must be called if the CefMessageRouterProxy instance isn't used any more + */ + void dispose(); + + /** + * Add a new query handler. If |first| is true it will be added as the first + * handler, otherwise it will be added as the last handler. Returns true if the + * handler is added successfully or false if the handler has already been added. + * Must be called on the browser process UI thread. The Handler object must + * either outlive the router or be removed before deletion. + * + * @param handler the according handler to be added + * @param first if If set to true it will be added as the first handler + * @return true if the handler is added successfully + */ + boolean addHandler(CefMessageRouterHandlerProxy handler, boolean first); + + /** + * Remove an existing query handler. Any pending queries associated with the + * handler will be canceled. Handler.OnQueryCanceled will be called and the + * associated JavaScript onFailure callback will be executed with an error code + * of -1. Returns true if the handler is removed successfully or false if the + * handler is not found. Must be called on the browser process UI thread. + * + * @param handler the according handler to be removed + * @return true if the handler is removed successfully + */ + boolean removeHandler(CefMessageRouterHandlerProxy handler); + + /** + * Cancel all pending queries associated with either |browser| or |handler|. If + * both |browser| and |handler| are NULL all pending queries will be canceled. + * Handler::OnQueryCanceled will be called and the associated JavaScript + * onFailure callback will be executed in all cases with an error code of -1. + * + * @param browser may be empty + * @param handler may be empty + */ + void cancelPending(CefBrowserProxy browser, CefMessageRouterHandlerProxy handler); + + /** + * Returns the number of queries currently pending for the specified |browser| + * and/or |handler|. Either or both values may be empty. Must be called on the + * browser process UI thread. + * + * @param browser may be empty + * @param handler may be empty + * @return the number of queries currently pending + */ + int getPendingCount(CefBrowserProxy browser, CefMessageRouterHandlerProxy handler); + + +} diff --git a/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java b/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java new file mode 100644 index 0000000..ef33da8 --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java @@ -0,0 +1,32 @@ +package com.codebrig.journey.proxy.callback; + +import org.joor.Reflect; + +/** + * Journey local proxy for CefQueryCallbackProxy. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Dhruvit Raithatha + * @version 0.3.4 + * @since 0.3.4 + */ +public interface CefQueryCallbackProxy extends Reflect.ProxyObject { + Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> {}; + + Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + /** + * Notify the associated JavaScript onSuccess callback that the query has + * completed successfully. + * @param response Response passed to JavaScript. + */ + public void success(String response); + + /** + * Notify the associated JavaScript onFailure callback that the query has + * failed. + * @param error_code Error code passed to JavaScript. + * @param error_message Error message passed to JavaScript. + */ + public void failure(int error_code, String error_message); +} diff --git a/src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java b/src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java new file mode 100644 index 0000000..267c0d4 --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java @@ -0,0 +1,63 @@ +package com.codebrig.journey.proxy.handler; + +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +import com.codebrig.journey.JourneyLoader; +import com.codebrig.journey.proxy.CefBrowserProxy; +import com.codebrig.journey.proxy.browser.CefFrameProxy; +import com.codebrig.journey.proxy.callback.CefQueryCallbackProxy; + +import org.joor.Reflect; + +/** + * Journey local proxy for CefMessageRouterHandlerProxy. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Dhruvit Raithatha + * @version 0.3.4 + * @since 0.3.4 + */ +public interface CefMessageRouterHandlerProxy extends Reflect.ProxyObject { + + Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { + if ("onQuery".equals(methodName)) { + args[0] = Reflect.on(args[0]).as(CefBrowserProxy.class); + args[1] = Reflect.on(args[1]).as(CefFrameProxy.class); + args[5] = Reflect.on(args[5]).as(CefQueryCallbackProxy.class); + } else if ("onQueryCanceled".equals(methodName)) { + args[0] = Reflect.on(args[0]).as(CefBrowserProxy.class); + args[1] = Reflect.on(args[1]).as(CefFrameProxy.class); + } + }; + + Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + + boolean onQuery(CefBrowserProxy browser, CefFrameProxy frame, long query_id, String request, + boolean persistent, CefQueryCallbackProxy callback); + + void onQueryCanceled(CefBrowserProxy browser, CefFrameProxy frame, long query_id); + + void setNativeRef(String identifer, long nativeRef); + + long getNativeRef(String identifer); + + static CefMessageRouterHandlerProxy createHandler(CefMessageRouterHandlerProxy handler) { + Object instance = Proxy.newProxyInstance(JourneyLoader.getJourneyClassLoader(), + new Class[] { JourneyLoader.getJourneyClassLoader() + .loadClass("org.cef.handler.CefMessageRouterHandler") }, + new Reflect.ProxyInvocationHandler() { + @Override + public Object invoke(Object proxy, Method method, Object[] args) { + ((Reflect.ProxyArgumentsConverter) Reflect.on(handler) + .field("PROXY_ARGUMENTS_CONVERTER").get()).convertArguments(method.getName(), + args); + return ((Reflect.ProxyValueConverter) Reflect.on(handler).field("PROXY_VALUE_CONVERTER") + .get()).convertValue(method.getName(), + Reflect.on(handler).call(method.getName(), args).get()); + } + }); + return Reflect.on(instance).as(CefMessageRouterHandlerProxy.class); + } +} diff --git a/src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java b/src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java new file mode 100644 index 0000000..5a94f72 --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java @@ -0,0 +1,27 @@ +package com.codebrig.journey.proxy.handler; + +import java.util.HashMap; + +/** + * Journey local proxy for CefNativeDefault. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Dhruvit Raithatha + * @version 0.3.4 + * @since 0.3.4 + */ +public class CefNativeDefault { + private HashMap hmap = new HashMap(); + + public void setNativeRef(String identifer, long nativeRef) { + hmap.put(identifer, nativeRef); + } + + public long getNativeRef(String identifer) { + if (hmap.containsKey(identifer)) { + return hmap.get(identifer).longValue(); + } + return 0; + } +} \ No newline at end of file diff --git a/src/test/java/com/codebrig/journey/JourneyBrowser.java b/src/test/java/com/codebrig/journey/JourneyBrowser.java index 6ccc4b9..87925ad 100644 --- a/src/test/java/com/codebrig/journey/JourneyBrowser.java +++ b/src/test/java/com/codebrig/journey/JourneyBrowser.java @@ -1,16 +1,38 @@ package com.codebrig.journey; import com.codebrig.journey.JourneyBrowserView; +import com.codebrig.journey.proxy.CefBrowserProxy; +import com.codebrig.journey.proxy.browser.CefFrameProxy; +import com.codebrig.journey.proxy.browser.CefMessageRouterProxy; +import com.codebrig.journey.proxy.callback.CefQueryCallbackProxy; +import com.codebrig.journey.proxy.handler.CefMessageRouterHandlerProxy; +import com.codebrig.journey.proxy.handler.CefNativeDefault; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +class MessageHandler extends CefNativeDefault implements CefMessageRouterHandlerProxy { + public void onQueryCanceled(CefBrowserProxy browser, CefFrameProxy frame, long query_id) { + System.out.println("Query cancelled."); + } + + public boolean onQuery(CefBrowserProxy browser, CefFrameProxy frame, long query_id, String request, + boolean persistent, CefQueryCallbackProxy callback) { + System.out.println("Query succeeded: " + request); + callback.success(request); + return true; + } +} + public class JourneyBrowser { public static void main(String[] args) throws Exception { JourneyBrowserView browser = new JourneyBrowserView("https://google.com"); + CefMessageRouterProxy messageRouter = CefMessageRouterProxy.create(); + messageRouter.addHandler(new MessageHandler(), true); + browser.getCefClient().addMessageRouter(messageRouter); JFrame frame = new JFrame(); frame.getContentPane().add(browser, BorderLayout.CENTER); @@ -23,6 +45,14 @@ public void windowClosing(WindowEvent e) { } }); + frame.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + browser.getCefApp().dispose(); + frame.dispose(); + } + }); + frame.setTitle("Journey"); frame.setSize(1000, 600); frame.setVisible(true); From f3437bcf858266857d65520ee851fba5f7901572 Mon Sep 17 00:00:00 2001 From: Dhruvit Raithatha Date: Mon, 12 Aug 2019 05:34:05 +0530 Subject: [PATCH 02/10] Fix type --- .travis.yml | 2 +- build.gradle | 2 +- src/main/java/com/codebrig/journey/JourneyLoader.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 547badd..3890800 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ deploy: provider: releases api_key: $GH_TOKEN file: - - "$TRAVIS_BUILD_DIR/build/libs/journey-browser-0.3.4.jar" + - "$TRAVIS_BUILD_DIR/build/libs/journey-browser-0.3.5.jar" - "$TRAVIS_BUILD_DIR/jcef/binary_distrib/jcef-distrib-linux64.zip" - "$TRAVIS_BUILD_DIR/jcef/binary_distrib/jcef-distrib-macintosh64.zip" skip_cleanup: true diff --git a/build.gradle b/build.gradle index 1891bbc..d355cf1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'java' -version '0.3.4' +version '0.3.5' group 'com.dhruvit-r' sourceCompatibility = 1.8 diff --git a/src/main/java/com/codebrig/journey/JourneyLoader.java b/src/main/java/com/codebrig/journey/JourneyLoader.java index fe0ed7c..4db40cb 100644 --- a/src/main/java/com/codebrig/journey/JourneyLoader.java +++ b/src/main/java/com/codebrig/journey/JourneyLoader.java @@ -78,11 +78,11 @@ public static void setup() throws RuntimeException { if (is64bit) { providerName = "windows_64"; jcefName = "win64"; - JOURNEY_LOADER_LISTENER.determinedOS("windows", 32); + JOURNEY_LOADER_LISTENER.determinedOS("windows", 64); } else { providerName = "windows_32"; jcefName = "win32"; - JOURNEY_LOADER_LISTENER.determinedOS("windows", 64); + JOURNEY_LOADER_LISTENER.determinedOS("windows", 32); } } else if (osName.toLowerCase().startsWith("linux")) { providerName = "linux_64"; From 5ef9cc675f59ef6b45cba2abb37c64a12bfa12b7 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 30 Nov 2019 19:53:11 -0700 Subject: [PATCH 03/10] reverts --- .gitignore | 96 -------------------------------------- appveyor.yml | 2 +- build.gradle | 8 +--- patches/jcef-270.txt | 8 ++-- patches/jcef-build-xml.txt | 10 ---- 5 files changed, 6 insertions(+), 118 deletions(-) delete mode 100644 .gitignore delete mode 100644 patches/jcef-build-xml.txt diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 7e1e9bd..0000000 --- a/.gitignore +++ /dev/null @@ -1,96 +0,0 @@ -# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig - -# Created by https://www.gitignore.io/api/macos,visualstudiocode,gradle,java,java-web -# Edit at https://www.gitignore.io/?templates=macos,visualstudiocode,gradle,java,java-web - -### Java ### -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.nar -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* - -### Java-Web ### -## ignoring target file -target/ - -### macOS ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### VisualStudioCode ### -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -### VisualStudioCode Patch ### -# Ignore all local history of files -.history - -### Gradle ### -.gradle -build/ - -# Ignore Gradle GUI config -gradle-app.setting - -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar - -# Cache of project -.gradletasknamecache - -# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 -# gradle/wrapper/gradle-wrapper.properties - -### Gradle Patch ### -**/build/ - -# End of https://www.gitignore.io/api/macos,visualstudiocode,gradle,java,java-web - -# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) - diff --git a/appveyor.yml b/appveyor.yml index 7373455..0a3655a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -44,7 +44,7 @@ deploy: description: 'Release description' provider: GitHub auth_token: - secure: N/NGcjsvSaZvxFrx3I41RrzmJ1Xfxc7gg6t0NmZxaaw3EQuQDHPeYKR5JCSS8PRX + secure: Dta1mWx33cdacZT+HJzfI0I9aauuITU8bbHzCg7F7i9nL0UpE+ZsTXzbKbGWd8gy artifact: jcef\binary_distrib\jcef-distrib-%fullBuildType%.zip draft: false prerelease: false diff --git a/build.gradle b/build.gradle index d355cf1..8e4a9a5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'java' version '0.3.5' -group 'com.dhruvit-r' +group 'com.codebrig' sourceCompatibility = 1.8 archivesBaseName = 'journey-browser' ext { - projectUrl = 'https://github.com/dhruvit-r/Journey' + projectUrl = 'https://github.com/CodeBrig/Journey' jcefVersion = [ '67': '67.0.3396.62', @@ -140,10 +140,6 @@ task patchJCEF { def cefAppFile = file('jcef/java/org/cef/CefApp.java') cefAppFile.text = cefAppFile.text.replace('System.loadLibrary("jawt");', file('patches/jcef-317.txt').text) - // println "Patching build.xml" - // def cefBuildFile = file('jcef/build.xml') - // cefBuildFile.text = cefBuildFile.text.replace('', file('patches/jcef-build-xml.txt').text) - if (System.getenv("TRAVIS_OS_NAME") == "osx") { //https://bitbucket.org/chromiumembedded/java-cef/issues/270 println "Patching java-cef#270" diff --git a/patches/jcef-270.txt b/patches/jcef-270.txt index 0130025..2fa26a9 100644 --- a/patches/jcef-270.txt +++ b/patches/jcef-270.txt @@ -9,8 +9,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; -import sun.awt.AWTAccessor; - @SuppressWarnings("unused") public class CefBrowserWindowMac implements CefBrowserWindow { @@ -41,8 +39,8 @@ public class CefBrowserWindowMac implements CefBrowserWindow { comp = comp.getParent(); continue; } - - ComponentPeer peer = AWTAccessor.getComponentAccessor().getPeer(comp); + @SuppressWarnings("deprecation") + ComponentPeer peer = comp.getPeer(); if (LWComponentPeer.isInstance(peer)) { Object pWindow; @@ -54,7 +52,7 @@ public class CefBrowserWindowMac implements CefBrowserWindow { if (CPlatformWindow.isInstance(pWindow)) { try { Object nativeActionProxy = Proxy.newProxyInstance(getClass().getClassLoader(), - new Class[] { CFNativeAction }, new InvocationHandler() { + new Class[]{CFNativeAction}, new InvocationHandler() { @Override public Object invoke(Object o, Method method, Object[] args) { if ("run".equals(method.getName())) { diff --git a/patches/jcef-build-xml.txt b/patches/jcef-build-xml.txt deleted file mode 100644 index a1e7c1b..0000000 --- a/patches/jcef-build-xml.txt +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file From 883633118c5eaed684ddaf1dd99651144daacd1a Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 30 Nov 2019 22:48:46 -0700 Subject: [PATCH 04/10] js test --- build.gradle | 2 +- .../codebrig/journey/JourneyBrowserView.java | 2 +- .../journey/proxy/CefClientProxy.java | 7 ++ .../proxy/browser/CefMessageRouterProxy.java | 42 ++----- .../callback/CefJSDialogCallbackProxy.java | 28 +++++ .../proxy/callback/CefNativeProxy.java | 38 ++++++ .../proxy/callback/CefQueryCallbackProxy.java | 19 +-- .../handler/CefJSDialogHandlerProxy.java | 114 ++++++++++++++++++ .../handler/CefMessageRouterHandlerProxy.java | 62 ++++++---- .../proxy/handler/CefNativeDefault.java | 27 ----- .../journey/proxy/misc/BoolRefProxy.java | 24 ++++ .../com/codebrig/journey/JourneyBrowser.java | 63 +++++++--- .../codebrig/journey/JourneyBrowserTest.java | 2 +- src/test/resources/JSTest.html | 35 ++++++ 14 files changed, 355 insertions(+), 110 deletions(-) create mode 100644 src/main/java/com/codebrig/journey/proxy/callback/CefJSDialogCallbackProxy.java create mode 100644 src/main/java/com/codebrig/journey/proxy/callback/CefNativeProxy.java create mode 100644 src/main/java/com/codebrig/journey/proxy/handler/CefJSDialogHandlerProxy.java delete mode 100644 src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java create mode 100644 src/main/java/com/codebrig/journey/proxy/misc/BoolRefProxy.java create mode 100644 src/test/resources/JSTest.html diff --git a/build.gradle b/build.gradle index 8e4a9a5..f8b5e54 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'java' -version '0.3.5' +version '0.3.3' group 'com.codebrig' sourceCompatibility = 1.8 diff --git a/src/main/java/com/codebrig/journey/JourneyBrowserView.java b/src/main/java/com/codebrig/journey/JourneyBrowserView.java index e409e1e..d2acba3 100644 --- a/src/main/java/com/codebrig/journey/JourneyBrowserView.java +++ b/src/main/java/com/codebrig/journey/JourneyBrowserView.java @@ -23,7 +23,7 @@ * @version 0.3.3 * @since 0.1.1 */ -@SuppressWarnings({"JavaReflectionInvocation", "WeakerAccess"}) +@SuppressWarnings({"WeakerAccess"}) public class JourneyBrowserView extends JComponent { public static final String ABOUT_BLANK = "about:blank"; diff --git a/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java b/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java index 53f72ca..3a7faf7 100644 --- a/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java @@ -1,6 +1,7 @@ package com.codebrig.journey.proxy; import com.codebrig.journey.proxy.browser.CefMessageRouterProxy; +import com.codebrig.journey.proxy.handler.CefJSDialogHandlerProxy; import com.codebrig.journey.proxy.handler.CefLifeSpanHandlerProxy; import org.joor.Reflect; @@ -21,6 +22,8 @@ public interface CefClientProxy extends Reflect.ProxyObject { Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { if ("addLifeSpanHandler".equals(methodName)) { args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); + } else if ("addJSDialogHandler".equals(methodName)) { + args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); } else if ("addMessageRouter".equals(methodName)) { args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); } @@ -31,6 +34,8 @@ public interface CefClientProxy extends Reflect.ProxyObject { return Reflect.on(returnValue).as(CefBrowserProxy.class); } else if ("addLifeSpanHandler".equals(methodName)) { return Reflect.on(returnValue).as(CefClientProxy.class); + } else if ("addJSDialogHandler".equals(methodName)) { + return Reflect.on(returnValue).as(CefClientProxy.class); } return returnValue; }; @@ -41,6 +46,8 @@ public interface CefClientProxy extends Reflect.ProxyObject { CefClientProxy addLifeSpanHandler(CefLifeSpanHandlerProxy handler); + CefClientProxy addJSDialogHandler(CefJSDialogHandlerProxy handler); + void addMessageRouter(CefMessageRouterProxy messageRouter); void removeContextMenuHandler(); diff --git a/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java index f25933e..6caaed1 100644 --- a/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java @@ -1,25 +1,24 @@ package com.codebrig.journey.proxy.browser; -import java.lang.reflect.Proxy; - import com.codebrig.journey.JourneyLoader; import com.codebrig.journey.proxy.CefBrowserProxy; import com.codebrig.journey.proxy.handler.CefMessageRouterHandlerProxy; - import org.joor.Reflect; import org.joor.Reflect.ProxyArgumentsConverter; import org.joor.Reflect.ProxyValueConverter; +import java.lang.reflect.Proxy; + /** * Journey local proxy for CefMessageRouterProxy. *

* Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Dhruvit Raithatha - * @version 0.3.4 - * @since 0.3.4 + * @version 0.4.0 + * @since 0.4.0 */ -public abstract interface CefMessageRouterProxy extends Reflect.ProxyObject { +public interface CefMessageRouterProxy extends Reflect.ProxyObject { ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { if ("addHandler".equals(methodName)) { @@ -37,30 +36,6 @@ public abstract interface CefMessageRouterProxy extends Reflect.ProxyObject { ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; - /** - * Create a new router with the default configuration. - * - * @return in instance of CefMessageRouterProxy - */ - static CefMessageRouterProxy create() { - JourneyLoader classLoader = JourneyLoader.getJourneyClassLoader(); - Class CefMessageRouterClass = classLoader.loadClass("org.cef.browser.CefMessageRouter"); - - // Object realCefMessageRouter = Reflect.onClass(CefMessageRouterClass).call("create").get(); - // return Reflect.on(realCefMessageRouter).as(CefMessageRouterProxy.class); - Object realCefMessageRouter = Reflect - .onClass(CefMessageRouterClass) - .call("create") - .get(); - CefMessageRouterProxy cefMessageRoute = Reflect - .on(realCefMessageRouter) - .as( - CefMessageRouterProxy.class, - JourneyLoader.getJourneyClassLoader() - ); - return cefMessageRoute; - }; - /** * Must be called if the CefMessageRouterProxy instance isn't used any more */ @@ -113,5 +88,10 @@ static CefMessageRouterProxy create() { */ int getPendingCount(CefBrowserProxy browser, CefMessageRouterHandlerProxy handler); - + static CefMessageRouterProxy createRouter() { + JourneyLoader classLoader = JourneyLoader.getJourneyClassLoader(); + Object realCefMessageRouter = Reflect.onClass(classLoader.loadClass("org.cef.browser.CefMessageRouter")) + .call("create").get(); + return Reflect.on(realCefMessageRouter).as(CefMessageRouterProxy.class); + } } diff --git a/src/main/java/com/codebrig/journey/proxy/callback/CefJSDialogCallbackProxy.java b/src/main/java/com/codebrig/journey/proxy/callback/CefJSDialogCallbackProxy.java new file mode 100644 index 0000000..c4b9c37 --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/callback/CefJSDialogCallbackProxy.java @@ -0,0 +1,28 @@ +package com.codebrig.journey.proxy.callback; + +import org.joor.Reflect; + +/** + * Journey local proxy for CefJSDialogCallback. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Brandon Fergerson + * @version 0.4.0 + * @since 0.4.0 + */ +public interface CefJSDialogCallbackProxy { + + Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { + }; + + Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + + /** + * Continue the JS dialog request. + * + * @param success Set to true if the OK button was pressed. + * @param userInput The value should be specified for prompt dialogs. + */ + void Continue(boolean success, String userInput); +} \ No newline at end of file diff --git a/src/main/java/com/codebrig/journey/proxy/callback/CefNativeProxy.java b/src/main/java/com/codebrig/journey/proxy/callback/CefNativeProxy.java new file mode 100644 index 0000000..3e11432 --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/callback/CefNativeProxy.java @@ -0,0 +1,38 @@ +package com.codebrig.journey.proxy.callback; + +import org.joor.Reflect; + +/** + * Journey local proxy for CefNative. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Dhruvit Raithatha + * @version 0.4.0 + * @since 0.4.0 + */ +public interface CefNativeProxy extends Reflect.ProxyObject { + + Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { + }; + + Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + + /** + * Method is called by the native code to store a reference + * to an implemented native JNI counterpart. + * + * @param identifer The name of the interface class (e.g. CefFocusHandler). + * @param nativeRef The reference to the native code. + */ + void setNativeRef(String identifer, long nativeRef); + + /** + * Method is called by the native code to get the reference + * to an previous stored identifier. + * + * @param identifer The name of the interface class (e.g. CefFocusHandler). + * @return The stored reference value of the native code. + */ + long getNativeRef(String identifer); +} \ No newline at end of file diff --git a/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java b/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java index ef33da8..ddff297 100644 --- a/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java @@ -8,25 +8,30 @@ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Dhruvit Raithatha - * @version 0.3.4 - * @since 0.3.4 + * @version 0.4.0 + * @since 0.4.0 */ public interface CefQueryCallbackProxy extends Reflect.ProxyObject { - Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> {}; + + Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { + }; Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + /** * Notify the associated JavaScript onSuccess callback that the query has * completed successfully. + * * @param response Response passed to JavaScript. */ - public void success(String response); + void success(String response); /** * Notify the associated JavaScript onFailure callback that the query has * failed. - * @param error_code Error code passed to JavaScript. - * @param error_message Error message passed to JavaScript. + * + * @param errorCode Error code passed to JavaScript. + * @param errorMessage Error message passed to JavaScript. */ - public void failure(int error_code, String error_message); + void failure(int errorCode, String errorMessage); } diff --git a/src/main/java/com/codebrig/journey/proxy/handler/CefJSDialogHandlerProxy.java b/src/main/java/com/codebrig/journey/proxy/handler/CefJSDialogHandlerProxy.java new file mode 100644 index 0000000..502385f --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/handler/CefJSDialogHandlerProxy.java @@ -0,0 +1,114 @@ +package com.codebrig.journey.proxy.handler; + +import com.codebrig.journey.JourneyLoader; +import com.codebrig.journey.proxy.CefBrowserProxy; +import com.codebrig.journey.proxy.callback.CefJSDialogCallbackProxy; +import com.codebrig.journey.proxy.misc.BoolRefProxy; +import org.joor.Reflect; + +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +/** + * Journey local proxy for CefJSDialogHandler. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Brandon Fergerson + * @version 0.4.0 + * @since 0.4.0 + */ +public interface CefJSDialogHandlerProxy { + + Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { + if ("onJSDialog".equals(methodName)) { + args[0] = Reflect.on(args[0]).as(CefBrowserProxy.class); + args[2] = JSDialogType.valueOf(args[2].toString()); + args[5] = Reflect.on(args[5]).as(CefJSDialogCallbackProxy.class); + args[6] = Reflect.on(args[6]).as(BoolRefProxy.class); + } + }; + + Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + + /** + * Supported JavaScript dialog types. + */ + enum JSDialogType { + JSDIALOGTYPE_ALERT, + JSDIALOGTYPE_CONFIRM, + JSDIALOGTYPE_PROMPT, + } + + /** + * Called to run a JavaScript dialog. Set suppressMessage to true and + * return false to suppress the message (suppressing messages is preferable + * to immediately executing the callback as this is used to detect presumably + * malicious behavior like spamming alert messages in onbeforeunload). Set + * suppressMessage to false and return false to use the default + * implementation (the default implementation will show one modal dialog at a + * time and suppress any additional dialog requests until the displayed dialog + * is dismissed). Return true if the application will use a custom dialog or + * if the callback has been executed immediately. Custom dialogs may be either + * modal or modeless. If a custom dialog is used the application must execute + * callback once the custom dialog is dismissed. + * + * @param browser The corresponding browser. + * @param originUrl The originating url. + * @param dialogType the dialog type. + * @param messageText the text to be displayed. + * @param defaultPromptText value will be specified for prompt dialogs only. + * @param callback execute callback once the custom dialog is dismissed. + * @param suppressMessage set to true to suppress displaying the message. + * @return false to use the default dialog implementation. Return true if the + * application will use a custom dialog. + */ + boolean onJSDialog(CefBrowserProxy browser, String originUrl, JSDialogType dialogType, + String messageText, String defaultPromptText, CefJSDialogCallbackProxy callback, + BoolRefProxy suppressMessage); + + /** + * Called to run a dialog asking the user if they want to leave a page. Return + * false to use the default dialog implementation. Return true if the + * application will use a custom dialog or if the callback has been executed + * immediately. Custom dialogs may be either modal or modeless. If a custom + * dialog is used the application must execute callback once the custom + * dialog is dismissed. + * + * @param browser The corresponding browser. + * @param messageText The text to be displayed. + * @param isReload true if the page is reloaded. + * @param callback execute callback once the custom dialog is dismissed. + * @return false to use the default dialog implementation. Return true if the + * application will use a custom dialog. + */ + boolean onBeforeUnloadDialog(CefBrowserProxy browser, String messageText, boolean isReload, + CefJSDialogCallbackProxy callback); + + /** + * Called to cancel any pending dialogs and reset any saved dialog state. Will + * be called due to events like page navigation irregardless of whether any + * dialogs are currently pending. + */ + void onResetDialogState(CefBrowserProxy browser); + + /** + * Called when the default implementation dialog is closed. + */ + void onDialogClosed(CefBrowserProxy browser); + + static CefJSDialogHandlerProxy createHandler(CefJSDialogHandlerProxy handler) { + Object instance = Proxy.newProxyInstance(JourneyLoader.getJourneyClassLoader(), + new Class[]{JourneyLoader.getJourneyClassLoader().loadClass("org.cef.handler.CefJSDialogHandler")}, + new Reflect.ProxyInvocationHandler() { + @Override + public Object invoke(Object proxy, Method method, Object[] args) { + ((Reflect.ProxyArgumentsConverter) Reflect.on(handler).field("PROXY_ARGUMENTS_CONVERTER").get()) + .convertArguments(method.getName(), args); + return ((Reflect.ProxyValueConverter) Reflect.on(handler).field("PROXY_VALUE_CONVERTER").get()) + .convertValue(method.getName(), Reflect.on(handler).call(method.getName(), args).get()); + } + }); + return Reflect.on(instance).as(CefJSDialogHandlerProxy.class); + } +} diff --git a/src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java b/src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java index 267c0d4..0cb464a 100644 --- a/src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/handler/CefMessageRouterHandlerProxy.java @@ -1,25 +1,25 @@ package com.codebrig.journey.proxy.handler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; - import com.codebrig.journey.JourneyLoader; import com.codebrig.journey.proxy.CefBrowserProxy; import com.codebrig.journey.proxy.browser.CefFrameProxy; +import com.codebrig.journey.proxy.callback.CefNativeProxy; import com.codebrig.journey.proxy.callback.CefQueryCallbackProxy; - import org.joor.Reflect; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + /** - * Journey local proxy for CefMessageRouterHandlerProxy. + * Journey local proxy for CefMessageRouterHandler. *

* Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Dhruvit Raithatha - * @version 0.3.4 - * @since 0.3.4 + * @version 0.4.0 + * @since 0.4.0 */ -public interface CefMessageRouterHandlerProxy extends Reflect.ProxyObject { +public interface CefMessageRouterHandlerProxy extends CefNativeProxy { Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { if ("onQuery".equals(methodName)) { @@ -34,28 +34,44 @@ public interface CefMessageRouterHandlerProxy extends Reflect.ProxyObject { Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; - boolean onQuery(CefBrowserProxy browser, CefFrameProxy frame, long query_id, String request, - boolean persistent, CefQueryCallbackProxy callback); - - void onQueryCanceled(CefBrowserProxy browser, CefFrameProxy frame, long query_id); - - void setNativeRef(String identifer, long nativeRef); + /** + * Called when the browser receives a JavaScript query. + * + * @param browser The corresponding browser. + * @param frame The frame generating the event. Instance only valid within the scope of this + * method. + * @param queryId The unique ID for the query. + * @param persistent True if the query is persistent. + * @param callback Object used to continue or cancel the query asynchronously. + * @return True to handle the query or false to propagate the query to other registered + * handlers, if any. If no handlers return true from this method then the query will be + * automatically canceled with an error code of -1 delivered to the JavaScript onFailure + * callback. + */ + boolean onQuery(CefBrowserProxy browser, CefFrameProxy frame, long queryId, String request, + boolean persistent, CefQueryCallbackProxy callback); - long getNativeRef(String identifer); + /** + * Called when a pending JavaScript query is canceled. + * + * @param browser The corresponding browser. + * @param frame The frame generating the event. Instance only valid within the scope of this + * method. + * @param queryId The unique ID for the query. + */ + void onQueryCanceled(CefBrowserProxy browser, CefFrameProxy frame, long queryId); static CefMessageRouterHandlerProxy createHandler(CefMessageRouterHandlerProxy handler) { Object instance = Proxy.newProxyInstance(JourneyLoader.getJourneyClassLoader(), - new Class[] { JourneyLoader.getJourneyClassLoader() - .loadClass("org.cef.handler.CefMessageRouterHandler") }, + new Class[]{JourneyLoader.getJourneyClassLoader() + .loadClass("org.cef.handler.CefMessageRouterHandler")}, new Reflect.ProxyInvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) { - ((Reflect.ProxyArgumentsConverter) Reflect.on(handler) - .field("PROXY_ARGUMENTS_CONVERTER").get()).convertArguments(method.getName(), - args); - return ((Reflect.ProxyValueConverter) Reflect.on(handler).field("PROXY_VALUE_CONVERTER") - .get()).convertValue(method.getName(), - Reflect.on(handler).call(method.getName(), args).get()); + ((Reflect.ProxyArgumentsConverter) Reflect.on(handler).field("PROXY_ARGUMENTS_CONVERTER").get()) + .convertArguments(method.getName(), args); + return ((Reflect.ProxyValueConverter) Reflect.on(handler).field("PROXY_VALUE_CONVERTER").get()) + .convertValue(method.getName(), Reflect.on(handler).call(method.getName(), args).get()); } }); return Reflect.on(instance).as(CefMessageRouterHandlerProxy.class); diff --git a/src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java b/src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java deleted file mode 100644 index 5a94f72..0000000 --- a/src/main/java/com/codebrig/journey/proxy/handler/CefNativeDefault.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.codebrig.journey.proxy.handler; - -import java.util.HashMap; - -/** - * Journey local proxy for CefNativeDefault. - *

- * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef - * - * @author Dhruvit Raithatha - * @version 0.3.4 - * @since 0.3.4 - */ -public class CefNativeDefault { - private HashMap hmap = new HashMap(); - - public void setNativeRef(String identifer, long nativeRef) { - hmap.put(identifer, nativeRef); - } - - public long getNativeRef(String identifer) { - if (hmap.containsKey(identifer)) { - return hmap.get(identifer).longValue(); - } - return 0; - } -} \ No newline at end of file diff --git a/src/main/java/com/codebrig/journey/proxy/misc/BoolRefProxy.java b/src/main/java/com/codebrig/journey/proxy/misc/BoolRefProxy.java new file mode 100644 index 0000000..a2a26c8 --- /dev/null +++ b/src/main/java/com/codebrig/journey/proxy/misc/BoolRefProxy.java @@ -0,0 +1,24 @@ +package com.codebrig.journey.proxy.misc; + +import org.joor.Reflect; + +/** + * Journey local proxy for BoolRef. + *

+ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef + * + * @author Brandon Fergerson + * @version 0.4.0 + * @since 0.4.0 + */ +public interface BoolRefProxy { + + Reflect.ProxyArgumentsConverter PROXY_ARGUMENTS_CONVERTER = (methodName, args) -> { + }; + + Reflect.ProxyValueConverter PROXY_VALUE_CONVERTER = (methodName, returnValue) -> returnValue; + + void set(boolean value); + + boolean get(); +} diff --git a/src/test/java/com/codebrig/journey/JourneyBrowser.java b/src/test/java/com/codebrig/journey/JourneyBrowser.java index 87925ad..5ee6b33 100644 --- a/src/test/java/com/codebrig/journey/JourneyBrowser.java +++ b/src/test/java/com/codebrig/journey/JourneyBrowser.java @@ -1,41 +1,66 @@ package com.codebrig.journey; -import com.codebrig.journey.JourneyBrowserView; import com.codebrig.journey.proxy.CefBrowserProxy; import com.codebrig.journey.proxy.browser.CefFrameProxy; import com.codebrig.journey.proxy.browser.CefMessageRouterProxy; import com.codebrig.journey.proxy.callback.CefQueryCallbackProxy; import com.codebrig.journey.proxy.handler.CefMessageRouterHandlerProxy; -import com.codebrig.journey.proxy.handler.CefNativeDefault; import javax.swing.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.io.File; -class MessageHandler extends CefNativeDefault implements CefMessageRouterHandlerProxy { - public void onQueryCanceled(CefBrowserProxy browser, CefFrameProxy frame, long query_id) { - System.out.println("Query cancelled."); - } +public class JourneyBrowser { - public boolean onQuery(CefBrowserProxy browser, CefFrameProxy frame, long query_id, String request, - boolean persistent, CefQueryCallbackProxy callback) { - System.out.println("Query succeeded: " + request); - callback.success(request); - return true; - } -} + public static void main(String[] args) { + File jsTest = new File("src/test/resources/JSTest.html"); + JourneyBrowserView browser = new JourneyBrowserView("file:///" + jsTest.getAbsolutePath()); -public class JourneyBrowser { + CefMessageRouterProxy messageRouter = CefMessageRouterProxy.createRouter(); + messageRouter.addHandler(CefMessageRouterHandlerProxy.createHandler(new CefMessageRouterHandlerProxy() { + + private long N_CefHandle = 0; + + @Override + public boolean onQuery(CefBrowserProxy browser, CefFrameProxy frame, long queryId, String request, + boolean persistent, CefQueryCallbackProxy callback) { + if ("javaVersion".equals(request)) { + callback.success(System.getProperty("java.version")); + return true; + } else if ("showDevTools".equals(request)) { + CefBrowserProxy devTools = browser.getDevTools(); + Component uiComponent = devTools.getUIComponent(); + JFrame devFrame = new JFrame("DevToolsWindow"); + devFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + devFrame.setSize(1000, 600); + devFrame.getContentPane().add(BorderLayout.CENTER, uiComponent); + devFrame.setVisible(true); + return true; + } else { + return false; + } + } + + @Override + public void onQueryCanceled(CefBrowserProxy browser, CefFrameProxy frame, long queryId) { + } + + @Override + public void setNativeRef(String identifer, long nativeRef) { + N_CefHandle = nativeRef; + } - public static void main(String[] args) throws Exception { - JourneyBrowserView browser = new JourneyBrowserView("https://google.com"); - CefMessageRouterProxy messageRouter = CefMessageRouterProxy.create(); - messageRouter.addHandler(new MessageHandler(), true); + @Override + public long getNativeRef(String identifer) { + return N_CefHandle; + } + }), true); browser.getCefClient().addMessageRouter(messageRouter); + JFrame frame = new JFrame(); frame.getContentPane().add(browser, BorderLayout.CENTER); - frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); frame.addWindowListener(new WindowAdapter() { @Override diff --git a/src/test/java/com/codebrig/journey/JourneyBrowserTest.java b/src/test/java/com/codebrig/journey/JourneyBrowserTest.java index 39f8700..4b33889 100644 --- a/src/test/java/com/codebrig/journey/JourneyBrowserTest.java +++ b/src/test/java/com/codebrig/journey/JourneyBrowserTest.java @@ -7,7 +7,7 @@ public class JourneyBrowserTest { @Test - public void createBrowser() throws Exception { + public void createBrowser() { JourneyBrowserView browser = new JourneyBrowserView("https://google.com"); assertNotNull(browser.getCefBrowser()); } diff --git a/src/test/resources/JSTest.html b/src/test/resources/JSTest.html new file mode 100644 index 0000000..b62248d --- /dev/null +++ b/src/test/resources/JSTest.html @@ -0,0 +1,35 @@ + + + + + + +Java Version: +
+
+Google +
+
+

+ +
+ + From 64af5f9254a6154f7602d2ae1bb845a5ca0cd012 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 30 Nov 2019 23:28:28 -0700 Subject: [PATCH 05/10] cef/jcef version bump + journey version bump --- .travis.yml | 2 +- README.md | 5 +++-- build.gradle | 12 +++++++----- .../com/codebrig/journey/JourneyBrowserView.java | 4 ++-- .../java/com/codebrig/journey/JourneyLoader.java | 6 +++--- .../java/com/codebrig/journey/JourneySettings.java | 9 +++------ .../java/com/codebrig/journey/proxy/CefAppProxy.java | 2 +- .../com/codebrig/journey/proxy/CefBrowserProxy.java | 2 +- .../com/codebrig/journey/proxy/CefClientProxy.java | 2 +- .../journey/proxy/browser/CefFrameProxy.java | 2 +- .../proxy/handler/CefLifeSpanHandlerProxy.java | 2 +- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3890800..8fff2a5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ deploy: provider: releases api_key: $GH_TOKEN file: - - "$TRAVIS_BUILD_DIR/build/libs/journey-browser-0.3.5.jar" + - "$TRAVIS_BUILD_DIR/build/libs/journey-browser-0.4.0.jar" - "$TRAVIS_BUILD_DIR/jcef/binary_distrib/jcef-distrib-linux64.zip" - "$TRAVIS_BUILD_DIR/jcef/binary_distrib/jcef-distrib-macintosh64.zip" skip_cleanup: true diff --git a/README.md b/README.md index 3d9b13c..71e29eb 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ public class JourneyBrowser { ### Linux (64bit) ```sh -curl -L -O https://github.com/CodeBrig/Journey/releases/download/0.3.3-75-assets/jcef-distrib-linux64.zip +curl -L -O https://github.com/CodeBrig/Journey/releases/download/0.3.3-78-assets/jcef-distrib-linux64.zip unzip jcef-distrib-linux64.zip export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64:$(pwd)/linux64/bin/lib/linux64 @@ -114,7 +114,7 @@ java -cp "$JAVA_PATH:$JAVA_PATH/*" -Djava.library.path=$JAVA_PATH tests.detailed ### Windows (64bit) [PowerShell] ``` [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -wget https://github.com/CodeBrig/Journey/releases/download/0.3.3-75-assets/jcef-distrib-windows64.zip -OutFile jcef-distrib-windows64.zip +wget https://github.com/CodeBrig/Journey/releases/download/0.3.3-78-assets/jcef-distrib-windows64.zip -OutFile jcef-distrib-windows64.zip Expand-Archive jcef-distrib-windows64.zip . java -cp "./win64/bin;./win64/bin/*" "-Djava.library.path=./win64/bin/lib/win64" tests.detailed.MainFrame @@ -124,6 +124,7 @@ java -cp "./win64/bin;./win64/bin/*" "-Djava.library.path=./win64/bin/lib/win64" | Journey Version | JCEF Version (Linux) | JCEF Version (macOS) | JCEF Version (Windows) | |---------------------|----------------------|----------------------|----------------------| +| 0.4.0 (2019-11-30) | [78.2.7.237](https://bitbucket.org/chromiumembedded/java-cef/commits/1e3a9146226d3df8a7f0c9c03989d220ac26ca49) (2019-11-14) | [69.0.3497.100](https://bitbucket.org/chromiumembedded/java-cef/commits/235e3a844380b72761643324e1d9b7713cae3b63) (2018-11-01) | [78.2.7.237](https://bitbucket.org/chromiumembedded/java-cef/commits/1e3a9146226d3df8a7f0c9c03989d220ac26ca49) (2019-11-14) | | 0.3.3 (2019-07-13) | [75.0.13.220](https://bitbucket.org/chromiumembedded/java-cef/commits/13ae2d6074bc00a31888fb752dd45f9cf254725d) (2019-07-09) | [69.0.3497.100](https://bitbucket.org/chromiumembedded/java-cef/commits/235e3a844380b72761643324e1d9b7713cae3b63) (2018-11-01) | [75.0.13.220](https://bitbucket.org/chromiumembedded/java-cef/commits/13ae2d6074bc00a31888fb752dd45f9cf254725d) (2019-07-09) | | 0.2.18 (2019-06-30)
0.2.17 (2019-06-12) | [73.1.11.216](https://bitbucket.org/chromiumembedded/java-cef/commits/6b140efeef4e566b6a68025b1dcea9b2da6e6e57) (2019-05-21) | [69.0.3497.100](https://bitbucket.org/chromiumembedded/java-cef/commits/235e3a844380b72761643324e1d9b7713cae3b63) (2018-11-01) | [73.1.11.216](https://bitbucket.org/chromiumembedded/java-cef/commits/6b140efeef4e566b6a68025b1dcea9b2da6e6e57) (2019-05-21) | | 0.2.16 (2019-06-10) | [73.1.11.215](https://bitbucket.org/chromiumembedded/java-cef/commits/d348788e3347fa4d2a421773463f7dd62da60991) (2019-05-10) | [69.0.3497.100](https://bitbucket.org/chromiumembedded/java-cef/commits/235e3a844380b72761643324e1d9b7713cae3b63) (2018-11-01) | [73.1.11.215](https://bitbucket.org/chromiumembedded/java-cef/commits/d348788e3347fa4d2a421773463f7dd62da60991) (2019-05-10) | diff --git a/build.gradle b/build.gradle index f8b5e54..a1cf879 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'java' -version '0.3.3' +version '0.4.0' group 'com.codebrig' sourceCompatibility = 1.8 @@ -13,13 +13,15 @@ ext { '67': '67.0.3396.62', '69': '69.0.3497.100', '73': '73.1.11.216', - '75': '75.0.13.220' + '75': '75.0.13.220', + '78': '78.2.7.237' ] jcefCommit = [ '67': '1fda5d8f948670d08ef86bc4e8637b8581995ce9', '69': '235e3a844380b72761643324e1d9b7713cae3b63', '73': '6b140efeef4e566b6a68025b1dcea9b2da6e6e57', - '75': '13ae2d6074bc00a31888fb752dd45f9cf254725d' + '75': '13ae2d6074bc00a31888fb752dd45f9cf254725d', + '78': '1e3a9146226d3df8a7f0c9c03989d220ac26ca49' ] } @@ -71,7 +73,7 @@ jar { } task initEnvironment { - def chromiumMajorVersion = "75" + def chromiumMajorVersion = "78" if (System.getenv("TRAVIS_OS_NAME") == "osx") { chromiumMajorVersion = "73" } @@ -151,7 +153,7 @@ task patchJCEF { task checkoutJCEF { doFirst { - def chromiumMajorVersion = "75" + def chromiumMajorVersion = "78" if (System.getenv("TRAVIS_OS_NAME") == "osx") { chromiumMajorVersion = "73" } diff --git a/src/main/java/com/codebrig/journey/JourneyBrowserView.java b/src/main/java/com/codebrig/journey/JourneyBrowserView.java index d2acba3..c1dcd6f 100644 --- a/src/main/java/com/codebrig/journey/JourneyBrowserView.java +++ b/src/main/java/com/codebrig/journey/JourneyBrowserView.java @@ -20,10 +20,10 @@ * Wraps CefApp/CefClient/CefBrowser and extends JComponent for ease of implementation. * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.4.0 * @since 0.1.1 */ -@SuppressWarnings({"WeakerAccess"}) +@SuppressWarnings({"WeakerAccess", "unused"}) public class JourneyBrowserView extends JComponent { public static final String ABOUT_BLANK = "about:blank"; diff --git a/src/main/java/com/codebrig/journey/JourneyLoader.java b/src/main/java/com/codebrig/journey/JourneyLoader.java index 4db40cb..8b963e3 100644 --- a/src/main/java/com/codebrig/journey/JourneyLoader.java +++ b/src/main/java/com/codebrig/journey/JourneyLoader.java @@ -20,7 +20,7 @@ * Downloads and loads the necessary CEF files for the current OS. * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.4.0 * @since 0.1.1 */ @SuppressWarnings({"WeakerAccess", "unused", "JavaReflectionMemberAccess"}) @@ -32,7 +32,7 @@ public class JourneyLoader extends URLClassLoader { public static final String PROJECT_URL = BUILD.getString("project_url"); public static File NATIVE_DIRECTORY = new File((System.getProperty("os.name").toLowerCase().startsWith("mac")) ? "/tmp" : System.getProperty("java.io.tmpdir"), - "journey-" + (System.getProperty("os.name").toLowerCase().startsWith("mac") ? "69" : "75")); + "journey-" + (System.getProperty("os.name").toLowerCase().startsWith("mac") ? "69" : "78")); private static JourneyLoader JOURNEY_CLASS_LOADER; private static JourneyLoaderListener JOURNEY_LOADER_LISTENER = new JourneyLoaderAdapter() { @@ -58,7 +58,7 @@ public static void setup() throws RuntimeException { if (System.getProperty("os.name").toLowerCase().startsWith("mac")) { jcefVersion = "69.0.3497.100"; } else { - jcefVersion = "75.0.13.220"; + jcefVersion = "78.2.7.237"; } JOURNEY_LOADER_LISTENER.journeyLoaderStarted(VERSION, jcefVersion); if (!NATIVE_DIRECTORY.exists()) NATIVE_DIRECTORY.mkdirs(); diff --git a/src/main/java/com/codebrig/journey/JourneySettings.java b/src/main/java/com/codebrig/journey/JourneySettings.java index 5efe8ea..0bdfff5 100644 --- a/src/main/java/com/codebrig/journey/JourneySettings.java +++ b/src/main/java/com/codebrig/journey/JourneySettings.java @@ -7,10 +7,10 @@ * Note: This doesn't use a real proxy because CefSettings exposes configuration through fields instead of methods. * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.4.0 * @since 0.2.0 */ -@SuppressWarnings("WeakerAccess") +@SuppressWarnings({"WeakerAccess", "unused"}) public class JourneySettings { public static Class CEF_SETTINGS_CLASS = JourneyLoader.getJourneyClassLoader().loadClass("org.cef.CefSettings"); @@ -210,15 +210,12 @@ public void setIgnoreCertificateErrors(boolean ignore_certificate_errors) { // } // } - public static enum LogSeverity { + public enum LogSeverity { LOGSEVERITY_DEFAULT, LOGSEVERITY_VERBOSE, LOGSEVERITY_INFO, LOGSEVERITY_WARNING, LOGSEVERITY_ERROR, LOGSEVERITY_DISABLE; - - private LogSeverity() { - } } } diff --git a/src/main/java/com/codebrig/journey/proxy/CefAppProxy.java b/src/main/java/com/codebrig/journey/proxy/CefAppProxy.java index 8d449d7..653f1ef 100644 --- a/src/main/java/com/codebrig/journey/proxy/CefAppProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/CefAppProxy.java @@ -8,7 +8,7 @@ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.4.0 * @since 0.2.0 */ @SuppressWarnings("unused") diff --git a/src/main/java/com/codebrig/journey/proxy/CefBrowserProxy.java b/src/main/java/com/codebrig/journey/proxy/CefBrowserProxy.java index afdb460..31995e9 100644 --- a/src/main/java/com/codebrig/journey/proxy/CefBrowserProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/CefBrowserProxy.java @@ -11,7 +11,7 @@ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.4.0 * @since 0.2.0 */ @SuppressWarnings("unused") diff --git a/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java b/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java index 3a7faf7..cffc58f 100644 --- a/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/CefClientProxy.java @@ -13,7 +13,7 @@ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Brandon Fergerson - * @version 0.3.4 + * @version 0.4.0 * @since 0.2.0 */ @SuppressWarnings("unused") diff --git a/src/main/java/com/codebrig/journey/proxy/browser/CefFrameProxy.java b/src/main/java/com/codebrig/journey/proxy/browser/CefFrameProxy.java index 7269af3..7bcc309 100644 --- a/src/main/java/com/codebrig/journey/proxy/browser/CefFrameProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/browser/CefFrameProxy.java @@ -8,7 +8,7 @@ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.4.0 * @since 0.2.18 */ @SuppressWarnings("unused") diff --git a/src/main/java/com/codebrig/journey/proxy/handler/CefLifeSpanHandlerProxy.java b/src/main/java/com/codebrig/journey/proxy/handler/CefLifeSpanHandlerProxy.java index 53cca95..e874526 100644 --- a/src/main/java/com/codebrig/journey/proxy/handler/CefLifeSpanHandlerProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/handler/CefLifeSpanHandlerProxy.java @@ -14,7 +14,7 @@ * Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * * @author Brandon Fergerson - * @version 0.3.3 + * @version 0.4.0 * @since 0.2.17 */ @SuppressWarnings("unused") From 1a92b9de119250ce1b57d61897706550737bafd9 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 30 Nov 2019 23:30:51 -0700 Subject: [PATCH 06/10] version bump --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 71e29eb..03a1ecb 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ public class JourneyBrowser { ### Linux (64bit) ```sh -curl -L -O https://github.com/CodeBrig/Journey/releases/download/0.3.3-78-assets/jcef-distrib-linux64.zip +curl -L -O https://github.com/CodeBrig/Journey/releases/download/0.4.0-78-assets/jcef-distrib-linux64.zip unzip jcef-distrib-linux64.zip export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64:$(pwd)/linux64/bin/lib/linux64 @@ -101,7 +101,7 @@ java -cp "linux64/bin/*" tests.detailed.MainFrame ### macOS (64bit) ```sh -curl -L -O https://github.com/CodeBrig/Journey/releases/download/0.3.3-69-assets/jcef-distrib-macintosh64.zip +curl -L -O https://github.com/CodeBrig/Journey/releases/download/0.4.0-69-assets/jcef-distrib-macintosh64.zip unzip jcef-distrib-macintosh64.zip mv ./macosx64/bin/jcef_app.app . @@ -114,7 +114,7 @@ java -cp "$JAVA_PATH:$JAVA_PATH/*" -Djava.library.path=$JAVA_PATH tests.detailed ### Windows (64bit) [PowerShell] ``` [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -wget https://github.com/CodeBrig/Journey/releases/download/0.3.3-78-assets/jcef-distrib-windows64.zip -OutFile jcef-distrib-windows64.zip +wget https://github.com/CodeBrig/Journey/releases/download/0.4.0-78-assets/jcef-distrib-windows64.zip -OutFile jcef-distrib-windows64.zip Expand-Archive jcef-distrib-windows64.zip . java -cp "./win64/bin;./win64/bin/*" "-Djava.library.path=./win64/bin/lib/win64" tests.detailed.MainFrame From 30d72f196d5a9ac9c2e8a53a991a363d1a1e10e9 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 30 Nov 2019 23:32:17 -0700 Subject: [PATCH 07/10] version bump --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 03a1ecb..8f57763 100644 --- a/README.md +++ b/README.md @@ -26,10 +26,10 @@ repositories { } dependencies { - compile 'com.github.codebrig:journey:0.3.3-online' + compile 'com.github.codebrig:journey:0.4.0-online' //or use the offline version (includes native CEF files for all platforms; ~300MB) - //compile 'com.github.codebrig:journey:0.3.3-offline' + //compile 'com.github.codebrig:journey:0.4.0-offline' } ``` @@ -46,10 +46,10 @@ dependencies { com.github.codebrig journey - 0.3.3-online + 0.4.0-online - + ``` From f9cc27f1b9dba5d718f649d99093835fd12b5f2c Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 30 Nov 2019 23:35:32 -0700 Subject: [PATCH 08/10] fix comment --- .../codebrig/journey/proxy/browser/CefMessageRouterProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java index 6caaed1..e95fe9a 100644 --- a/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java @@ -10,7 +10,7 @@ import java.lang.reflect.Proxy; /** - * Journey local proxy for CefMessageRouterProxy. + * Journey local proxy for CefMessageRouter. *

* Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * From 7259f9f13a6cdd4d8e12d8c120ee73bf9340c1a8 Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sat, 30 Nov 2019 23:38:00 -0700 Subject: [PATCH 09/10] fix comment --- .../codebrig/journey/proxy/callback/CefQueryCallbackProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java b/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java index ddff297..0f4ac20 100644 --- a/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/callback/CefQueryCallbackProxy.java @@ -3,7 +3,7 @@ import org.joor.Reflect; /** - * Journey local proxy for CefQueryCallbackProxy. + * Journey local proxy for CefQueryCallback. *

* Javadoc taken from: https://bitbucket.org/chromiumembedded/java-cef * From 8820744056033d8200c8afdb2256b474cd8797cc Mon Sep 17 00:00:00 2001 From: Brandon Fergerson Date: Sun, 1 Dec 2019 00:54:37 -0700 Subject: [PATCH 10/10] doesn't seem to do anything --- .../codebrig/journey/proxy/browser/CefMessageRouterProxy.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java index e95fe9a..3b76dac 100644 --- a/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java +++ b/src/main/java/com/codebrig/journey/proxy/browser/CefMessageRouterProxy.java @@ -26,10 +26,8 @@ public interface CefMessageRouterProxy extends Reflect.ProxyObject { } else if ("removeHandler".equals(methodName)) { args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); } else if ("cancelPending".equals(methodName)) { - args[0] = Reflect.on(args[0]).as(CefBrowserProxy.class); args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); } else if ("getPendingCount".equals(methodName)) { - args[0] = Reflect.on(args[0]).as(CefBrowserProxy.class); args[0] = ((Reflect.ProxyInvocationHandler) Proxy.getInvocationHandler(args[0])).getUnderlyingObject(); } };