From 040ba9c1c8cdecbb206f5a3af4877047a4ffcb03 Mon Sep 17 00:00:00 2001 From: Piotr Tomiak Date: Wed, 22 Feb 2023 12:08:33 +0100 Subject: [PATCH] WEB-53640 Fix behaviour in non-HTML5 documents, remove Link.Rev test GitOrigin-RevId: 40df6dd0ae7a1ab26e2b0ab45de2c6ad15fdd3f9 --- plugins/htmltools/testData/completion/14a.html | 2 ++ plugins/htmltools/testData/completion/Link.Rev.html | 5 ----- .../testData/completion/Link.Rev_after.html | 5 ----- .../codeInsight/completion/HtmlCompletionTest.java | 12 +++++++++--- .../completion/HtmlCompletionContributor.java | 5 +++++ 5 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 plugins/htmltools/testData/completion/14a.html delete mode 100644 plugins/htmltools/testData/completion/Link.Rev.html delete mode 100644 plugins/htmltools/testData/completion/Link.Rev_after.html diff --git a/plugins/htmltools/testData/completion/14a.html b/plugins/htmltools/testData/completion/14a.html new file mode 100644 index 000000000000..8c38af8e4702 --- /dev/null +++ b/plugins/htmltools/testData/completion/14a.html @@ -0,0 +1,2 @@ + +
\ No newline at end of file diff --git a/plugins/htmltools/testData/completion/Link.Rev.html b/plugins/htmltools/testData/completion/Link.Rev.html deleted file mode 100644 index 68cca510bca8..000000000000 --- a/plugins/htmltools/testData/completion/Link.Rev.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/plugins/htmltools/testData/completion/Link.Rev_after.html b/plugins/htmltools/testData/completion/Link.Rev_after.html deleted file mode 100644 index 725527ebdfd7..000000000000 --- a/plugins/htmltools/testData/completion/Link.Rev_after.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/plugins/htmltools/testSrc/com/intellij/htmltools/codeInsight/completion/HtmlCompletionTest.java b/plugins/htmltools/testSrc/com/intellij/htmltools/codeInsight/completion/HtmlCompletionTest.java index 6ee85496588a..f92f3cf1d9da 100644 --- a/plugins/htmltools/testSrc/com/intellij/htmltools/codeInsight/completion/HtmlCompletionTest.java +++ b/plugins/htmltools/testSrc/com/intellij/htmltools/codeInsight/completion/HtmlCompletionTest.java @@ -36,6 +36,7 @@ import com.intellij.xml.util.XmlUtil; import junit.framework.Assert; import org.jetbrains.annotations.NotNull; +import java.util.Arrays; import java.util.List; @SuppressWarnings({"ALL"}) @@ -110,6 +111,7 @@ public class HtmlCompletionTest extends BasePlatformTestCase { public void testHtmlCompletion() throws Exception { CamelHumpMatcher.forceStartMatching(myFixture.getTestRootDisposable()); + configureByFile("/1.html"); checkResultByFile("/1_after.html"); @@ -152,6 +154,13 @@ public class HtmlCompletionTest extends BasePlatformTestCase { configureByFile("/14.html"); checkResultByFile("/14_after.html"); + ExternalResourceManagerEx manager = ExternalResourceManagerEx.getInstanceEx(); + manager.setDefaultHtmlDoctype(Html5SchemaProvider.getHtml5SchemaLocation(), getProject()); + configureByFile("/14a.html"); + myFixture.completeBasic(); + assertEquals(Arrays.asList("application/x-www-form-urlencoded", "multipart/form-data", "text/plain"), myFixture.getLookupElementStrings()); + manager.setDefaultHtmlDoctype(XmlUtil.XHTML_URI, getProject()); + configureByFile("/Link.Rel.html"); checkResultByFile("/Link.Rel_after.html"); @@ -159,9 +168,6 @@ public class HtmlCompletionTest extends BasePlatformTestCase { myFixture.type('\n'); checkResultByFile("/Link.Type_after.html"); - configureByFile("/Link.Rev.html"); - checkResultByFile("/Link.Rev_after.html"); - configureByFile("/Link.Media.html"); checkResultByFile("/Link.Media_after.html"); diff --git a/xml/impl/src/com/intellij/codeInsight/completion/HtmlCompletionContributor.java b/xml/impl/src/com/intellij/codeInsight/completion/HtmlCompletionContributor.java index 8809764b6787..68b1d210b0bd 100644 --- a/xml/impl/src/com/intellij/codeInsight/completion/HtmlCompletionContributor.java +++ b/xml/impl/src/com/intellij/codeInsight/completion/HtmlCompletionContributor.java @@ -46,6 +46,7 @@ import static com.intellij.util.ObjectUtils.doIfNotNull; public class HtmlCompletionContributor extends CompletionContributor implements DumbAware { public static final String[] TARGET = {"_blank", "_top", "_self", "_parent"}; + public static final String[] ENCTYPE = {"multipart/form-data", "application/x-www-form-urlencoded"}; public static final String[] REL_LINK = {"alternate", "canonical", "author", "dns-prefetch", "help", "icon", "manifest", "modulepreload", "license", "next", "pingback", "preconnect", "prefetch", "preload", "prerender", "prev", "stylesheet", "apple-touch-icon", "apple-touch-icon-precomposed", "apple-touch-startup-image"}; @@ -122,6 +123,10 @@ public class HtmlCompletionContributor extends CompletionContributor implements else if (("lang".equals(name) || "xml:lang".equals(name)) && tagName.equalsIgnoreCase("html") || "hreflang".equals(name)) { return LANG; } + else if ("enctype".equals(name)) { + var descriptor = attribute.getDescriptor(); + return descriptor == null || descriptor.isEnumerated() ? ArrayUtilRt.EMPTY_STRING_ARRAY : ENCTYPE; + } else if ("rel".equals(name) && tagName.equalsIgnoreCase("link")) { return REL_LINK; }