diff --git a/internal/reader/icon/finder.go b/internal/reader/icon/finder.go
index f7669d07..343e80f4 100644
--- a/internal/reader/icon/finder.go
+++ b/internal/reader/icon/finder.go
@@ -194,6 +194,8 @@ func parseImageDataURL(value string) (*model.Icon, error) {
return nil, fmt.Errorf(`icon: unable to decode data URL %q`, value)
}
blob = []byte(decodedData)
+ case "utf8":
+ blob = []byte(data)
default:
return nil, fmt.Errorf(`icon: unsupported data URL encoding %q`, value)
}
diff --git a/internal/reader/icon/finder_test.go b/internal/reader/icon/finder_test.go
index 7bc8c3e8..2ea297c1 100644
--- a/internal/reader/icon/finder_test.go
+++ b/internal/reader/icon/finder_test.go
@@ -44,6 +44,26 @@ func TestParseImageDataURLWithNoEncoding(t *testing.T) {
}
}
+func TestParseImageWithRawSVGEncodedInUTF8(t *testing.T) {
+ iconURL := `data:image/svg+xml;utf8,`
+ icon, err := parseImageDataURL(iconURL)
+ if err != nil {
+ t.Fatalf(`We should be able to parse valid data URL: %v`, err)
+ }
+
+ if icon.MimeType != "image/svg+xml" {
+ t.Fatal(`Invalid mime type parsed`)
+ }
+
+ if icon.Hash == "" {
+ t.Fatal(`Image hash should be computed`)
+ }
+
+ if string(icon.Content) != `` {
+ t.Fatal(`Invalid SVG content`)
+ }
+}
+
func TestParseImageDataURLWithNoMediaTypeAndNoEncoding(t *testing.T) {
iconURL := `data:,Hello%2C%20World%21`
_, err := parseImageDataURL(iconURL)