mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-09-27 14:56:16 +00:00
M1328894
This commit is contained in:
parent
e504fccb43
commit
4cdf9315ae
@ -33,6 +33,7 @@
|
|||||||
#include "nsCycleCollectionParticipant.h"
|
#include "nsCycleCollectionParticipant.h"
|
||||||
#include "nsNullPrincipal.h"
|
#include "nsNullPrincipal.h"
|
||||||
#include "ScriptSettings.h"
|
#include "ScriptSettings.h"
|
||||||
|
#include "mozilla/unused.h"
|
||||||
#include "mozilla/dom/LocationBinding.h"
|
#include "mozilla/dom/LocationBinding.h"
|
||||||
|
|
||||||
using namespace mozilla;
|
using namespace mozilla;
|
||||||
@ -691,9 +692,16 @@ nsLocation::SetProtocol(const nsAString& aProtocol)
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = uri->SetScheme(NS_ConvertUTF16toUTF8(aProtocol));
|
nsAString::const_iterator start, end;
|
||||||
|
aProtocol.BeginReading(start);
|
||||||
|
aProtocol.EndReading(end);
|
||||||
|
nsAstring::const_iterator iter(start);
|
||||||
|
Unused << FindCharInReadable(':', iter, end);
|
||||||
|
rv = uri->SetScheme(NS_ConvertUTF16toUTF8(Substring(start, iter)));
|
||||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||||
return rv;
|
// Oh, I wish nsStandardURL returned NS_ERROR_MALFORMED_URI for _all_ the
|
||||||
|
// malformed cases, not just some of them!
|
||||||
|
return NS_ERROR_DOM_SYNTAX_ERR;
|
||||||
}
|
}
|
||||||
nsAutoCString newSpec;
|
nsAutoCString newSpec;
|
||||||
rv = uri->GetSpec(newSpec);
|
rv = uri->GetSpec(newSpec);
|
||||||
@ -703,9 +711,29 @@ nsLocation::SetProtocol(const nsAString& aProtocol)
|
|||||||
// We may want a new URI class for the new URI, so recreate it:
|
// We may want a new URI class for the new URI, so recreate it:
|
||||||
rv = NS_NewURI(getter_AddRefs(uri), newSpec);
|
rv = NS_NewURI(getter_AddRefs(uri), newSpec);
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
|
if (rv == NS_ERROR_MALFORMED_URI) {
|
||||||
|
rv = NS_ERROR_DOM_SYNTAX_ERR;
|
||||||
|
}
|
||||||
return 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);
|
return SetURI(uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user