summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dom/base/Location.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/dom/base/Location.cpp b/dom/base/Location.cpp
index 7b3722f09..5f8738298 100644
--- a/dom/base/Location.cpp
+++ b/dom/base/Location.cpp
@@ -730,6 +730,23 @@ Location::SetProtocol(const nsAString& aProtocol)
if (NS_FAILED(rv)) {
return rv;
}
+
+ bool isHttp;
+ rv = uri->SchemeIs("http", &isHttp);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
+
+ bool isHttps;
+ rv = uri->SchemeIs("https", &isHttps);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
+
+ if (!isHttp && !isHttps) {
+ // No-op, per spec.
+ return NS_OK;
+ }
return SetURI(uri);
}