From ffebe74edd5d99bf19110e654eb0aac036034199 Mon Sep 17 00:00:00 2001 From: Henning Nielsen Lund Date: Thu, 12 Jul 2018 23:15:09 +0200 Subject: [PATCH 1/2] Add support for custom tabs in Firefox support for custom tabs was added to stable Firefox in version 57.0 fixes: #368 Signed-off-by: Henning Nielsen Lund --- .../openid/appauth/browser/BrowserBlacklist.java | 3 ++- .../net/openid/appauth/browser/Browsers.java | 16 +++++++++++++++- .../appauth/browser/VersionedBrowserMatcher.java | 9 +++++++++ .../appauth/browser/BrowserWhitelistTest.java | 6 ++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/library/java/net/openid/appauth/browser/BrowserBlacklist.java b/library/java/net/openid/appauth/browser/BrowserBlacklist.java index d796dc52..ad2ce094 100644 --- a/library/java/net/openid/appauth/browser/BrowserBlacklist.java +++ b/library/java/net/openid/appauth/browser/BrowserBlacklist.java @@ -31,7 +31,8 @@ * * // blacklist Firefox * new BrowserBlacklist( - * VersionedBrowserMatcher.FIREFOX_BROWSER); + * VersionedBrowserMatcher.FIREFOX_BROWSER, + * VersionedBrowserMatcher.FIREFOX_CUSTOM_TAB); * * // blacklist Dolphin Browser * new BrowserBlacklist( diff --git a/library/java/net/openid/appauth/browser/Browsers.java b/library/java/net/openid/appauth/browser/Browsers.java index bcf28d61..c0acab34 100644 --- a/library/java/net/openid/appauth/browser/Browsers.java +++ b/library/java/net/openid/appauth/browser/Browsers.java @@ -62,7 +62,7 @@ public static BrowserDescriptor standaloneBrowser(@NonNull String version) { } /** - * Creates a browser descriptor fot the specified version of Chrome, when used as + * Creates a browser descriptor for the specified version of Chrome, when used as * a custom tab. */ public static BrowserDescriptor customTab(@NonNull String version) { @@ -97,6 +97,12 @@ public static final class Firefox { public static final Set SIGNATURE_SET = Collections.singleton(SIGNATURE_HASH); + /** + * The version in which Custom Tabs were introduced in Firefox. + */ + public static final DelimitedVersion MINIMUM_VERSION_FOR_CUSTOM_TAB = + DelimitedVersion.parse("57"); + /** * Creates a browser descriptor for the specified version of Firefox, when used * as a standalone browser. @@ -105,6 +111,14 @@ public static BrowserDescriptor standaloneBrowser(@NonNull String version) { return new BrowserDescriptor(PACKAGE_NAME, SIGNATURE_SET, version, false); } + /** + * Creates a browser descriptor for the specified version of Firefox, when used as + * a custom tab. + */ + public static BrowserDescriptor customTab(@NonNull String version) { + return new BrowserDescriptor(PACKAGE_NAME, SIGNATURE_SET, version, true); + } + private Firefox() { // no need to construct this class } diff --git a/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java b/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java index 85deeaed..5386c327 100644 --- a/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java +++ b/library/java/net/openid/appauth/browser/VersionedBrowserMatcher.java @@ -43,6 +43,15 @@ public class VersionedBrowserMatcher implements BrowserMatcher { false, VersionRange.ANY_VERSION); + /** + * Matches any version of Firefox for use as a custom tab. + */ + public static final VersionedBrowserMatcher FIREFOX_CUSTOM_TAB = new VersionedBrowserMatcher( + Browsers.Firefox.PACKAGE_NAME, + Browsers.Firefox.SIGNATURE_SET, + true, + VersionRange.atLeast(Browsers.Firefox.MINIMUM_VERSION_FOR_CUSTOM_TAB)); + /** * Matches any version of Mozilla Firefox. */ diff --git a/library/javatests/net/openid/appauth/browser/BrowserWhitelistTest.java b/library/javatests/net/openid/appauth/browser/BrowserWhitelistTest.java index b95a0d6a..7e3a988a 100644 --- a/library/javatests/net/openid/appauth/browser/BrowserWhitelistTest.java +++ b/library/javatests/net/openid/appauth/browser/BrowserWhitelistTest.java @@ -31,6 +31,7 @@ public void testMatches_emptyWhitelist() { BrowserWhitelist whitelist = new BrowserWhitelist(); assertThat(whitelist.matches(Browsers.Chrome.customTab("46"))).isFalse(); assertThat(whitelist.matches(Browsers.Firefox.standaloneBrowser("10"))).isFalse(); + assertThat(whitelist.matches(Browsers.Firefox.customTab("57"))).isFalse(); assertThat(whitelist.matches(Browsers.SBrowser.standaloneBrowser("11"))).isFalse(); } @@ -40,6 +41,7 @@ public void testMatches_chromeBrowserOnly() { assertThat(whitelist.matches(Browsers.Chrome.standaloneBrowser("46"))).isTrue(); assertThat(whitelist.matches(Browsers.Chrome.customTab("46"))).isFalse(); assertThat(whitelist.matches(Browsers.Firefox.standaloneBrowser("10"))).isFalse(); + assertThat(whitelist.matches(Browsers.Firefox.customTab("57"))).isFalse(); } @Test @@ -50,17 +52,21 @@ public void testMatches_chromeCustomTabOrBrowser() { assertThat(whitelist.matches(Browsers.Chrome.standaloneBrowser("46"))).isTrue(); assertThat(whitelist.matches(Browsers.Chrome.customTab("46"))).isTrue(); assertThat(whitelist.matches(Browsers.Firefox.standaloneBrowser("10"))).isFalse(); + assertThat(whitelist.matches(Browsers.Firefox.customTab("57"))).isFalse(); } @Test public void testMatches_firefoxOrSamsung() { BrowserWhitelist whitelist = new BrowserWhitelist( VersionedBrowserMatcher.FIREFOX_BROWSER, + VersionedBrowserMatcher.FIREFOX_CUSTOM_TAB, VersionedBrowserMatcher.SAMSUNG_BROWSER, VersionedBrowserMatcher.SAMSUNG_CUSTOM_TAB); assertThat(whitelist.matches(Browsers.Chrome.standaloneBrowser("46"))).isFalse(); assertThat(whitelist.matches(Browsers.Chrome.customTab("46"))).isFalse(); assertThat(whitelist.matches(Browsers.Firefox.standaloneBrowser("10"))).isTrue(); + assertThat(whitelist.matches(Browsers.Firefox.customTab("56"))).isFalse(); + assertThat(whitelist.matches(Browsers.Firefox.customTab("57"))).isTrue(); assertThat(whitelist.matches(Browsers.SBrowser.standaloneBrowser("10"))).isTrue(); assertThat(whitelist.matches(Browsers.SBrowser.customTab("10"))).isTrue(); } From e0da2fd7084db41d633958dacabd08c6061839fe Mon Sep 17 00:00:00 2001 From: Henning Nielsen Lund Date: Fri, 20 Jul 2018 22:21:02 +0200 Subject: [PATCH 2/2] Add me to the list of contributors fixes: #368 Signed-off-by: Henning Nielsen Lund --- CONTRIBUTORS | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 225c16b9..034bee8b 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -13,3 +13,4 @@ Alex Chau Benjamin Franz Rebecka Gulliksson Rahul Ravikumar +Henning Nielsen Lund