Bug 1250540 - have media.navigator.permission.disabled no longer bypass media.getusermedia.screensharing.allowed_domains.
MozReview-Commit-ID: JTxeco3WGVr
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -174,40 +174,41 @@ HostInDomain(const nsCString &aHost, con
}
}
nsDependentCString hostRoot(aHost, hostOffset);
return hostRoot.EqualsIgnoreCase(aPattern.BeginReading() + patternOffset);
}
static bool
-HostHasPermission(nsIURI &docURI)
+HostIsHttps(nsIURI &docURI)
{
- nsresult rv;
-
bool isHttps;
- rv = docURI.SchemeIs("https",&isHttps);
+ nsresult rv = docURI.SchemeIs("https", &isHttps);
if (NS_WARN_IF(NS_FAILED(rv))) {
return false;
}
- if (!isHttps) {
- return false;
- }
-
+ return isHttps;
+}
+
+static bool
+HostHasPermission(nsIURI &docURI)
+{
nsAdoptingCString hostName;
docURI.GetAsciiHost(hostName); //normalize UTF8 to ASCII equivalent
nsAdoptingCString domainWhiteList =
Preferences::GetCString("media.getusermedia.screensharing.allowed_domains");
domainWhiteList.StripWhitespace();
if (domainWhiteList.IsEmpty() || hostName.IsEmpty()) {
return false;
}
// Get UTF8 to ASCII domain name normalization service
+ nsresult rv;
nsCOMPtr<nsIIDNService> idnService =
do_GetService("@mozilla.org/network/idn-service;1", &rv);
if (NS_WARN_IF(NS_FAILED(rv))) {
return false;
}
uint32_t begin = 0;
uint32_t end = 0;
@@ -1895,17 +1896,18 @@ MediaManager::GetUserMedia(nsPIDOMWindow
#if defined(XP_MACOSX)
!nsCocoaFeatures::OnLionOrLater()
#endif
#if defined (XP_WIN)
!IsVistaOrLater()
#endif
) ||
#endif
- (!privileged && !HostHasPermission(*docURI))) {
+ (!privileged && !HostIsHttps(*docURI)) ||
+ !(loop || HostHasPermission(*docURI))) {
RefPtr<MediaStreamError> error =
new MediaStreamError(aWindow,
NS_LITERAL_STRING("SecurityError"));
onFailure->OnError(error);
return NS_OK;
}
break;