diff --git a/spellchecker/testData/inspection/xmlWithMistakes/dataUrl.svg b/spellchecker/testData/inspection/xmlWithMistakes/dataUrl.svg new file mode 100644 index 000000000000..3c06d7c908eb --- /dev/null +++ b/spellchecker/testData/inspection/xmlWithMistakes/dataUrl.svg @@ -0,0 +1,9 @@ + + + foddd" + xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTjMuMXoiIC8+CiAgICA8QzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNsbD0iI0ZGRkZGRiZnPg==" + /> + diff --git a/spellchecker/testSrc/com/intellij/spellchecker/inspection/XmlWithMistakesInspectionTest.java b/spellchecker/testSrc/com/intellij/spellchecker/inspection/XmlWithMistakesInspectionTest.java index 2b6db89d450d..9aff7e3fb66c 100644 --- a/spellchecker/testSrc/com/intellij/spellchecker/inspection/XmlWithMistakesInspectionTest.java +++ b/spellchecker/testSrc/com/intellij/spellchecker/inspection/XmlWithMistakesInspectionTest.java @@ -41,6 +41,10 @@ public class XmlWithMistakesInspectionTest extends SpellcheckerInspectionTestCas doTest("enumerations.svg"); } + public void testDataUrl() { + doTest("dataUrl.svg"); + } + public void testLinkIntegrity() { doTest("htmlIntegrity.html"); } diff --git a/spellchecker/xml/src/XmlSpellcheckingStrategy.java b/spellchecker/xml/src/XmlSpellcheckingStrategy.java index c1d435a31b2d..ec61aafa6484 100644 --- a/spellchecker/xml/src/XmlSpellcheckingStrategy.java +++ b/spellchecker/xml/src/XmlSpellcheckingStrategy.java @@ -19,6 +19,7 @@ import com.intellij.spellchecker.tokenizer.TokenConsumer; import com.intellij.spellchecker.tokenizer.Tokenizer; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.io.URLUtil; import com.intellij.util.xml.DomElement; import com.intellij.util.xml.DomUtil; import com.intellij.xml.util.XmlEnumeratedValueReference; @@ -228,6 +229,11 @@ public class XmlSpellcheckingStrategy extends SuppressibleSpellcheckingStrategy return; } + // Do not inspect data URIs + if (URLUtil.isDataUri(ElementManipulators.getValueText(element))) { + return; + } + super.tokenize(element, consumer); }