From 6261912024041e6cdb436bbc30fc9c1fce7471bb Mon Sep 17 00:00:00 2001 From: srowen Date: Sat, 11 Feb 2012 10:25:43 +0000 Subject: [PATCH] Issue 1157 support protocols ending with : not :// like bitcoin git-svn-id: https://zxing.googlecode.com/svn/trunk@2178 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- core/src/com/google/zxing/client/result/URIResultParser.java | 2 +- .../google/zxing/client/result/URIParsedResultTestCase.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/com/google/zxing/client/result/URIResultParser.java b/core/src/com/google/zxing/client/result/URIResultParser.java index 028936358..e6678e249 100644 --- a/core/src/com/google/zxing/client/result/URIResultParser.java +++ b/core/src/com/google/zxing/client/result/URIResultParser.java @@ -32,7 +32,7 @@ public final class URIResultParser extends ResultParser { "(:\\d{1,5})?" + // maybe port "(/|\\?|$)"; // query, path or nothing private static final Pattern URL_WITH_PROTOCOL_PATTERN = Pattern.compile( - "[a-zA-Z0-9]{2,}://" + // protocol + "[a-zA-Z0-9]{2,}:(/)*" + // protocol "[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)*" + // host name elements PATTERN_END); private static final Pattern URL_WITHOUT_PROTOCOL_PATTERN = Pattern.compile( diff --git a/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java b/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java index 1c4aa87ba..ef6fed581 100644 --- a/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java +++ b/core/test/src/com/google/zxing/client/result/URIParsedResultTestCase.java @@ -88,6 +88,11 @@ public final class URIParsedResultTestCase extends Assert { doTestIsPossiblyMalicious("http://google.com/@@", false); } + @Test + public void testExotic() { + doTest("bitcoin:mySD89iqpmptrK3PhHFW9fa7BXiP7ANy3Y", "bitcoin:mySD89iqpmptrK3PhHFW9fa7BXiP7ANy3Y", null); + } + private static void doTest(String contents, String uri, String title) { Result fakeResult = new Result(contents, null, null, BarcodeFormat.QR_CODE); ParsedResult result = ResultParser.parseResult(fakeResult);