File: heuristic.any.js

package info (click to toggle)
thunderbird 1%3A140.4.0esr-1~deb13u1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 4,609,412 kB
  • sloc: cpp: 7,672,442; javascript: 5,901,613; ansic: 3,898,954; python: 1,413,343; xml: 653,997; asm: 462,286; java: 180,927; sh: 113,489; makefile: 20,460; perl: 14,288; objc: 13,059; yacc: 4,583; pascal: 3,352; lex: 1,720; ruby: 1,222; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (116 lines) | stat: -rw-r--r-- 3,088 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
// META: global=window,worker
// META: title=HTTP Cache - Heuristic Freshness
// META: timeout=long
// META: script=/common/utils.js
// META: script=/common/get-host-info.sub.js
// META: script=http-cache.js

var tests = [
  {
    name: "HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present",
    requests: [
      {
        response_status: [299, "Whatever"],
        response_headers: [
          ["Last-Modified", (-3 * 100)],
          ["Cache-Control", "public"]
        ],
      },
      {
        expected_type: "cached",
        response_status: [299, "Whatever"]
      }
    ]
  },
  {
    name: "HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present",
    requests: [
      {
        response_status: [299, "Whatever"],
        response_headers: [
          ["Last-Modified", (-3 * 100)]
        ],
      },
      {
        expected_type: "not_cached",
      }
    ]
  },
  {
    name: "HTTP cache does not reuse a redirected response with no max-age and no Last-Modified header",
    requests: [
      {
        response_status: [301, "Moved Permanently"],
        response_headers: [
          ["Cache-Control", "private"],
          ["Location", "redirect_target"]
        ],
      },
      { skip: true}, // Response to first redirect
      {
        response_status: [301, "Moved Permanently"],
        response_headers: [
          ["Cache-Control", "private"],
          ["Location", "redirect_target"]
        ],
        expected_type: "not_cached",
      },
      { skip: true}, // response to second redirect
    ],
    check_count: true,
  },
];

function check_status(status) {
  var succeed = status[0];
  var code = status[1];
  var phrase = status[2];
  var body = status[3];
  if (body === undefined) {
    body = http_content(code);
  }
  var expected_type = "not_cached";
  var desired = "does not use"
  if (succeed === true) {
    expected_type = "cached";
    desired = "reuses";
  }
  tests.push(
    {
      name: "HTTP cache " + desired + " a " + code + " " + phrase + " response with Last-Modified based upon heuristic freshness",
      requests: [
        {
          response_status: [code, phrase],
          response_headers: [
            ["Last-Modified", (-3 * 100)]
          ],
          response_body: body
        },
        {
          expected_type: expected_type,
          response_status: [code, phrase],
          response_body: body
        }
      ]
    }
  )
}
[
  [true, 200, "OK"],
  [true, 203, "Non-Authoritative Information"],
  [true, 204, "No Content", ""],
  [true, 404, "Not Found"],
  [true, 405, "Method Not Allowed"],
  [true, 410, "Gone"],
  [true, 414, "URI Too Long"],
  [true, 501, "Not Implemented"]
].forEach(check_status);
[
  [false, 201, "Created"],
  [false, 202, "Accepted"],
  [false, 403, "Forbidden"],
  [false, 502, "Bad Gateway"],
  [false, 503, "Service Unavailable"],
  [false, 504, "Gateway Timeout"],
].forEach(check_status);
run_tests(tests);