diff --git a/xml/impl/src/com/intellij/html/impl/util/MicrodataUtil.java b/xml/impl/src/com/intellij/html/impl/util/MicrodataUtil.java
index 78fb7255d147..6435a1dd67e9 100644
--- a/xml/impl/src/com/intellij/html/impl/util/MicrodataUtil.java
+++ b/xml/impl/src/com/intellij/html/impl/util/MicrodataUtil.java
@@ -37,6 +37,7 @@ import com.intellij.psi.xml.XmlFile;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.PairFunction;
import com.intellij.util.text.StringTokenizer;
+import com.intellij.xml.util.HtmlUtil;
import gnu.trove.THashMap;
import gnu.trove.THashSet;
import org.jetbrains.annotations.Nls;
@@ -56,9 +57,6 @@ public class MicrodataUtil {
public static final String ITEM_PROP = "itemprop";
public static final String ITEM_ID = "itemid";
- @NonNls private static final String HTTP = "http://";
- @NonNls private static final String HTTPS = "https://";
-
public static boolean hasScopeTag(@Nullable XmlTag tag) {
return findScopeTag(tag) != null;
}
@@ -130,7 +128,7 @@ public class MicrodataUtil {
@Nullable
@Override
public PsiReference fun(String token, Integer offset) {
- if (isUrl(token)) {
+ if (HtmlUtil.hasHtmlPrefix(token)) {
final TextRange range = TextRange.from(offset, token.length());
final URLReference urlReference = new URLReference(element, range, true);
return new URIReferenceProvider.DependentNSReference(element, range, urlReference) {
@@ -167,10 +165,6 @@ public class MicrodataUtil {
return result.toArray(new PsiReference[result.size()]);
}
- private static boolean isUrl(String url) {
- return url.startsWith(HTTP) || url.startsWith(HTTPS);
- }
-
@Nullable
public static String getStripedAttributeValue(@Nullable XmlTag tag, @Nls String attributeName) {
String value = tag != null ? tag.getAttributeValue(attributeName) : null;
diff --git a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URIReferenceProvider.java b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URIReferenceProvider.java
index 23ab5613fe7b..25e048c3db2d 100644
--- a/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URIReferenceProvider.java
+++ b/xml/impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/URIReferenceProvider.java
@@ -34,6 +34,7 @@ import com.intellij.psi.xml.XmlAttribute;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ProcessingContext;
import com.intellij.util.containers.ContainerUtil;
+import com.intellij.xml.util.HtmlUtil;
import com.intellij.xml.util.XmlUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -62,7 +63,6 @@ public class URIReferenceProvider extends PsiReferenceProvider {
return true;
}
};
- @NonNls private static final String HTTP = "http://";
@NonNls private static final String URN = "urn:";
@NonNls private static final String FILE = "file:";
@NonNls private static final String CLASSPATH = "classpath:/";
@@ -162,7 +162,7 @@ public class URIReferenceProvider extends PsiReferenceProvider {
}
static boolean isUrlText(final String s, Project project) {
- final boolean surelyUrl = s.startsWith(HTTP) || s.startsWith(URN);
+ final boolean surelyUrl = HtmlUtil.hasHtmlPrefix(s) || s.startsWith(URN);
if (surelyUrl) return surelyUrl;
int protocolIndex = s.indexOf(":/");
if (protocolIndex > 1 && !s.regionMatches(0,"classpath",0,protocolIndex)) return true;
diff --git a/xml/impl/src/com/intellij/xml/util/HtmlUtil.java b/xml/impl/src/com/intellij/xml/util/HtmlUtil.java
index 86252c1d22f1..a52b879d90d4 100644
--- a/xml/impl/src/com/intellij/xml/util/HtmlUtil.java
+++ b/xml/impl/src/com/intellij/xml/util/HtmlUtil.java
@@ -597,6 +597,13 @@ public class HtmlUtil {
return isHtmlFile(file) || file.getViewProvider() instanceof TemplateLanguageFileViewProvider;
}
+ public static boolean hasHtmlPrefix(@NotNull String url) {
+ return url.startsWith("http://") ||
+ url.startsWith("https://") ||
+ url.startsWith("//") || //Protocol-relative URL
+ url.startsWith("ftp://");
+ }
+
public static boolean isHtmlFile(PsiElement element) {
Language language = element.getLanguage();
return language == HTMLLanguage.INSTANCE || language == XHTMLLanguage.INSTANCE;