Repository: cordova-app-harness Updated Branches: refs/heads/master fae458db1 -> 12e3a7e4e
Fix ResourcesLoader broken with latest version of file plugin It was hard-coded to use cdvfile: URLs, but it is now fed file:// URLs. Project: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/commit/12e3a7e4 Tree: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/tree/12e3a7e4 Diff: http://git-wip-us.apache.org/repos/asf/cordova-app-harness/diff/12e3a7e4 Branch: refs/heads/master Commit: 12e3a7e4e87e88c6569fb82deb98afda0b71840b Parents: fae458d Author: Andrew Grieve <[email protected]> Authored: Tue Apr 29 23:06:15 2014 -0400 Committer: Andrew Grieve <[email protected]> Committed: Tue Apr 29 23:06:15 2014 -0400 ---------------------------------------------------------------------- www/cdvah/js/ResourcesLoader.js | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-app-harness/blob/12e3a7e4/www/cdvah/js/ResourcesLoader.js ---------------------------------------------------------------------- diff --git a/www/cdvah/js/ResourcesLoader.js b/www/cdvah/js/ResourcesLoader.js index fa0e53d..e862aa3 100644 --- a/www/cdvah/js/ResourcesLoader.js +++ b/www/cdvah/js/ResourcesLoader.js @@ -40,23 +40,28 @@ } function dirName(path) { - return path.replace(/\/[^\/]+$/, '/'); + return path.replace(/\/[^\/]+\/?$/, '/'); } function baseName(path) { - return path.replace(/.*\//, ''); + return path.replace(/\/$/, '').replace(/.*\//, ''); } - function ensureDirectoryExists(url) { - var m = /(cdvfile:\/\/.*?\/.*?\/)(.*)/.exec(url); - var rootDir = m[1]; - var segments = m[2].split('/'); - - return segments.reduce(function(p, seg) { - return !seg ? p : p.then(function(parentDirEntry) { - return getDirectoryPromisified(parentDirEntry, seg, {create: true}); + function ensureDirectoryExists(targetUrl) { + function helper(url) { + return resolveURL(url) + .then(null, function() { + var parentUrl = dirName(url); + if (parentUrl == url) { + throw new Error('No root filesystem for: ' + targetUrl); + } + return helper(parentUrl) + .then(function(entry) { + return getDirectoryPromisified(entry, baseName(url), {create: true}); + }); }); - }, resolveURL(rootDir)); + } + return helper(targetUrl); } function createFileEntry(url) {
