Bug 1204268 - 'appcache validate' command doesn't work when manifest is in outer directory r?miker
MozReview-Commit-ID: Dtl5prPOQTT
--- a/devtools/client/commandline/test/browser.ini
+++ b/devtools/client/commandline/test/browser.ini
@@ -21,17 +21,19 @@ support-files =
browser_cmd_appcache_invalid_page2.html
browser_cmd_appcache_invalid_page3.html
browser_cmd_appcache_invalid_page3.html^headers^
[browser_cmd_appcache_valid.js]
skip-if = !e10s
support-files =
browser_cmd_appcache_valid_appcache.appcache
browser_cmd_appcache_valid_appcache.appcache^headers^
- browser_cmd_appcache_valid_index.html
+ browser_cmd_appcache_valid_index_relative_manifest.html
+ browser_cmd_appcache_valid_index_root_relative_manifest.html
+ browser_cmd_appcache_valid_index_absolute_manifest.html
browser_cmd_appcache_valid_page1.html
browser_cmd_appcache_valid_page2.html
browser_cmd_appcache_valid_page3.html
[browser_cmd_commands.js]
[browser_cmd_cookie.js]
support-files =
browser_cmd_cookie.html
[browser_cmd_cookie_host.js]
--- a/devtools/client/commandline/test/browser_cmd_appcache_valid.js
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid.js
@@ -1,16 +1,17 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Tests that the appcache commands works as they should
const TEST_URI = "https://sub1.test2.example.com/browser/devtools/client/" +
- "commandline/test/browser_cmd_appcache_valid_index.html";
+ "commandline/test/" +
+ "browser_cmd_appcache_valid_index_relative_manifest.html";
function test() {
return Task.spawn(spawnTest).then(finish, helpers.handleError);
}
function* spawnTest() {
let options = yield helpers.openTab(TEST_URI);
@@ -106,18 +107,18 @@ function* spawnTest() {
output: [ /successfully/ ]
},
},
{
setup: "appcache validate " + TEST_URI,
check: {
input: "appcache validate " + TEST_URI,
- // appcache validate https://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index.html
- markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+ // appcache validate http://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index_relative_manifest.html
+ markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
status: "VALID",
args: {
uri: {
value: TEST_URI
},
}
},
exec: {
@@ -147,27 +148,27 @@ function* spawnTest() {
args: {},
},
exec: {
output: [ /no results/ ]
},
post: function (output, text) {
ok(!text.includes("index"), "index is not contained in output");
ok(!text.includes("page1"), "page1 is not contained in output");
- ok(!text.includes("page2"), "page1 is not contained in output");
- ok(!text.includes("page3"), "page1 is not contained in output");
+ ok(!text.includes("page2"), "page2 is not contained in output");
+ ok(!text.includes("page3"), "page3 is not contained in output");
}
},
{
setup: "appcache viewentry --key " + TEST_URI,
check: {
input: "appcache viewentry --key " + TEST_URI,
- // appcache viewentry --key https://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index.html
- markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+ // appcache viewentry --key http://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index_relative_manifest.html
+ markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
status: "VALID",
args: {}
},
},
]);
yield helpers.closeToolbar(options);
yield helpers.closeTab(options);
--- a/devtools/client/commandline/test/browser_cmd_appcache_valid_appcache.appcache
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid_appcache.appcache
@@ -1,5 +1,5 @@
CACHE MANIFEST
-browser_cmd_appcache_valid_index.html
+browser_cmd_appcache_valid_index_relative_manifest.html
browser_cmd_appcache_valid_page1.html
browser_cmd_appcache_valid_page2.html
browser_cmd_appcache_valid_page3.html
deleted file mode 100644
--- a/devtools/client/commandline/test/browser_cmd_appcache_valid_index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<html manifest="browser_cmd_appcache_valid_appcache.appcache">
- <head>
- <meta charset="UTF-8">
- <head>
- <body>
- <h1>Example index.html</h1>
- <a href="browser_cmd_appcache_valid_index.html">Home</a> |
- <a href="browser_cmd_appcache_valid_page1.html">Page 1</a> |
- <a href="browser_cmd_appcache_valid_page2.html">Page 2</a> |
- <a href="browser_cmd_appcache_valid_page3.html">Page 3</a>
- </body>
-</html>
new file mode 100644
--- /dev/null
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid_index_absolute_manifest.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html manifest="http://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_appcache.appcache">
+ <head>
+ <meta charset="UTF-8">
+ <head>
+ <body>
+ <h1>Example index.html</h1>
+ <a href="browser_cmd_appcache_valid_index_absolute_manifest.html">Home</a> |
+ <a href="browser_cmd_appcache_valid_page1.html">Page 1</a> |
+ <a href="browser_cmd_appcache_valid_page2.html">Page 2</a> |
+ <a href="browser_cmd_appcache_valid_page3.html">Page 3</a>
+ </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid_index_relative_manifest.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html manifest="browser_cmd_appcache_valid_appcache.appcache">
+ <head>
+ <meta charset="UTF-8">
+ <head>
+ <body>
+ <h1>Example index.html</h1>
+ <a href="browser_cmd_appcache_valid_index_relative_manifest.html">Home</a> |
+ <a href="browser_cmd_appcache_valid_page1.html">Page 1</a> |
+ <a href="browser_cmd_appcache_valid_page2.html">Page 2</a> |
+ <a href="browser_cmd_appcache_valid_page3.html">Page 3</a>
+ </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid_index_root_relative_manifest.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html manifest="/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_appcache.appcache">
+ <head>
+ <meta charset="UTF-8">
+ <head>
+ <body>
+ <h1>Example index.html</h1>
+ <a href="browser_cmd_appcache_valid_index_root_relative_manifest.html">Home</a> |
+ <a href="browser_cmd_appcache_valid_page1.html">Page 1</a> |
+ <a href="browser_cmd_appcache_valid_page2.html">Page 2</a> |
+ <a href="browser_cmd_appcache_valid_page3.html">Page 3</a>
+ </body>
+</html>
--- a/devtools/client/commandline/test/browser_cmd_appcache_valid_page1.html
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid_page1.html
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<html manifest="browser_cmd_appcache_valid_appcache.appcache">
<head>
<meta charset="UTF-8">
<head>
<body>
<h1>Example page1.html</h1>
- <a href="browser_cmd_appcache_valid_index.html">Home</a> |
+ <a href="browser_cmd_appcache_valid_index_relative_manifest.html">Home</a> |
<a href="browser_cmd_appcache_valid_page1.html">Page 1</a> |
<a href="browser_cmd_appcache_valid_page2.html">Page 2</a> |
<a href="browser_cmd_appcache_valid_page3.html">Page 3</a>
</body>
</html>
--- a/devtools/client/commandline/test/browser_cmd_appcache_valid_page2.html
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid_page2.html
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<html manifest="browser_cmd_appcache_valid_appcache.appcache">
<head>
<meta charset="UTF-8">
<head>
<body>
<h1>Example page2.html</h1>
- <a href="browser_cmd_appcache_valid_index.html">Home</a> |
+ <a href="browser_cmd_appcache_valid_index_relative_manifest.html">Home</a> |
<a href="browser_cmd_appcache_valid_page1.html">Page 1</a> |
<a href="browser_cmd_appcache_valid_page2.html">Page 2</a> |
<a href="browser_cmd_appcache_valid_page3.html">Page 3</a>
</body>
</html>
--- a/devtools/client/commandline/test/browser_cmd_appcache_valid_page3.html
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid_page3.html
@@ -1,13 +1,13 @@
<!DOCTYPE html>
<html manifest="browser_cmd_appcache_valid_appcache.appcache">
<head>
<meta charset="UTF-8">
<head>
<body>
<h1>Example page3.html</h1>
- <a href="browser_cmd_appcache_valid_index.html">Home</a> |
+ <a href="browser_cmd_appcache_valid_index_relative_manifest.html">Home</a> |
<a href="browser_cmd_appcache_valid_page1.html">Page 1</a> |
<a href="browser_cmd_appcache_valid_page2.html">Page 2</a> |
<a href="browser_cmd_appcache_valid_page3.html">Page 3</a>
</body>
</html>
--- a/devtools/client/shared/AppCacheUtils.jsm
+++ b/devtools/client/shared/AppCacheUtils.jsm
@@ -307,24 +307,26 @@ AppCacheUtils.prototype = {
},
_getManifestURI: function ACU__getManifestURI() {
return new Promise((resolve, reject) => {
let getURI = () => {
let htmlNode = this.doc.querySelector("html[manifest]");
if (htmlNode) {
let pageUri = this.doc.location ? this.doc.location.href : this.uri;
- let origin = pageUri.substr(0, pageUri.lastIndexOf("/") + 1);
let manifestURI = htmlNode.getAttribute("manifest");
- if (manifestURI.startsWith("/")) {
- manifestURI = manifestURI.substr(1);
+ let originRegExp = new RegExp(/([a-z]*:\/\/[^/]*\/)/);
+ if (originRegExp.test(manifestURI)) {
+ return manifestURI;
+ } else if (manifestURI.startsWith("/")) {
+ return pageUri.match(originRegExp)[0] + manifestURI.substring(1);
}
- return origin + manifestURI;
+ return pageUri.substring(0, pageUri.lastIndexOf("/") + 1) + manifestURI;
}
};
if (this.doc) {
let uri = getURI();
return resolve(uri);
} else {
this._getURIInfo(this.uri).then(uriInfo => {