From 79bf32022f844fdd54d9b2e32e64e89d60f13248 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Tue, 16 Jun 2015 10:00:17 +0200 Subject: [PATCH] =?UTF-8?q?prepare=20to=20fix=20WEB-14454=20=E2=80=94=20Br?= =?UTF-8?q?owserify=20generates=20incorrect=20data=20uri.=20"charset:"=20u?= =?UTF-8?q?sed=20instead=20of=20"charset=3D"=20(see=20https://en.wikipedia?= =?UTF-8?q?.org/wiki/Data=5FURI=5Fscheme).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/src/com/intellij/util/io/URLUtil.java | 3 ++- .../testSrc/com/intellij/util/io/UrlUtilTest.java | 14 +++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/platform/util/src/com/intellij/util/io/URLUtil.java b/platform/util/src/com/intellij/util/io/URLUtil.java index cb7d4cfe7349..11eba77fbb6d 100644 --- a/platform/util/src/com/intellij/util/io/URLUtil.java +++ b/platform/util/src/com/intellij/util/io/URLUtil.java @@ -44,7 +44,7 @@ public class URLUtil { public static final String JAR_PROTOCOL = "jar"; public static final String JAR_SEPARATOR = "!/"; - public static final Pattern DATA_URI_PATTERN = Pattern.compile("data:([^,;]+/[^,;]+)(;charset=[^,;]+)?(;base64)?,(.+)"); + public static final Pattern DATA_URI_PATTERN = Pattern.compile("data:([^,;]+/[^,;]+)(;charset(?:=|:)[^,;]+)?(;base64)?,(.+)"); private URLUtil() { } @@ -245,4 +245,5 @@ public class URLUtil { return host; } + } \ No newline at end of file diff --git a/platform/util/testSrc/com/intellij/util/io/UrlUtilTest.java b/platform/util/testSrc/com/intellij/util/io/UrlUtilTest.java index 269db1c45268..207d52d6e109 100644 --- a/platform/util/testSrc/com/intellij/util/io/UrlUtilTest.java +++ b/platform/util/testSrc/com/intellij/util/io/UrlUtilTest.java @@ -23,12 +23,12 @@ package com.intellij.util.io; import com.intellij.openapi.util.Pair; +import com.intellij.openapi.vfs.CharsetToolkit; import org.jetbrains.annotations.Nullable; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.*; public class UrlUtilTest { @Test @@ -72,4 +72,12 @@ public class UrlUtilTest { assertEquals("github.com", URLUtil.parseHostFromSshUrl(sshUrl)); } } + + @Test + public void testDataUri() { + byte[] test = "test".getBytes(CharsetToolkit.UTF8_CHARSET); + assertThat(URLUtil.getBytesFromDataUri("data:text/plain;charset=utf-8;base64,dGVzdA=="), equalTo(test)); + // https://youtrack.jetbrains.com/issue/WEB-14581#comment=27-1014790 + assertThat(URLUtil.getBytesFromDataUri("data:text/plain;charset:utf-8;base64,dGVzdA=="), equalTo(test)); + } } \ No newline at end of file