зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 8aeb6541520a (bug 1405174) for landing wrong version of patch. r=backout
This commit is contained in:
Родитель
561b271b7d
Коммит
5057df5497
|
@ -425,27 +425,7 @@ SubstitutingProtocolHandler::ResolveURI(nsIURI *uri, nsACString &result)
|
|||
rv = baseURI->GetSpec(result);
|
||||
} else {
|
||||
// Make sure we always resolve the path as file-relative to our target URI.
|
||||
// When the baseURI is a nsIFileURL, and the directory it points to doesn't
|
||||
// exist, it doesn't end with a /. In that case, a file-relative resolution
|
||||
// is going to pick something in the parent directory, so we resolve using
|
||||
// an absolute path derived from the full path in that case.
|
||||
nsCOMPtr<nsIFileURL> baseDir = do_QueryInterface(baseURI);
|
||||
if (baseDir) {
|
||||
nsAutoCString basePath;
|
||||
rv = baseURI->GetFilePath(basePath);
|
||||
if (NS_SUCCEEDED(rv) && !StringEndsWith(basePath, NS_LITERAL_CSTRING("/"))) {
|
||||
// Cf. the assertion above, path already starts with a /, so prefixing
|
||||
// with a string that doesn't end with one will leave us wit the right
|
||||
// amount of /.
|
||||
path.Insert(basePath, 0);
|
||||
} else {
|
||||
// Allow to fall through below.
|
||||
baseDir = nullptr;
|
||||
}
|
||||
}
|
||||
if (!baseDir) {
|
||||
path.Insert('.', 0);
|
||||
}
|
||||
path.Insert('.', 0);
|
||||
rv = baseURI->Resolve(path, result);
|
||||
}
|
||||
|
||||
|
|
|
@ -94,14 +94,9 @@ function run_test() {
|
|||
let rootFile = Services.dirsvc.get("GreD", Ci.nsIFile);
|
||||
let rootURI = Services.io.newFileURI(rootFile);
|
||||
|
||||
rootFile.appendRelativePath("this/directory/does/not/exist");
|
||||
let inexistentURI = Services.io.newFileURI(rootFile);
|
||||
|
||||
resProto.setSubstitution("res-test", rootURI);
|
||||
resProto.setSubstitution("res-inexistent", inexistentURI);
|
||||
do_register_cleanup(() => {
|
||||
resProto.setSubstitution("res-test", null);
|
||||
resProto.setSubstitution("res-inexistent", null);
|
||||
});
|
||||
|
||||
let baseRoot = resProto.resolveURI(Services.io.newURI("resource:///"));
|
||||
|
@ -109,7 +104,6 @@ function run_test() {
|
|||
|
||||
for (var spec of specs) {
|
||||
check_safe_resolution(spec, rootURI.spec);
|
||||
check_safe_resolution(spec.replace("res-test", "res-inexistent"), inexistentURI.spec);
|
||||
check_safe_resolution(spec.replace("res-test", ""), baseRoot);
|
||||
check_safe_resolution(spec.replace("res-test", "gre"), greRoot);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче