From 8617010c5f605835eebc9db5c9c57c7341f66bf4 Mon Sep 17 00:00:00 2001 From: Valentin Gosu Date: Mon, 26 Feb 2018 20:43:46 +0100 Subject: [PATCH] Bug 1433958 - Change code that sets nsIURI.username to use nsIURIMutator r=mayhemer MozReview-Commit-ID: 7E63pAIOZCs --HG-- extra : rebase_source : 54164efbc967146f4811552498aea5e5db1edfc2 --- dom/base/Link.cpp | 10 +++++++--- dom/url/URLMainThread.cpp | 4 +++- netwerk/test/unit/test_URIs.js | 2 +- netwerk/test/unit/test_URIs2.js | 2 +- netwerk/test/unit/test_standardurl.js | 3 ++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/dom/base/Link.cpp b/dom/base/Link.cpp index 713702f94e69..c54673f1b2ed 100644 --- a/dom/base/Link.cpp +++ b/dom/base/Link.cpp @@ -462,14 +462,18 @@ Link::SetPassword(const nsAString &aPassword) void Link::SetUsername(const nsAString &aUsername) { - nsCOMPtr uri(GetURIToMutate()); + nsCOMPtr uri(GetURI()); if (!uri) { // Ignore failures to be compatible with NS4. return; } - uri->SetUsername(NS_ConvertUTF16toUTF8(aUsername)); - SetHrefAttribute(uri); + nsresult rv = NS_MutateURI(uri) + .SetUsername(NS_ConvertUTF16toUTF8(aUsername)) + .Finalize(uri); + if (NS_SUCCEEDED(rv)) { + SetHrefAttribute(uri); + } } void diff --git a/dom/url/URLMainThread.cpp b/dom/url/URLMainThread.cpp index 967dbe2fbe35..3581a949acc4 100644 --- a/dom/url/URLMainThread.cpp +++ b/dom/url/URLMainThread.cpp @@ -292,7 +292,9 @@ URLMainThread::GetUsername(nsAString& aUsername, ErrorResult& aRv) const void URLMainThread::SetUsername(const nsAString& aUsername, ErrorResult& aRv) { - mURI->SetUsername(NS_ConvertUTF16toUTF8(aUsername)); + Unused << NS_MutateURI(mURI) + .SetUsername(NS_ConvertUTF16toUTF8(aUsername)) + .Finalize(mURI); } void diff --git a/netwerk/test/unit/test_URIs.js b/netwerk/test/unit/test_URIs.js index 227ae159f18a..524244179925 100644 --- a/netwerk/test/unit/test_URIs.js +++ b/netwerk/test/unit/test_URIs.js @@ -524,7 +524,7 @@ function do_test_immutable(aTest) { var URI = NetUtil.newURI(aTest.spec); // All the non-readonly attributes on nsIURI.idl: - var propertiesToCheck = ["spec", "scheme", "username", "password", + var propertiesToCheck = ["spec", "scheme", "password", "host", "port", "query", "ref"]; propertiesToCheck.forEach(function(aProperty) { diff --git a/netwerk/test/unit/test_URIs2.js b/netwerk/test/unit/test_URIs2.js index eb2466042765..b4b24e50001d 100644 --- a/netwerk/test/unit/test_URIs2.js +++ b/netwerk/test/unit/test_URIs2.js @@ -625,7 +625,7 @@ function do_test_immutable(aTest) { var URI = NetUtil.newURI(aTest.spec); // All the non-readonly attributes on nsIURI.idl: - var propertiesToCheck = ["scheme", "username", "password", + var propertiesToCheck = ["scheme", "password", "host", "port", "query", "ref"]; propertiesToCheck.forEach(function(aProperty) { diff --git a/netwerk/test/unit/test_standardurl.js b/netwerk/test/unit/test_standardurl.js index c88e35897f77..61f85c22a778 100644 --- a/netwerk/test/unit/test_standardurl.js +++ b/netwerk/test/unit/test_standardurl.js @@ -301,7 +301,7 @@ add_test(function test_hugeStringThrows() let url = stringToURL("http://test:test@example.com"); let hugeString = new Array(maxLen + 1).fill("a").join(""); - let properties = ["scheme", "username", + let properties = ["scheme", "password", "host", "ref", "query"]; for (let prop of properties) { @@ -312,6 +312,7 @@ add_test(function test_hugeStringThrows() let setters = [ { method: "setSpec", qi: Ci.nsIURIMutator }, + { method: "setUsername", qi: Ci.nsIURIMutator }, { method: "setFilePath", qi: Ci.nsIURIMutator }, { method: "setHostPort", qi: Ci.nsIURIMutator }, { method: "setUserPass", qi: Ci.nsIURIMutator },