Add MIME Checks for link rel=manifest (#24446)

diff --git a/html/links/manifest/mime-type-application-json-manual.html b/html/links/manifest/mime-type-application-json-manual.html
new file mode 100644
index 0000000..5d1a498
--- /dev/null
+++ b/html/links/manifest/mime-type-application-json-manual.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<title>Test JSON MIME Type support (application/json)</title>
+<link rel="help" href="https://html.spec.whatwg.org/#link-type-manifest" />
+<link rel="manifest" href="mime-type-application-json.webmanifest" />
+<h1>Test JSON MIME Type support for web manifest</h1>
+<p>
+  To pass, the use agent must treat the manifest valid (name is "pass"). The
+  response's Content-Type metadata is a JSON MIME type "application/json".
+</p>
diff --git a/html/links/manifest/mime-type-application-json.webmanifest b/html/links/manifest/mime-type-application-json.webmanifest
new file mode 100644
index 0000000..c51d155
--- /dev/null
+++ b/html/links/manifest/mime-type-application-json.webmanifest
@@ -0,0 +1,3 @@
+{
+    "name": "pass"
+}
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-application-json.webmanifest.headers b/html/links/manifest/mime-type-application-json.webmanifest.headers
new file mode 100644
index 0000000..75f8856
--- /dev/null
+++ b/html/links/manifest/mime-type-application-json.webmanifest.headers
@@ -0,0 +1 @@
+Content-Type: application/json; charset=utf-8
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-application-manifest+json-manual.html b/html/links/manifest/mime-type-application-manifest+json-manual.html
new file mode 100644
index 0000000..f41c4fd
--- /dev/null
+++ b/html/links/manifest/mime-type-application-manifest+json-manual.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<title>Test JSON MIME Type support (application/manifest+json)</title>
+<link rel="help" href="https://html.spec.whatwg.org/#link-type-manifest" />
+<link rel="manifest" href="mime-type-application-manifest+json.webmanifest" />
+<h1>Test JSON MIME Type support for web manifest</h1>
+<p>
+  To pass, the use agent must treat the manifest valid (name is "pass"). The
+  response's Content-Type metadata is a JSON MIME type
+  "application/manifest+json".
+</p>
diff --git a/html/links/manifest/mime-type-application-manifest+json.webmanifest b/html/links/manifest/mime-type-application-manifest+json.webmanifest
new file mode 100644
index 0000000..c51d155
--- /dev/null
+++ b/html/links/manifest/mime-type-application-manifest+json.webmanifest
@@ -0,0 +1,3 @@
+{
+    "name": "pass"
+}
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-application-manifest+json.webmanifest.headers b/html/links/manifest/mime-type-application-manifest+json.webmanifest.headers
new file mode 100644
index 0000000..23f36ea
--- /dev/null
+++ b/html/links/manifest/mime-type-application-manifest+json.webmanifest.headers
@@ -0,0 +1 @@
+Content-Type: application/manifest+json; charset=utf-8
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-invalid-manual.html b/html/links/manifest/mime-type-invalid-manual.html
new file mode 100644
index 0000000..45c2000
--- /dev/null
+++ b/html/links/manifest/mime-type-invalid-manual.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<title>Test JSON MIME Type support (application/json)</title>
+<link rel="help" href="https://html.spec.whatwg.org/#link-type-manifest" />
+<link rel="manifest" href="mime-type-invalid.webmanifest" />
+<h1>Test JSON MIME Type support for web manifest</h1>
+<p>
+  To pass, the use agent must treat the manifest as invalid. The
+  response's Content-Type metadata is an invalid mime type.
+</p>
diff --git a/html/links/manifest/mime-type-invalid.webmanifest b/html/links/manifest/mime-type-invalid.webmanifest
new file mode 100644
index 0000000..66051f0
--- /dev/null
+++ b/html/links/manifest/mime-type-invalid.webmanifest
@@ -0,0 +1,3 @@
+{
+    "name": "fail - invalid MIME type"
+}
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-invalid.webmanifest.headers b/html/links/manifest/mime-type-invalid.webmanifest.headers
new file mode 100644
index 0000000..ac90386
--- /dev/null
+++ b/html/links/manifest/mime-type-invalid.webmanifest.headers
@@ -0,0 +1 @@
+Content-Type: ׺°”˜`”°º× INVALID MIME TYPE ׺°”˜`”°º×
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-none-manual.html b/html/links/manifest/mime-type-none-manual.html
new file mode 100644
index 0000000..8f93415
--- /dev/null
+++ b/html/links/manifest/mime-type-none-manual.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<title>Test JSON MIME Type support (application/json)</title>
+<link rel="help" href="https://html.spec.whatwg.org/#link-type-manifest" />
+<link rel="manifest" href="mime-type-invalid.webmanifest" />
+<h1>Test JSON MIME Type support for web manifest</h1>
+<p>
+  To pass, the use agent must treat the manifest as invalid. The
+  response's does not contain any Content-Type HTTP header.
+</p>
diff --git a/html/links/manifest/mime-type-none.webmanifest b/html/links/manifest/mime-type-none.webmanifest
new file mode 100644
index 0000000..cae1d82
--- /dev/null
+++ b/html/links/manifest/mime-type-none.webmanifest
@@ -0,0 +1,3 @@
+{
+    "name": "fail - no Content-Type HTTP header"
+}
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-none.webmanifest.headers b/html/links/manifest/mime-type-none.webmanifest.headers
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/html/links/manifest/mime-type-none.webmanifest.headers
diff --git a/html/links/manifest/mime-type-text-json-manual.html b/html/links/manifest/mime-type-text-json-manual.html
new file mode 100644
index 0000000..4597d6d
--- /dev/null
+++ b/html/links/manifest/mime-type-text-json-manual.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<title>Test JSON MIME Type support (text/json)</title>
+<link rel="help" href="https://html.spec.whatwg.org/#link-type-manifest" />
+<link rel="manifest" href="mime-type-text-json.webmanifest" />
+<h1>Test JSON MIME Type support for web manifest</h1>
+<p>
+  To pass, the use agent must treat the manifest valid (name is "pass"). The
+  response's Content-Type metadata is a JSON MIME type "text/json".
+</p>
diff --git a/html/links/manifest/mime-type-text-json.webmanifest b/html/links/manifest/mime-type-text-json.webmanifest
new file mode 100644
index 0000000..c51d155
--- /dev/null
+++ b/html/links/manifest/mime-type-text-json.webmanifest
@@ -0,0 +1,3 @@
+{
+    "name": "pass"
+}
\ No newline at end of file
diff --git a/html/links/manifest/mime-type-text-json.webmanifest.headers b/html/links/manifest/mime-type-text-json.webmanifest.headers
new file mode 100644
index 0000000..3f4f83f
--- /dev/null
+++ b/html/links/manifest/mime-type-text-json.webmanifest.headers
@@ -0,0 +1 @@
+Content-Type: text/json; charset=utf-8
\ No newline at end of file
diff --git a/html/links/manifest/wrong-mime-type-text-plain-manual.html b/html/links/manifest/wrong-mime-type-text-plain-manual.html
new file mode 100644
index 0000000..fdf5abf
--- /dev/null
+++ b/html/links/manifest/wrong-mime-type-text-plain-manual.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<title>Test JSON MIME Type support (text/plain)</title>
+<link rel="help" href="https://html.spec.whatwg.org/#link-type-manifest" />
+<link rel="manifest" href="wrong-mime-type-text-plain.webmanifest.webmanifest" />
+<h1>Test JSON MIME Type support for web manifest</h1>
+<p>
+  To pass, the use agent must treat the manifest as not present. The response's
+  Content-Type metadata "text/plain" is <strong>NOT</strong> a JSON MIME type.
+</p>
diff --git a/html/links/manifest/wrong-mime-type-text-plain.webmanifest b/html/links/manifest/wrong-mime-type-text-plain.webmanifest
new file mode 100644
index 0000000..eac6871
--- /dev/null
+++ b/html/links/manifest/wrong-mime-type-text-plain.webmanifest
@@ -0,0 +1,3 @@
+{
+    "name": "fail - MIME type is text/plain"
+}
\ No newline at end of file
diff --git a/html/links/manifest/wrong-mime-type-text-plain.webmanifest.headers b/html/links/manifest/wrong-mime-type-text-plain.webmanifest.headers
new file mode 100644
index 0000000..80fbe8d
--- /dev/null
+++ b/html/links/manifest/wrong-mime-type-text-plain.webmanifest.headers
@@ -0,0 +1 @@
+Content-Type: text/plain; charset=utf-8
\ No newline at end of file