// Test inputs: // - description: a description of the test. // - noVarySearch: No-Vary-Search header value for the response. // - noVarySearchHint: No-Vary-Search hint to include in prefetch // speculation rules // - prefetchQuery: added to query part of prefetch-executor when prefetching // - navigateQuery: added to query part of prefetch-executor when navigating // - shouldUse: if the test case expects the prefetched entry to be used or not. const hint_test_inputs = [ { description: 'Use in-flight prefetch as query parameter b has the same value.', noVarySearch: 'params=("a")', noVarySearchHint: 'params=("a")', prefetchQuery: 'a=2&b=3', navigateQuery: 'b=3', shouldUse: true }, { description: 'Don\'t use in-flight prefetch as there is no No-Vary-Search hint.', noVarySearch: 'params=("a")', noVarySearchHint: '', prefetchQuery: 'a=2&b=3', navigateQuery: 'b=3', shouldUse: false }, { description: 'Don\'t use in-flight prefetch as the prefetched URL has the extra "a" query parameter.', noVarySearch: 'params=("b")', noVarySearchHint: 'params=("b")', prefetchQuery: 'a=2&b=3', navigateQuery: 'b=2', shouldUse: false }, { description: 'Use in-flight prefetch as the URLs do not vary by a and b.', noVarySearch: 'params=("a" "b")', noVarySearchHint: 'params=("a" "b")', prefetchQuery: 'a=2&b=3', navigateQuery: 'b=2', shouldUse: true }, { description: 'Do not use in-flight prefetch as the navigation URL has' + ' a different value for the "b" query parameter.', noVarySearch: 'params=("a" "b")', noVarySearchHint: 'params=("a")', prefetchQuery: 'a=2&b=3', navigateQuery: 'b=2', shouldUse: false }, { description: 'Use in-flight prefetch as the URLs have the same values for all keys, only differing by order.', noVarySearch: 'key-order', noVarySearchHint: 'key-order', prefetchQuery: 'b=5&a=3&a=4&d=6&c=5&b=3', navigateQuery: 'd=6&a=3&b=5&b=3&c=5&a=4', shouldUse: true }, { description: 'Use in-flight prefetch as the URLs have the same values for all keys, only differing by order and using ?1 for specifying a true value.', noVarySearch: 'key-order=?1', noVarySearchHint: 'key-order=?1', prefetchQuery: 'b=5&a=3&a=4&d=6&c=5&b=3', navigateQuery: 'd=6&a=3&b=5&b=3&c=5&a=4', shouldUse: true }, { description: 'Don\'t use in-flight prefetch as key-order is set to false and the URLs are not identical.', noVarySearch: 'key-order=?0', noVarySearchHint: 'key-order=?1', prefetchQuery: 'b=5&a=3&a=4&d=6&c=5&b=3', navigateQuery: 'd=6&a=3&b=5&b=3&c=5&a=4', shouldUse: false }, { description: 'Use in-flight prefetch as all query parameters except c can be ignored.', noVarySearch: 'params, except=("c")', noVarySearchHint: 'params, except=("c")', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'a=1&b=2&c=3', shouldUse: true }, { description: 'Use in-flight prefetch as all query parameters except c can be ignored.' + ' Only the last except matters.', noVarySearch: 'params, except=("b"), except=("c")', noVarySearchHint: 'params, except=("b"), except=("c")', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'a=1&b=2&c=3', shouldUse: true }, { description: 'Don\'t use in-flight prefetch as even though all query parameters' + ' except c can be ignored, c has different value.', noVarySearch: 'params, except=("c")', noVarySearchHint: 'params', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'a=1&b=2&c=5', shouldUse: false }, { description: 'Use in-flight prefetch as even though all query parameters' + ' except c and d can be ignored, c value matches and d value matches.', noVarySearch: 'params, except=("c" "d")', noVarySearchHint: 'params, except=("c" "d")', prefetchQuery: 'b=5&a=3&d=6&c=5', navigateQuery: 'd=6&a=1&b=2&c=5', shouldUse: true }, { description: 'Use in-flight prefetch as even though all query parameters except' + ' c and d can be ignored, c value matches and d value matches.' + ' Some query parameters to be ignored appear multiple times in the query.', noVarySearch: 'params, except=("c" "d")', noVarySearchHint: 'params', prefetchQuery: 'b=5&a=3&a=4&d=6&c=5', navigateQuery: 'd=6&a=1&a=2&b=2&b=3&c=5', shouldUse: true }, { description: 'Use in-flight prefetch as all query parameters except c can be ignored.' + ' Allow extension via parameters.', noVarySearch: 'params, except=("c";unknown)', noVarySearchHint: 'params, except=("c";unknown)', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'a=1&b=2&c=3', shouldUse: true }, { description: 'Use in-flight prefetch as query parameter c can be ignored.' + ' Allow extension via parameters.', noVarySearch: 'params=("c";unknown)', noVarySearchHint: 'params=("c";unknown)', prefetchQuery: 'a=2&b=2&c=5', navigateQuery: 'a=2&c=3&b=2', shouldUse: true }, { description: 'Use in-flight prefetch as the URLs have the values in different order for a.' + ' Allow extension via parameters.', noVarySearch: 'key-order;unknown', noVarySearchHint: 'key-order;unknown', prefetchQuery: 'b=5&a=3&a=4&d=6&c=5&b=3', navigateQuery: 'd=6&a=3&b=5&b=3&c=5&a=4', shouldUse: true }, { description: 'Use in-flight prefetch as the URLs do not vary on any query parameters.' + ' Allow extension via parameters.', noVarySearch: 'params;unknown', noVarySearchHint: 'params;unknown', prefetchQuery: '', navigateQuery: 'b=4&c=5', shouldUse: true }, { description: 'Use in-flight prefetch as all query parameters except c can be ignored.' + ' Allow extension via parameters.', noVarySearch: 'params;unknown, except=("c");unknown', noVarySearchHint: 'params;unknown, except=("c");unknown', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'a=1&b=2&c=3', shouldUse: true }, { description: 'Don\'t use the in-flight prefetched URL. Empty No-Vary-Search means default URL variance.' + ' The prefetched and the navigated URLs have to be the same.', noVarySearch: '', noVarySearchHint: 'params', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'a=1&b=2&c=3', shouldUse: false }, { description: 'Use the in-flight prefetch. Empty No-Vary-Search means default URL variance.' + ' The prefetched and the navigated URLs have to be the same.', noVarySearch: '', noVarySearchHint: '', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'b=5&a=3&d=6&c=3', shouldUse: true }, { description: 'Use the in-flight prefetch. Invalid No-Vary-Search means default URL variance.' + ' The prefetched and the navigated URLs have to be the same.', noVarySearch: '', noVarySearchHint: 'params=(a)', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'b=5&a=3&d=6&c=3', shouldUse: true }, { description: 'Don\'t use the in-flight prefetch. Invalid No-Vary-Search means default URL variance.' + ' The prefetched and the navigated URLs are not the same.', noVarySearch: '', noVarySearchHint: 'params=(a)', prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'b=5&a=4&d=6&c=3', shouldUse: false }, { description: 'No-Vary-Search hint must be a string so the speculation rule will be ignored.' + ' There is no prefetch happening.', noVarySearch: '', noVarySearchHint: 0, prefetchQuery: 'b=5&a=3&d=6&c=3', navigateQuery: 'b=5&a=3&d=6&c=3', shouldUse: false }, { description: 'Use the in-flight prefetch. Empty No-Vary-Search means default URL variance.' + ' The prefetched and the navigated URLs have to be the same.', noVarySearch: '', noVarySearchHint: '', prefetchQuery: '', navigateQuery: '', shouldUse: true }, { description: 'Use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units.' + ' Don\'t vary the response on the non-ASCII key.', noVarySearch: 'params=("%C2%A2")', noVarySearchHint: 'params=("%C2%A2")', prefetchQuery: '¢=3', navigateQuery: '¢=4', shouldUse: true }, { description: 'Use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units.' + ' Don\'t vary the response on the non-ASCII key.', noVarySearch: 'params=("%C2%A2")', noVarySearchHint: 'params=("%C2%A2")', prefetchQuery: 'a=2&¢=3', navigateQuery: '¢=4&a=2', shouldUse: true }, { description: 'Don\'t use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units.' + ' Vary the response on the non-ASCII key.', noVarySearch: 'params, except=("%C2%A2")', noVarySearchHint: 'params', prefetchQuery: '¢=3', navigateQuery: '¢=4', shouldUse: false }, { description: 'Use the in-flight prefetch. Non-ASCII key - 2 UTF-8 code units.' + ' Vary the response on the non-ASCII key.', noVarySearch: 'params, except=("%C2%A2")', noVarySearchHint: 'params, except=("%C2%A2")', prefetchQuery: '¢=3&a=4', navigateQuery: 'a=5&¢=3', shouldUse: true }, ];