Add support for SVG icons with data url without encoding

This commit is contained in:
Frédéric Guillot 2023-10-18 20:11:24 -07:00
parent c60b3f52a5
commit 7650c81ad9
2 changed files with 22 additions and 0 deletions

View file

@ -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)
}

View file

@ -44,6 +44,26 @@ func TestParseImageDataURLWithNoEncoding(t *testing.T) {
}
}
func TestParseImageWithRawSVGEncodedInUTF8(t *testing.T) {
iconURL := `data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 456 456'><circle></circle></svg>`
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) != `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 456 456'><circle></circle></svg>` {
t.Fatal(`Invalid SVG content`)
}
}
func TestParseImageDataURLWithNoMediaTypeAndNoEncoding(t *testing.T) {
iconURL := `data:,Hello%2C%20World%21`
_, err := parseImageDataURL(iconURL)