From 20f697690ed55214c95db9cf4def4fa353d41db3 Mon Sep 17 00:00:00 2001 From: Matthew Gregan Date: Tue, 13 Sep 2016 13:23:46 +1200 Subject: [PATCH 01/76] Bug 1274479 - Update libcubeb. r=padenot --- media/libcubeb/README_MOZILLA | 2 +- media/libcubeb/bug1278612.patch | 136 ------------------------ media/libcubeb/include/cubeb.h | 6 +- media/libcubeb/src/cubeb-internal.h | 32 +++++- media/libcubeb/src/cubeb.c | 19 ++-- media/libcubeb/src/cubeb_audiounit.cpp | 12 +-- media/libcubeb/src/cubeb_jack.cpp | 27 +++-- media/libcubeb/src/cubeb_resampler.cpp | 2 +- media/libcubeb/src/cubeb_utils_unix.h | 6 +- media/libcubeb/src/cubeb_wasapi.cpp | 6 +- media/libcubeb/src/cubeb_winmm.c | 24 ++++- media/libcubeb/tests/test_audio.cpp | 8 +- media/libcubeb/tests/test_duplex.cpp | 6 +- media/libcubeb/tests/test_latency.cpp | 2 +- media/libcubeb/tests/test_record.cpp | 6 +- media/libcubeb/tests/test_resampler.cpp | 6 +- media/libcubeb/tests/test_sanity.cpp | 10 +- media/libcubeb/tests/test_tone.cpp | 4 +- media/libcubeb/update.sh | 2 - 19 files changed, 112 insertions(+), 204 deletions(-) delete mode 100644 media/libcubeb/bug1278612.patch diff --git a/media/libcubeb/README_MOZILLA b/media/libcubeb/README_MOZILLA index 0dab9bb33648..a5c8d4ecf483 100644 --- a/media/libcubeb/README_MOZILLA +++ b/media/libcubeb/README_MOZILLA @@ -5,4 +5,4 @@ Makefile.in build files for the Mozilla build system. The cubeb git repository is: git://github.com/kinetiknz/cubeb.git -The git commit ID used was e4074131e4d422bfe260d29ab0a49fc368406ef4. +The git commit ID used was 92b4afa6ae9f0969e77d59a8f9de9ab36acd7d7f. diff --git a/media/libcubeb/bug1278612.patch b/media/libcubeb/bug1278612.patch deleted file mode 100644 index e29c7b4b6afd..000000000000 --- a/media/libcubeb/bug1278612.patch +++ /dev/null @@ -1,136 +0,0 @@ -diff --git a/media/libcubeb/src/cubeb_audiounit.cpp b/media/libcubeb/src/cubeb_audiounit.cpp ---- a/media/libcubeb/src/cubeb_audiounit.cpp -+++ b/media/libcubeb/src/cubeb_audiounit.cpp -@@ -48,22 +48,16 @@ - typedef UInt32 AudioFormatFlags; - #endif - - #define CUBEB_STREAM_MAX 8 - - #define AU_OUT_BUS 0 - #define AU_IN_BUS 1 - --#if TARGET_OS_IPHONE --#define CUBEB_AUDIOUNIT_SUBTYPE kAudioUnitSubType_RemoteIO --#else --#define CUBEB_AUDIOUNIT_SUBTYPE kAudioUnitSubType_HALOutput --#endif -- - //#define LOGGING_ENABLED - #ifdef LOGGING_ENABLED - #define LOG(...) do { \ - fprintf(stderr, __VA_ARGS__); \ - fprintf(stderr, "(line: %d)\n", __LINE__); \ - } while(0) - #else - #define LOG(...) -@@ -905,63 +899,79 @@ audiounit_create_unit(AudioUnit * unit, - { - AudioComponentDescription desc; - AudioComponent comp; - UInt32 enable; - AudioDeviceID devid; - OSStatus rv; - - desc.componentType = kAudioUnitType_Output; -- desc.componentSubType = CUBEB_AUDIOUNIT_SUBTYPE; -+#if TARGET_OS_IPHONE -+ bool use_default_output = false; -+ desc.componentSubType = kAudioUnitSubType_RemoteIO; -+#else -+ // Use the DefaultOutputUnit for output when no device is specified -+ // so we retain automatic output device switching when the default -+ // changes. Once we have complete support for device notifications -+ // and switching, we can use the AUHAL for everything. -+ bool use_default_output = device == NULL && !is_input; -+ if (use_default_output) { -+ desc.componentSubType = kAudioUnitSubType_DefaultOutput; -+ } else { -+ desc.componentSubType = kAudioUnitSubType_HALOutput; -+ } -+#endif - desc.componentManufacturer = kAudioUnitManufacturer_Apple; - desc.componentFlags = 0; - desc.componentFlagsMask = 0; - comp = AudioComponentFindNext(NULL, &desc); - if (comp == NULL) { - LOG("Could not find matching audio hardware."); - return CUBEB_ERROR; - } - - rv = AudioComponentInstanceNew(comp, unit); - if (rv != noErr) { - PRINT_ERROR_CODE("AudioComponentInstanceNew", rv); - return CUBEB_ERROR; - } - -- enable = 1; -- rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO, -- is_input ? kAudioUnitScope_Input : kAudioUnitScope_Output, -- is_input ? AU_IN_BUS : AU_OUT_BUS, &enable, sizeof(UInt32)); -- if (rv != noErr) { -- PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv); -- return CUBEB_ERROR; -- } -+ if (!use_default_output) { -+ enable = 1; -+ rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO, -+ is_input ? kAudioUnitScope_Input : kAudioUnitScope_Output, -+ is_input ? AU_IN_BUS : AU_OUT_BUS, &enable, sizeof(UInt32)); -+ if (rv != noErr) { -+ PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv); -+ return CUBEB_ERROR; -+ } - -- enable = 0; -- rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO, -- is_input ? kAudioUnitScope_Output : kAudioUnitScope_Input, -- is_input ? AU_OUT_BUS : AU_IN_BUS, &enable, sizeof(UInt32)); -- if (rv != noErr) { -- PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv); -- return CUBEB_ERROR; -- } -+ enable = 0; -+ rv = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_EnableIO, -+ is_input ? kAudioUnitScope_Output : kAudioUnitScope_Input, -+ is_input ? AU_OUT_BUS : AU_IN_BUS, &enable, sizeof(UInt32)); -+ if (rv != noErr) { -+ PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_EnableIO", rv); -+ return CUBEB_ERROR; -+ } - -- if (device == NULL) { -- devid = audiounit_get_default_device_id(is_input ? CUBEB_DEVICE_TYPE_INPUT -- : CUBEB_DEVICE_TYPE_OUTPUT); -- } else { -- devid = reinterpret_cast(device); -- } -- int err = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_CurrentDevice, -- kAudioUnitScope_Global, -- is_input ? AU_IN_BUS : AU_OUT_BUS, -- &devid, sizeof(AudioDeviceID)); -- if (err != noErr) { -- PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_CurrentDevice", rv); -- return CUBEB_ERROR; -+ if (device == NULL) { -+ assert(is_input); -+ devid = audiounit_get_default_device_id(CUBEB_DEVICE_TYPE_INPUT); -+ } else { -+ devid = reinterpret_cast(device); -+ } -+ int err = AudioUnitSetProperty(*unit, kAudioOutputUnitProperty_CurrentDevice, -+ kAudioUnitScope_Global, -+ is_input ? AU_IN_BUS : AU_OUT_BUS, -+ &devid, sizeof(AudioDeviceID)); -+ if (err != noErr) { -+ PRINT_ERROR_CODE("AudioUnitSetProperty/kAudioOutputUnitProperty_CurrentDevice", rv); -+ return CUBEB_ERROR; -+ } - } - - return CUBEB_OK; - } - - static int - audiounit_init_input_linear_buffer(cubeb_stream * stream, uint32_t capacity) - { diff --git a/media/libcubeb/include/cubeb.h b/media/libcubeb/include/cubeb.h index 95118dc9113b..0c30556c8812 100644 --- a/media/libcubeb/include/cubeb.h +++ b/media/libcubeb/include/cubeb.h @@ -396,7 +396,7 @@ void cubeb_destroy(cubeb * context); @param context A pointer to the cubeb context. @param stream An out parameter to be filled with the an opaque pointer to a cubeb stream. - @param stream_name A name for this stream. + @param stream_name A name for this stream. @param input_device Device for the input side of the stream. If NULL the default input device is used. @param input_stream_params Parameters for the input side of the stream, or @@ -405,8 +405,8 @@ void cubeb_destroy(cubeb * context); default output device is used. @param output_stream_params Parameters for the output side of the stream, or NULL if this stream is input only. - @param latency Stream latency in frames. Valid range - is [1, 96000]. + @param latency_frames Stream latency in frames. Valid range + is [1, 96000]. @param data_callback Will be called to preroll data before playback is started by cubeb_stream_start. @param state_callback A pointer to a state callback. diff --git a/media/libcubeb/src/cubeb-internal.h b/media/libcubeb/src/cubeb-internal.h index 15acbd21e4e7..3dd31d5b4636 100644 --- a/media/libcubeb/src/cubeb-internal.h +++ b/media/libcubeb/src/cubeb-internal.h @@ -11,6 +11,29 @@ #include #include +#ifdef __clang__ +#ifndef CLANG_ANALYZER_NORETURN +#if __has_feature(attribute_analyzer_noreturn) +#define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn)) +#else +#define CLANG_ANALYZER_NORETURN +#endif // ifndef CLANG_ANALYZER_NORETURN +#endif // __has_feature(attribute_analyzer_noreturn) +#else // __clang__ +#define CLANG_ANALYZER_NORETURN +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +/* Crash the caller. */ +void cubeb_crash() CLANG_ANALYZER_NORETURN; + +#if defined(__cplusplus) +} +#endif + struct cubeb_ops { int (* init)(cubeb ** context, char const * context_name); char const * (* get_backend_id)(cubeb * context); @@ -52,12 +75,11 @@ struct cubeb_ops { void * user_ptr); }; -#define XASSERT(expr) do { \ - if (!(expr)) { \ +#define XASSERT(expr) do { \ + if (!(expr)) { \ fprintf(stderr, "%s:%d - fatal error: %s\n", __FILE__, __LINE__, #expr); \ - *((volatile int *) NULL) = 0; \ - abort(); \ - } \ + cubeb_crash(); \ + } \ } while (0) #endif /* CUBEB_INTERNAL_0eb56756_4e20_4404_a76d_42bf88cd15a5 */ diff --git a/media/libcubeb/src/cubeb.c b/media/libcubeb/src/cubeb.c index f89a8f6a5afe..cc25eda0e479 100644 --- a/media/libcubeb/src/cubeb.c +++ b/media/libcubeb/src/cubeb.c @@ -33,15 +33,9 @@ int jack_init (cubeb ** context, char const * context_name); #if defined(USE_ALSA) int alsa_init(cubeb ** context, char const * context_name); #endif -#if defined(USE_AUDIOQUEUE) -int audioqueue_init(cubeb ** context, char const * context_name); -#endif #if defined(USE_AUDIOUNIT) int audiounit_init(cubeb ** context, char const * context_name); #endif -#if defined(USE_DIRECTSOUND) -int directsound_init(cubeb ** context, char const * context_name); -#endif #if defined(USE_WINMM) int winmm_init(cubeb ** context, char const * context_name); #endif @@ -129,18 +123,12 @@ cubeb_init(cubeb ** context, char const * context_name) #if defined(USE_AUDIOUNIT) audiounit_init, #endif -#if defined(USE_AUDIOQUEUE) - audioqueue_init, -#endif #if defined(USE_WASAPI) wasapi_init, #endif #if defined(USE_WINMM) winmm_init, #endif -#if defined(USE_DIRECTSOUND) - directsound_init, -#endif #if defined(USE_SNDIO) sndio_init, #endif @@ -454,3 +442,10 @@ int cubeb_register_device_collection_changed(cubeb * context, return context->ops->register_device_collection_changed(context, devtype, callback, user_ptr); } +void cubeb_crash() +{ + abort(); + *((volatile int *) NULL) = 0; +} + + diff --git a/media/libcubeb/src/cubeb_audiounit.cpp b/media/libcubeb/src/cubeb_audiounit.cpp index afc920f16ea3..c86a9aedbede 100644 --- a/media/libcubeb/src/cubeb_audiounit.cpp +++ b/media/libcubeb/src/cubeb_audiounit.cpp @@ -30,6 +30,7 @@ #include "cubeb_ring_array.h" #include "cubeb_utils.h" #include +#include #if !defined(kCFCoreFoundationVersionNumber10_7) /* From CoreFoundation CFBase.h */ @@ -180,7 +181,7 @@ struct cubeb_stream { int draining; uint64_t current_latency_frames; uint64_t hw_latency_frames; - float panning; + std::atomic panning; cubeb_resampler * resampler; }; @@ -409,7 +410,8 @@ audiounit_output_callback(void * user_ptr, stm->frames_queued += outframes; AudioFormatFlags outaff = stm->output_desc.mFormatFlags; - float panning = (stm->output_desc.mChannelsPerFrame == 2) ? stm->panning : 0.0f; + float panning = (stm->output_desc.mChannelsPerFrame == 2) ? + stm->panning.load(std::memory_order_relaxed) : 0.0f; /* Post process output samples. */ if (stm->draining) { @@ -1613,11 +1615,7 @@ int audiounit_stream_set_panning(cubeb_stream * stm, float panning) return CUBEB_ERROR_INVALID_PARAMETER; } - { - auto_lock lock(stm->mutex); - stm->panning = panning; - } - + stm->panning.store(panning, std::memory_order_relaxed); return CUBEB_OK; } diff --git a/media/libcubeb/src/cubeb_jack.cpp b/media/libcubeb/src/cubeb_jack.cpp index 8f32f3dfe2a1..8f995da66165 100644 --- a/media/libcubeb/src/cubeb_jack.cpp +++ b/media/libcubeb/src/cubeb_jack.cpp @@ -46,7 +46,9 @@ X(jack_port_get_latency_range) \ X(jack_set_process_callback) \ X(jack_set_xrun_callback) \ - X(jack_set_graph_order_callback) + X(jack_set_graph_order_callback) \ + X(jack_set_error_function) \ + X(jack_set_info_function) #define IMPORT_FUNC(x) static decltype(x) * api_##x; JACK_API_VISIT(IMPORT_FUNC); @@ -283,8 +285,6 @@ cbjack_graph_order_callback(void * arg) { cubeb * ctx = (cubeb *)arg; int i; - uint32_t rate; - jack_latency_range_t latency_range; jack_nframes_t port_latency, max_latency = 0; @@ -564,6 +564,11 @@ cbjack_interleave_capture(cubeb_stream * stream, float **in, jack_nframes_t nfra } } +static void +silent_jack_error_callback(char const * /*msg*/) +{ +} + /*static*/ int jack_init (cubeb ** context, char const * context_name) { @@ -582,6 +587,9 @@ jack_init (cubeb ** context, char const * context_name) return CUBEB_ERROR; } + api_jack_set_error_function(silent_jack_error_callback); + api_jack_set_info_function(silent_jack_error_callback); + ctx->ops = &cbjack_ops; ctx->mutex = PTHREAD_MUTEX_INITIALIZER; @@ -623,13 +631,13 @@ jack_init (cubeb ** context, char const * context_name) } static char const * -cbjack_get_backend_id(cubeb * context) +cbjack_get_backend_id(cubeb * /*context*/) { return "jack"; } static int -cbjack_get_max_channel_count(cubeb * ctx, uint32_t * max_channels) +cbjack_get_max_channel_count(cubeb * /*ctx*/, uint32_t * max_channels) { *max_channels = MAX_CHANNELS; return CUBEB_OK; @@ -643,7 +651,7 @@ cbjack_get_latency(cubeb_stream * stm, unsigned int * latency_ms) } static int -cbjack_get_min_latency(cubeb * ctx, cubeb_stream_params params, uint32_t * latency_ms) +cbjack_get_min_latency(cubeb * ctx, cubeb_stream_params /*params*/, uint32_t * latency_ms) { *latency_ms = ctx->jack_latency; return CUBEB_OK; @@ -703,7 +711,7 @@ cbjack_stream_init(cubeb * context, cubeb_stream ** stream, char const * stream_ cubeb_stream_params * input_stream_params, cubeb_devid output_device, cubeb_stream_params * output_stream_params, - unsigned int latency_frames, + unsigned int /*latency_frames*/, cubeb_data_callback data_callback, cubeb_state_callback state_callback, void * user_ptr) @@ -725,6 +733,9 @@ cbjack_stream_init(cubeb * context, cubeb_stream ** stream, char const * stream_ return CUBEB_ERROR_INVALID_FORMAT; } + if (input_device || output_device) + return CUBEB_ERROR_NOT_SUPPORTED; + *stream = NULL; // Find a free stream. @@ -956,7 +967,7 @@ cbjack_stream_get_current_device(cubeb_stream * stm, cubeb_device ** const devic } static int -cbjack_stream_device_destroy(cubeb_stream * stream, +cbjack_stream_device_destroy(cubeb_stream * /*stream*/, cubeb_device * device) { if (device->input_name) diff --git a/media/libcubeb/src/cubeb_resampler.cpp b/media/libcubeb/src/cubeb_resampler.cpp index 9bccc78db28b..a47674441744 100644 --- a/media/libcubeb/src/cubeb_resampler.cpp +++ b/media/libcubeb/src/cubeb_resampler.cpp @@ -150,7 +150,7 @@ template long cubeb_resampler_speex ::fill_internal_input(T * input_buffer, long * input_frames_count, - T * output_buffer, long output_frames_needed) + T * output_buffer, long /*output_frames_needed*/) { assert(input_buffer && input_frames_count && *input_frames_count && !output_buffer); diff --git a/media/libcubeb/src/cubeb_utils_unix.h b/media/libcubeb/src/cubeb_utils_unix.h index 643306e14157..72041f55ec99 100644 --- a/media/libcubeb/src/cubeb_utils_unix.h +++ b/media/libcubeb/src/cubeb_utils_unix.h @@ -20,7 +20,11 @@ public: { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); +#ifdef DEBUG + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK); +#else + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL); +#endif #ifdef DEBUG int r = diff --git a/media/libcubeb/src/cubeb_wasapi.cpp b/media/libcubeb/src/cubeb_wasapi.cpp index 9fe35f199bfc..3a7f6fe46545 100644 --- a/media/libcubeb/src/cubeb_wasapi.cpp +++ b/media/libcubeb/src/cubeb_wasapi.cpp @@ -760,8 +760,10 @@ refill_callback_output(cubeb_stream * stm) 0, output_buffer, output_frames); + XASSERT(got >= 0); + XASSERT(got == output_frames || stm->draining); - hr = stm->render_client->ReleaseBuffer(output_frames, 0); + hr = stm->render_client->ReleaseBuffer(got, 0); if (FAILED(hr)) { LOG("failed to release buffer: %x\n", hr); return false; @@ -1022,7 +1024,7 @@ current_stream_delay(cubeb_stream * stm) double cur_pos = static_cast(pos) / freq; double max_pos = static_cast(stm->frames_written) / stm->output_mix_params.rate; double delay = max_pos - cur_pos; - XASSERT(delay >= 0 || stm->draining); + XASSERT(delay >= 0); return delay; } diff --git a/media/libcubeb/src/cubeb_winmm.c b/media/libcubeb/src/cubeb_winmm.c index 65bb1ed8df58..585d11e89d5e 100644 --- a/media/libcubeb/src/cubeb_winmm.c +++ b/media/libcubeb/src/cubeb_winmm.c @@ -310,6 +310,11 @@ winmm_init(cubeb ** context, char const * context_name) XASSERT(context); *context = NULL; + /* Don't initialize a context if there are no devices available. */ + if (waveOutGetNumDevs() == 0) { + return CUBEB_ERROR; + } + ctx = calloc(1, sizeof(*ctx)); XASSERT(ctx); @@ -533,23 +538,32 @@ winmm_stream_init(cubeb * context, cubeb_stream ** stream, char const * stream_n static void winmm_stream_destroy(cubeb_stream * stm) { - DWORD r; int i; - int enqueued; if (stm->waveout) { + MMTIME time; + MMRESULT r; + int device_valid; + int enqueued; + EnterCriticalSection(&stm->lock); stm->shutdown = 1; waveOutReset(stm->waveout); + /* Don't need this value, we just want the result to detect invalid + handle/no device errors than waveOutReset doesn't seem to report. */ + time.wType = TIME_SAMPLES; + r = waveOutGetPosition(stm->waveout, &time, sizeof(time)); + device_valid = !(r == MMSYSERR_INVALHANDLE || r == MMSYSERR_NODRIVER); + enqueued = NBUFS - stm->free_buffers; LeaveCriticalSection(&stm->lock); /* Wait for all blocks to complete. */ - while (enqueued > 0) { - r = WaitForSingleObject(stm->event, INFINITE); - XASSERT(r == WAIT_OBJECT_0); + while (device_valid && enqueued > 0) { + DWORD rv = WaitForSingleObject(stm->event, INFINITE); + XASSERT(rv == WAIT_OBJECT_0); EnterCriticalSection(&stm->lock); enqueued = NBUFS - stm->free_buffers; diff --git a/media/libcubeb/tests/test_audio.cpp b/media/libcubeb/tests/test_audio.cpp index 1bd18b378c7e..4943223e682d 100644 --- a/media/libcubeb/tests/test_audio.cpp +++ b/media/libcubeb/tests/test_audio.cpp @@ -73,7 +73,7 @@ void synth_run_float(synth_state* synth, float* audiobuffer, long nframes) } } -long data_cb_float(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes) +long data_cb_float(cubeb_stream * /*stream*/, void * user, const void * /*inputbuffer*/, void * outputbuffer, long nframes) { synth_state *synth = (synth_state *)user; synth_run_float(synth, (float*)outputbuffer, nframes); @@ -92,14 +92,14 @@ void synth_run_16bit(synth_state* synth, short* audiobuffer, long nframes) } } -long data_cb_short(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes) +long data_cb_short(cubeb_stream * /*stream*/, void * user, const void * /*inputbuffer*/, void * outputbuffer, long nframes) { synth_state *synth = (synth_state *)user; synth_run_16bit(synth, (short*)outputbuffer, nframes); return nframes; } -void state_cb(cubeb_stream *stream, void *user, cubeb_state state) +void state_cb(cubeb_stream * /*stream*/, void * /*user*/, cubeb_state /*state*/) { } @@ -280,7 +280,7 @@ void run_channel_rate_test() } -int main(int argc, char *argv[]) +int main(int /*argc*/, char * /*argv*/[]) { #ifdef CUBEB_GECKO_BUILD ScopedXPCOM xpcom("test_audio"); diff --git a/media/libcubeb/tests/test_duplex.cpp b/media/libcubeb/tests/test_duplex.cpp index 85fbd3d70a2b..c5d02d782c9e 100644 --- a/media/libcubeb/tests/test_duplex.cpp +++ b/media/libcubeb/tests/test_duplex.cpp @@ -38,7 +38,7 @@ struct user_state -long data_cb(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes) +long data_cb(cubeb_stream * stream, void * user, const void * inputbuffer, void * outputbuffer, long nframes) { user_state * u = reinterpret_cast(user); #if (defined(_WIN32) || defined(__WIN32__)) @@ -70,7 +70,7 @@ long data_cb(cubeb_stream *stream, void *user, const void * inputbuffer, void *o return nframes; } -void state_cb(cubeb_stream *stream, void *user, cubeb_state state) +void state_cb(cubeb_stream * stream, void * /*user*/, cubeb_state state) { if (stream == NULL) return; @@ -89,7 +89,7 @@ void state_cb(cubeb_stream *stream, void *user, cubeb_state state) return; } -int main(int argc, char *argv[]) +int main(int /*argc*/, char * /*argv*/[]) { #ifdef CUBEB_GECKO_BUILD ScopedXPCOM xpcom("test_duplex"); diff --git a/media/libcubeb/tests/test_latency.cpp b/media/libcubeb/tests/test_latency.cpp index 558ef9515176..0586b1a367e8 100644 --- a/media/libcubeb/tests/test_latency.cpp +++ b/media/libcubeb/tests/test_latency.cpp @@ -11,7 +11,7 @@ #define LOG(msg) fprintf(stderr, "%s\n", msg); -int main(int argc, char * argv[]) +int main(int /*argc*/, char * /*argv*/[]) { #ifdef CUBEB_GECKO_BUILD ScopedXPCOM xpcom("test_latency"); diff --git a/media/libcubeb/tests/test_record.cpp b/media/libcubeb/tests/test_record.cpp index 5dbfb61a59e7..681e1641e28c 100644 --- a/media/libcubeb/tests/test_record.cpp +++ b/media/libcubeb/tests/test_record.cpp @@ -33,7 +33,7 @@ struct user_state bool seen_noise; }; -long data_cb(cubeb_stream *stream, void *user, const void * inputbuffer, void *outputbuffer, long nframes) +long data_cb(cubeb_stream * stream, void * user, const void * inputbuffer, void * outputbuffer, long nframes) { user_state * u = reinterpret_cast(user); #if STREAM_FORMAT != CUBEB_SAMPLE_FLOAT32LE @@ -58,7 +58,7 @@ long data_cb(cubeb_stream *stream, void *user, const void * inputbuffer, void *o return nframes; } -void state_cb(cubeb_stream *stream, void *user, cubeb_state state) +void state_cb(cubeb_stream * stream, void * /*user*/, cubeb_state state) { if (stream == NULL) return; @@ -77,7 +77,7 @@ void state_cb(cubeb_stream *stream, void *user, cubeb_state state) return; } -int main(int argc, char *argv[]) +int main(int /*argc*/, char * /*argv*/[]) { #ifdef CUBEB_GECKO_BUILD ScopedXPCOM xpcom("test_record"); diff --git a/media/libcubeb/tests/test_resampler.cpp b/media/libcubeb/tests/test_resampler.cpp index fc3ecf850a7c..00b256d514eb 100644 --- a/media/libcubeb/tests/test_resampler.cpp +++ b/media/libcubeb/tests/test_resampler.cpp @@ -283,7 +283,7 @@ uint32_t fill_with_sine(float * buf, uint32_t rate, uint32_t channels, return initial_phase; } -long data_cb(cubeb_stream * stm, void * user_ptr, +long data_cb(cubeb_stream * /*stm*/, void * user_ptr, const void * input_buffer, void * output_buffer, long frame_count) { osc_state * state = reinterpret_cast(user_ptr); @@ -464,7 +464,7 @@ void test_delay_line() } } -long test_output_only_noop_data_cb(cubeb_stream * stm, void * user_ptr, +long test_output_only_noop_data_cb(cubeb_stream * /*stm*/, void * /*user_ptr*/, const void * input_buffer, void * output_buffer, long frame_count) { @@ -500,7 +500,7 @@ void test_output_only_noop() cubeb_resampler_destroy(resampler); } -long test_drain_data_cb(cubeb_stream * stm, void * user_ptr, +long test_drain_data_cb(cubeb_stream * /*stm*/, void * /*user_ptr*/, const void * input_buffer, void * output_buffer, long frame_count) { diff --git a/media/libcubeb/tests/test_sanity.cpp b/media/libcubeb/tests/test_sanity.cpp index 36f903fc3bbd..de4b6a826bca 100644 --- a/media/libcubeb/tests/test_sanity.cpp +++ b/media/libcubeb/tests/test_sanity.cpp @@ -36,7 +36,7 @@ static uint64_t total_frames_written; static int delay_callback; static long -test_data_callback(cubeb_stream * stm, void * user_ptr, const void * inputbuffer, void * outputbuffer, long nframes) +test_data_callback(cubeb_stream * stm, void * user_ptr, const void * /*inputbuffer*/, void * outputbuffer, long nframes) { assert(stm && user_ptr == &dummy && outputbuffer && nframes > 0); #if (defined(_WIN32) || defined(__WIN32__)) @@ -53,7 +53,7 @@ test_data_callback(cubeb_stream * stm, void * user_ptr, const void * inputbuffer } void -test_state_callback(cubeb_stream * stm, void * user_ptr, cubeb_state state) +test_state_callback(cubeb_stream * /*stm*/, void * /*user_ptr*/, cubeb_state /*state*/) { } @@ -494,7 +494,7 @@ static int do_drain; static int got_drain; static long -test_drain_data_callback(cubeb_stream * stm, void * user_ptr, const void * inputbuffer, void * outputbuffer, long nframes) +test_drain_data_callback(cubeb_stream * stm, void * user_ptr, const void * /*inputbuffer*/, void * outputbuffer, long nframes) { assert(stm && user_ptr == &dummy && outputbuffer && nframes > 0); if (do_drain == 1) { @@ -513,7 +513,7 @@ test_drain_data_callback(cubeb_stream * stm, void * user_ptr, const void * input } void -test_drain_state_callback(cubeb_stream * stm, void * user_ptr, cubeb_state state) +test_drain_state_callback(cubeb_stream * /*stm*/, void * /*user_ptr*/, cubeb_state state) { if (state == CUBEB_STATE_DRAINED) { assert(!got_drain); @@ -608,7 +608,7 @@ int is_windows_7() } int -main(int argc, char * argv[]) +main(int /*argc*/, char * /*argv*/[]) { #ifdef CUBEB_GECKO_BUILD ScopedXPCOM xpcom("test_sanity"); diff --git a/media/libcubeb/tests/test_tone.cpp b/media/libcubeb/tests/test_tone.cpp index ae5ac8041f39..3c6e0ec548ae 100644 --- a/media/libcubeb/tests/test_tone.cpp +++ b/media/libcubeb/tests/test_tone.cpp @@ -34,7 +34,7 @@ struct cb_user_data { long position; }; -long data_cb(cubeb_stream *stream, void *user, const void* inputbuffer, void *outputbuffer, long nframes) +long data_cb(cubeb_stream *stream, void *user, const void* /*inputbuffer*/, void *outputbuffer, long nframes) { struct cb_user_data *u = (struct cb_user_data *)user; #if (defined(_WIN32) || defined(__WIN32__)) @@ -98,7 +98,7 @@ void state_cb(cubeb_stream *stream, void *user, cubeb_state state) return; } -int main(int argc, char *argv[]) +int main(int /*argc*/, char * /*argv*/[]) { #ifdef CUBEB_GECKO_BUILD ScopedXPCOM xpcom("test_tone"); diff --git a/media/libcubeb/update.sh b/media/libcubeb/update.sh index a96badd069b5..8313b534d2dc 100755 --- a/media/libcubeb/update.sh +++ b/media/libcubeb/update.sh @@ -57,5 +57,3 @@ else echo "Remember to update README_MOZILLA with the version details." fi -patch -p3 < bug1278612.patch - From 27cb0a7981aaf5ee468e8f430ec09723d3e1658e Mon Sep 17 00:00:00 2001 From: Sotaro Ikeda Date: Mon, 12 Sep 2016 22:19:29 -0700 Subject: [PATCH 02/76] Bug 1300656 - Optimize gfxUtils::ConvertBGRAtoRGBA() r=jrmuizel --- gfx/thebes/gfxUtils.cpp | 16 ++-------------- gfx/thebes/moz.build | 1 + 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/gfx/thebes/gfxUtils.cpp b/gfx/thebes/gfxUtils.cpp index 1894b39efc28..861b5cec9fba 100644 --- a/gfx/thebes/gfxUtils.cpp +++ b/gfx/thebes/gfxUtils.cpp @@ -12,6 +12,7 @@ #include "gfxPlatform.h" #include "gfxDrawable.h" #include "imgIEncoder.h" +#include "libyuv.h" #include "mozilla/Base64.h" #include "mozilla/dom/ImageEncoder.h" #include "mozilla/dom/WorkerPrivate.h" @@ -373,20 +374,7 @@ void gfxUtils::ConvertBGRAtoRGBA(uint8_t* aData, uint32_t aLength) { MOZ_ASSERT((aLength % 4) == 0, "Loop below will pass srcEnd!"); - - uint8_t *src = aData; - uint8_t *srcEnd = src + aLength; - - uint8_t buffer[4]; - for (; src != srcEnd; src += 4) { - buffer[0] = src[2]; - buffer[1] = src[1]; - buffer[2] = src[0]; - - src[0] = buffer[0]; - src[1] = buffer[1]; - src[2] = buffer[2]; - } + libyuv::ABGRToARGB(aData, aLength, aData, aLength, aLength / 4, 1); } #if !defined(MOZ_GFX_OPTIMIZE_MOBILE) diff --git a/gfx/thebes/moz.build b/gfx/thebes/moz.build index 782dc9639509..7be61762e3bc 100644 --- a/gfx/thebes/moz.build +++ b/gfx/thebes/moz.build @@ -284,6 +284,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS'] LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] +LOCAL_INCLUDES += ['/media/libyuv/include'] DEFINES['GRAPHITE2_STATIC'] = True From 0a5546331bde1e071200e477869ab6164b0a69f1 Mon Sep 17 00:00:00 2001 From: Josh Aas Date: Tue, 13 Sep 2016 02:25:36 -0500 Subject: [PATCH 03/76] Bug 337051: Add origin and referrer URL metadata to downloaded files on OS X. r=mstange,pamadini --- .../public/mozIDownloadPlatform.idl | 4 +- .../jsdownloads/src/DownloadIntegration.jsm | 6 + .../jsdownloads/src/DownloadPlatform.cpp | 55 ++++++++- xpcom/io/CocoaFileUtils.h | 6 + xpcom/io/CocoaFileUtils.mm | 115 ++++++++++++++++++ 5 files changed, 184 insertions(+), 2 deletions(-) diff --git a/toolkit/components/jsdownloads/public/mozIDownloadPlatform.idl b/toolkit/components/jsdownloads/public/mozIDownloadPlatform.idl index 8c82291a2cc4..d4f49bb4bb5b 100644 --- a/toolkit/components/jsdownloads/public/mozIDownloadPlatform.idl +++ b/toolkit/components/jsdownloads/public/mozIDownloadPlatform.idl @@ -26,6 +26,8 @@ interface mozIDownloadPlatform : nsISupports * * @param aSource * Source URI of the download + * @param aReferrer + * Referrer URI of the download * @param aTarget * Downloaded file * @param aContentType @@ -34,7 +36,7 @@ interface mozIDownloadPlatform : nsISupports * True for private downloads * @return none */ - void downloadDone(in nsIURI aSource, in nsIFile aTarget, + void downloadDone(in nsIURI aSource, in nsIURI aReferrer, in nsIFile aTarget, in ACString aContentType, in boolean aIsPrivate); /** diff --git a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm index 4976e9187058..3d85125aadb0 100644 --- a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm +++ b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm @@ -679,7 +679,13 @@ this.DownloadIntegration = { } } + let aReferrer = null; + if (aDownload.source.referrer) { + aReferrer: NetUtil.newURI(aDownload.source.referrer); + } + gDownloadPlatform.downloadDone(NetUtil.newURI(aDownload.source.url), + aReferrer, new FileUtils.File(aDownload.target.path), aDownload.contentType, aDownload.source.isPrivate); diff --git a/toolkit/components/jsdownloads/src/DownloadPlatform.cpp b/toolkit/components/jsdownloads/src/DownloadPlatform.cpp index f47c800910d1..fad8185ce4f4 100644 --- a/toolkit/components/jsdownloads/src/DownloadPlatform.cpp +++ b/toolkit/components/jsdownloads/src/DownloadPlatform.cpp @@ -24,6 +24,7 @@ #ifdef XP_MACOSX #include +#include "../../../../../xpcom/io/CocoaFileUtils.h" #endif #ifdef MOZ_WIDGET_ANDROID @@ -69,7 +70,32 @@ static void gio_set_metadata_done(GObject *source_obj, GAsyncResult *res, gpoint } #endif -nsresult DownloadPlatform::DownloadDone(nsIURI* aSource, nsIFile* aTarget, +#ifdef XP_MACOSX +// Caller is responsible for freeing any result (CF Create Rule) +CFURLRef CreateCFURLFromNSIURI(nsIURI *aURI) { + nsAutoCString spec; + if (aURI) { + aURI->GetSpec(spec); + } + + CFStringRef urlStr = ::CFStringCreateWithCString(kCFAllocatorDefault, + spec.get(), + kCFStringEncodingUTF8); + if (!urlStr) { + return NULL; + } + + CFURLRef url = ::CFURLCreateWithString(kCFAllocatorDefault, + urlStr, + NULL); + + ::CFRelease(urlStr); + + return url; +} +#endif + +nsresult DownloadPlatform::DownloadDone(nsIURI* aSource, nsIURI* aReferrer, nsIFile* aTarget, const nsACString& aContentType, bool aIsPrivate) { #if defined(XP_WIN) || defined(XP_MACOSX) || defined(MOZ_WIDGET_ANDROID) \ @@ -130,6 +156,33 @@ nsresult DownloadPlatform::DownloadDone(nsIURI* aSource, nsIFile* aTarget, ::CFNotificationCenterPostNotification(center, CFSTR("com.apple.DownloadFileFinished"), observedObject, nullptr, TRUE); ::CFRelease(observedObject); + + // Add OS X origin and referrer file metadata + CFStringRef pathCFStr = NULL; + if (!path.IsEmpty()) { + pathCFStr = ::CFStringCreateWithCharacters(kCFAllocatorDefault, + (const UniChar*)path.get(), + path.Length()); + } + if (pathCFStr) { + CFURLRef sourceCFURL = CreateCFURLFromNSIURI(aSource); + CFURLRef referrerCFURL = CreateCFURLFromNSIURI(aReferrer); + + CocoaFileUtils::AddOriginMetadataToFile(pathCFStr, + sourceCFURL, + referrerCFURL); + CocoaFileUtils::AddQuarantineMetadataToFile(pathCFStr, + sourceCFURL, + referrerCFURL); + + ::CFRelease(pathCFStr); + if (sourceCFURL) { + ::CFRelease(sourceCFURL); + } + if (referrerCFURL) { + ::CFRelease(referrerCFURL); + } + } #endif if (mozilla::Preferences::GetBool("device.storage.enabled", true)) { // Tell DeviceStorage that a new file may have been added. diff --git a/xpcom/io/CocoaFileUtils.h b/xpcom/io/CocoaFileUtils.h index 283607f06f16..523d7dcb2f48 100644 --- a/xpcom/io/CocoaFileUtils.h +++ b/xpcom/io/CocoaFileUtils.h @@ -21,6 +21,12 @@ nsresult GetFileCreatorCode(CFURLRef aUrl, OSType* aCreatorCode); nsresult SetFileCreatorCode(CFURLRef aUrl, OSType aCreatorCode); nsresult GetFileTypeCode(CFURLRef aUrl, OSType* aTypeCode); nsresult SetFileTypeCode(CFURLRef aUrl, OSType aTypeCode); +void AddOriginMetadataToFile(const CFStringRef filePath, + const CFURLRef sourceURL, + const CFURLRef referrerURL); +void AddQuarantineMetadataToFile(const CFStringRef filePath, + const CFURLRef sourceURL, + const CFURLRef referrerURL); } // namespace CocoaFileUtils diff --git a/xpcom/io/CocoaFileUtils.mm b/xpcom/io/CocoaFileUtils.mm index 3f6872745536..e311729fc7df 100644 --- a/xpcom/io/CocoaFileUtils.mm +++ b/xpcom/io/CocoaFileUtils.mm @@ -136,4 +136,119 @@ nsresult SetFileTypeCode(CFURLRef url, OSType typeCode) NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT; } +void AddOriginMetadataToFile(const CFStringRef filePath, + const CFURLRef sourceURL, + const CFURLRef referrerURL) { + typedef OSStatus (*MDItemSetAttribute_type)(MDItemRef, CFStringRef, CFTypeRef); + static MDItemSetAttribute_type mdItemSetAttributeFunc = NULL; + + static bool did_symbol_lookup = false; + if (!did_symbol_lookup) { + did_symbol_lookup = true; + + CFBundleRef metadata_bundle = ::CFBundleGetBundleWithIdentifier(CFSTR("com.apple.Metadata")); + if (!metadata_bundle) { + return; + } + + mdItemSetAttributeFunc = (MDItemSetAttribute_type) + ::CFBundleGetFunctionPointerForName(metadata_bundle, CFSTR("MDItemSetAttribute")); + } + if (!mdItemSetAttributeFunc) { + return; + } + + MDItemRef mdItem = ::MDItemCreate(NULL, filePath); + if (!mdItem) { + return; + } + + CFMutableArrayRef list = ::CFArrayCreateMutable(kCFAllocatorDefault, 2, NULL); + if (!list) { + ::CFRelease(mdItem); + return; + } + + // The first item in the list is the source URL of the downloaded file. + if (sourceURL) { + ::CFArrayAppendValue(list, ::CFURLGetString(sourceURL)); + } + + // If the referrer is known, store that in the second position. + if (referrerURL) { + ::CFArrayAppendValue(list, ::CFURLGetString(referrerURL)); + } + + mdItemSetAttributeFunc(mdItem, kMDItemWhereFroms, list); + + ::CFRelease(list); + ::CFRelease(mdItem); +} + +void AddQuarantineMetadataToFile(const CFStringRef filePath, + const CFURLRef sourceURL, + const CFURLRef referrerURL) { + CFURLRef fileURL = ::CFURLCreateWithFileSystemPath(kCFAllocatorDefault, + filePath, + kCFURLPOSIXPathStyle, + false); + + CFDictionaryRef quarantineProps = NULL; + Boolean success = ::CFURLCopyResourcePropertyForKey(fileURL, + kLSItemQuarantineProperties, + &quarantineProps, + NULL); + + // If there aren't any quarantine properties then the user probably + // set up an exclusion and we don't need to add metadata. + if (!success || !quarantineProps) { + ::CFRelease(fileURL); + return; + } + + // We don't know what to do if the props aren't a dictionary. + if (::CFGetTypeID(quarantineProps) != ::CFDictionaryGetTypeID()) { + ::CFRelease(fileURL); + ::CFRelease(quarantineProps); + return; + } + + // Make a mutable copy of the properties. + CFMutableDictionaryRef mutQuarantineProps = + ::CFDictionaryCreateMutableCopy(kCFAllocatorDefault, 0, (CFDictionaryRef)quarantineProps); + ::CFRelease(quarantineProps); + + // Add metadata that the OS couldn't infer. + + if (!::CFDictionaryGetValue(mutQuarantineProps, kLSQuarantineTypeKey)) { + CFStringRef type = kLSQuarantineTypeOtherDownload; + + CFStringRef scheme = ::CFURLCopyScheme(sourceURL); + if (::CFStringCompare(scheme, CFSTR("http"), kCFCompareCaseInsensitive) == kCFCompareEqualTo || + ::CFStringCompare(scheme, CFSTR("http"), kCFCompareCaseInsensitive) == kCFCompareEqualTo) { + type = kLSQuarantineTypeWebDownload; + } + ::CFRelease(scheme); + + ::CFDictionarySetValue(mutQuarantineProps, kLSQuarantineTypeKey, type); + } + + if (!::CFDictionaryGetValue(mutQuarantineProps, kLSQuarantineOriginURLKey)) { + ::CFDictionarySetValue(mutQuarantineProps, kLSQuarantineOriginURLKey, referrerURL); + } + + if (!::CFDictionaryGetValue(mutQuarantineProps, kLSQuarantineDataURLKey)) { + ::CFDictionarySetValue(mutQuarantineProps, kLSQuarantineDataURLKey, sourceURL); + } + + // Set quarantine properties on file. + ::CFURLSetResourcePropertyForKey(fileURL, + kLSItemQuarantineProperties, + mutQuarantineProps, + NULL); + + ::CFRelease(fileURL); + ::CFRelease(mutQuarantineProps); +} + } // namespace CocoaFileUtils From 797c6a811abec35de194fdd4bb8a58baafffcf63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Tue, 13 Sep 2016 13:26:11 +0200 Subject: [PATCH 04/76] Bug 1302355 - Make --arrowpanel-dimmed* colors work with dark OS themes. r=past --- browser/themes/linux/browser.css | 6 +++--- browser/themes/windows/browser.css | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css index f5fb9685002a..a0a1ab3327f5 100644 --- a/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css @@ -33,9 +33,9 @@ --toolbarbutton-checkedhover-backgroundcolor: rgba(200,200,200,.5); --panel-separator-color: ThreeDShadow; - --arrowpanel-dimmed: hsla(210,4%,10%,.07); - --arrowpanel-dimmed-further: hsla(210,4%,10%,.12); - --arrowpanel-dimmed-even-further: hsla(210,4%,10%,.17); + --arrowpanel-dimmed: hsla(0,0%,80%,.3); + --arrowpanel-dimmed-further: hsla(0,0%,80%,.45); + --arrowpanel-dimmed-even-further: hsla(0,0%,80%,.8); --urlbar-separator-color: ThreeDShadow; } diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css index ed4906324091..11432d554680 100644 --- a/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css @@ -46,9 +46,9 @@ --urlbar-dropmarker-active-2x-region: rect(0, 66px, 28px, 44px); --panel-separator-color: ThreeDLightShadow; - --arrowpanel-dimmed: hsla(210,4%,10%,.07); - --arrowpanel-dimmed-further: hsla(210,4%,10%,.12); - --arrowpanel-dimmed-even-further: hsla(210,4%,10%,.17); + --arrowpanel-dimmed: hsla(0,0%,80%,.3); + --arrowpanel-dimmed-further: hsla(0,0%,80%,.45); + --arrowpanel-dimmed-even-further: hsla(0,0%,80%,.8); --urlbar-separator-color: ThreeDLightShadow; } From d97a19687bc89f6b16b4e7c135217dd0c90411a2 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Tue, 13 Sep 2016 14:06:46 +0200 Subject: [PATCH 05/76] Bug 1298639 - Use bytecode offsets rather than direct pointer in profiling API r=shu --- js/public/ProfilingStack.h | 19 ++++++++++------- js/src/jsgc.cpp | 23 +++++++++++---------- js/src/vm/SPSProfiler.cpp | 31 +++++++++++++++++++++++++--- js/src/vm/SPSProfiler.h | 2 +- tools/profiler/core/GeckoSampler.cpp | 25 ++++++++++++---------- xpcom/threads/ThreadStackHelper.cpp | 6 ++++-- 6 files changed, 70 insertions(+), 36 deletions(-) diff --git a/js/public/ProfilingStack.h b/js/public/ProfilingStack.h index 3335277c76dc..6b6c9701dd3b 100644 --- a/js/public/ProfilingStack.h +++ b/js/public/ProfilingStack.h @@ -43,7 +43,7 @@ class ProfileEntry void * volatile spOrScript; // Line number for non-JS entries, the bytecode offset otherwise. - int32_t volatile lineOrPc; + int32_t volatile lineOrPcOffset; // General purpose storage describing this frame. uint32_t volatile flags_; @@ -116,7 +116,7 @@ class ProfileEntry void initCppFrame(void* aSp, uint32_t aLine) volatile { flags_ = IS_CPP_ENTRY; spOrScript = aSp; - lineOrPc = static_cast(aLine); + lineOrPcOffset = static_cast(aLine); } void setFlag(uint32_t flag) volatile { @@ -161,13 +161,16 @@ class ProfileEntry MOZ_ASSERT(!isJs()); return spOrScript; } - JSScript* script() const volatile { - MOZ_ASSERT(isJs()); - return (JSScript*)spOrScript; - } + JSScript* script() const volatile; uint32_t line() const volatile { MOZ_ASSERT(!isJs()); - return static_cast(lineOrPc); + return static_cast(lineOrPcOffset); + } + + // Note that the pointer returned might be invalid. + JSScript* rawScript() const volatile { + MOZ_ASSERT(isJs()); + return (JSScript*)spOrScript; } // We can't know the layout of JSScript, so look in vm/SPSProfiler.cpp. @@ -183,7 +186,7 @@ class ProfileEntry static size_t offsetOfLabel() { return offsetof(ProfileEntry, string); } static size_t offsetOfSpOrScript() { return offsetof(ProfileEntry, spOrScript); } - static size_t offsetOfLineOrPc() { return offsetof(ProfileEntry, lineOrPc); } + static size_t offsetOfLineOrPcOffset() { return offsetof(ProfileEntry, lineOrPcOffset); } static size_t offsetOfFlags() { return offsetof(ProfileEntry, flags_); } }; diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 1a0ac9767f1c..b8245618f1ca 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -5467,30 +5467,31 @@ GCRuntime::compactPhase(JS::gcreason::Reason reason, SliceBudget& sliceBudget, gcstats::AutoPhase ap(stats, gcstats::PHASE_COMPACT); - // TODO: JSScripts can move. If the sampler interrupts the GC in the - // middle of relocating an arena, invalid JSScript pointers may be - // accessed. Suppress all sampling until a finer-grained solution can be - // found. See bug 1295775. - AutoSuppressProfilerSampling suppressSampling(rt); - + Arena* relocatedArenas = nullptr; while (!zonesToMaybeCompact.isEmpty()) { + // TODO: JSScripts can move. If the sampler interrupts the GC in the + // middle of relocating an arena, invalid JSScript pointers may be + // accessed. Suppress all sampling until a finer-grained solution can be + // found. See bug 1295775. + AutoSuppressProfilerSampling suppressSampling(rt); + Zone* zone = zonesToMaybeCompact.front(); MOZ_ASSERT(zone->isGCFinished()); - Arena* relocatedArenas = nullptr; if (relocateArenas(zone, reason, relocatedArenas, sliceBudget)) { zone->setGCState(Zone::Compact); updatePointersToRelocatedCells(zone, lock); zone->setGCState(Zone::Finished); } - if (ShouldProtectRelocatedArenas(reason)) - protectAndHoldArenas(relocatedArenas); - else - releaseRelocatedArenas(relocatedArenas); zonesToMaybeCompact.removeFront(); if (sliceBudget.isOverBudget()) break; } + if (ShouldProtectRelocatedArenas(reason)) + protectAndHoldArenas(relocatedArenas); + else + releaseRelocatedArenas(relocatedArenas); + // Clear caches that can contain cell pointers. JSContext* cx = rt->contextFromMainThread(); cx->caches.newObjectCache.purge(); diff --git a/js/src/vm/SPSProfiler.cpp b/js/src/vm/SPSProfiler.cpp index 37a03ffdba50..674fc014c9a8 100644 --- a/js/src/vm/SPSProfiler.cpp +++ b/js/src/vm/SPSProfiler.cpp @@ -391,7 +391,7 @@ void ProfileEntry::trace(JSTracer* trc) { if (isJs()) { - JSScript* s = script(); + JSScript* s = rawScript(); TraceNullableRoot(trc, &s, "ProfileEntry script"); spOrScript = s; } @@ -482,18 +482,43 @@ SPSBaselineOSRMarker::~SPSBaselineOSRMarker() entry.unsetOSR(); } +JSScript* +ProfileEntry::script() const volatile +{ + MOZ_ASSERT(isJs()); + auto script = reinterpret_cast(spOrScript); + if (!script) + return nullptr; + + // If profiling is supressed then we can't trust the script pointers to be + // valid as they could be in the process of being moved by a compacting GC + // (although it's still OK to get the runtime from them). + JSRuntime* rt = script->zoneFromAnyThread()->runtimeFromAnyThread(); + if (!rt->isProfilerSamplingEnabled()) + return nullptr; + + MOZ_ASSERT(!IsForwarded(script)); + return script; +} + JS_FRIEND_API(jsbytecode*) ProfileEntry::pc() const volatile { MOZ_ASSERT(isJs()); - return lineOrPc == NullPCOffset ? nullptr : script()->offsetToPC(lineOrPc); + if (lineOrPcOffset == NullPCOffset) + return nullptr; + + JSScript* script = this->script(); + return script ? script->offsetToPC(lineOrPcOffset) : nullptr; } JS_FRIEND_API(void) ProfileEntry::setPC(jsbytecode* pc) volatile { MOZ_ASSERT(isJs()); - lineOrPc = pc == nullptr ? NullPCOffset : script()->pcToOffset(pc); + JSScript* script = this->script(); + MOZ_ASSERT(script); // This should not be called while profiling is suppressed. + lineOrPcOffset = pc == nullptr ? NullPCOffset : script->pcToOffset(pc); } JS_FRIEND_API(void) diff --git a/js/src/vm/SPSProfiler.h b/js/src/vm/SPSProfiler.h index c2d925bc7cdd..31c401875f94 100644 --- a/js/src/vm/SPSProfiler.h +++ b/js/src/vm/SPSProfiler.h @@ -182,7 +182,7 @@ class SPSProfiler void updatePC(JSScript* script, jsbytecode* pc) { if (enabled() && *size_ - 1 < max_) { MOZ_ASSERT(*size_ > 0); - MOZ_ASSERT(stack_[*size_ - 1].script() == script); + MOZ_ASSERT(stack_[*size_ - 1].rawScript() == script); stack_[*size_ - 1].setPC(pc); } } diff --git a/tools/profiler/core/GeckoSampler.cpp b/tools/profiler/core/GeckoSampler.cpp index 05c23cb4c472..cadfb24e5ab5 100644 --- a/tools/profiler/core/GeckoSampler.cpp +++ b/tools/profiler/core/GeckoSampler.cpp @@ -666,19 +666,22 @@ void addPseudoEntry(volatile StackEntry &entry, ThreadProfile &aProfile, addDynamicTag(aProfile, 'c', sampleLabel); #ifndef SPS_STANDALONE if (entry.isJs()) { - if (!entry.pc()) { - // The JIT only allows the top-most entry to have a nullptr pc - MOZ_ASSERT(&entry == &stack->mStack[stack->stackSize() - 1]); - // If stack-walking was disabled, then that's just unfortunate - if (lastpc) { - jsbytecode *jspc = js::ProfilingGetPC(stack->mContext, entry.script(), - lastpc); - if (jspc) { - lineno = JS_PCToLineNumber(entry.script(), jspc); + JSScript* script = entry.script(); + if (script) { + if (!entry.pc()) { + // The JIT only allows the top-most entry to have a nullptr pc + MOZ_ASSERT(&entry == &stack->mStack[stack->stackSize() - 1]); + // If stack-walking was disabled, then that's just unfortunate + if (lastpc) { + jsbytecode *jspc = js::ProfilingGetPC(stack->mContext, script, + lastpc); + if (jspc) { + lineno = JS_PCToLineNumber(script, jspc); + } } + } else { + lineno = JS_PCToLineNumber(script, entry.pc()); } - } else { - lineno = JS_PCToLineNumber(entry.script(), entry.pc()); } } else { lineno = entry.line(); diff --git a/xpcom/threads/ThreadStackHelper.cpp b/xpcom/threads/ThreadStackHelper.cpp index a9f15470ab5e..12bf09de96ef 100644 --- a/xpcom/threads/ThreadStackHelper.cpp +++ b/xpcom/threads/ThreadStackHelper.cpp @@ -427,10 +427,12 @@ ThreadStackHelper::AppendJSEntry(const volatile StackEntry* aEntry, // We assume querying the script is safe but we must not manupulate it. // Also we must not allocate any memory from heap. MOZ_ASSERT(aEntry->isJs()); - MOZ_ASSERT(aEntry->script()); const char* label; - if (IsChromeJSScript(aEntry->script())) { + JSScript* script = aEntry->script(); + if (!script) { + label = "(profiling suppressed)"; + } else if (IsChromeJSScript(aEntry->script())) { const char* filename = JS_GetScriptFilename(aEntry->script()); const unsigned lineno = JS_PCToLineNumber(aEntry->script(), aEntry->pc()); MOZ_ASSERT(filename); From 06a7828be21dd84b2a90f40663998435ff3e8170 Mon Sep 17 00:00:00 2001 From: Eugen Sawin Date: Fri, 9 Sep 2016 14:32:48 +0200 Subject: [PATCH 06/76] Bug 1301665 - [1.1] Statically initialize lib mapping array. r=glandium --- mozglue/android/APKOpen.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/mozglue/android/APKOpen.cpp b/mozglue/android/APKOpen.cpp index 9dc5a27af796..1b5dc987bb65 100644 --- a/mozglue/android/APKOpen.cpp +++ b/mozglue/android/APKOpen.cpp @@ -83,7 +83,8 @@ enum StartupEvent { using namespace mozilla; -static struct mapping_info * lib_mapping = nullptr; +static const int MAX_MAPPING_INFO = 32; +static mapping_info lib_mapping[MAX_MAPPING_INFO]; NS_EXPORT const struct mapping_info * getLibraryMapping() @@ -185,8 +186,6 @@ xul_dlsym(const char *symbolName, T *value) static int mapping_count = 0; -#define MAX_MAPPING_INFO 32 - extern "C" void report_mapping(char *name, void *base, uint32_t len, uint32_t offset) { @@ -265,9 +264,6 @@ loadSQLiteLibs(const char *apkName) if (loadNSSLibs(apkName) != SUCCESS) return FAILURE; #else - if (!lib_mapping) { - lib_mapping = (struct mapping_info *)calloc(MAX_MAPPING_INFO, sizeof(*lib_mapping)); - } sqlite_handle = dlopenAPKLibrary(apkName, "libmozsqlite3.so"); if (!sqlite_handle) { @@ -286,10 +282,6 @@ loadNSSLibs(const char *apkName) if (nss_handle && nspr_handle && plc_handle) return SUCCESS; - if (!lib_mapping) { - lib_mapping = (struct mapping_info *)calloc(MAX_MAPPING_INFO, sizeof(*lib_mapping)); - } - nss_handle = dlopenAPKLibrary(apkName, "libnss3.so"); #ifndef MOZ_FOLD_LIBS From 452b70821a306fe971440296daeadfa1a24d22ef Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Tue, 13 Sep 2016 14:14:32 +0200 Subject: [PATCH 07/76] Bug 1297706 - Syntax parse arrow functions. r=shu --- js/src/frontend/Parser.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index 9849fe5af1c6..a2fdf3ed70c4 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -470,6 +470,8 @@ FunctionBox::initFromLazyFunction() length = fun->nargs() - fun->hasRest(); if (fun->lazyScript()->isDerivedClassConstructor()) setDerivedClassConstructor(); + if (fun->lazyScript()->needsHomeObject()) + setNeedsHomeObject(); enclosingScope_ = fun->lazyScript()->enclosingScope(); initWithEnclosingScope(enclosingScope_); } @@ -2825,14 +2827,7 @@ Parser::checkFunctionDefinition(HandleAtom funAtom, Node pn, Funct } } else { // A function expression does not introduce any binding. - if (kind == Arrow) { - /* Arrow functions cannot yet be parsed lazily. */ - if (!abortIfSyntaxParser()) - return false; - handler.setOp(pn, JSOP_LAMBDA_ARROW); - } else { - handler.setOp(pn, JSOP_LAMBDA); - } + handler.setOp(pn, kind == Arrow ? JSOP_LAMBDA_ARROW : JSOP_LAMBDA); } return true; @@ -3188,11 +3183,6 @@ Parser::standaloneLazyFunction(HandleFunction fun, bool strict if (!pn) return null(); - // Our tokenStream has no current token, so pn's position is garbage. - // Substitute the position of the first token in our source. - if (!tokenStream.peekTokenPos(&pn->pn_pos)) - return null(); - Directives directives(strict); FunctionBox* funbox = newFunctionBox(pn, fun, directives, generatorKind, /* tryAnnexB = */ false); @@ -3205,6 +3195,16 @@ Parser::standaloneLazyFunction(HandleFunction fun, bool strict if (!funpc.init()) return null(); + // Our tokenStream has no current token, so pn's position is garbage. + // Substitute the position of the first token in our source. If the function + // is an arrow, use TokenStream::Operand to keep verifyConsistentModifier + // from complaining (we will use TokenStream::Operand in functionArguments). + if (!tokenStream.peekTokenPos(&pn->pn_pos, + fun->isArrow() ? TokenStream::Operand : TokenStream::None)) + { + return null(); + } + YieldHandling yieldHandling = generatorKind != NotGenerator ? YieldIsKeyword : YieldIsName; FunctionSyntaxKind syntaxKind = Statement; if (fun->isClassConstructor()) @@ -3215,6 +3215,8 @@ Parser::standaloneLazyFunction(HandleFunction fun, bool strict syntaxKind = Getter; else if (fun->isSetter()) syntaxKind = Setter; + else if (fun->isArrow()) + syntaxKind = Arrow; if (!functionFormalParametersAndBody(InAllowed, yieldHandling, pn, syntaxKind)) { MOZ_ASSERT(directives == newDirectives); @@ -7303,8 +7305,6 @@ Parser::assignExpr(InHandling inHandling, YieldHandling yieldHandl isBlock = true; tokenStream.seek(start); - if (!abortIfSyntaxParser()) - return null(); TokenKind ignored; if (!tokenStream.peekToken(&ignored, TokenStream::Operand)) From 1859b9b1e6bb7539a5543b05ed9d3990f2462a55 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 25 Aug 2016 14:13:28 +0100 Subject: [PATCH 08/76] Bug 1302423 - Update web-platform-tests to revision 6b48d45a1c7f3243945bf1678008f607e70acf2e, a=testonly MozReview-Commit-ID: 7u0jU4PkBVg --HG-- rename : testing/web-platform/tests/domparsing/insert_adjacent_html.xhtml => testing/web-platform/tests/domparsing/insert_adjacent_html-xhtml.xhtml --- testing/web-platform/meta/MANIFEST.json | 3331 +++++++---------- testing/web-platform/meta/mozilla-sync | 2 +- .../2d.gradient.interpolate.colouralpha.html | 6 +- .../image-smoothing/imagesmoothing.html | 146 +- ...ate.saverestore.imageSmoothingEnabled.html | 47 + .../tests/2dcontext/tools/tests2d.yaml | 6 +- .../tests/FileAPI/historical.html | 7 - .../web-platform/tests/FileAPI/idlharness.idl | 51 +- .../idbcursor-continuePrimaryKey.htm | 238 -- .../tests/IndexedDB/idbobjectstore_getKey.htm | 61 - .../idbobjectstore_getKey_exception_order.htm | 53 - .../tests/IndexedDB/interfaces.idl | 2 - .../tests/WebCryptoAPI/sign_verify/ecdsa.js | 479 +++ .../WebCryptoAPI/sign_verify/ecdsa.worker.js | 5 + .../WebCryptoAPI/sign_verify/ecdsa_vectors.js | 105 + .../tests/WebCryptoAPI/sign_verify/hmac.js | 347 ++ .../WebCryptoAPI/sign_verify/hmac.worker.js | 5 + .../WebCryptoAPI/sign_verify/hmac_vectors.js | 39 + .../tests/WebCryptoAPI/sign_verify/rsa.js | 399 ++ .../sign_verify/rsa_pkcs.worker.js | 5 + .../sign_verify/rsa_pkcs_vectors.js | 92 + .../sign_verify/rsa_pss.worker.js | 5 + .../sign_verify/rsa_pss_vectors.js | 147 + .../WebCryptoAPI/sign_verify/test_ecdsa.html | 19 + .../WebCryptoAPI/sign_verify/test_hmac.html | 19 + .../sign_verify/test_rsa_pkcs.html | 19 + .../sign_verify/test_rsa_pss.html | 19 + .../tests/annotation-model/CONTRIBUTING.md | 9 + .../web-platform/tests/annotation-model/TODO | 5 - .../annotation-model/annotations/.gitignore | 0 .../3.1-annotationContextValidated.json | 20 + .../3.1-annotationIdValidated.json | 11 + .../3.1-annotationTypeValidated.json | 12 + .../annotations/3.1-bodyKeyFound.json | 12 + .../annotations/3.1-targetKeyFound.json | 12 + .../3.2-bodyObjectsRecognized.json | 22 + .../3.2-targetObjectsRecognized.json | 22 + .../3.2.5-bodyValueImplemented.json | 14 + .../annotations/3.2.5-bodyValueValidated.json | 13 + .../annotations/3.2.5-notBodyBodyValue.json | 13 + .../3.3.1-annotationCreatedImplemented.json | 14 + .../3.3.1-annotationCreatedValidated.json | 14 + .../3.3.1-annotationCreatorImplemented.json | 14 + .../3.3.1-annotationGeneratedImplemented.json | 14 + .../3.3.1-annotationGeneratedValidated.json | 14 + .../3.3.1-annotationGeneratorImplemented.json | 14 + .../3.3.1-annotationModifiedImplemented.json | 14 + .../3.3.1-annotationModifiedValidated.json | 14 + ....1-annotationSingleCreatorImplemented.json | 14 + ....1-singleAnnotationCreatorImplemented.json | 14 + ...nnotationCreatorAgentEmailImplemented.json | 24 + ...tionCreatorAgentEmail_sha1Implemented.json | 24 + ...tationCreatorAgentHomepageImplemented.json | 24 + ...2-annotationCreatorAgentIdImplemented.json | 24 + ...annotationCreatorAgentNameImplemented.json | 24 + ...tationCreatorAgentNicknameImplemented.json | 24 + ...tionCreatorAgentSingleNameImplemented.json | 24 + ...annotationCreatorAgentTypeImplemented.json | 24 + ...otationGeneratorAgentEmailImplemented.json | 24 + ...onGeneratorAgentEmail_sha1Implemented.json | 24 + ...tionGeneratorAgentHomepageImplemented.json | 24 + ...annotationGeneratorAgentIdImplemented.json | 24 + ...notationGeneratorAgentNameImplemented.json | 24 + ...tionGeneratorAgentNicknameImplemented.json | 24 + ...onGeneratorAgentSingleNameImplemented.json | 24 + ...notationGeneratorAgentTypeImplemented.json | 24 + .../3.3.3-annotationAudienceImplemented.json | 14 + ...3.3.5-annotationMotivationImplemented.json | 14 + ...annotationSingleMotivationImplemented.json | 14 + .../3.3.6-annotationRightsImplemented.json | 14 + .../3.3.6-annotationRightsValidated.json | 14 + .../3.3.7-annotationCanonicalImplemented.json | 14 + .../3.3.7-annotationCanonicalValidated.json | 14 + .../3.3.7-annotationViaImplemented.json | 14 + .../3.3.7-annotationViaValidated.json | 14 + .../4.4-annotationStylesheetImplemented.json | 14 + .../annotationAgentOptionals-manual.html | 61 + .../annotations/annotationAgentOptionals.test | 25 + .../annotationMusts-manual.html} | 27 +- .../annotations/annotationMusts.test | 23 + .../annotationOptionals-manual.html} | 27 +- .../annotations/annotationOptionals.test | 25 + .../annotations/bodyResource.json | 32 + .../annotations/targetResource.json | 31 + .../annotation-model/collections/.gitignore | 0 .../definitions/annotations.json | 212 ++ .../definitions/bodyTarget.json | 521 +++ .../definitions/choiceDetected.json | 20 + .../definitions/choiceSet.json | 163 +- .../definitions/compositeDetected.json | 20 + .../externalWebResourceDetected.json | 19 + .../definitions/formatDetected.json | 27 + .../annotation-model/definitions/id.json | 38 + .../definitions/independentsDetected.json | 20 + .../definitions/itemsDetected.json | 8 + .../definitions/languageDetected.json | 27 + .../definitions/listDetected.json | 20 + .../definitions/otherProperties.json | 720 ++++ .../processingLanguageDetected.json | 15 + .../definitions/specificResource.json | 457 ++- .../definitions/specificResourceDetected.json | 19 + .../definitions/stringUri.json | 2 + .../definitions/textDirectionDetected.json | 16 + .../annotation-model/examples/example3.test | 8 + .../annotation-model/scripts/JSONtest.js | 185 +- .../annotation-model/scripts/showdown.min.js | 4 + .../annotation-model/tools/make_tests.py | 37 +- .../tools/samples/example1.json | 7 + .../tools/samples/example10.json | 19 + .../tools/samples/example11.json | 18 + .../tools/samples/example12.json | 19 + .../tools/samples/example13.json | 16 + .../tools/samples/example14.json | 16 + .../tools/samples/example15.json | 20 + .../tools/samples/example16.json | 12 + .../tools/samples/example17.json | 12 + .../tools/samples/example18.json | 19 + .../tools/samples/example19.json | 11 + .../tools/samples/example2.json | 17 + .../tools/samples/example20.json | 12 + .../tools/samples/example3.json | 13 + .../tools/samples/example4.json | 11 + .../tools/samples/example5.json | 12 + .../tools/samples/example6.json | 7 + .../tools/samples/example7.json | 11 + .../tools/samples/example8.json | 6 + .../tools/samples/example9.json | 16 + .../tests/annotation-model/tools/template_js | 36 + .../tools/{template => template_manual} | 6 +- .../tests/app-uri/appURI_test.html | 4 +- .../tests/common/get-host-info.sub.js | 19 + .../html-svg/0001isvalid.html | 130 + .../html-svg/animate-dom-01-f-novalid.html | 176 + .../html-svg/animate-dom-02-f-novalid.html | 66 + .../html-svg/animate-elem-02-t-isvalid.html | 82 + .../html-svg/animate-elem-03-t-isvalid.html | 70 + .../html-svg/animate-elem-04-t-isvalid.html | 56 + .../html-svg/animate-elem-05-t-isvalid.html | 58 + .../html-svg/animate-elem-06-t-isvalid.html | 56 + .../html-svg/animate-elem-07-t-isvalid.html | 58 + .../html-svg/animate-elem-08-t-isvalid.html | 65 + .../html-svg/animate-elem-09-t-isvalid.html | 77 + .../html-svg/animate-elem-10-t-isvalid.html | 78 + .../html-svg/animate-elem-11-t-isvalid.html | 77 + .../html-svg/animate-elem-12-t-isvalid.html | 77 + .../html-svg/animate-elem-13-t-isvalid.html | 86 + .../html-svg/animate-elem-14-t-isvalid.html | 62 + .../html-svg/animate-elem-15-t-isvalid.html | 62 + .../html-svg/animate-elem-17-t-isvalid.html | 62 + .../html-svg/animate-elem-19-t-isvalid.html | 62 + .../html-svg/animate-elem-20-t-isvalid.html | 59 + .../html-svg/animate-elem-21-t-isvalid.html | 67 + .../html-svg/animate-elem-22-b-isvalid.html | 63 + .../html-svg/animate-elem-23-t-isvalid.html | 64 + .../html-svg/animate-elem-24-t-novalid.html | 105 + .../html-svg/animate-elem-25-t-isvalid.html | 61 + .../html-svg/animate-elem-26-t-isvalid.html | 62 + .../html-svg/animate-elem-27-t-isvalid.html | 60 + .../html-svg/animate-elem-28-t-isvalid.html | 54 + .../html-svg/animate-elem-29-b-isvalid.html | 60 + .../html-svg/animate-elem-30-t-isvalid.html | 146 + .../html-svg/animate-elem-31-t-isvalid.html | 118 + .../html-svg/animate-elem-32-t-isvalid.html | 139 + .../html-svg/animate-elem-33-t-isvalid.html | 131 + .../html-svg/animate-elem-34-t-isvalid.html | 92 + .../html-svg/animate-elem-35-t-isvalid.html | 120 + .../html-svg/animate-elem-36-t-isvalid.html | 134 + .../html-svg/animate-elem-37-t-isvalid.html | 88 + .../html-svg/animate-elem-38-t-isvalid.html | 80 + .../html-svg/animate-elem-39-t-isvalid.html | 114 + .../html-svg/animate-elem-40-t-novalid.html | 200 + .../html-svg/animate-elem-41-t-isvalid.html | 393 ++ .../html-svg/animate-elem-44-t-isvalid.html | 72 + .../html-svg/animate-elem-46-t-isvalid.html | 239 ++ .../html-svg/animate-elem-52-t-isvalid.html | 78 + .../html-svg/animate-elem-53-t-isvalid.html | 88 + .../html-svg/animate-elem-60-t-isvalid.html | 157 + .../html-svg/animate-elem-61-t-isvalid.html | 115 + .../html-svg/animate-elem-62-t-isvalid.html | 157 + .../html-svg/animate-elem-63-t-isvalid.html | 122 + .../html-svg/animate-elem-64-t-isvalid.html | 100 + .../html-svg/animate-elem-65-t-isvalid.html | 146 + .../html-svg/animate-elem-66-t-isvalid.html | 139 + .../html-svg/animate-elem-67-t-isvalid.html | 123 + .../html-svg/animate-elem-68-t-isvalid.html | 102 + .../html-svg/animate-elem-69-t-isvalid.html | 113 + .../html-svg/animate-elem-70-t-isvalid.html | 105 + .../html-svg/animate-elem-77-t-novalid.html | 287 ++ .../html-svg/animate-elem-78-t-isvalid.html | 423 +++ .../html-svg/animate-elem-80-t-isvalid.html | 252 ++ .../html-svg/animate-elem-81-t-isvalid.html | 107 + .../html-svg/animate-elem-82-t-isvalid.html | 213 ++ .../html-svg/animate-elem-83-t-isvalid.html | 161 + .../html-svg/animate-elem-84-t-isvalid.html | 70 + .../html-svg/animate-elem-85-t-isvalid.html | 83 + .../html-svg/animate-elem-86-t-isvalid.html | 71 + .../html-svg/animate-elem-87-t-isvalid.html | 63 + .../html-svg/animate-elem-88-t-isvalid.html | 52 + .../html-svg/animate-elem-89-t-isvalid.html | 94 + .../html-svg/animate-elem-90-b-isvalid.html | 71 + .../html-svg/animate-elem-91-t-isvalid.html | 186 + .../html-svg/animate-elem-92-t-isvalid.html | 103 + .../animate-interact-events-01-t-isvalid.html | 94 + ...animate-interact-pevents-01-t-isvalid.html | 265 ++ ...animate-interact-pevents-02-t-isvalid.html | 109 + ...animate-interact-pevents-03-t-isvalid.html | 189 + ...animate-interact-pevents-04-t-isvalid.html | 180 + .../animate-pservers-grad-01-b-novalid.html | 88 + .../animate-script-elem-01-b-novalid.html | 70 + .../animate-struct-dom-01-b-novalid.html | 74 + .../html-svg/color-prof-01-f-isvalid.html | 56 + .../html-svg/color-prop-01-b-isvalid.html | 69 + .../html-svg/color-prop-02-f-isvalid.html | 99 + .../html-svg/color-prop-03-t-isvalid.html | 88 + .../html-svg/color-prop-04-t-isvalid.html | 84 + .../html-svg/color-prop-05-t-isvalid.html | 47 + .../conform-viewers-02-f-novalid.html | 64 + .../conform-viewers-03-f-novalid.html | 102 + .../html-svg/coords-coord-01-t-isvalid.html | 69 + .../html-svg/coords-coord-02-t-isvalid.html | 69 + .../html-svg/coords-dom-01-f-novalid.html | 103 + .../html-svg/coords-dom-02-f-novalid.html | 84 + .../html-svg/coords-dom-03-f-novalid.html | 99 + .../html-svg/coords-dom-04-f-isvalid.html | 155 + .../html-svg/coords-trans-01-b-isvalid.html | 226 ++ .../html-svg/coords-trans-02-t-isvalid.html | 163 + .../html-svg/coords-trans-03-t-isvalid.html | 86 + .../html-svg/coords-trans-04-t-isvalid.html | 75 + .../html-svg/coords-trans-05-t-isvalid.html | 75 + .../html-svg/coords-trans-06-t-isvalid.html | 69 + .../html-svg/coords-trans-07-t-isvalid.html | 57 + .../html-svg/coords-trans-08-t-isvalid.html | 63 + .../html-svg/coords-trans-09-t-isvalid.html | 89 + .../html-svg/coords-trans-10-f-isvalid.html | 77 + .../html-svg/coords-trans-11-f-isvalid.html | 77 + .../html-svg/coords-trans-12-f-isvalid.html | 79 + .../html-svg/coords-trans-13-f-isvalid.html | 77 + .../html-svg/coords-trans-14-f-isvalid.html | 79 + .../coords-transformattr-01-f-novalid.html | 83 + .../coords-transformattr-02-f-isvalid.html | 83 + .../coords-transformattr-03-f-isvalid.html | 52 + .../coords-transformattr-04-f-isvalid.html | 50 + .../coords-transformattr-05-f-isvalid.html | 60 + .../html-svg/coords-units-01-b-isvalid.html | 150 + .../html-svg/coords-units-02-b-isvalid.html | 115 + .../html-svg/coords-units-03-b-isvalid.html | 125 + .../coords-viewattr-03-b-isvalid.html | 85 + .../extend-namespace-01-f-novalid.html | 162 + .../filters-background-01-f-isvalid.html | 114 + .../html-svg/filters-blend-01-b-isvalid.html | 88 + .../html-svg/filters-color-01-b-isvalid.html | 82 + .../html-svg/filters-color-02-b-novalid.html | 80 + .../filters-composite-02-b-isvalid.html | 181 + .../filters-composite-03-f-isvalid.html | 78 + .../filters-composite-04-f-isvalid.html | 68 + .../filters-composite-05-f-isvalid.html | 56 + .../filters-comptran-01-b-isvalid.html | 97 + .../html-svg/filters-conv-01-f-isvalid.html | 93 + .../html-svg/filters-conv-02-f-novalid.html | 67 + .../html-svg/filters-conv-03-f-isvalid.html | 84 + .../html-svg/filters-conv-04-f-novalid.html | 85 + .../html-svg/filters-conv-05-f-novalid.html | 74 + .../filters-diffuse-01-f-isvalid.html | 134 + .../filters-displace-01-f-isvalid.html | 105 + .../filters-displace-02-f-isvalid.html | 67 + .../filters-example-01-b-isvalid.html | 66 + .../html-svg/filters-felem-01-b-isvalid.html | 68 + .../html-svg/filters-felem-02-f-isvalid.html | 113 + .../html-svg/filters-gauss-01-b-isvalid.html | 69 + .../html-svg/filters-gauss-02-f-isvalid.html | 71 + .../html-svg/filters-gauss-03-f-isvalid.html | 57 + .../html-svg/filters-image-01-b-isvalid.html | 51 + .../html-svg/filters-image-02-b-isvalid.html | 64 + .../html-svg/filters-image-03-f-isvalid.html | 164 + .../html-svg/filters-image-04-f-isvalid.html | 104 + .../html-svg/filters-image-05-f-isvalid.html | 184 + .../html-svg/filters-light-01-f-isvalid.html | 170 + .../html-svg/filters-light-02-f-isvalid.html | 86 + .../html-svg/filters-light-03-f-isvalid.html | 106 + .../html-svg/filters-light-04-f-isvalid.html | 123 + .../html-svg/filters-light-05-f-novalid.html | 207 + .../html-svg/filters-morph-01-f-isvalid.html | 89 + .../html-svg/filters-offset-01-b-isvalid.html | 85 + .../html-svg/filters-offset-02-b-isvalid.html | 71 + .../filters-overview-01-b-isvalid.html | 151 + .../filters-overview-02-b-isvalid.html | 160 + .../filters-overview-03-b-isvalid.html | 151 + .../filters-specular-01-f-isvalid.html | 179 + .../html-svg/filters-tile-01-b-isvalid.html | 63 + .../html-svg/filters-turb-01-f-isvalid.html | 91 + .../html-svg/filters-turb-02-f-isvalid.html | 125 + .../html-svg/fonts-desc-01-t-isvalid.html | 91 + .../html-svg/fonts-desc-02-t-isvalid.html | 115 + .../html-svg/fonts-desc-03-t-isvalid.html | 102 + .../html-svg/fonts-desc-04-t-isvalid.html | 120 + .../html-svg/fonts-desc-05-t-isvalid.html | 107 + .../html-svg/fonts-elem-01-t-isvalid.html | 97 + .../html-svg/fonts-elem-02-t-isvalid.html | 105 + .../html-svg/fonts-elem-03-b-isvalid.html | 97 + .../html-svg/fonts-elem-04-b-isvalid.html | 97 + .../html-svg/fonts-elem-05-t-isvalid.html | 125 + .../html-svg/fonts-elem-06-t-isvalid.html | 98 + .../html-svg/fonts-elem-07-b-isvalid.html | 108 + .../html-svg/fonts-glyph-02-t-isvalid.html | 72 + .../html-svg/fonts-glyph-03-t-isvalid.html | 63 + .../html-svg/fonts-glyph-04-t-novalid.html | 58 + .../html-svg/fonts-kern-01-t-isvalid.html | 253 ++ .../fonts-overview-201-t-novalid.html | 107 + .../html-svg/imp-path-01-f-isvalid.html | 50 + .../interact-cursor-01-f-isvalid.html | 113 + .../html-svg/interact-dom-01-b-isvalid.html | 108 + .../interact-events-01-b-isvalid.html | 94 + .../interact-events-02-b-novalid.html | 61 + .../interact-events-202-f-isvalid.html | 72 + .../interact-events-203-t-isvalid.html | 87 + .../html-svg/interact-order-01-b-isvalid.html | 89 + .../html-svg/interact-order-02-b-isvalid.html | 87 + .../html-svg/interact-order-03-b-isvalid.html | 86 + .../interact-pevents-01-b-novalid.html | 173 + .../interact-pevents-03-b-novalid.html | 114 + .../interact-pevents-04-t-isvalid.html | 109 + .../interact-pevents-05-b-novalid.html | 102 + .../interact-pevents-07-t-novalid.html | 107 + .../interact-pevents-08-f-novalid.html | 155 + .../interact-pevents-09-f-novalid.html | 146 + .../interact-pevents-10-f-isvalid.html | 68 + .../interact-pointer-01-t-novalid.html | 64 + .../interact-pointer-02-t-novalid.html | 64 + .../interact-pointer-03-t-novalid.html | 62 + .../interact-pointer-04-f-isvalid.html | 71 + .../html-svg/interact-zoom-01-t-isvalid.html | 56 + .../html-svg/interact-zoom-02-t-isvalid.html | 56 + .../html-svg/interact-zoom-03-t-isvalid.html | 56 + .../html-svg/linking-a-01-b-isvalid.html | 54 + .../html-svg/linking-a-03-b-isvalid.html | 54 + .../html-svg/linking-a-04-t-isvalid.html | 65 + .../html-svg/linking-a-05-t-isvalid.html | 71 + .../html-svg/linking-a-07-t-isvalid.html | 75 + .../html-svg/linking-a-08-t-isvalid.html | 52 + .../html-svg/linking-a-09-b-novalid.html | 62 + .../html-svg/linking-a-10-f-novalid.html | 77 + .../html-svg/linking-frag-01-f-isvalid.html | 57 + .../html-svg/linking-uri-01-b-isvalid.html | 91 + .../html-svg/linking-uri-02-b-isvalid.html | 96 + .../html-svg/linking-uri-03-t-isvalid.html | 59 + .../html-svg/masking-filter-01-f-novalid.html | 64 + .../html-svg/masking-intro-01-f-novalid.html | 69 + .../html-svg/masking-mask-01-b-isvalid.html | 98 + .../html-svg/masking-mask-02-f-isvalid.html | 45 + .../masking-opacity-01-b-isvalid.html | 74 + .../html-svg/masking-path-01-b-isvalid.html | 69 + .../html-svg/masking-path-02-b-isvalid.html | 58 + .../html-svg/masking-path-03-b-isvalid.html | 91 + .../html-svg/masking-path-04-b-isvalid.html | 59 + .../html-svg/masking-path-05-f-isvalid.html | 57 + .../html-svg/masking-path-06-b-isvalid.html | 57 + .../html-svg/masking-path-07-b-isvalid.html | 117 + .../html-svg/masking-path-08-b-isvalid.html | 125 + .../html-svg/masking-path-09-b-novalid.html | 63 + .../html-svg/masking-path-10-b-isvalid.html | 123 + .../html-svg/masking-path-11-b-isvalid.html | 56 + .../html-svg/masking-path-12-f-isvalid.html | 73 + .../html-svg/masking-path-13-f-isvalid.html | 50 + .../html-svg/masking-path-14-f-isvalid.html | 62 + .../metadata-example-01-t-novalid.html | 147 + .../painting-control-01-f-isvalid.html | 94 + .../painting-control-02-f-isvalid.html | 52 + .../painting-control-03-f-isvalid.html | 52 + .../painting-control-04-f-isvalid.html | 50 + .../painting-control-05-f-isvalid.html | 107 + .../painting-control-06-f-isvalid.html | 52 + .../html-svg/painting-fill-01-t-isvalid.html | 56 + .../html-svg/painting-fill-02-t-isvalid.html | 60 + .../html-svg/painting-fill-03-t-isvalid.html | 54 + .../html-svg/painting-fill-04-t-isvalid.html | 54 + .../html-svg/painting-fill-05-b-isvalid.html | 60 + .../painting-marker-01-f-isvalid.html | 124 + .../painting-marker-02-f-isvalid.html | 212 ++ .../painting-marker-03-f-isvalid.html | 75 + .../painting-marker-04-f-novalid.html | 72 + .../painting-marker-05-f-isvalid.html | 221 ++ .../painting-marker-06-f-isvalid.html | 125 + .../painting-marker-07-f-isvalid.html | 58 + ...inting-marker-properties-01-f-isvalid.html | 80 + .../painting-render-01-b-isvalid.html | 128 + .../painting-render-02-b-isvalid.html | 72 + .../painting-stroke-01-t-isvalid.html | 52 + .../painting-stroke-02-t-isvalid.html | 52 + .../painting-stroke-03-t-isvalid.html | 52 + .../painting-stroke-04-t-isvalid.html | 52 + .../painting-stroke-05-t-isvalid.html | 73 + .../painting-stroke-06-t-isvalid.html | 60 + .../painting-stroke-07-t-isvalid.html | 54 + .../painting-stroke-08-t-isvalid.html | 68 + .../painting-stroke-09-t-isvalid.html | 48 + .../painting-stroke-10-t-isvalid.html | 63 + .../html-svg/paths-data-01-t-isvalid.html | 135 + .../html-svg/paths-data-02-t-isvalid.html | 108 + .../html-svg/paths-data-03-f-isvalid.html | 97 + .../html-svg/paths-data-04-t-isvalid.html | 69 + .../html-svg/paths-data-05-t-isvalid.html | 66 + .../html-svg/paths-data-06-t-isvalid.html | 71 + .../html-svg/paths-data-07-t-isvalid.html | 70 + .../html-svg/paths-data-08-t-isvalid.html | 68 + .../html-svg/paths-data-09-t-isvalid.html | 65 + .../html-svg/paths-data-10-t-isvalid.html | 98 + .../html-svg/paths-data-12-t-isvalid.html | 57 + .../html-svg/paths-data-13-t-isvalid.html | 49 + .../html-svg/paths-data-14-t-isvalid.html | 50 + .../html-svg/paths-data-15-t-isvalid.html | 53 + .../html-svg/paths-data-16-t-isvalid.html | 56 + .../html-svg/paths-data-17-f-isvalid.html | 51 + .../html-svg/paths-data-18-f-novalid.html | 86 + .../html-svg/paths-data-19-f-isvalid.html | 94 + .../html-svg/paths-data-20-f-novalid.html | 77 + .../html-svg/paths-dom-01-f-novalid.html | 123 + .../html-svg/paths-dom-02-f-novalid.html | 259 ++ .../html-svg/pservers-grad-01-b-isvalid.html | 56 + .../html-svg/pservers-grad-02-b-isvalid.html | 56 + .../html-svg/pservers-grad-03-b-isvalid.html | 58 + .../html-svg/pservers-grad-04-b-isvalid.html | 67 + .../html-svg/pservers-grad-05-b-isvalid.html | 65 + .../html-svg/pservers-grad-06-b-isvalid.html | 74 + .../html-svg/pservers-grad-07-b-isvalid.html | 63 + .../html-svg/pservers-grad-08-b-isvalid.html | 79 + .../html-svg/pservers-grad-09-b-isvalid.html | 76 + .../html-svg/pservers-grad-10-b-isvalid.html | 72 + .../html-svg/pservers-grad-11-b-isvalid.html | 80 + .../html-svg/pservers-grad-12-b-isvalid.html | 75 + .../html-svg/pservers-grad-13-b-isvalid.html | 166 + .../html-svg/pservers-grad-14-b-isvalid.html | 112 + .../html-svg/pservers-grad-15-b-isvalid.html | 57 + .../html-svg/pservers-grad-16-b-isvalid.html | 63 + .../html-svg/pservers-grad-17-b-isvalid.html | 70 + .../html-svg/pservers-grad-18-b-isvalid.html | 74 + .../html-svg/pservers-grad-20-b-isvalid.html | 71 + .../html-svg/pservers-grad-21-b-isvalid.html | 133 + .../html-svg/pservers-grad-22-b-isvalid.html | 88 + .../html-svg/pservers-grad-23-f-novalid.html | 57 + .../html-svg/pservers-grad-24-f-isvalid.html | 60 + .../pservers-grad-stops-01-f-isvalid.html | 61 + .../pservers-pattern-01-b-isvalid.html | 82 + .../pservers-pattern-02-f-isvalid.html | 52 + .../pservers-pattern-03-f-isvalid.html | 83 + .../pservers-pattern-04-f-isvalid.html | 57 + .../pservers-pattern-05-f-isvalid.html | 52 + .../pservers-pattern-06-f-isvalid.html | 52 + .../pservers-pattern-07-f-isvalid.html | 55 + .../pservers-pattern-08-f-isvalid.html | 55 + .../pservers-pattern-09-f-isvalid.html | 59 + .../html-svg/render-elems-01-t-isvalid.html | 56 + .../html-svg/render-elems-02-t-isvalid.html | 56 + .../html-svg/render-elems-06-t-isvalid.html | 64 + .../html-svg/render-elems-07-t-isvalid.html | 62 + .../html-svg/render-elems-08-t-isvalid.html | 64 + .../html-svg/render-groups-01-b-isvalid.html | 90 + .../html-svg/render-groups-03-t-isvalid.html | 84 + .../html-svg/script-handle-01-b-isvalid.html | 81 + .../html-svg/script-handle-02-b-isvalid.html | 106 + .../html-svg/script-handle-03-b-isvalid.html | 106 + .../html-svg/script-handle-04-b-isvalid.html | 106 + .../html-svg/script-specify-01-f-novalid.html | 59 + .../html-svg/script-specify-02-f-isvalid.html | 61 + .../html-svg/shapes-circle-01-t-isvalid.html | 50 + .../html-svg/shapes-circle-02-t-isvalid.html | 60 + .../html-svg/shapes-ellipse-01-t-isvalid.html | 63 + .../html-svg/shapes-ellipse-02-t-isvalid.html | 57 + .../html-svg/shapes-ellipse-03-f-isvalid.html | 58 + .../html-svg/shapes-grammar-01-f-isvalid.html | 63 + .../html-svg/shapes-intro-01-t-isvalid.html | 103 + .../html-svg/shapes-intro-02-f-isvalid.html | 76 + .../html-svg/shapes-line-01-t-isvalid.html | 72 + .../html-svg/shapes-line-02-f-isvalid.html | 48 + .../html-svg/shapes-polygon-01-t-isvalid.html | 68 + .../html-svg/shapes-polygon-02-t-isvalid.html | 73 + .../html-svg/shapes-polygon-03-t-isvalid.html | 52 + .../shapes-polyline-01-t-isvalid.html | 74 + .../shapes-polyline-02-t-isvalid.html | 73 + .../html-svg/shapes-rect-01-t-isvalid.html | 64 + .../html-svg/shapes-rect-02-t-isvalid.html | 63 + .../html-svg/shapes-rect-03-t-novalid.html | 127 + .../html-svg/shapes-rect-04-f-isvalid.html | 53 + .../html-svg/shapes-rect-05-f-isvalid.html | 59 + .../html-svg/shapes-rect-06-f-isvalid.html | 57 + .../html-svg/shapes-rect-07-f-isvalid.html | 52 + .../html-svg/struct-cond-01-t-isvalid.html | 49 + .../html-svg/struct-cond-02-t-isvalid.html | 561 +++ .../html-svg/struct-cond-03-t-isvalid.html | 63 + .../struct-cond-overview-02-f-isvalid.html | 55 + .../struct-cond-overview-03-f-isvalid.html | 49 + .../struct-cond-overview-04-f-isvalid.html | 47 + .../struct-cond-overview-05-f-isvalid.html | 60 + .../html-svg/struct-defs-01-t-isvalid.html | 51 + .../html-svg/struct-dom-01-b-isvalid.html | 166 + .../html-svg/struct-dom-02-b-isvalid.html | 97 + .../html-svg/struct-dom-03-b-isvalid.html | 97 + .../html-svg/struct-dom-04-b-isvalid.html | 116 + .../html-svg/struct-dom-05-b-isvalid.html | 114 + .../html-svg/struct-dom-06-b-isvalid.html | 90 + .../html-svg/struct-dom-07-f-novalid.html | 81 + .../html-svg/struct-dom-08-f-novalid.html | 69 + .../html-svg/struct-dom-11-f-novalid.html | 153 + .../html-svg/struct-dom-12-b-isvalid.html | 84 + .../html-svg/struct-dom-13-f-novalid.html | 159 + .../html-svg/struct-dom-14-f-novalid.html | 96 + .../html-svg/struct-dom-15-f-novalid.html | 131 + .../html-svg/struct-dom-16-f-isvalid.html | 117 + .../html-svg/struct-dom-17-f-novalid.html | 95 + .../html-svg/struct-dom-18-f-isvalid.html | 130 + .../html-svg/struct-dom-19-f-novalid.html | 80 + .../html-svg/struct-dom-20-f-novalid.html | 131 + .../html-svg/struct-frag-01-t-isvalid.html | 41 + .../html-svg/struct-frag-02-t-isvalid.html | 51 + .../html-svg/struct-frag-03-t-isvalid.html | 49 + .../html-svg/struct-frag-04-t-isvalid.html | 49 + .../html-svg/struct-frag-05-t-novalid.html | 56 + .../html-svg/struct-frag-06-t-isvalid.html | 58 + .../html-svg/struct-group-01-t-isvalid.html | 58 + .../html-svg/struct-group-02-b-isvalid.html | 53 + .../html-svg/struct-group-03-t-isvalid.html | 269 ++ .../html-svg/struct-image-01-t-isvalid.html | 46 + .../html-svg/struct-image-02-b-isvalid.html | 69 + .../html-svg/struct-image-03-t-isvalid.html | 52 + .../html-svg/struct-image-04-t-isvalid.html | 46 + .../html-svg/struct-image-05-b-isvalid.html | 45 + .../html-svg/struct-image-06-t-isvalid.html | 83 + .../html-svg/struct-image-07-t-isvalid.html | 66 + .../html-svg/struct-image-08-t-isvalid.html | 50 + .../html-svg/struct-image-09-t-isvalid.html | 49 + .../html-svg/struct-image-10-t-isvalid.html | 50 + .../html-svg/struct-image-11-b-isvalid.html | 56 + .../html-svg/struct-image-12-b-novalid.html | 60 + .../html-svg/struct-image-13-f-isvalid.html | 111 + .../html-svg/struct-image-14-f-isvalid.html | 111 + .../html-svg/struct-image-15-f-isvalid.html | 120 + .../html-svg/struct-image-16-f-isvalid.html | 49 + .../html-svg/struct-image-17-b-isvalid.html | 46 + .../html-svg/struct-image-18-f-isvalid.html | 52 + .../html-svg/struct-image-19-f-isvalid.html | 53 + .../html-svg/struct-svg-01-f-isvalid.html | 114 + .../html-svg/struct-svg-02-f-isvalid.html | 134 + .../html-svg/struct-svg-03-f-isvalid.html | 60 + .../html-svg/struct-symbol-01-b-isvalid.html | 60 + .../html-svg/struct-use-01-t-isvalid.html | 99 + .../html-svg/struct-use-03-t-isvalid.html | 61 + .../html-svg/struct-use-04-b-isvalid.html | 54 + .../html-svg/struct-use-05-b-isvalid.html | 70 + .../html-svg/struct-use-06-b-isvalid.html | 51 + .../html-svg/struct-use-07-b-isvalid.html | 56 + .../html-svg/struct-use-08-b-isvalid.html | 57 + .../html-svg/struct-use-09-b-isvalid.html | 67 + .../html-svg/struct-use-10-f-isvalid.html | 121 + .../html-svg/struct-use-11-f-novalid.html | 137 + .../html-svg/struct-use-12-f-novalid.html | 86 + .../html-svg/struct-use-13-f-novalid.html | 65 + .../html-svg/struct-use-14-f-isvalid.html | 63 + .../html-svg/struct-use-15-f-isvalid.html | 66 + .../html-svg/styling-class-01-f-isvalid.html | 62 + .../html-svg/styling-css-01-b-isvalid.html | 82 + .../html-svg/styling-css-02-b-isvalid.html | 78 + .../html-svg/styling-css-03-b-isvalid.html | 84 + .../html-svg/styling-css-04-f-isvalid.html | 141 + .../html-svg/styling-css-05-b-isvalid.html | 60 + .../html-svg/styling-css-06-b-isvalid.html | 165 + .../html-svg/styling-css-07-f-isvalid.html | 50 + .../html-svg/styling-css-08-f-isvalid.html | 104 + .../html-svg/styling-css-09-f-isvalid.html | 70 + .../html-svg/styling-css-10-f-isvalid.html | 59 + .../html-svg/styling-elem-01-b-isvalid.html | 56 + .../styling-inherit-01-b-isvalid.html | 61 + .../html-svg/styling-pres-01-t-isvalid.html | 48 + .../html-svg/styling-pres-02-f-novalid.html | 185 + .../html-svg/styling-pres-03-f-isvalid.html | 48 + .../html-svg/styling-pres-04-f-isvalid.html | 93 + .../html-svg/styling-pres-05-f-isvalid.html | 66 + .../html-svg/svgdom-over-01-f-novalid.html | 190 + .../html-svg/text-align-01-b-isvalid.html | 67 + .../html-svg/text-align-02-b-isvalid.html | 56 + .../html-svg/text-align-03-b-isvalid.html | 53 + .../html-svg/text-align-04-b-isvalid.html | 72 + .../html-svg/text-align-05-b-isvalid.html | 61 + .../html-svg/text-align-06-b-isvalid.html | 62 + .../html-svg/text-align-07-t-isvalid.html | 69 + .../html-svg/text-align-08-b-isvalid.html | 73 + .../html-svg/text-altglyph-01-b-isvalid.html | 100 + .../html-svg/text-altglyph-02-b-isvalid.html | 323 ++ .../html-svg/text-altglyph-03-b-isvalid.html | 348 ++ .../html-svg/text-bidi-01-t-isvalid.html | 49 + .../html-svg/text-deco-01-b-isvalid.html | 60 + .../html-svg/text-dom-01-f-isvalid.html | 161 + .../html-svg/text-dom-02-f-novalid.html | 110 + .../html-svg/text-dom-03-f-novalid.html | 113 + .../html-svg/text-dom-04-f-isvalid.html | 149 + .../html-svg/text-dom-05-f-novalid.html | 157 + .../html-svg/text-fonts-01-t-isvalid.html | 55 + .../html-svg/text-fonts-02-t-isvalid.html | 63 + .../html-svg/text-fonts-03-t-novalid.html | 73 + .../html-svg/text-fonts-04-t-isvalid.html | 59 + .../html-svg/text-fonts-05-f-novalid.html | 51 + .../html-svg/text-fonts-202-t-isvalid.html | 74 + .../html-svg/text-fonts-203-t-isvalid.html | 119 + .../html-svg/text-fonts-204-t-isvalid.html | 111 + .../html-svg/text-intro-01-t-isvalid.html | 64 + .../html-svg/text-intro-02-b-isvalid.html | 56 + .../html-svg/text-intro-03-b-isvalid.html | 52 + .../html-svg/text-intro-04-t-isvalid.html | 55 + .../html-svg/text-intro-05-t-isvalid.html | 54 + .../html-svg/text-intro-06-t-isvalid.html | 56 + .../html-svg/text-intro-07-t-isvalid.html | 52 + .../html-svg/text-intro-09-b-isvalid.html | 67 + .../html-svg/text-intro-10-f-isvalid.html | 56 + .../html-svg/text-intro-11-t-isvalid.html | 57 + .../html-svg/text-intro-12-t-isvalid.html | 56 + .../html-svg/text-path-01-b-isvalid.html | 76 + .../html-svg/text-path-02-b-isvalid.html | 81 + .../html-svg/text-spacing-01-b-isvalid.html | 52 + .../html-svg/text-text-01-b-isvalid.html | 147 + .../html-svg/text-text-03-b-isvalid.html | 78 + .../html-svg/text-text-04-t-isvalid.html | 183 + .../html-svg/text-text-05-t-isvalid.html | 157 + .../html-svg/text-text-06-t-isvalid.html | 108 + .../html-svg/text-text-07-t-isvalid.html | 47 + .../html-svg/text-text-08-b-isvalid.html | 48 + .../html-svg/text-text-09-t-isvalid.html | 47 + .../html-svg/text-text-10-t-isvalid.html | 68 + .../html-svg/text-text-11-t-isvalid.html | 72 + .../html-svg/text-text-12-t-isvalid.html | 167 + .../html-svg/text-tref-01-b-isvalid.html | 58 + .../html-svg/text-tselect-01-b-isvalid.html | 55 + .../html-svg/text-tselect-02-f-novalid.html | 94 + .../html-svg/text-tselect-03-f-novalid.html | 105 + .../html-svg/text-tspan-01-b-isvalid.html | 100 + .../html-svg/text-tspan-02-b-isvalid.html | 110 + .../html-svg/types-basic-01-f-isvalid.html | 64 + .../html-svg/types-basic-02-f-isvalid.html | 75 + .../html-svg/types-dom-01-b-isvalid.html | 75 + .../html-svg/types-dom-02-f-novalid.html | 134 + .../html-svg/types-dom-03-b-novalid.html | 69 + .../html-svg/types-dom-04-b-novalid.html | 226 ++ .../html-svg/types-dom-05-b-novalid.html | 109 + .../html-svg/types-dom-06-f-isvalid.html | 119 + .../html-svg/types-dom-07-f-novalid.html | 135 + .../html-svg/types-dom-08-f-novalid.html | 181 + ...ypes-dom-svgfittoviewbox-01-f-isvalid.html | 82 + .../types-dom-svglengthlist-01-f-isvalid.html | 105 + .../types-dom-svgnumberlist-01-f-isvalid.html | 105 + .../types-dom-svgstringlist-01-f-isvalid.html | 104 + ...pes-dom-svgtransformable-01-f-isvalid.html | 81 + .../elements/a/href/port-999999-novalid.html | 4 + .../area/href/port-999999-novalid.html | 4 + .../audio/src/port-999999-novalid.html | 4 + ...-isvalid.html => port-999999-novalid.html} | 2 +- .../blockquote/cite/port-999999-novalid.html | 4 + .../formaction/port-999999-novalid.html | 4 + .../del/cite/port-999999-novalid.html | 4 + .../embed/src/port-999999-novalid.html | 4 + .../form/action/port-999999-novalid.html | 4 + ...-isvalid.html => port-999999-novalid.html} | 2 +- .../iframe/src/port-999999-novalid.html | 4 + .../elements/img/src/port-999999-novalid.html | 4 + .../port-999999-novalid.html | 4 + .../type-image-src/port-999999-novalid.html | 4 + .../port-999999-novalid.html | 4 + .../type-url-value/port-999999-novalid.html | 4 + .../ins/cite/port-999999-novalid.html | 4 + .../link/href/port-999999-novalid.html | 4 + .../object/data/port-999999-novalid.html | 4 + .../elements/q/cite/port-999999-novalid.html | 4 + .../script/src/port-999999-novalid.html | 4 + .../source/src/port-999999-novalid.html | 4 + .../track/src/port-999999-novalid.html | 4 + .../video/poster/port-999999-novalid.html | 4 + .../video/src/port-999999-novalid.html | 4 + .../microdata/itemid/port-999999-novalid.html | 4 + .../itemtype/port-999999-novalid.html | 4 + .../tests/conformance-checkers/messages.json | 27 + .../tools/build-svg-tests.py | 315 ++ .../tools/index-isvalid.html | 451 +++ .../tests/conformance-checkers/tools/url.py | 1 + .../stylehash-default-src.sub.html | 4 +- ...ic-shape-circle-ellipse-serialization.html | 76 - .../define.html | 57 +- .../tests/dom/events/Event-initEvent.html | 37 +- .../tests/dom/events/Event-propagation.html | 5 +- .../dom/events/EventTarget-dispatchEvent.html | 8 +- .../web-platform/tests/dom/interfaces.html | 5 +- .../Document-Element-getElementsByTagName.js | 14 +- .../Document-getElementsByTagName-xhtml.xhtml | 14 +- .../tests/dom/nodes/Node-properties.html | 4 +- .../tests/dom/nodes/attributes.html | 17 - .../tests/dom/ranges/Range-mutations.html | 30 +- ...DOMParser-parseFromString-xml-doctype.html | 27 + ...xhtml => insert_adjacent_html-xhtml.xhtml} | 0 .../web-platform/tests/editing/data/delete.js | 2 +- .../tests/editing/data/formatblock.js | 2 +- .../tests/editing/data/forwarddelete.js | 2 +- .../editing/data/inserthorizontalrule.js | 2 +- .../tests/editing/data/inserthtml.js | 2 +- .../tests/editing/data/insertimage.js | 2 +- .../tests/editing/data/insertlinebreak.js | 2 +- .../tests/editing/data/insertorderedlist.js | 2 +- .../tests/editing/data/insertparagraph.js | 2 +- .../tests/editing/data/inserttext.js | 2 +- .../tests/editing/data/insertunorderedlist.js | 2 +- .../tests/editing/data/justifycenter.js | 2 +- .../tests/editing/data/justifyfull.js | 2 +- .../tests/editing/data/justifyleft.js | 2 +- .../tests/editing/data/justifyright.js | 2 +- .../web-platform/tests/editing/data/misc.js | 2 +- .../tests/editing/data/outdent.js | 2 +- .../tests/editing/include/implementation.js | 2 +- .../tests/editing/include/tests.js | 2 +- ...dia-generate-request-disallowed-input.html | 4 +- .../Google/encrypted-media-utils.js | 2 +- .../clearkey-check-initdata-type.html | 4 +- .../encrypted-media/clearkey-events.html | 6 +- ...key-generate-request-disallowed-input.html | 2 +- ...learkey-keystatuses-multiple-sessions.html | 7 +- ...p4-playback-persistent-license-events.html | 53 + ...arkey-mp4-playback-persistent-license.html | 53 + ...ayback-persistent-usage-record-events.html | 5 +- ...-mp4-playback-persistent-usage-record.html | 5 +- ...-playback-retrieve-persistent-license.html | 54 + ...back-retrieve-persistent-usage-record.html | 5 +- ...learkey-mp4-playback-temporary-events.html | 5 +- ...layback-temporary-multikey-sequential.html | 5 +- ...arkey-mp4-playback-temporary-multikey.html | 5 +- ...playback-temporary-setMediaKeys-first.html | 5 +- ...key-mp4-playback-temporary-two-videos.html | 5 +- ...-mp4-playback-temporary-waitingforkey.html | 52 + .../clearkey-mp4-playback-temporary.html | 5 +- ...rkey-not-callable-after-createsession.html | 2 +- .../content/audio_aac-lc_128k_2keys_2sess.mp4 | Bin 0 -> 166614 bytes .../content/audio_aac-lc_128k_2keys_bis.mp4 | Bin 85846 -> 0 bytes .../content/content-metadata.js | 21 +- .../encrypted-media/content/drmconfig.json | 14 - ...ideo_512x288_h264-360k_enc_2keys_2sess.mp4 | Bin 0 -> 476559 bytes .../video_512x288_h264-360k_enc_2keys_bis.mp4 | Bin 240459 -> 0 bytes .../drm-check-initdata-type.html | 2 +- .../tests/encrypted-media/drm-events.html | 8 +- ...drm-generate-request-disallowed-input.html | 2 +- .../drm-keystatuses-multiple-sessions.html | 11 +- .../drm-mp4-playback-temporary-events.html | 12 +- ...layback-temporary-multikey-sequential.html | 13 +- .../drm-mp4-playback-temporary-multikey.html | 12 +- ...playback-temporary-setMediaKeys-first.html | 12 +- ...drm-mp4-playback-temporary-two-videos.html | 12 +- ...-mp4-playback-temporary-waitingforkey.html | 52 + .../drm-mp4-playback-temporary.html | 12 +- .../drm-not-callable-after-createsession.html | 2 +- .../tests/encrypted-media/idlharness.html | 4 +- .../tests/encrypted-media/polyfill/Makefile | 1 - .../encrypted-media/polyfill/cast-polyfill.js | 2 +- .../polyfill/clearkey-polyfill.js | 7 +- .../clearkey-retrieve-persistent-license.html | 90 + .../retrieve-persistent-usage-record.html | 4 +- .../scripts/check-initdata-type.js | 2 +- .../tests/encrypted-media/scripts/events.js | 4 +- .../scripts/keystatuses-multiple-sessions.js | 4 +- .../not-callable-after-createsession.js | 2 +- .../playback-persistent-license-events.js | 166 + .../scripts/playback-persistent-license.js | 91 + ...playback-persistent-usage-record-events.js | 8 +- .../playback-persistent-usage-record.js | 22 +- .../playback-retrieve-persistent-license.js | 109 + ...ayback-retrieve-persistent-usage-record.js | 13 +- .../scripts/playback-temporary-events.js | 6 +- ...layback-temporary-multikey-multisession.js | 54 +- .../scripts/playback-temporary-multikey.js | 6 +- .../playback-temporary-setMediaKeys-first.js | 6 +- .../scripts/playback-temporary-two-videos.js | 6 +- .../playback-temporary-waitingforkey.js | 69 + .../scripts/playback-temporary.js | 6 +- .../util/clearkey-messagehandler.js | 20 +- .../util/drm-messagehandler.js | 235 ++ .../util/drmtoday-messagehandler.js | 118 - .../tests/encrypted-media/util/utils.js | 6 +- .../fetch/api/basic/referrer-worker.html | 17 + .../tests/fetch/api/basic/referrer.html | 17 + .../tests/fetch/api/basic/referrer.js | 23 + .../tests/fetch/api/basic/scheme-about.js | 21 +- .../tests/fetch/api/cors/cors-cookies.js | 7 +- .../tests/fetch/api/cors/cors-no-preflight.js | 7 +- .../fetch/api/cors/cors-preflight-referrer.js | 10 +- .../fetch/api/cors/cors-preflight-worker.html | 4 +- .../tests/fetch/api/cors/cors-preflight.html | 5 +- .../tests/fetch/api/cors/cors-preflight.js | 60 +- .../tests/fetch/api/cors/cors-redirect.js | 2 +- .../fetch/api/headers/headers-basic.html | 2 +- .../api/redirect/redirect-origin-worker.html | 17 + .../fetch/api/redirect/redirect-origin.html | 18 + .../fetch/api/redirect/redirect-origin.js | 40 + .../fetch/api/redirect/redirect-schemes.html | 22 +- .../fetch/api/request/request-headers.html | 16 + .../tests/fetch/api/resources/redirect.py | 18 +- .../tests/fetch/api/resources/utils.js | 1 + .../fetch/api/response/response-consume.html | 19 + .../browsing_context_name.html | 2 +- .../navigate-child-function-parent.html | 17 + .../source/navigate-child-function-src.html | 17 + .../source/navigate-child-function.html | 18 + .../navigate-child-src-about-blank.html | 17 + .../source/support/dummy.html | 3 + .../source/support/location-set.html | 8 + .../source/support/set-parent-src.html | 8 + .../history/the-history-interface/008.js | 11 + .../security_location_0.sub.htm | 8 +- .../security-window/window-security.sub.html | 7 +- .../frameElement.sub.html | 3 +- ...s-origin-nested-browsing-contexts.sub.html | 3 +- .../Document.currentScript.sub.html | 3 +- .../tests/html/dom/elements-forms.js | 4 +- .../tests/html/dom/elements-tabular.js | 4 +- .../tests/html/dom/interfaces.html | 425 +-- .../web-platform/tests/html/dom/reflection.js | 40 + .../query-encoding/utf-16be.html | Bin 1056 -> 906 bytes .../query-encoding/utf-16le.html | Bin 1062 -> 912 bytes .../base_href_specified.sub.html | 11 +- .../the-link-element/link-load-event.html | 9 +- .../the-link-element/link-style-error-01.html | 1 + .../security.drawImage.canvas.sub.html | 7 +- .../security.drawImage.image.sub.html | 7 +- ...security.pattern.canvas.fillStyle.sub.html | 7 +- ...curity.pattern.canvas.strokeStyle.sub.html | 7 +- .../security.pattern.canvas.timing.sub.html | 7 +- .../security.pattern.create.sub.html | 7 +- .../security.pattern.cross.sub.html | 7 +- .../security.pattern.image.fillStyle.sub.html | 7 +- ...ecurity.pattern.image.strokeStyle.sub.html | 7 +- .../security.reset.sub.html | 7 +- .../form-submission-sandbox.html | 32 - .../form-submission-sandbox-iframe.html | 14 - .../the-ol-element/reversed-1a.html | 4 - .../the-ol-element/reversed-1b.html | 4 - .../the-ol-element/reversed-1c.html | 4 - .../the-ol-element/reversed-1d.html | 12 - .../tests/html/semantics/interfaces.html | 1 + .../tests/html/semantics/interfaces.js | 2 +- .../xhtml-mathml-dtd-entity-support.htm | 40 +- .../tests/innerText/getter-tests.js | 1 - .../web-platform/tests/innerText/getter.html | 2 +- .../tests/innerText/setter-tests.js | 3 + .../web-platform/tests/input-events/OWNERS | 2 + testing/web-platform/tests/lint.whitelist | 2 + .../tests/media-source/interfaces.html | 3 + .../mediasource-activesourcebuffers.html | 238 ++ .../mediasource-addsourcebuffer-mode.html | 31 + .../mediasource-addsourcebuffer.html | 1 + .../mediasource-append-buffer.html | 1 + .../mediasource-appendwindow.html | 1 + .../media-source/mediasource-buffered.html | 1 + .../media-source/mediasource-closed.html | 1 + ...diasource-config-change-mp4-a-bitrate.html | 1 + ...ce-config-change-mp4-av-audio-bitrate.html | 1 + ...source-config-change-mp4-av-framesize.html | 1 + ...ce-config-change-mp4-av-video-bitrate.html | 1 + ...diasource-config-change-mp4-v-bitrate.html | 1 + ...asource-config-change-mp4-v-framerate.html | 1 + ...asource-config-change-mp4-v-framesize.html | 1 + ...iasource-config-change-webm-a-bitrate.html | 1 + ...e-config-change-webm-av-audio-bitrate.html | 1 + ...ource-config-change-webm-av-framesize.html | 1 + ...e-config-change-webm-av-video-bitrate.html | 1 + ...iasource-config-change-webm-v-bitrate.html | 1 + ...source-config-change-webm-v-framerate.html | 1 + ...source-config-change-webm-v-framesize.html | 1 + .../mediasource-config-changes.js | 2 + ...diasource-duration-boundaryconditions.html | 1 + .../media-source/mediasource-duration.html | 1 + .../mediasource-endofstream-invaliderror.html | 1 + .../mediasource-getvideoplaybackquality.html | 1 + .../mediasource-is-type-supported.html | 1 + .../mediasource-multiple-attach.html | 1 + .../mediasource-play-then-seek-back.html | 1 + .../tests/media-source/mediasource-play.html | 1 + .../mediasource-redundant-seek.html | 1 + .../media-source/mediasource-remove.html | 1 + .../mediasource-removesourcebuffer.html | 43 +- .../mediasource-seek-beyond-duration.html | 1 + .../mediasource-seek-during-pending-seek.html | 1 + ...ediasource-sequencemode-append-buffer.html | 1 + .../mediasource-sourcebuffer-mode.html | 1 + .../mediasource-sourcebufferlist.html | 16 +- .../mediasource-timestamp-offset.html | 1 + .../tests/media-source/mediasource-util.js | 4 +- .../GUM-impossible-constraint.https.html | 8 +- .../payment-request/interfaces.https.html | 126 + .../payment-request-in-iframe.html | 18 + .../pointerevents/pointerevent_styles.css | 4 + ...it_child-auto-child-none_touch-manual.html | 4 +- ...ction-inherit_child-none_touch-manual.html | 4 +- ..._child-pan-x-child-pan-x_touch-manual.html | 4 +- ..._child-pan-x-child-pan-y_touch-manual.html | 4 +- ...erit_highest-parent-none_touch-manual.html | 4 +- ...tion-inherit_parent-none_touch-manual.html | 4 +- ...action-pan-x-pan-y-pan-y_touch-manual.html | 4 +- testing/web-platform/tests/pointerlock/OWNERS | 3 +- .../pointerlock/movementX_Y_basic-manual.html | 124 + .../movementX_Y_no-jumps-manual.html | 140 + .../pointerlock/pointerlock_basic-manual.html | 149 + .../pointerlock_fullscreen-manual.html | 173 + .../pointerlock_indefinite-manual.html | 107 + .../pointerlock_leave_Tab-manual.html | 85 + .../pointerlock_leave_UA-manual.html | 85 + .../pointerlock_remove_target-manual.html | 87 + .../defaultRequest_success-manual.html | 52 + .../referrer-policy/generic/tools/generate.py | 4 - .../unsupported-csp-referrer-directive.html | 30 + ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - ...in-insecure.keep-origin-redirect.http.html | 41 - ...in-insecure.keep-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.keep-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.keep-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - .../tests/referrer-policy/spec.src.json | 195 +- .../tests/referrer-policy/spec_json.js | 2 +- ...ss-insecure.keep-origin-redirect.http.html | 40 + .../cross-insecure.no-redirect.http.html | 40 + ...ss-insecure.swap-origin-redirect.http.html | 40 + ...ss-insecure.keep-origin-redirect.http.html | 40 + .../cross-insecure.no-redirect.http.html | 40 + ...ss-insecure.swap-origin-redirect.http.html | 40 + ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...de-protocol.swap-origin-redirect.http.html | 40 + ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...de-protocol.swap-origin-redirect.http.html | 40 + ...e-insecure.keep-origin-redirect.http.html} | 13 +- .../same-insecure.no-redirect.http.html} | 13 +- ...me-insecure.swap-origin-redirect.http.html | 40 + ...e-insecure.keep-origin-redirect.http.html} | 12 +- .../same-insecure.no-redirect.http.html} | 12 +- ...me-insecure.swap-origin-redirect.http.html | 40 + ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...ent-composed-path-with-related-target.html | 4 +- .../tests/shadow-dom/event-composed-path.html | 4 +- .../tests/shadow-dom/event-composed.html | 4 +- .../tests/shadow-dom/slotchange.html | 4 +- .../tests/shadow-dom/slots-fallback.html | 4 +- .../web-platform/tests/shadow-dom/slots.html | 4 +- .../web-platform/tests/svg/interfaces.html | 2 +- testing/web-platform/tests/tools/.gitignore | 4 + testing/web-platform/tests/tools/.travis.yml | 41 +- testing/web-platform/tests/tools/lint/lint.py | 124 +- .../tests/tools/lint/tests/test_file_lints.py | 287 ++ .../tests/tools/lint/tests/test_lint.py | 51 +- .../tests/tools/lint/tests/test_path_lints.py | 25 + .../tests/tools/manifest/sourcefile.py | 35 +- .../tools/manifest/tests/test_manifest.py | 7 - .../tools/manifest/tests/test_sourcefile.py | 239 ++ .../tests/tools/manifest/utils.py | 4 +- testing/web-platform/tests/tools/pytest.ini | 2 + testing/web-platform/tests/tools/setup.cfg | 4 - testing/web-platform/tests/tools/tox.ini | 21 + .../tests/touch-events/touch-retargeting.html | 54 + .../web-platform/tests/url/urltestdata.json | 15 + testing/web-platform/tests/wai-aria/OWNERS | 1 + testing/web-platform/tests/wai-aria/README.md | 65 + .../animation-types/discrete-animation.html | 1 - .../effect-value-context.html | 1 - .../interfaces/Animation/cancel.html | 1 - .../interfaces/Animation/finish.html | 1 - .../interfaces/Animation/finished.html | 1 - .../interfaces/Animation/id.html | 1 - .../interfaces/Animation/oncancel.html | 1 - .../interfaces/Animation/onfinish.html | 1 - .../interfaces/Animation/pause.html | 1 - .../interfaces/Animation/play.html | 1 - .../interfaces/Animation/playState.html | 1 - .../interfaces/Animation/playbackRate.html | 1 - .../interfaces/Animation/ready.html | 1 - .../interfaces/Animation/reverse.html | 1 - .../interfaces/Animation/startTime.html | 1 - .../AnimationEffectTiming/delay.html | 1 - .../AnimationEffectTiming/direction.html | 1 - .../AnimationEffectTiming/fill.html | 1 - .../AnimationEffectTiming/iterations.html | 1 - .../curve-tests.html | 4 +- .../tests/webdriver/navigation.py | 2 +- 1639 files changed, 66779 insertions(+), 15871 deletions(-) create mode 100644 testing/web-platform/tests/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html delete mode 100644 testing/web-platform/tests/IndexedDB/idbcursor-continuePrimaryKey.htm delete mode 100644 testing/web-platform/tests/IndexedDB/idbobjectstore_getKey.htm delete mode 100644 testing/web-platform/tests/IndexedDB/idbobjectstore_getKey_exception_order.htm create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa.worker.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/hmac.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/hmac.worker.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/hmac_vectors.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pkcs_vectors.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pss.worker.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/rsa_pss_vectors.js create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/test_ecdsa.html create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/test_hmac.html create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html create mode 100644 testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pss.html create mode 100644 testing/web-platform/tests/annotation-model/annotations/.gitignore create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.1-annotationContextValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.1-annotationIdValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.1-annotationTypeValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.1-bodyKeyFound.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.1-targetKeyFound.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.2-targetObjectsRecognized.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaValidated.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals-manual.html create mode 100644 testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals.test rename testing/web-platform/tests/annotation-model/{examples/example1-manual.html => annotations/annotationMusts-manual.html} (56%) create mode 100644 testing/web-platform/tests/annotation-model/annotations/annotationMusts.test rename testing/web-platform/tests/annotation-model/{examples/example2-manual.html => annotations/annotationOptionals-manual.html} (57%) create mode 100644 testing/web-platform/tests/annotation-model/annotations/annotationOptionals.test create mode 100644 testing/web-platform/tests/annotation-model/annotations/bodyResource.json create mode 100644 testing/web-platform/tests/annotation-model/annotations/targetResource.json create mode 100644 testing/web-platform/tests/annotation-model/collections/.gitignore create mode 100644 testing/web-platform/tests/annotation-model/definitions/annotations.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/bodyTarget.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/choiceDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/compositeDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/externalWebResourceDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/formatDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/id.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/independentsDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/itemsDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/languageDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/listDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/otherProperties.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/processingLanguageDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/specificResourceDetected.json create mode 100644 testing/web-platform/tests/annotation-model/definitions/textDirectionDetected.json create mode 100644 testing/web-platform/tests/annotation-model/examples/example3.test create mode 100644 testing/web-platform/tests/annotation-model/scripts/showdown.min.js create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example1.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example10.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example11.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example12.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example13.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example14.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example15.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example16.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example17.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example18.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example19.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example2.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example20.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example3.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example4.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example5.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example6.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example7.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example8.json create mode 100644 testing/web-platform/tests/annotation-model/tools/samples/example9.json create mode 100644 testing/web-platform/tests/annotation-model/tools/template_js rename testing/web-platform/tests/annotation-model/tools/{template => template_manual} (86%) create mode 100644 testing/web-platform/tests/common/get-host-info.sub.js create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/0001isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html rename testing/web-platform/tests/conformance-checkers/html/elements/base/href/{port-999999-isvalid.html => port-999999-novalid.html} (62%) create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html rename testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/{port-999999-isvalid.html => port-999999-novalid.html} (64%) create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html create mode 100644 testing/web-platform/tests/conformance-checkers/tools/build-svg-tests.py create mode 100644 testing/web-platform/tests/conformance-checkers/tools/index-isvalid.html delete mode 100644 testing/web-platform/tests/css-shapes/basic-shape-circle-ellipse-serialization.html rename testing/web-platform/tests/custom-elements/{custom-elements-registry => custom-element-registry}/define.html (77%) create mode 100644 testing/web-platform/tests/domparsing/DOMParser-parseFromString-xml-doctype.html rename testing/web-platform/tests/domparsing/{insert_adjacent_html.xhtml => insert_adjacent_html-xhtml.xhtml} (100%) create mode 100644 testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html create mode 100644 testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license.html create mode 100644 testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html create mode 100644 testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html create mode 100644 testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 delete mode 100644 testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_bis.mp4 delete mode 100644 testing/web-platform/tests/encrypted-media/content/drmconfig.json create mode 100644 testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 delete mode 100644 testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_bis.mp4 create mode 100644 testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html create mode 100644 testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html create mode 100644 testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license-events.js create mode 100644 testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license.js create mode 100644 testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-license.js create mode 100644 testing/web-platform/tests/encrypted-media/scripts/playback-temporary-waitingforkey.js create mode 100644 testing/web-platform/tests/encrypted-media/util/drm-messagehandler.js delete mode 100644 testing/web-platform/tests/encrypted-media/util/drmtoday-messagehandler.js create mode 100644 testing/web-platform/tests/fetch/api/basic/referrer-worker.html create mode 100644 testing/web-platform/tests/fetch/api/basic/referrer.html create mode 100644 testing/web-platform/tests/fetch/api/basic/referrer.js create mode 100644 testing/web-platform/tests/fetch/api/redirect/redirect-origin-worker.html create mode 100644 testing/web-platform/tests/fetch/api/redirect/redirect-origin.html create mode 100644 testing/web-platform/tests/fetch/api/redirect/redirect-origin.js create mode 100644 testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html create mode 100644 testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html create mode 100644 testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html create mode 100644 testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html create mode 100644 testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html create mode 100644 testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html create mode 100644 testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html create mode 100644 testing/web-platform/tests/html/browsers/history/the-history-interface/008.js delete mode 100644 testing/web-platform/tests/html/semantics/forms/the-form-element/form-submission-sandbox.html delete mode 100644 testing/web-platform/tests/html/semantics/forms/the-form-element/support/form-submission-sandbox-iframe.html delete mode 100644 testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1d.html create mode 100644 testing/web-platform/tests/input-events/OWNERS create mode 100644 testing/web-platform/tests/media-source/mediasource-activesourcebuffers.html create mode 100644 testing/web-platform/tests/media-source/mediasource-addsourcebuffer-mode.html create mode 100644 testing/web-platform/tests/payment-request/interfaces.https.html create mode 100644 testing/web-platform/tests/payment-request/payment-request-in-iframe.html create mode 100644 testing/web-platform/tests/pointerlock/movementX_Y_basic-manual.html create mode 100644 testing/web-platform/tests/pointerlock/movementX_Y_no-jumps-manual.html create mode 100644 testing/web-platform/tests/pointerlock/pointerlock_basic-manual.html create mode 100644 testing/web-platform/tests/pointerlock/pointerlock_fullscreen-manual.html create mode 100644 testing/web-platform/tests/pointerlock/pointerlock_indefinite-manual.html create mode 100644 testing/web-platform/tests/pointerlock/pointerlock_leave_Tab-manual.html create mode 100644 testing/web-platform/tests/pointerlock/pointerlock_leave_UA-manual.html create mode 100644 testing/web-platform/tests/pointerlock/pointerlock_remove_target-manual.html create mode 100644 testing/web-platform/tests/presentation-api/controlling-ua/defaultRequest_success-manual.html create mode 100644 testing/web-platform/tests/referrer-policy/generic/unsupported-csp-referrer-directive.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html} (75%) rename testing/web-platform/tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html} (75%) rename testing/web-platform/tests/referrer-policy/{unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html} (73%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html} (72%) rename testing/web-platform/tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html} (72%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html} (72%) rename testing/web-platform/tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html} (72%) rename testing/web-platform/tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html} (72%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (76%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (76%) create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html create mode 100644 testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (74%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (75%) rename testing/web-platform/tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (76%) rename testing/web-platform/tests/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 testing/web-platform/tests/tools/lint/tests/test_file_lints.py create mode 100644 testing/web-platform/tests/tools/lint/tests/test_path_lints.py create mode 100644 testing/web-platform/tests/tools/manifest/tests/test_sourcefile.py create mode 100644 testing/web-platform/tests/tools/pytest.ini delete mode 100644 testing/web-platform/tests/tools/setup.cfg create mode 100644 testing/web-platform/tests/tools/tox.ini create mode 100644 testing/web-platform/tests/touch-events/touch-retargeting.html create mode 100644 testing/web-platform/tests/wai-aria/OWNERS create mode 100644 testing/web-platform/tests/wai-aria/README.md diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json index fac86f69b54b..ac54384694c4 100644 --- a/testing/web-platform/meta/MANIFEST.json +++ b/testing/web-platform/meta/MANIFEST.json @@ -98,12 +98,16 @@ "url": "/XMLHttpRequest/send-authentication-prompt-manual.htm" }, { - "path": "annotation-model/examples/example1-manual.html", - "url": "/annotation-model/examples/example1-manual.html" + "path": "annotation-model/annotations/annotationAgentOptionals-manual.html", + "url": "/annotation-model/annotations/annotationAgentOptionals-manual.html" }, { - "path": "annotation-model/examples/example2-manual.html", - "url": "/annotation-model/examples/example2-manual.html" + "path": "annotation-model/annotations/annotationMusts-manual.html", + "url": "/annotation-model/annotations/annotationMusts-manual.html" + }, + { + "path": "annotation-model/annotations/annotationOptionals-manual.html", + "url": "/annotation-model/annotations/annotationOptionals-manual.html" }, { "path": "battery-status/battery-charging-manual.html", @@ -953,6 +957,10 @@ "path": "pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html", "url": "/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html" }, + { + "path": "pointerevents/pointerevent_element_haspointercapture-manual.html", + "url": "/pointerevents/pointerevent_element_haspointercapture-manual.html" + }, { "path": "pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html", "url": "/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html" @@ -1189,6 +1197,38 @@ "path": "pointerevents/pointerevent_touch-action-table-test_touch-manual.html", "url": "/pointerevents/pointerevent_touch-action-table-test_touch-manual.html" }, + { + "path": "pointerlock/movementX_Y_basic-manual.html", + "url": "/pointerlock/movementX_Y_basic-manual.html" + }, + { + "path": "pointerlock/movementX_Y_no-jumps-manual.html", + "url": "/pointerlock/movementX_Y_no-jumps-manual.html" + }, + { + "path": "pointerlock/pointerlock_basic-manual.html", + "url": "/pointerlock/pointerlock_basic-manual.html" + }, + { + "path": "pointerlock/pointerlock_fullscreen-manual.html", + "url": "/pointerlock/pointerlock_fullscreen-manual.html" + }, + { + "path": "pointerlock/pointerlock_indefinite-manual.html", + "url": "/pointerlock/pointerlock_indefinite-manual.html" + }, + { + "path": "pointerlock/pointerlock_leave_Tab-manual.html", + "url": "/pointerlock/pointerlock_leave_Tab-manual.html" + }, + { + "path": "pointerlock/pointerlock_leave_UA-manual.html", + "url": "/pointerlock/pointerlock_leave_UA-manual.html" + }, + { + "path": "pointerlock/pointerlock_remove_target-manual.html", + "url": "/pointerlock/pointerlock_remove_target-manual.html" + }, { "path": "presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html", "url": "/presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html" @@ -1201,6 +1241,10 @@ "path": "presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html", "url": "/presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html" }, + { + "path": "presentation-api/controlling-ua/defaultRequest_success-manual.html", + "url": "/presentation-api/controlling-ua/defaultRequest_success-manual.html" + }, { "path": "presentation-api/controlling-ua/reconnectToPresentation_error-manual.html", "url": "/presentation-api/controlling-ua/reconnectToPresentation_error-manual.html" @@ -11113,6 +11157,10 @@ "path": "2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html", "url": "/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html" }, + { + "path": "2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html", + "url": "/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html" + }, { "path": "2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html", "url": "/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html" @@ -11409,10 +11457,6 @@ "path": "IndexedDB/idbcursor-continue.htm", "url": "/IndexedDB/idbcursor-continue.htm" }, - { - "path": "IndexedDB/idbcursor-continuePrimaryKey.htm", - "url": "/IndexedDB/idbcursor-continuePrimaryKey.htm" - }, { "path": "IndexedDB/idbcursor-direction-index-keyrange.htm", "url": "/IndexedDB/idbcursor-direction-index-keyrange.htm" @@ -12217,14 +12261,6 @@ "path": "IndexedDB/idbobjectstore_getAllKeys.html", "url": "/IndexedDB/idbobjectstore_getAllKeys.html" }, - { - "path": "IndexedDB/idbobjectstore_getKey.htm", - "url": "/IndexedDB/idbobjectstore_getKey.htm" - }, - { - "path": "IndexedDB/idbobjectstore_getKey_exception_order.htm", - "url": "/IndexedDB/idbobjectstore_getKey_exception_order.htm" - }, { "path": "IndexedDB/idbobjectstore_index.htm", "url": "/IndexedDB/idbobjectstore_index.htm" @@ -12533,6 +12569,22 @@ "path": "WebCryptoAPI/idlharness.worker.js", "url": "/WebCryptoAPI/idlharness.worker" }, + { + "path": "WebCryptoAPI/sign_verify/ecdsa.worker.js", + "url": "/WebCryptoAPI/sign_verify/ecdsa.worker" + }, + { + "path": "WebCryptoAPI/sign_verify/hmac.worker.js", + "url": "/WebCryptoAPI/sign_verify/hmac.worker" + }, + { + "path": "WebCryptoAPI/sign_verify/rsa_pkcs.worker.js", + "url": "/WebCryptoAPI/sign_verify/rsa_pkcs.worker" + }, + { + "path": "WebCryptoAPI/sign_verify/rsa_pss.worker.js", + "url": "/WebCryptoAPI/sign_verify/rsa_pss.worker" + }, { "path": "WebCryptoAPI/test_getRandomValues.html", "url": "/WebCryptoAPI/test_getRandomValues.html" @@ -12653,6 +12705,10 @@ "path": "XMLHttpRequest/event-error-order.sub.html", "url": "/XMLHttpRequest/event-error-order.sub.html" }, + { + "path": "XMLHttpRequest/event-error.html", + "url": "/XMLHttpRequest/event-error.html" + }, { "path": "XMLHttpRequest/event-error.sub.html", "url": "/XMLHttpRequest/event-error.sub.html" @@ -13333,6 +13389,10 @@ "path": "ambient-light/idlharness.html", "url": "/ambient-light/idlharness.html" }, + { + "path": "app-uri/appURI_test.html", + "url": "/app-uri/appURI_test.html" + }, { "path": "battery-status/battery-interface-idlharness.html", "url": "/battery-status/battery-interface-idlharness.html" @@ -13481,6 +13541,10 @@ "path": "content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html", "url": "/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html" }, + { + "path": "content-security-policy/blink-contrib-2/stylehash-default-src.sub.html", + "url": "/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html" + }, { "path": "content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html", "url": "/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html" @@ -14130,8 +14194,8 @@ "url": "/cssom-view/scrollingElement.html" }, { - "path": "custom-elements/custom-elements-registry/define.html", - "url": "/custom-elements/custom-elements-registry/define.html" + "path": "custom-elements/custom-element-registry/define.html", + "url": "/custom-elements/custom-element-registry/define.html" }, { "path": "custom-elements/v0/concepts/custom-elements-type-naming.html", @@ -15333,6 +15397,10 @@ "path": "domparsing/DOMParser-parseFromString-html.html", "url": "/domparsing/DOMParser-parseFromString-html.html" }, + { + "path": "domparsing/DOMParser-parseFromString-xml-doctype.html", + "url": "/domparsing/DOMParser-parseFromString-xml-doctype.html" + }, { "path": "domparsing/DOMParser-parseFromString-xml.html", "url": "/domparsing/DOMParser-parseFromString-xml.html" @@ -15378,12 +15446,12 @@ "url": "/domparsing/insert-adjacent.html" }, { - "path": "domparsing/insert_adjacent_html.html", - "url": "/domparsing/insert_adjacent_html.html" + "path": "domparsing/insert_adjacent_html-xhtml.xhtml", + "url": "/domparsing/insert_adjacent_html-xhtml.xhtml" }, { - "path": "domparsing/insert_adjacent_html.xhtml", - "url": "/domparsing/insert_adjacent_html.xhtml" + "path": "domparsing/insert_adjacent_html.html", + "url": "/domparsing/insert_adjacent_html.html" }, { "path": "domparsing/outerhtml-01.html", @@ -15393,6 +15461,10 @@ "path": "domparsing/outerhtml-02.html", "url": "/domparsing/outerhtml-02.html" }, + { + "path": "domparsing/style_attribute_html.html", + "url": "/domparsing/style_attribute_html.html" + }, { "path": "domparsing/xml-serialization.xhtml", "url": "/domparsing/xml-serialization.xhtml" @@ -15417,6 +15489,10 @@ "path": "editing/event.html", "url": "/editing/event.html" }, + { + "path": "editing/other/delete.html", + "url": "/editing/other/delete.html" + }, { "path": "editing/run/backcolor.html", "url": "/editing/run/backcolor.html" @@ -16033,6 +16109,14 @@ "path": "fetch/api/basic/mode-same-origin.html", "url": "/fetch/api/basic/mode-same-origin.html" }, + { + "path": "fetch/api/basic/referrer-worker.html", + "url": "/fetch/api/basic/referrer-worker.html" + }, + { + "path": "fetch/api/basic/referrer.html", + "url": "/fetch/api/basic/referrer.html" + }, { "path": "fetch/api/basic/request-forbidden-headers-worker.html", "url": "/fetch/api/basic/request-forbidden-headers-worker.html" @@ -16321,6 +16405,14 @@ "path": "fetch/api/redirect/redirect-mode.html", "url": "/fetch/api/redirect/redirect-mode.html" }, + { + "path": "fetch/api/redirect/redirect-origin-worker.html", + "url": "/fetch/api/redirect/redirect-origin-worker.html" + }, + { + "path": "fetch/api/redirect/redirect-origin.html", + "url": "/fetch/api/redirect/redirect-origin.html" + }, { "path": "fetch/api/redirect/redirect-schemes.html", "url": "/fetch/api/redirect/redirect-schemes.html" @@ -16689,6 +16781,22 @@ "path": "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html", "url": "/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html" }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html" + }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html" + }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html" + }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html" + }, { "path": "html/browsers/browsing-the-web/read-media/pageload-image.html", "url": "/html/browsers/browsing-the-web/read-media/pageload-image.html" @@ -19482,12 +19590,12 @@ "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_allow_script.html" }, { - "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html", - "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html" + "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping.html", + "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping.html" }, { - "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html", - "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html" + "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping.html", + "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping.html" }, { "path": "html/semantics/embedded-content/the-iframe-element/move_iframe_in_dom_01.html", @@ -20989,6 +21097,14 @@ "path": "media-source/interfaces.html", "url": "/media-source/interfaces.html" }, + { + "path": "media-source/mediasource-activesourcebuffers.html", + "url": "/media-source/mediasource-activesourcebuffers.html" + }, + { + "path": "media-source/mediasource-addsourcebuffer-mode.html", + "url": "/media-source/mediasource-addsourcebuffer-mode.html" + }, { "path": "media-source/mediasource-addsourcebuffer.html", "url": "/media-source/mediasource-addsourcebuffer.html" @@ -23293,6 +23409,14 @@ "path": "page-visibility/unload.html", "url": "/page-visibility/unload.html" }, + { + "path": "payment-request/interfaces.https.html", + "url": "/payment-request/interfaces.https.html" + }, + { + "path": "payment-request/payment-request-in-iframe.html", + "url": "/payment-request/payment-request-in-iframe.html" + }, { "path": "performance-timeline/idlharness.html", "url": "/performance-timeline/idlharness.html" @@ -23469,6 +23593,10 @@ "path": "referrer-policy/generic/subresource-test/xhr-messaging.html", "url": "/referrer-policy/generic/subresource-test/xhr-messaging.html" }, + { + "path": "referrer-policy/generic/unsupported-csp-referrer-directive.html", + "url": "/referrer-policy/generic/unsupported-csp-referrer-directive.html" + }, { "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" @@ -23805,246 +23933,6 @@ "path": "referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", "url": "/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/no-referrer-when-downgrade/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", "url": "/referrer-policy/no-referrer-when-downgrade/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" @@ -24621,246 +24509,6 @@ "path": "referrer-policy/no-referrer/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", "url": "/referrer-policy/no-referrer/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/no-referrer/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/no-referrer/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" @@ -25549,326 +25197,6 @@ "path": "referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html", "url": "/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", "url": "/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" @@ -26525,246 +25853,6 @@ "path": "referrer-policy/origin/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", "url": "/referrer-policy/origin/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/origin/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/origin/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" @@ -27285,206 +26373,6 @@ "path": "referrer-policy/same-origin/http-rp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", "url": "/referrer-policy/same-origin/http-rp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/same-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", "url": "/referrer-policy/same-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" @@ -27685,6 +26573,1158 @@ "path": "referrer-policy/same-origin/meta-referrer/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", "url": "/referrer-policy/same-origin/meta-referrer/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, { "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" @@ -28021,246 +28061,6 @@ "path": "referrer-policy/unsafe-url/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", "url": "/referrer-policy/unsafe-url/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/unsafe-url/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/unsafe-url/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" @@ -28837,246 +28637,6 @@ "path": "referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", "url": "/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/unset-referrer-policy/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", "url": "/referrer-policy/unset-referrer-policy/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" @@ -29829,6 +29389,18 @@ "path": "shadow-dom/ShadowRoot-interface.html", "url": "/shadow-dom/ShadowRoot-interface.html" }, + { + "path": "shadow-dom/event-composed-path-with-related-target.html", + "url": "/shadow-dom/event-composed-path-with-related-target.html" + }, + { + "path": "shadow-dom/event-composed-path.html", + "url": "/shadow-dom/event-composed-path.html" + }, + { + "path": "shadow-dom/event-composed.html", + "url": "/shadow-dom/event-composed.html" + }, { "path": "shadow-dom/leaktests/get-elements.html", "url": "/shadow-dom/leaktests/get-elements.html" @@ -29845,6 +29417,18 @@ "path": "shadow-dom/scroll-to-the-fragment-in-shadow-tree.html", "url": "/shadow-dom/scroll-to-the-fragment-in-shadow-tree.html" }, + { + "path": "shadow-dom/slotchange.html", + "url": "/shadow-dom/slotchange.html" + }, + { + "path": "shadow-dom/slots-fallback.html", + "url": "/shadow-dom/slots-fallback.html" + }, + { + "path": "shadow-dom/slots.html", + "url": "/shadow-dom/slots.html" + }, { "path": "shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/attributes/test-006.html", "url": "/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/attributes/test-006.html" @@ -30137,6 +29721,10 @@ "path": "touch-events/touch-globaleventhandler-interface.html", "url": "/touch-events/touch-globaleventhandler-interface.html" }, + { + "path": "touch-events/touch-retargeting.html", + "url": "/touch-events/touch-retargeting.html" + }, { "path": "touch-events/touch-touchevent-constructor.html", "url": "/touch-events/touch-touchevent-constructor.html" @@ -30493,6 +30081,10 @@ "path": "web-animations/timing-model/animation-effects/current-iteration.html", "url": "/web-animations/timing-model/animation-effects/current-iteration.html" }, + { + "path": "web-animations/timing-model/animation-effects/phases-and-states.html", + "url": "/web-animations/timing-model/animation-effects/phases-and-states.html" + }, { "path": "web-animations/timing-model/animation-effects/simple-iteration-progress.html", "url": "/web-animations/timing-model/animation-effects/simple-iteration-progress.html" @@ -30509,6 +30101,10 @@ "path": "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html", "url": "/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html" }, + { + "path": "web-animations/timing-model/animations/updating-the-finished-state.html", + "url": "/web-animations/timing-model/animations/updating-the-finished-state.html" + }, { "path": "webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html", "url": "/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html" @@ -30561,6 +30157,10 @@ "path": "webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html", "url": "/webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html" }, + { + "path": "webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html", + "url": "/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html" + }, { "path": "webdriver/interface.html", "url": "/webdriver/interface.html" @@ -35717,11 +35317,6 @@ "path": "workers/semantics/xhr/006.html", "url": "/workers/semantics/xhr/006.html" }, - { - "path": "IndexedDB/idbcursor-continuePrimaryKey-exception-order.htm", - "timeout": "long", - "url": "/IndexedDB/idbcursor-continuePrimaryKey-exception-order.htm" - }, { "path": "IndexedDB/idbdatabase_createObjectStore10-1000ends.htm", "timeout": "long", @@ -35902,6 +35497,26 @@ "timeout": "long", "url": "/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html" }, + { + "path": "WebCryptoAPI/sign_verify/test_ecdsa.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_ecdsa.html" + }, + { + "path": "WebCryptoAPI/sign_verify/test_hmac.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_hmac.html" + }, + { + "path": "WebCryptoAPI/sign_verify/test_rsa_pkcs.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_rsa_pkcs.html" + }, + { + "path": "WebCryptoAPI/sign_verify/test_rsa_pss.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_rsa_pss.html" + }, { "path": "XMLHttpRequest/progress-events-response-data-gzip.htm", "timeout": "long", @@ -36177,6 +35792,16 @@ "timeout": "long", "url": "/encrypted-media/clearkey-keystatuses-multiple-sessions.html" }, + { + "path": "encrypted-media/clearkey-mp4-playback-persistent-license-events.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-persistent-license-events.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-persistent-license.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-persistent-license.html" + }, { "path": "encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html", "timeout": "long", @@ -36187,6 +35812,11 @@ "timeout": "long", "url": "/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html" }, + { + "path": "encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html" + }, { "path": "encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html", "timeout": "long", @@ -36217,6 +35847,11 @@ "timeout": "long", "url": "/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html" }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html" + }, { "path": "encrypted-media/clearkey-mp4-playback-temporary.html", "timeout": "long", @@ -36272,6 +35907,11 @@ "timeout": "long", "url": "/encrypted-media/drm-mp4-playback-temporary-two-videos.html" }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-waitingforkey.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html" + }, { "path": "encrypted-media/drm-mp4-playback-temporary.html", "timeout": "long", @@ -37595,16 +37235,14 @@ ] }, "local_changes": { - "deleted": [], + "deleted": [ + "XMLHttpRequest/event-error.html", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping.html", + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping.html" + ], "deleted_reftests": {}, "items": { "manual": { - "pointerevents/pointerevent_element_haspointercapture-manual.html": [ - { - "path": "pointerevents/pointerevent_element_haspointercapture-manual.html", - "url": "/pointerevents/pointerevent_element_haspointercapture-manual.html" - } - ], "pointerevents/pointerevent_element_haspointercapture_release_pending_capture-manual.html": [ { "path": "pointerevents/pointerevent_element_haspointercapture_release_pending_capture-manual.html", @@ -37631,54 +37269,6 @@ ] }, "reftest": { - "html/semantics/grouping-content/the-ol-element/reversed-1a.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1a.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1a.html" - } - ], - "html/semantics/grouping-content/the-ol-element/reversed-1b.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1b.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1b.html" - } - ], - "html/semantics/grouping-content/the-ol-element/reversed-1c.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1c.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1c.html" - } - ], - "html/semantics/grouping-content/the-ol-element/reversed-1d.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1d.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1d.html" - } - ], "svg/linking/reftests/href-a-element-attr-change.html": [ { "path": "svg/linking/reftests/href-a-element-attr-change.html", @@ -37777,16 +37367,11 @@ ] }, "testharness": { - "css-shapes/basic-shape-circle-ellipse-serialization.html": [ + "IndexedDB/idbcursor-continuePrimaryKey-exception-order.htm": [ { - "path": "css-shapes/basic-shape-circle-ellipse-serialization.html", - "url": "/css-shapes/basic-shape-circle-ellipse-serialization.html" - } - ], - "domparsing/style_attribute_html.html": [ - { - "path": "domparsing/style_attribute_html.html", - "url": "/domparsing/style_attribute_html.html" + "path": "IndexedDB/idbcursor-continuePrimaryKey-exception-order.htm", + "timeout": "long", + "url": "/IndexedDB/idbcursor-continuePrimaryKey-exception-order.htm" } ], "editing/other/restoration.html": [ @@ -37795,18 +37380,18 @@ "url": "/editing/other/restoration.html" } ], - "editing/other/delete.html": [ - { - "path": "editing/other/delete.html", - "url": "/editing/other/delete.html" - } - ], "html/browsers/history/the-location-interface/location-prototype-setting.html": [ { "path": "html/browsers/history/the-location-interface/location-prototype-setting.html", "url": "/html/browsers/history/the-location-interface/location-prototype-setting.html" } ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html": [ + { + "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html", + "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html" + } + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html": [ { "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html", @@ -37819,6 +37404,12 @@ "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html" } ], + "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html": [ + { + "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html", + "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html" + } + ], "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html": [ { "path": "html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html", @@ -37831,10 +37422,22 @@ "url": "/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html" } ], - "html/semantics/forms/the-form-element/form-submission-sandbox.html": [ + "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html": [ { - "path": "html/semantics/forms/the-form-element/form-submission-sandbox.html", - "url": "/html/semantics/forms/the-form-element/form-submission-sandbox.html" + "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html", + "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html" + } + ], + "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html": [ + { + "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html", + "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html" + } + ], + "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html": [ + { + "path": "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html", + "url": "/html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html" } ], "svg/linking/scripted/href-animate-element.html": [ @@ -37861,24 +37464,6 @@ "url": "/svg/linking/scripted/href-script-element.html" } ], - "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html": [ - { - "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html", - "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-1.html" - } - ], - "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html": [ - { - "path": "html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html", - "url": "/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html" - } - ], - "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html": [ - { - "path": "html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html", - "url": "/html/semantics/scripting-1/the-script-element/script-onload-insertion-point.html" - } - ], "web-animations/interfaces/Animation/effect.html": [ { "path": "web-animations/interfaces/Animation/effect.html", @@ -37897,24 +37482,12 @@ "url": "/web-animations/interfaces/KeyframeEffect/spacing.html" } ], - "web-animations/timing-model/animation-effects/phases-and-states.html": [ - { - "path": "web-animations/timing-model/animation-effects/phases-and-states.html", - "url": "/web-animations/timing-model/animation-effects/phases-and-states.html" - } - ], "web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html": [ { "path": "web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html", "url": "/web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html" } ], - "web-animations/timing-model/animations/updating-the-finished-state.html": [ - { - "path": "web-animations/timing-model/animations/updating-the-finished-state.html", - "url": "/web-animations/timing-model/animations/updating-the-finished-state.html" - } - ], "workers/Worker_ErrorEvent_error.htm": [ { "path": "workers/Worker_ErrorEvent_error.htm", @@ -37924,54 +37497,6 @@ } }, "reftest_nodes": { - "html/semantics/grouping-content/the-ol-element/reversed-1a.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1a.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1a.html" - } - ], - "html/semantics/grouping-content/the-ol-element/reversed-1b.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1b.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1b.html" - } - ], - "html/semantics/grouping-content/the-ol-element/reversed-1c.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1c.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1c.html" - } - ], - "html/semantics/grouping-content/the-ol-element/reversed-1d.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/reversed-1d.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/reversed-1-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/reversed-1d.html" - } - ], "svg/linking/reftests/href-a-element-attr-change.html": [ { "path": "svg/linking/reftests/href-a-element-attr-change.html", @@ -44408,7 +43933,7 @@ } ] }, - "rev": "7a6a5c9f436730f86123e6f48a44bf1b7ba5654f", + "rev": "6b48d45a1c7f3243945bf1678008f607e70acf2e", "url_base": "/", "version": 3 } diff --git a/testing/web-platform/meta/mozilla-sync b/testing/web-platform/meta/mozilla-sync index 0adc97f39035..39f8746fd4de 100644 --- a/testing/web-platform/meta/mozilla-sync +++ b/testing/web-platform/meta/mozilla-sync @@ -1 +1 @@ -41a1810c95089690ccfc3c1ea48b2ee82cd725b0 \ No newline at end of file +4b8d22fffea32fd193c274f4253d820c3e4fe407 \ No newline at end of file diff --git a/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html b/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html index 3e20e6faa3f3..ad18881da38b 100644 --- a/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html +++ b/testing/web-platform/tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html @@ -24,9 +24,9 @@ g.addColorStop(0, 'rgba(255,255,0, 0)'); g.addColorStop(1, 'rgba(0,0,255, 1)'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); -_assertPixelApprox(canvas, 25,25, 191,191,63,63, "25,25", "191,191,63,63", 3); -_assertPixelApprox(canvas, 50,25, 127,127,127,127, "50,25", "127,127,127,127", 3); -_assertPixelApprox(canvas, 75,25, 63,63,191,191, "75,25", "63,63,191,191", 3); +_assertPixelApprox(canvas, 25,25, 190,190,65,65, "25,25", "190,190,65,65", 3); +_assertPixelApprox(canvas, 50,25, 126,126,128,128, "50,25", "126,126,128,128", 3); +_assertPixelApprox(canvas, 75,25, 62,62,192,192, "75,25", "62,62,192,192", 3); }); diff --git a/testing/web-platform/tests/2dcontext/image-smoothing/imagesmoothing.html b/testing/web-platform/tests/2dcontext/image-smoothing/imagesmoothing.html index ccc3110e8e80..1a86a8f2015a 100644 --- a/testing/web-platform/tests/2dcontext/image-smoothing/imagesmoothing.html +++ b/testing/web-platform/tests/2dcontext/image-smoothing/imagesmoothing.html @@ -1,45 +1,119 @@ - - - CanvasRenderingContext2D imageSmoothingEnabled test - - - - - - -
- - - + +CanvasRenderingContext2D imageSmoothingEnabled test + + + + - - +test(function() { + var ctx = document.createElement('canvas').getContext('2d'); + var image = createTestImage(); + ctx.strokeStyle = ctx.createPattern(image, 'repeat'); + ctx.lineWidth = 5; + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(10, 10); + ctx.stroke(); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern()."); + +test(function() { + var repaints = 5; + var ctx = document.createElement('canvas').getContext('2d'); + + function draw() { + ctx.clearRect(0, 0, 10, 10); + ctx.setTransform(1, 0, 0, 1, 0, 0); + var image = createTestImage(); + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.drawImage(image, 0, 0); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); + } + + while (repaints > 0) { + draw(); + repaints = repaints - 1; + } + +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) still works after repaints."); + diff --git a/testing/web-platform/tests/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html b/testing/web-platform/tests/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html new file mode 100644 index 000000000000..e99be83d5ff2 --- /dev/null +++ b/testing/web-platform/tests/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html @@ -0,0 +1,47 @@ + + +CanvasRenderingContext2D imageSmoothingEnabled save/restore test + + + + diff --git a/testing/web-platform/tests/2dcontext/tools/tests2d.yaml b/testing/web-platform/tests/2dcontext/tools/tests2d.yaml index 4694e98d9af5..546e994fbe97 100644 --- a/testing/web-platform/tests/2dcontext/tools/tests2d.yaml +++ b/testing/web-platform/tests/2dcontext/tools/tests2d.yaml @@ -1668,9 +1668,9 @@ g.addColorStop(1, 'rgba(0,0,255, 1)'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,25 ==~ 191,191,63,63 +/- 3; - @assert pixel 50,25 ==~ 127,127,127,127 +/- 3; - @assert pixel 75,25 ==~ 63,63,191,191 +/- 3; + @assert pixel 25,25 ==~ 190,190,65,65 +/- 3; + @assert pixel 50,25 ==~ 126,126,128,128 +/- 3; + @assert pixel 75,25 ==~ 62,62,192,192 +/- 3; expected: | size 100 50 g = cairo.LinearGradient(0, 0, 100, 0) diff --git a/testing/web-platform/tests/FileAPI/historical.html b/testing/web-platform/tests/FileAPI/historical.html index 3ff56a30164b..a9ae674d457e 100644 --- a/testing/web-platform/tests/FileAPI/historical.html +++ b/testing/web-platform/tests/FileAPI/historical.html @@ -36,13 +36,6 @@ assert_false(prefixes[i]+'BlobBuilder' in window, prefixes[i]+'BlobBuilder'); } }, 'BlobBuilder should not be supported.'); - - test(function() { - var reader = new FileReader(); - assert_false('readAsBinaryString' in reader, 'should not be in reader'); - assert_equals(reader.readAsBinaryString, undefined, - 'should be undefined on getting') - }, 'FileReader should not support readAsBinaryString'); diff --git a/testing/web-platform/tests/FileAPI/idlharness.idl b/testing/web-platform/tests/FileAPI/idlharness.idl index 62e6c5d9f219..d8f31b43a80d 100644 --- a/testing/web-platform/tests/FileAPI/idlharness.idl +++ b/testing/web-platform/tests/FileAPI/idlharness.idl @@ -1,5 +1,7 @@ -[Constructor, - Constructor(sequence<(ArrayBuffer or ArrayBufferView or Blob or DOMString)> blobParts, optional BlobPropertyBag options), Exposed=Window,Worker] +// https://w3c.github.io/FileAPI/#idl-index + +[Constructor(optional sequence blobParts, optional BlobPropertyBag options), +Exposed=(Window,Worker)] interface Blob { readonly attribute unsigned long long size; @@ -9,8 +11,8 @@ interface Blob { //slice Blob into byte-ranged chunks Blob slice([Clamp] optional long long start, - [Clamp] optional long long end, - optional DOMString contentType); + [Clamp] optional long long end, + optional DOMString contentType); void close(); }; @@ -19,32 +21,33 @@ dictionary BlobPropertyBag { DOMString type = ""; }; -[Constructor(sequence<(Blob or DOMString or ArrayBufferView or ArrayBuffer)> fileBits, -[EnsureUTF16] DOMString fileName, optional FilePropertyBag options), Exposed=Window,Worker] -interface File : Blob { +typedef (BufferSource or Blob or USVString) BlobPart; +[Constructor(sequence fileBits, + [EnsureUTF16] DOMString fileName, + optional FilePropertyBag options), +Exposed=(Window,Worker)] +interface File : Blob { readonly attribute DOMString name; readonly attribute long long lastModified; - }; -dictionary FilePropertyBag { - - DOMString type = ""; +dictionary FilePropertyBag : BlobPropertyBag { long long lastModified; - }; -[Exposed=Window,Worker] interface FileList { +[Exposed=(Window,Worker)] +interface FileList { getter File? item(unsigned long index); readonly attribute unsigned long length; }; -[Constructor, Exposed=Window,Worker] +[Constructor, Exposed=(Window,Worker)] interface FileReader: EventTarget { // async read methods void readAsArrayBuffer(Blob blob); + void readAsBinaryString(Blob blob); void readAsText(Blob blob, optional DOMString label); void readAsDataURL(Blob blob); @@ -55,6 +58,7 @@ interface FileReader: EventTarget { const unsigned short LOADING = 1; const unsigned short DONE = 2; + readonly attribute unsigned short readyState; // File or Blob data @@ -62,7 +66,7 @@ interface FileReader: EventTarget { readonly attribute DOMError? error; - // event handler attributes + // event handler content attributes attribute EventHandler onloadstart; attribute EventHandler onprogress; attribute EventHandler onload; @@ -72,20 +76,19 @@ interface FileReader: EventTarget { }; -partial interface URL { - - static DOMString createObjectURL(Blob blob); - static DOMString createFor(Blob blob); - static void revokeObjectURL(DOMString url); - -}; - [Constructor, Exposed=Worker] interface FileReaderSync { - // Synchronously return strings ArrayBuffer readAsArrayBuffer(Blob blob); + DOMString readAsBinaryString(Blob blob); DOMString readAsText(Blob blob, optional DOMString label); DOMString readAsDataURL(Blob blob); }; + +[Exposed=(Window,DedicatedWorker,SharedWorker)] +partial interface URL { + static DOMString createObjectURL(Blob blob); + static DOMString createFor(Blob blob); + static void revokeObjectURL(DOMString url); +}; diff --git a/testing/web-platform/tests/IndexedDB/idbcursor-continuePrimaryKey.htm b/testing/web-platform/tests/IndexedDB/idbcursor-continuePrimaryKey.htm deleted file mode 100644 index 3bef9d3961f9..000000000000 --- a/testing/web-platform/tests/IndexedDB/idbcursor-continuePrimaryKey.htm +++ /dev/null @@ -1,238 +0,0 @@ - - -IDBCursor.continuePrimaryKey() - - - - - - - - -
diff --git a/testing/web-platform/tests/IndexedDB/idbobjectstore_getKey.htm b/testing/web-platform/tests/IndexedDB/idbobjectstore_getKey.htm deleted file mode 100644 index e9dcbfd98266..000000000000 --- a/testing/web-platform/tests/IndexedDB/idbobjectstore_getKey.htm +++ /dev/null @@ -1,61 +0,0 @@ - - -IDBObjectStore.getKey() - - - - - - - - -
\ No newline at end of file diff --git a/testing/web-platform/tests/IndexedDB/idbobjectstore_getKey_exception_order.htm b/testing/web-platform/tests/IndexedDB/idbobjectstore_getKey_exception_order.htm deleted file mode 100644 index 689a7210e30f..000000000000 --- a/testing/web-platform/tests/IndexedDB/idbobjectstore_getKey_exception_order.htm +++ /dev/null @@ -1,53 +0,0 @@ - - -IDBObjectStore.getKey() - Exception Orders - - - - - - - - -
diff --git a/testing/web-platform/tests/IndexedDB/interfaces.idl b/testing/web-platform/tests/IndexedDB/interfaces.idl index 3c35f8ddb6d3..353864de2598 100644 --- a/testing/web-platform/tests/IndexedDB/interfaces.idl +++ b/testing/web-platform/tests/IndexedDB/interfaces.idl @@ -98,7 +98,6 @@ interface IDBObjectStore { IDBRequest add (any value, optional any key); IDBRequest delete (any key); IDBRequest get (any key); - IDBRequest getKey (any key); IDBRequest clear (); IDBRequest openCursor (optional any range, optional IDBCursorDirection direction = "next"); IDBIndex createIndex (DOMString name, (DOMString or sequence) keyPath, optional IDBIndexParameters optionalParameters); @@ -128,7 +127,6 @@ interface IDBCursor { IDBRequest update (any value); void advance ([EnforceRange] unsigned long count); void continue (optional any key); - void continuePrimaryKey(any key, any primaryKey); IDBRequest delete (); }; diff --git a/testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa.js b/testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa.js new file mode 100644 index 000000000000..869fb7965175 --- /dev/null +++ b/testing/web-platform/tests/WebCryptoAPI/sign_verify/ecdsa.js @@ -0,0 +1,479 @@ + +function run_test() { + var subtle = self.crypto.subtle; // Change to test prefixed implementations + + // When are all these tests really done? When all the promises they use have resolved. + var all_promises = []; + + // Source file [algorithm_name]_vectors.js provides the getTestVectors method + // for the algorithm that drives these tests. + var testVectors = getTestVectors(); + + // Test verification first, because signing tests rely on that working + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Signature verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification"); + }); + + all_promises.push(promise); + }); + + // Test verification with an altered buffer after call + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var signature = copyBuffer(vector.signature); + var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Signature verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + signature[0] = 255 - signature[0]; + return operation; + }, vector.name + " verification with altered signature after call"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification with altered signature after call"); + }); + + all_promises.push(promise); + }); + + // Check for successful verification even if plaintext is altered after call. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var plaintext = copyBuffer(vector.plaintext); + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Signature verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + plaintext[0] = 255 - plaintext[0]; + return operation; + }, vector.name + " with altered plaintext after call"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " with altered plaintext after call"); + }); + + all_promises.push(promise); + }); + + // Check for failures due to using privateKey to verify. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.verify(algorithm, vector.privateKey, vector.signature, vector.plaintext) + .then(function(plaintext) { + assert_unreached("Should have thrown error for using privateKey to verify in " + vector.name + ": " + err.message + "'"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'"); + }); + }, vector.name + " using privateKey to verify"); + + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " using privateKey to verify"); + }); + + all_promises.push(promise); + }); + + // Check for failures due to using publicKey to sign. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.sign(algorithm, vector.publicKey, vector.plaintext) + .then(function(signature) { + assert_unreached("Should have thrown error for using publicKey to sign in " + vector.name + ": " + err.message + "'"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'"); + }); + }, vector.name + " using publicKey to sign"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " using publicKey to sign"); + }); + + all_promises.push(promise); + }); + + // Check for failures due to no "verify" usage. + testVectors.forEach(function(originalVector) { + var vector = Object.assign({}, originalVector); + + var promise = importVectorKeys(vector, [], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(plaintext) { + assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": " + err.message + "'"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'"); + }); + }, vector.name + " no verify usage"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " no verify usage"); + }); + + all_promises.push(promise); + }); + + // Check for successful signing and verification. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.sign(algorithm, vector.privateKey, vector.plaintext) + .then(function(signature) { + // Can we verify the signature? + return subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Round trip verification works"); + return signature; + }, function(err) { + assert_unreached("verify error for test " + vector.name + ": " + err.message + "'"); + }); + }, function(err) { + assert_unreached("sign error for test " + vector.name + ": '" + err.message + "'"); + }); + }, vector.name + " round trip"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested signing or verifying + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " round trip"); + }); + + all_promises.push(promise); + }); + + // Test signing with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var promise = subtle.generateKey({name: "HMAC", hash: "SHA-1"}, false, ["sign", "verify"]) + .then(function(wrongKey) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + return importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var operation = subtle.sign(algorithm, wrongKey, vector.plaintext) + .then(function(signature) { + assert_unreached("Signing should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " signing with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " signing with wrong algorithm name"); + }); + }, function(err) { + promise_test(function(test) { + assert_unreached("Generate wrong key for test " + vector.name + " failed: '" + err.message + "'"); + }, "generate wrong key step: " + vector.name + " signing with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Test verification with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var promise = subtle.generateKey({name: "HMAC", hash: "SHA-1"}, false, ["sign", "verify"]) + .then(function(wrongKey) { + return importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, wrongKey, vector.signature, vector.plaintext) + .then(function(signature) { + assert_unreached("Verifying should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " verifying with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verifying with wrong algorithm name"); + }); + }, function(err) { + promise_test(function(test) { + assert_unreached("Generate wrong key for test " + vector.name + " failed: '" + err.message + "'"); + }, "generate wrong key step: " + vector.name + " verifying with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with wrong signature + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + var signature = copyBuffer(vector.signature); + signature[0] = 255 - signature[0]; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to altered signature"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to altered signature"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with wrong hash + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var hashName = "SHA-1"; + if (vector.hashName === "SHA-1") { + hashName = "SHA-256" + } + var algorithm = {name: vector.algorithmName, hash: hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to wrong hash"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to wrong hash"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with bad hash name + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + // use the wrong name for the hash + var hashName = vector.hashName.substring(0, 3) + vector.hashName.substring(4); + var algorithm = {name: vector.algorithmName, hash: hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_unreached("Verification should throw an error"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "Correctly throws NotSupportedError for illegal hash name") + }); + + return operation; + }, vector.name + " verification failure due to bad hash name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to bad hash name"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with short (odd length) signature + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + var signature = vector.signature.slice(1); // Skip the first byte + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to shortened signature"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to shortened signature"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with wrong plaintext + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + var plaintext = copyBuffer(vector.plaintext); + plaintext[0] = 255 - plaintext[0]; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to altered plaintext"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to altered plaintext"); + }); + + all_promises.push(promise); + }); + + + Promise.all(all_promises) + .then(function() {done();}) + .catch(function() {done();}) + return; + + // A test vector has all needed fields for signing and verifying, EXCEPT that the + // key field may be null. This function replaces that null with the Correct + // CryptoKey object. + // + // Returns a Promise that yields an updated vector on success. + function importVectorKeys(vector, publicKeyUsages, privateKeyUsages) { + var publicPromise, privatePromise; + + if (vector.publicKey !== null) { + publicPromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + publicPromise = subtle.importKey(vector.publicKeyFormat, vector.publicKeyBuffer, {name: vector.algorithmName, namedCurve: vector.namedCurve}, false, publicKeyUsages) + .then(function(key) { + vector.publicKey = key; + return vector; + }); // Returns a copy of the sourceBuffer it is sent. + } + + if (vector.privateKey !== null) { + privatePromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + privatePromise = subtle.importKey(vector.privateKeyFormat, vector.privateKeyBuffer, {name: vector.algorithmName, namedCurve: vector.namedCurve}, false, privateKeyUsages) + .then(function(key) { + vector.privateKey = key; + return vector; + }); + } + + return Promise.all([publicPromise, privatePromise]); + } + + // Returns a copy of the sourceBuffer it is sent. + function copyBuffer(sourceBuffer) { + var source = new Uint8Array(sourceBuffer); + var copy = new Uint8Array(sourceBuffer.byteLength) + + for (var i=0; i 0) { + assert_false(equalBuffers(priorSignature, signature), "Two signings with a salt give different signatures") + } else { + assert_true(equalBuffers(priorSignature, signature), "Two signings with empty salt give same signature") + } + }, function(err) { + assert_unreached("second time verify error for test " + vector.name + ": '" + err.message + "'"); + }); + }, function(err) { + assert_unreached("sign error for test " + vector.name + ": '" + err.message + "'"); + }); + }, vector.name + " round trip"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested signing or verifying + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " round trip"); + }); + + all_promises.push(promise); + }); + + + // Test signing with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var alteredVector = Object.assign({}, vector); + alteredVector.algorithm = Object.assign({}, vector.algorithm); + if (vector.algorithm.name === "RSA-PSS") { + alteredVector.algorithm.name = "RSASSA-PKCS1-v1_5"; + } else { + alteredVector.algorithm.name = "RSA-PSS"; + } + + var promise = importVectorKeys(alteredVector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var operation = subtle.sign(vector.algorithm, alteredVector.privateKey, vector.plaintext) + .then(function(signature) { + assert_unreached("Signing should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " signing with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " signing with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Test verification with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var alteredVector = Object.assign({}, vector); + alteredVector.algorithm = Object.assign({}, vector.algorithm); + if (vector.algorithm.name === "RSA-PSS") { + alteredVector.algorithm.name = "RSASSA-PKCS1-v1_5"; + } else { + alteredVector.algorithm.name = "RSA-PSS"; + } + + var promise = importVectorKeys(alteredVector, ["verify"], ["sign"]) + .then(function(vectors) { + // Some tests are sign only + if (!("signature" in vector)) { + return; + } + promise_test(function(test) { + var operation = subtle.verify(vector.algorithm, alteredVector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_unreached("Verification should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " verification with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Verification should fail with wrong signature + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var signature = copyBuffer(vector.signature); + signature[0] = 255 - signature[0]; + var operation = subtle.verify(vector.algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure with altered signature"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure with altered signature"); + }); + + all_promises.push(promise); + }); + + // Verification should fail with wrong plaintext + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var plaintext = copyBuffer(vector.plaintext); + plaintext[0] = 255 - plaintext[0]; + var operation = subtle.verify(vector.algorithm, vector.publicKey, vector.signature, plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure with altered plaintext"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure with altered plaintext"); + }); + + all_promises.push(promise); + }); + + + Promise.all(all_promises) + .then(function() {done();}) + .catch(function() {done();}) + + // A test vector has all needed fields for signing and verifying, EXCEPT that the + // key field may be null. This function replaces that null with the Correct + // CryptoKey object. + // + // Returns a Promise that yields an updated vector on success. + function importVectorKeys(vector, publicKeyUsages, privateKeyUsages) { + var publicPromise, privatePromise; + + if (vector.publicKey !== null) { + publicPromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + publicPromise = subtle.importKey(vector.publicKeyFormat, vector.publicKeyBuffer, {name: vector.algorithm.name, hash: vector.hash}, false, publicKeyUsages) + .then(function(key) { + vector.publicKey = key; + return vector; + }); // Returns a copy of the sourceBuffer it is sent. + } + + if (vector.privateKey !== null) { + privatePromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + privatePromise = subtle.importKey(vector.privateKeyFormat, vector.privateKeyBuffer, {name: vector.algorithm.name, hash: vector.hash}, false, privateKeyUsages) + .then(function(key) { + vector.privateKey = key; + return vector; + }); + } + + return Promise.all([publicPromise, privatePromise]); + } + + // Returns a copy of the sourceBuffer it is sent. + function copyBuffer(sourceBuffer) { + var source = new Uint8Array(sourceBuffer); + var copy = new Uint8Array(sourceBuffer.byteLength) + + for (var i=0; i + + +WebCryptoAPI: sign() and verify() Using ECDSA + + + + + + + + + +

sign and verify Tests for ECDSA

+ +
+ diff --git a/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_hmac.html b/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_hmac.html new file mode 100644 index 000000000000..6d5ff926f38f --- /dev/null +++ b/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_hmac.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: sign() and verify() Using HMAC + + + + + + + + + +

sign and verify Tests for HMAC

+ +
+ diff --git a/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html b/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html new file mode 100644 index 000000000000..de428c0fc7ea --- /dev/null +++ b/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: sign() and verify() Using RSASSA-PKCS1-v1_5 + + + + + + + + + +

sign and verify Tests for RSASSA-PKCS1-v1_5

+ +
+ diff --git a/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pss.html b/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pss.html new file mode 100644 index 000000000000..3a2034feb4ac --- /dev/null +++ b/testing/web-platform/tests/WebCryptoAPI/sign_verify/test_rsa_pss.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: sign() and verify() Using RSA-PSS + + + + + + + + + +

sign and verify Tests for RSA-PSS

+ +
+ diff --git a/testing/web-platform/tests/annotation-model/CONTRIBUTING.md b/testing/web-platform/tests/annotation-model/CONTRIBUTING.md index c6180d49f3b2..b71eaa5a9d93 100644 --- a/testing/web-platform/tests/annotation-model/CONTRIBUTING.md +++ b/testing/web-platform/tests/annotation-model/CONTRIBUTING.md @@ -54,6 +54,7 @@ Context](JSONtest-v1.jsonld). That context defines the following terms: |ref | URI | An optional reference to the portion of the specification to which the test relates |testType | `automated`, `manual`, `ref` | The type of test - this informs [WPT](https://github.com/w3c/web-platform-tests) how the test should be controlled and presented |assertions | list of URI, List @@@ATRISK@@@, or AssertionObject | The ordered collection of tests the input should be run against. See [JSON Schema Usage](#jsonSchema) for the structure of the objects. URI is relative to the top level folder of the test collection if it has a slash; relative to the current directory if it does not. @@@@ATRISK@@@@ Lists can be nested to define groups of sub-tests. Assertions / groups can be conditionally skipped. See [Assertion Lists](#assertionLists) for more details. +|content | URI or object | An object containing content to be checked against the referenced assertions, or a URI from which to retrieve that content Each test case has a suffix of `.test` and a shape like: @@ -101,6 +102,14 @@ External references are used when the "assertion" is a common one that needs to be checked on many different test cases (e.g., that there is an @context in the supplied annotation). +NOTE: The title property of an assertionObject can contain markdown. This can +help improve readability of the rendered assertions and debugging output. + +NOTE: The content property does not yet have a defined use. One potential use would +be to act as a pointer to a URI that can supply annotations from an implementation. +In that case the URI would take a parameter with the test name as a way of telling +the end point what test is running so it can deliver the right content. + ### Assertion Lists ### The `assertion` list is an ordered list of assertions that will be evaluated diff --git a/testing/web-platform/tests/annotation-model/TODO b/testing/web-platform/tests/annotation-model/TODO index ffebab2381c3..d2855cc9f4dd 100644 --- a/testing/web-platform/tests/annotation-model/TODO +++ b/testing/web-platform/tests/annotation-model/TODO @@ -8,11 +8,6 @@ files Websocket communication to runner tests with a corresponding listener that an implementation could use to auto-submit jsonld into the "manual" tests -Change JSONtest logic so that it loads all of the required external files during -initialization so that it can populate the list of assertions for the HTML in a -manual test. Use Promises and Promise.all() to achieve this. - Add a Skip option to tools/runner Add a tuple mode for evaluating RDF declaratively as well. - diff --git a/testing/web-platform/tests/annotation-model/annotations/.gitignore b/testing/web-platform/tests/annotation-model/annotations/.gitignore new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/annotation-model/annotations/3.1-annotationContextValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.1-annotationContextValidated.json new file mode 100644 index 000000000000..f7d79f2f7474 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.1-annotationContextValidated.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-annotationContextValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.", + "title": "Annotation has **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has @context key and 'http://www.w3.org/ns/anno.jsonld' is an @context value (Section 3.1)", + "type": "object", + "required": [ "@context" ], + "properties": { + "@context": { + "oneOf": [ + { "$ref": "annotations.json#/definitions/contextValueFound" }, + { "$ref": "annotations.json#/definitions/contextValueInArrayFound" } + ] + } + } +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.1-annotationIdValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.1-annotationIdValidated.json new file mode 100644 index 000000000000..2fca8a4f3f17 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.1-annotationIdValidated.json @@ -0,0 +1,11 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-annotationIdValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation is missing id key or its value is not a single string of format uri.", + "title": "Annotation has **_id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has a single id that is a string of format uri (Section 3.1)", + "$ref": "id.json#/definitions/idValueFound" +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.1-annotationTypeValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.1-annotationTypeValidated.json new file mode 100644 index 000000000000..b2c20d5e5299 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.1-annotationTypeValidated.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-annotationTypeValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation is missing type key or 'Annotation' is not a value of type.", + "title": "Annotation has **_type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "allOf": [ + { "$ref": "annotations.json#/definitions/annotationTypeValueFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.1-bodyKeyFound.json b/testing/web-platform/tests/annotation-model/annotations/3.1-bodyKeyFound.json new file mode 100644 index 000000000000..8c9ba13f8a9a --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.1-bodyKeyFound.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-bodyKeyFound.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotation Should have a body.", + "title": "Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has a body key (Section 3.1)", + "type": "object", + "required": ["body" ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.1-targetKeyFound.json b/testing/web-platform/tests/annotation-model/annotations/3.1-targetKeyFound.json new file mode 100644 index 000000000000..be6ca25048fa --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.1-targetKeyFound.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-targetKeyFound.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "Error: Annotation is missing target key.", + "title": "Annotation has a **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has a target key (Section 3.1)", + "type": "object", + "required": ["target" ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json b/testing/web-platform/tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json new file mode 100644 index 000000000000..27e79105b506 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2-bodyObjectsRecognized.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.", + "title": "If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "description": "True when all Body(ies) are one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource (Sections 3.2, Section 4)", + "type": "object", + "properties": + { + "body": + {"oneOf": [ + { "$ref": "bodyTarget.json#/definitions/bodyResourcesFound" }, + { "type" : ["array"], + "items": { "$ref": "bodyTarget.json#/definitions/bodyResourcesFound" } + } + ] + } + } +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.2-targetObjectsRecognized.json b/testing/web-platform/tests/annotation-model/annotations/3.2-targetObjectsRecognized.json new file mode 100644 index 000000000000..f6dd20ebe559 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.2-targetObjectsRecognized.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2-targetObjectsRecognized.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: One or more Targets of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.", + "title": "Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "description": "True when all Target(s) are one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource (Sections 3.2, Section 4)", + "type": "object", + "properties": + { + "target": + {"oneOf": [ + { "$ref": "bodyTarget.json#/definitions/targetResourcesFound" }, + { "type" : ["array"], + "items": { "$ref": "bodyTarget.json#/definitions/targetResourcesFound" } + } + ] + } + } +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json new file mode 100644 index 000000000000..bce28da0b579 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-bodyValueImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "bodyValue key not found. Annotation May have exactly one bodyValue (if no body also included).", + "title": "Implements **_bodyValue_ key** which has a **single value** that is a **string** [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "description": "True when the Annotation implements a bodyValue key (Section 3.2.5)", + "allOf": + [ + { "$ref": "annotations.json#/definitions/bodyValueFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueValidated.json new file mode 100644 index 000000000000..d36ee8c60a70 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.2.5-bodyValueValidated.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2.5-bodyValueValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple bodyValue key values or a single bodyValue key value that is not of type string.", + "title": "If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "description": "True when no Annotation bodyValue or the Annotation bodyValue key value is a single string (Section 3.2.5)", + "allOf": [ + { "$ref": "annotations.json#/definitions/bodyValueValidIfPresent" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json b/testing/web-platform/tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json new file mode 100644 index 000000000000..f47d6f5754c7 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2.5-notBodyBodyValue.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: body and bodyValue are exclusive keys; a single annotation cannot have both.", + "title": "Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "description": "True when the Annotation does not have both body key and bodyValue key (Section 3.2.5)", + "type": "object", + "not": + { "required": [ "body", "bodyValue"] } +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json new file mode 100644 index 000000000000..d27fa374b5ff --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationCreatedImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Valid Annotation-level created key not found. Annotation may have zero or exactly one created key value.", + "title": "Implements Annotation-level **_created_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements exactly one created key value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/createdPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json new file mode 100644 index 000000000000..5b7435d4d3af --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationCreatedValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple created key values or a single created key value that is not of format date-time.", + "title": "If present the Annotation-level **_created_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation created key present or when created key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json new file mode 100644 index 000000000000..ffe70598defe --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationCreatorImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "creator key not found. Annotation may have zero or more creators.", + "title": "Implements **_creator_ key** which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements creator key (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/creatorPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json new file mode 100644 index 000000000000..0820ae4b335c --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationGeneratedImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Valid Annotation-level generated key not found. Annotation may have zero or exactly one generated key value.", + "title": "Implements Annotation-level **_generated_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements exactly one generated key value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/generatedPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json new file mode 100644 index 000000000000..29a51a7f1318 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationGeneratedValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple generated key values or a single generated key value that is not of format date-time.", + "title": "If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation generated key present or when generated key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json new file mode 100644 index 000000000000..adc1dd58f533 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationGeneratorImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "generator key not found. Annotation may have zero or more generators.", + "title": "Implements **_generator_ key** which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information).", + "description": "True when the Annotation implements generator key (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/generatorPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json new file mode 100644 index 000000000000..3bd8d4cef89e --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationModifiedImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Valid Annotation-level modified key not found. Annotation may have zero or exactly one modified key value.", + "title": "Implements Annotation-level **_modified_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements exactly one modified key value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/modifiedPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json new file mode 100644 index 000000000000..cc7980afaf49 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationModifiedValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple modified key values or a single modified key value that is not of format date-time.", + "title": "If present the Annotation-level **_modified_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation modified key present or when modified key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json new file mode 100644 index 000000000000..b0bd901d9fd5 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationSingleCreatorImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotation SHOULD have a creator key with a single value.", + "title": "Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": " (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/singleCreatorPropertyFound" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json new file mode 100644 index 000000000000..b7da822a697a --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-singleAnnotationCreatorImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": " Annotation should have exactly one creator.", + "title": "Annotation implements creator key with single value.", + "description": "True when the Annotation implements creator key with single value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/singleCreatorPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json new file mode 100644 index 000000000000..6d41632ec2d2 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentEmailImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email for Annotation Creator (Agent) not found. Agents may have one or more email values.", + "title": "Implements Annotation-level creator (Agent) **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmailFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmailFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json new file mode 100644 index 000000000000..78aa363a525d --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentEmail_sha1Implemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email_sha1 for Annotation Creator (Agent) not found. Agents may have one or more email_sha1 values.", + "title": "Implements Annotation-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email_sha1 values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json new file mode 100644 index 000000000000..ff000a826181 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentHomepageImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Homepage for Annotation Creator (Agent) not found. Agents may have one or more homepage values.", + "title": "Implements Annotation-level creator (Agent) **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more homepage values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentHomepageFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentHomepageFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json new file mode 100644 index 000000000000..0a2ee9c9aeab --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentIdImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Id for Annotation Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.", + "title": "Implements Annotation-level creator (Agent) **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Creator (Agent) has exactly one id (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "id.json#/definitions/idValueFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "id.json#/definitions/idValueFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json new file mode 100644 index 000000000000..d30cd043d18b --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentNameImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Name for Annotation Creator (Agent) not found. Agents may have one or more name values.", + "title": "Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more name values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentNameFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json new file mode 100644 index 000000000000..782d3a66c21a --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentNicknameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Nickname for Annotation Creator (Agent) not found. Agents should have exactly one nickname value.", + "title": "Implements Annotation-level creator (Agent) **_nickname_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one nickname for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json new file mode 100644 index 000000000000..6d52e8983231 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentSingleNameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Single name for Annotation Creator (Agent) not found. Agents should have exactly one name value.", + "title": "Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one name for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json new file mode 100644 index 000000000000..5c8bb762312d --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentTypeImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Type (Person, Organization, Software) for Annotation Creator (Agent) not found. Agents should have one or more type values.", + "title": "Implements Annotation-level creator (Agent) **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentTypeFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentTypeFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json new file mode 100644 index 000000000000..1f6198435629 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentEmailImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email for Annotation Generator (Agent) not found. Agents may have one or more email values.", + "title": "Implements Annotation-level generator (Agent) **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmailFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmailFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json new file mode 100644 index 000000000000..f864f24ae7bb --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email_sha1 for Annotation Generator (Agent) not found. Agents may have one or more email_sha1 values.", + "title": "Implements Annotation-level generator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email_sha1 values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json new file mode 100644 index 000000000000..664f5a5cf12e --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentHomepageImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Homepage for Annotation Generator (Agent) not found. Agents may have one or more homepage values.", + "title": "Implements Annotation-level generator (Agent) **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more homepage values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentHomepageFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentHomepageFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json new file mode 100644 index 000000000000..59a70dbb47e3 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentIdImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Id for Annotation Generator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.", + "title": "Implements Annotation-level generator (Agent) **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Generator (Agent) has exactly one id (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "id.json#/definitions/idValueFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "id.json#/definitions/idValueFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json new file mode 100644 index 000000000000..eeb8722b36ea --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentNameImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Name for Annotation Generator (Agent) not found. Agents may have one or more name values.", + "title": "Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more name values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentNameFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json new file mode 100644 index 000000000000..ae8e235dea91 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentNicknameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Nickname for Annotation Generator (Agent) not found. Agents should have exactly one nickname value.", + "title": "Implements Annotation-level generator (Agent) **_nickname_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one nickname for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json new file mode 100644 index 000000000000..a657e5cac1a8 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentSingleNameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Single name for Annotation Generator (Agent) not found. Agents should have exactly one name value.", + "title": "Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one name for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json new file mode 100644 index 000000000000..4d12fbd07e99 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentTypeImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Type (Person, Organization, Software) for Annotation Generator (Agent) not found. Agents should have one or more type values.", + "title": "Implements Annotation-level generator (Agent) **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentTypeFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentTypeFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json new file mode 100644 index 000000000000..164a45d99910 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.3-annotationAudienceImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "audience key not found. An Annotation may have one or more audience values.", + "title": "Implements **_audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "description": "True when the Annotation has an audience key (Section 3.3.3)", + "allOf": + [ + {"$ref": "otherProperties.json#/definitions/audiencePropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json new file mode 100644 index 000000000000..3933df5bb621 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.5-annotationMotivationImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "motivation key with value from model motivation list not found. Annotation may have zero or more motivations with values drawn from model ontology.", + "title": "Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "description": "True when the Annotation implements motivation key with value(s) drawn from model motivation ontology (Section 3.3.5)", + "allOf": + [ + { "$ref": "annotations.json#/definitions/motivationPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json new file mode 100644 index 000000000000..1f6358a08345 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.5-annotationSingleMotivationImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": " Annotation SHOULD have a motivation key with a single value from model motivation ontology.", + "title": "Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "description": "True when the Annotation has motivation key with a single value from model motivation ontology (Section 3.3.5)", + "type": "object", + "allOf": [ + { "$ref": "annotations.json#/definitions/singleMotivationPropertyFound" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json new file mode 100644 index 000000000000..a2e2a9937005 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.6-annotationRightsImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotatoin-level rights key having string value(s) of format uri not found. Annotation may have zero or more rights key values.", + "title": "Implements Annotation-level **_rights_** key which has one or more values, each of which is a **string of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "description": "True when the Annotation implements rights key with with string(s) of format uri value(s) (Section 3.3.6)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/rightsPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json new file mode 100644 index 000000000000..40c025f689f3 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.6-annotationRightsValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has one or more values for the rights key are not strings of format uri.", + "title": "If present the Annotation-level **_rights_ key** has values that are all **strings of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "description": "True when no Annotation rights key present or when all values of rights key are strings of format uri (Section 3.3.6)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json new file mode 100644 index 000000000000..1f58d84b0af3 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationCanonicalImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "canonical key having a single string value of format uri not found. Annotation may have canonical key with exactly one value.", + "title": "Implements Annotation-level **_canonical_ key** which has a single value that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when the Annotation implements canonical key with with single string of format uri value (Section 3.3.7)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/canonicalPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json new file mode 100644 index 000000000000..db1a9c27f001 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationCanonicalValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has more than one value for canonical key or value for canonical key is not of format uri.", + "title": "If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when no Annotation canonical key present or when value of canonical key is singular and of format uri (Section 3.3.7)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json new file mode 100644 index 000000000000..f25cfb027040 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationViaImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotation-level via key with string(s) of format uri as value(s) not found. Annotation may have via key with one or more values.", + "title": "Implements Annotation-level **_via_ key** which has one or more values, each of which is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when the Annotation implements via key with with string(s) of format uri as value(s) (Section 3.3.7)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/viaPropertyFound"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaValidated.json b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaValidated.json new file mode 100644 index 000000000000..2592ed800dfc --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/3.3.7-annotationViaValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationviaValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation values for via key are not of format uri.", + "title": "If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when no Annotation via key present or when all values of via key are strings of format uri (Section 3.3.7)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/viaValidIfPresent" } + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json b/testing/web-platform/tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json new file mode 100644 index 000000000000..d5a264732d45 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "4.4-annotationStylesheetImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "stylesheet key with exactly one value not found. Annotation may have stylesheet key with exactly one value.", + "title": "Implements **_stylesheet_ key** which has a **single value** that is an **object or string of format uri**. [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "description": "True when the Annotation implements stylesheet key with exactly one value (object or string of format uri)(Section 4.4)", + "allOf": + [ + { "$ref": "annotations.json#/definitions/stylesheetDetected"} + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals-manual.html b/testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals-manual.html new file mode 100644 index 000000000000..1fe354375689 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals-manual.html @@ -0,0 +1,61 @@ + + + +Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents + + + + + + + + +

Fill the textarea below with JSON output from your annotation client +implementation that supports the following criteria:

+
+

Specifically, the following assertions will be evaluated:

+
+
+ +

+

+
+ + diff --git a/testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals.test b/testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals.test new file mode 100644 index 000000000000..ee61869e49b5 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/annotationAgentOptionals.test @@ -0,0 +1,25 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents", + "description": "Agents (Creators, Generators) involved in an Annotation:
  • Should include certain properties (keys)
  • May include additional keys
  • should have Agent key values that conform to model recommended constraints
Note: failing an assertion indicates that a recommended or optional feature has not been implemented or has not been implemented correctly.", + "testType": "manual", + "ref": "https://www.w3.org/TR/annotation-model/#other-properties", + "assertions": [ + "annotations/3.3.2-annotationCreatorAgentIdImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentIdImplemented.json", + "annotations/3.3.2-annotationCreatorAgentTypeImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json", + "annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json", + "annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json", + "annotations/3.3.2-annotationCreatorAgentNameImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentNameImplemented.json", + "annotations/3.3.2-annotationCreatorAgentEmailImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json", + "annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json", + "annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json", + "annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json" + ] +} diff --git a/testing/web-platform/tests/annotation-model/examples/example1-manual.html b/testing/web-platform/tests/annotation-model/annotations/annotationMusts-manual.html similarity index 56% rename from testing/web-platform/tests/annotation-model/examples/example1-manual.html rename to testing/web-platform/tests/annotation-model/annotations/annotationMusts-manual.html index 4554567c9f40..1caa167c73e6 100644 --- a/testing/web-platform/tests/annotation-model/examples/example1-manual.html +++ b/testing/web-platform/tests/annotation-model/annotations/annotationMusts-manual.html @@ -1,23 +1,39 @@ -Verify annotation conforms to the model +Annotation has all required keys and all annotation keys used meet required value constraints + -

Fill the textarea below with JSON output from your annotation client +

Fill the textarea below with JSON output from your annotation client implementation that supports the following criteria:

Specifically, the following assertions will be evaluated:

- +

diff --git a/testing/web-platform/tests/annotation-model/annotations/annotationMusts.test b/testing/web-platform/tests/annotation-model/annotations/annotationMusts.test new file mode 100644 index 000000000000..e32bd482e43a --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/annotationMusts.test @@ -0,0 +1,23 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Annotation has all required keys and all annotation keys used meet required value constraints", + "description": "Web Annotations:
  • MUST include certain properties (keys)
  • MUST NOT have both body and bodyValue keys simultaneously
  • MUST satisfy model constraints on values of required and any optional Annotation keys used
Note: Optional Annotation keys, optional constraints on key values, and optional and required details of body(ies) and target(s) checked by other tests.", + "testType": "manual", + "ref": "https://www.w3.org/TR/annotation-model/#annotations", + "assertions": [ + "annotations/3.1-annotationContextValidated.json", + "annotations/3.1-annotationIdValidated.json", + "annotations/3.1-annotationTypeValidated.json", + "annotations/3.1-targetKeyFound.json", + "annotations/3.2-targetObjectsRecognized.json", + "annotations/3.2.5-notBodyBodyValue.json", + "annotations/3.2-bodyObjectsRecognized.json", + "annotations/3.2.5-bodyValueValidated.json", + "annotations/3.3.1-annotationCreatedValidated.json", + "annotations/3.3.1-annotationModifiedValidated.json", + "annotations/3.3.1-annotationGeneratedValidated.json", + "annotations/3.3.6-annotationRightsValidated.json", + "annotations/3.3.7-annotationCanonicalValidated.json", + "annotations/3.3.7-annotationViaValidated.json" + ] +} diff --git a/testing/web-platform/tests/annotation-model/examples/example2-manual.html b/testing/web-platform/tests/annotation-model/annotations/annotationOptionals-manual.html similarity index 57% rename from testing/web-platform/tests/annotation-model/examples/example2-manual.html rename to testing/web-platform/tests/annotation-model/annotations/annotationOptionals-manual.html index 811ffd22e891..acdefff4e27b 100644 --- a/testing/web-platform/tests/annotation-model/examples/example2-manual.html +++ b/testing/web-platform/tests/annotation-model/annotations/annotationOptionals-manual.html @@ -1,23 +1,39 @@ -A test that has an 'or' clause +Annotation implements optional keys and meets optional key value constraints + -

Fill the textarea below with JSON output from your annotation client +

Fill the textarea below with JSON output from your annotation client implementation that supports the following criteria:

Specifically, the following assertions will be evaluated:

- +

diff --git a/testing/web-platform/tests/annotation-model/annotations/annotationOptionals.test b/testing/web-platform/tests/annotation-model/annotations/annotationOptionals.test new file mode 100644 index 000000000000..8fd1da41ce9f --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/annotationOptionals.test @@ -0,0 +1,25 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Annotation implements optional keys and meets optional key value constraints", + "description": "Web Annotations:
  • Should include certain properties (keys)
  • May include additional keys
  • should have Annotation key values that conform to model recommended constraints
Note: failing an assertion indicates that a recommended or optional feature has not been implemented or has not been implemented correctly.", + "testType": "manual", + "ref": "https://www.w3.org/TR/annotation-model/#other-properties", + "assertions": [ + "annotations/3.1-bodyKeyFound.json", + "annotations/3.3.1-annotationSingleCreatorImplemented.json", + "annotations/3.3.1-annotationCreatedImplemented.json", + "annotations/3.3.5-annotationSingleMotivationImplemented.json", + "annotations/3.2.5-bodyValueImplemented.json", + "annotations/3.3.1-annotationCreatorImplemented.json", + "annotations/3.3.1-annotationGeneratorImplemented.json", + "annotations/3.3.1-annotationGeneratedImplemented.json", + "annotations/3.3.1-annotationModifiedImplemented.json", + "annotations/3.3.3-annotationAudienceImplemented.json", + "annotations/3.3.5-annotationMotivationImplemented.json", + "annotations/3.3.6-annotationRightsImplemented.json", + "annotations/3.3.7-annotationCanonicalImplemented.json", + "annotations/3.3.7-annotationViaImplemented.json", + "annotations/4.4-annotationStylesheetImplemented.json" + + ] +} diff --git a/testing/web-platform/tests/annotation-model/annotations/bodyResource.json b/testing/web-platform/tests/annotation-model/annotations/bodyResource.json new file mode 100644 index 000000000000..4d65cb8f62d6 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/bodyResource.json @@ -0,0 +1,32 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check that class of body(ies) is(are) valid", + "description": "A body must be either a string/uri, a TextualBody, a Choice/Set, a SpecificResource, or an External Web Resource (Sections 3.1, 3.2.4, 3.2.7, 3.2.8 4, 3.2.1)", + "assertionType": "must", + "expectedResult": "valid", + "errorMessage": "Error; an invalid string or class of object is used as a body of the Annotation.", + "type": "object", + "properties": { + "body": + {"oneOf": [ + { "type" : ["string", "object"], + "anyOf": [ + {"$ref": "stringUri.json#"}, + {"$ref": "textualBody.json#" }, + {"$ref": "choiceSet.json#" }, + {"$ref": "specificResource.json#" }, + {"$ref": "externalWebResource.json#" } + ] + }, + { "type" : ["array"], + "items": {"anyOf": [ + {"$ref": "stringUri.json#" }, + {"$ref": "textualBody.json#" }, + {"$ref": "choiceSet.json#" }, + {"$ref": "specificResource.json#" }, + {"$ref": "externalWebResource.json#" } + ] } } + ] + } + } +} diff --git a/testing/web-platform/tests/annotation-model/annotations/targetResource.json b/testing/web-platform/tests/annotation-model/annotations/targetResource.json new file mode 100644 index 000000000000..6c4b51f866c4 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/annotations/targetResource.json @@ -0,0 +1,31 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check that class of target(s) is(are) valid", + "description": "A target must be either a string/uri, a Choice/Set, a SpecificResource, or an External Web Resource (Sections 3.1, 3.2.7, 3.2.8 4, 3.2.1)", + "assertionType": "must", + "expectedResult": "valid", + "errorMessage": "Error; an invalid string or class of object is used as a target of the Annotation.", + "type": "object", + "properties": + { + "target": + {"oneOf": [ + { "type" : ["string", "object"], + "anyOf": [ + {"$ref": "stringUri.json#" }, + {"$ref": "choiceSet.json#" }, + {"$ref": "specificResource.json#" }, + {"$ref": "externalWebResource.json#" } + ] + }, + { "type" : ["array"], + "items": {"anyOf": [ + {"$ref": "stringUri.json#" }, + {"$ref": "choiceSet.json#" }, + {"$ref": "specificResource.json#" }, + {"$ref": "externalWebResource.json#" } + ] } } + ] + } + } +} diff --git a/testing/web-platform/tests/annotation-model/collections/.gitignore b/testing/web-platform/tests/annotation-model/collections/.gitignore new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/testing/web-platform/tests/annotation-model/definitions/annotations.json b/testing/web-platform/tests/annotation-model/definitions/annotations.json new file mode 100644 index 000000000000..df1f73613ab1 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/annotations.json @@ -0,0 +1,212 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "annotations.json", + "title": "Definitions: Annotations.", + "description": "Schemas in #/definitions detect or validate keys/objects (direct children) uniquely used to describe Annotations (Section 3.1 and 3.3.5).", + "definitions": { + + "contextValueFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid @context string", + "description": "True when the string has value http://www.w3.org/ns/anno.jsonld (Section 3.1)", + "type": "string", + "enum": [ "http://www.w3.org/ns/anno.jsonld" ] + }, + + "contextValueInArrayFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid @context string found in array", + "description": "True when the array contains a string item having value http://www.w3.org/ns/anno.jsonld (Section 3.1)", + "type": "array", + "not": + { "items": + { "not": + { "$ref": "#/definitions/contextValueFound" } + } + } + }, + + "annotationTypeValueRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid annotation type value string", + "description": "True when the string has value 'Annotation' (Section 3.1)", + "type": "string", + "enum": [ "Annotation" ] + }, + + "annotationTypeValueInArrayRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid annotation type array", + "description": "True when the array contains a string item having value 'Annotation' (Section 3.1)", + "type": "array", + "not": + { "items": + { "not": + { "$ref": "#/definitions/annotationTypeValueRecognized" } + } + } + }, + + "annotationTypeValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Implementation: Annotation type", + "description": "True when the Annotation has type key and 'Annotation' is a value of type (Section 3.1)", + "type": "object", + "required": [ "type" ], + "properties": { + "type": { + "oneOf": [ + { "$ref": "annotations.json#/definitions/annotationTypeValueRecognized" }, + { "$ref": "annotations.json#/definitions/annotationTypeValueInArrayRecognized" } + ] + } + } + }, + + "motivationList": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: list of motivation and purposes", + "description": "List of motivations and purposes as defined in the model (Section 3.3.5).", + "type": "string", + "enum": ["assessing", "bookmarking", "classifying", "commenting", "describing", "editing", "highlighting", "identifying", "linking", "moderating", "questioning", "replying", "tagging" ] + }, + + "motivationRecognizedIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: motivation value", + "description": "True when the annotation has 0 or more motivation property values (Section 3.3.5)", + "type": "object", + "properties": {"motivation": + { "oneOf": [ + { "$ref": "#/definitions/motivationList" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "#/definitions/motivationList" } } + ] + } + } + }, + + "motivationSingularIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: singular motivation value", + "description": "True when the annotation has 0 or exactly one motivation property value (Section 3.3.5)", + "type": "object", + "properties": {"motivation": + { "oneOf": [ + { "$ref": "#/definitions/motivationList" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "$ref": "#/definitions/motivationList" } } + ] + } + } + }, + + "motivationPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: via motivation with qualifying annotation class", + "description": "Supports implementation check of via (if/when) used on Annotation (Sections 3.3.5)", + "oneOf": [ + {"$ref": "#/definitions/annotationTypeValueFound"} + ], + "allOf": [ + {"required": ["motivation"]}, + {"$ref": "#/definitions/motivationRecognizedIfPresent"} + ] + }, + + "singleMotivationPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: via motivation with qualifying annotation class", + "description": "Supports implementation check of via (if/when) used on Annotation (Sections 3.3.5)", + "oneOf": [ + {"$ref": "#/definitions/annotationTypeValueFound"} + ], + "allOf": [ + {"required": ["motivation"]}, + {"$ref": "#/definitions/motivationSingularIfPresent"} + ] + }, + + "stylesheetValueDefinition": + { + "title": "Definition: stylesheet value", + "description": "True when Annotation has no stylesheet, references an external stylesheet, or has embedded stylesheet of type CssStylesheet (Section 4.4)", + "type": "object", + "properties": + { + "stylesheet": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri"}, + { "type": "object", + "properties": + { + "type": { "type": "string", + "enum": [ "CssStylesheet" ]}, + "id": { "$ref": "id.json#/definitions/stringUri" }, + "value": { "type": "string" } + }, + "not": { "required": [ "id", "value"] }, + "oneOf": [ + { "required": [ "id"] }, + { "required": [ "value"] } + ] + } + ] + } + } + }, + + "stylesheetDetected": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation stylesheet", + "description": "True when the Annotation has a valid stylesheet property (Section 4.4)", + "allOf": [ + {"required": ["stylesheet"]}, + {"$ref": "#/definitions/stylesheetValueDefinition"} + ] + }, + + "bodyValueValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: bodyValue", + "description": "True when the Annotation has no bodyValue key or has a bodyValue key with valid value (Section 3.2.5)", + "type": "object", + "properties": + { + "bodyValue": + { + "oneOf": + [ + { "type": "string" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "type": "string" } + } + ] + } + } + }, + + "bodyValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": " Implementation: bodyValue", + "description": "True when the Annotation has a valid bodyValue (Section 3.2.5)", + "allOf": + [ + { "$ref": "#/definitions/bodyValueValidIfPresent" }, + { "required": [ "bodyValue" ] } + ] + } + + } +} diff --git a/testing/web-platform/tests/annotation-model/definitions/bodyTarget.json b/testing/web-platform/tests/annotation-model/definitions/bodyTarget.json new file mode 100644 index 000000000000..a01d41337c0e --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/bodyTarget.json @@ -0,0 +1,521 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "bodyTarget.json", + "title": "Definitions: Bodies and Targets.", + "description": "Schemas in #/definitions detect or validate keys, objects or constraints variously applicable to Bodies and/or Targets (Section 3.2.1 - 3.2.6). Excludes Choice, Set and Specific Resources.", + "definitions": + { + "externalWebResourceDetected": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: External Web Resource", + "description": "True when the object is an External Web Resource, i.e., includes an id that is of format uri but does not contain value (Textual Body) or source (Specific Resource) keys (Sections 3.2.1, 3.2.4, 4).", + "type": "object", + "allOf": [ {"$ref": "id.json#/definitions/idValueFound"} ], + "not": + { "anyOf": + [ + { "required": ["value"] }, + { "required": ["source"] }, + { "required": ["target"] } + ] + } + }, + + "textualBodyFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Embedded Textual Body", + "description": "True when the object is an Embedded Textual Body, i.e., includes the value key (Section 3.2.4).", + "type" : "object", + "properties" : + { + "value": + { + "type": "string" + } + }, + "required": [ "value" ] + } , + + "targetResourcesFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Resources that can be used as Target", + "description": "True when the string is format uri or the object is recognized as a valid target resource (Sections 3.2 and 4).", + "type" : ["string", "object"], + "oneOf": [ + {"$ref": "id.json#/definitions/stringUri"}, + {"$ref": "choiceSet.json#/definitions/choiceDetected" }, + {"$ref": "choiceSet.json#/definitions/compositeDetected" }, + {"$ref": "choiceSet.json#/definitions/independentsDetected" }, + {"$ref": "choiceSet.json#/definitions/listDetected" }, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" } + ] + }, + + "bodyResourcesFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Resources that can be used as Body", + "description": "True when the string is format uri or the object is recognized as a valid body resource (Sections 3.2 and 4).", + "type" : ["string", "object"], + "oneOf": [ + {"$ref": "id.json#/definitions/stringUri"}, + {"$ref": "choiceSet.json#/definitions/choiceDetected" }, + {"$ref": "choiceSet.json#/definitions/compositeDetected" }, + {"$ref": "choiceSet.json#/definitions/independentsDetected" }, + {"$ref": "choiceSet.json#/definitions/listDetected" }, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ] + }, + + "optionalBodyPropertiesShould" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Body Keys Should Validations", + "description": "Supports validity checks of optional keys (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "$ref": "#/definitions/resourceTypeShouldIfPresent" }, + { "$ref": "#/definitions/formatValidIfPresent" }, + { "$ref": "#/definitions/languageValidIfPresent" }, + { "$ref": "#/definitions/processingLanguageValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/creatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/audienceValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/accessibilityValidIfPresent" } + ] + }, + + "optionalBodyPropertiesMust" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Body Keys Must Validations", + "description": "Supports validity checks of optional keys (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "$ref": "#/definitions/textDirectionValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/viaValidIfPresent" } + ] + }, + + "optionalBodyPurposePropertyShould" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Purpose Key", + "description": "Supports validity checks of optional purpose key (if/when) used on Specific Resources or Textual Body Resources (Sections 3.3.5)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "$ref": "otherProperties.json#/definitions/purposeRecognizedIfPresent" } + ] + }, + + "optionalTargetPropertiesShould" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Target Keys Should validation", + "description": "Supports validity check of optional keys (if/when) used on External Web Resources, Specific Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" } + ], + "allOf" : + [ + { "$ref": "#/definitions/resourceTypeShouldIfPresent" }, + { "$ref": "#/definitions/formatValidIfPresent" }, + { "$ref": "#/definitions/languageValidIfPresent" }, + { "$ref": "#/definitions/processingLanguageValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/creatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/audienceValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/accessibilityValidIfPresent" } + ] + }, + + "optionalTargetPropertiesMust" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Target Keys Must validation", + "description": "Supports validity check of optional keys (if/when) used on External Web Resources, Specific Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" } + ], + "allOf" : + [ + { "$ref": "#/definitions/textDirectionValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/viaValidIfPresent" } + ] + }, + + "resourceTypeRecognizedIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: body / target classes", + "description": "True when type value for body / target is or includes item from recommended list of classes (Section 3.2.2)", + "type": "object", + "properties": + { + "type": + { "oneOf": + [ + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text" ] }, + { "type": "array", + "minItems": 1, + "not": + { "items": + { "not": + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text" ] } + } + } + } + ] + } + } + }, + + "resourceTypeShouldIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: body / target classes all from 3.2.2", + "description": "True when type absent or all type value(s) for body / target are from recommended list of classes (Section 3.2.2), or TextualBody", + "type": "object", + "properties": + { + "type": + { "oneOf": + [ + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text", "TextualBody" ] }, + { "type": "array", + "minItems": 1, + "items": + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text", "TextualBody" ] } + } + ] + } + } + }, + + "recognizedTypeFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: type key with recognized classes", + "description": "Supports implementation check of type (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.2)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["type" ] }, + { "$ref": "#/definitions/resourceTypeRecognizedIfPresent" } + ] + + }, + + "formatValueCheck": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: format value regex", + "description": "True when string value starts with a registered top-level Media type, including trailing slash (Section 3.2.1)", + "type": "string", + "pattern": "^(application/|audio/|example/|image/|multipart/|text/|video/)" + }, + + "formatValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: format validity", + "description": "True when the body or target has no format or has a valid format value - single string or array of strings (Section 3.2.1)", + "type": "object", + "properties": + { + "format": + { + "oneOf": + [ + {"$ref": "#/definitions/formatValueCheck"}, + {"type": "array", + "minItems": 1, + "items" : {"$ref": "#/definitions/formatValueCheck"} + } + ] + } + } + }, + + "formatSingularIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: format", + "description": "True when the body or target format value, if present, is singular and valid (Section 3.2.1)", + "type": "object", + "properties": + { + "format": + { + "oneOf": + [ + {"$ref": "#/definitions/formatValueCheck"}, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"$ref": "#/definitions/formatValueCheck"} } + ] + } + } + }, + + "formatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: format key with qualifying body/target classes", + "description": "Supports implementation check of format (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["format" ] }, + { "$ref": "#/definitions/formatValidIfPresent" } + ] + }, + + "singleFormatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: format key with qualifying body/target classes", + "description": "Supports implementation check of format being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["format"] }, + { "$ref": "#/definitions/formatSingularIfPresent" } + ] + }, + + "languageValueCheck" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: language value regex", + "description": "True when string value starts with a two or three lc characters and a hyphen or end of string (Section 3.2.1)", + "type": "string", + "oneOf" : + [ + {"pattern": "^([a-z]){2,3}$"}, + {"pattern": "^([a-z]){2,3}-"} + ] + + }, + + "languageValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: language value", + "description": "True when the body or target has no language or has a valid language value - single string or array of strings (Section 3.2.1)", + "type": "object", + "properties": + { + "language": + { + "oneOf": + [ + {"$ref": "#/definitions/languageValueCheck"}, + {"type": "array", + "minItems": 1, + "items" : {"$ref": "#/definitions/languageValueCheck"} + } + ] + } + } + }, + + "languageSingularIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: single language valid", + "description": "True when the body or target has no language or has exactly one language property - single string (Section 3.2.1)", + "type": "object", + "properties": + { + "language": + { + "oneOf": + [ + {"$ref": "#/definitions/languageValueCheck"}, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"$ref": "#/definitions/languageValueCheck"} } + ] + } + } + }, + + "languagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: language key with qualifying body/target classes", + "description": "Supports implementation check of language (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["language" ] }, + { "$ref": "#/definitions/languageValidIfPresent" } + ] + }, + + "singleLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: language key with qualifying body/target classes", + "description": "Supports implementation check of language being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["language"] }, + { "$ref": "#/definitions/languageSingularIfPresent" } + ] + }, + + "processingLanguageValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: processingLanguage", + "description": "True when the Body or Target has no processingLanguage or exactly one processingLanguage property (Section 3.2.1)", + "type": "object", + "properties": + { + "processingLanguage": + { + "oneOf": + [ + {"$ref": "#/definitions/languageValueCheck"}, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"$ref": "#/definitions/languageValueCheck"} } + ] + } + } + }, + + "processingLanguagePropertyFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: processingLanguage Key with qualifying body/target classes", + "description": "Supports implementation check of processingLanguage (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["processingLanguage" ] }, + { "$ref": "#/definitions/processingLanguageValidIfPresent" } + ] + }, + + "textDirectionValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: textDirection", + "description": "True when the body or target has no textDirection or exactly one valid textDirection (Section 3.2.1)", + "type": "object", + "properties": + { + "textDirection": + { + "oneOf": + [ + {"type": "string", + "enum": ["ltr", "rtl", "auto"] }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"type": "string", + "enum": ["ltr", "rtl", "auto"] } } + ] + } + } + }, + + "textDirectionPropertyFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: textDirection Key with qualifying body/target classes", + "description": "Supports implementation check of textDirection (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["textDirection" ] }, + { "$ref": "#/definitions/textDirectionValidIfPresent" } + ] + } + + } +} diff --git a/testing/web-platform/tests/annotation-model/definitions/choiceDetected.json b/testing/web-platform/tests/annotation-model/definitions/choiceDetected.json new file mode 100644 index 000000000000..b1a429b78140 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/choiceDetected.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "choiceDetected.json", + "title": "Definition: Choice Object", + "description": "True when the object's type is 'Choice' and the object has at valid items (Section 3.2.7).", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Choice"] + }, + "items": + { + "$ref": "itemsDetected.json" + } + }, + "required": [ "type", "items" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/choiceSet.json b/testing/web-platform/tests/annotation-model/definitions/choiceSet.json index a1ce251b03a8..b9e75dba2c28 100644 --- a/testing/web-platform/tests/annotation-model/definitions/choiceSet.json +++ b/testing/web-platform/tests/annotation-model/definitions/choiceSet.json @@ -1,18 +1,159 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "id" : "choiceSet.json", - "type": "object", - "properties": - { - "type": + "id": "choiceSet.json", + "title": "Definitions: Choice, Composite, List, Independents.", + "description": "Schemas in #/definitions detect or validate keys/objects used in describing Choice, Composite, List, Independents (Sections 3.2.7 and 3.2.8).", + "definitions": { + + "itemsDetected" : { - "type": "string", - "enum": ["Choice", "Composite", "List", "Independents"] + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: items", + "description": "True when the object includes items key and value of items is an array containing at least 1 item, which can be a specificResource, an externalWebResource, a uri, a textualBody or another choice/set (Sections 3.2.7 and 3.2.8).", + "type": "object", + "properties" : + { + "items" : + { + "type" : "array", + "minItems": 1, + "items": { + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected" }, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound" }, + {"$ref": "id.json#/definitions/stringUri" }, + {"$ref" : "#/definitions/itemsDetected", + "oneOf": [ + { "$ref": "#/definitions/choiceTypeDefinition" }, + { "$ref": "#/definitions/compositeTypeDefinition" }, + { "$ref": "#/definitions/listTypeDefinition" }, + { "$ref": "#/definitions/independentsTypeDefinition" } + ] + } + ] + } + } + }, + "required": [ "items" ] }, - "items" : + + "choiceTypeDefinition": { - "type" : "array" + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Choice type", + "description": "True when object has type key and object's type is 'Choice' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Choice"] + } + }, + "required": [ "type" ] + }, + + "compositeTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Choice type", + "description": "True when object has type key and object's type is 'Composite' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Composite"] + } + }, + "required": [ "type" ] + }, + + "listTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Choice type", + "description": "True when object has type key and object's type is 'List' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["List"] + } + }, + "required": [ "type" ] + }, + + "independentsTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Choice type", + "description": "True when object has type key and object's type is 'Independents' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Independents"] + } + }, + "required": [ "type" ] + }, + + "choiceDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Choice", + "description": "True when object's type is 'Choice' and the object has an items array (Section 3.2.7)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/choiceTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "compositeDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Composite", + "description": "True when object's type is 'Composite' and the object has at items array (Section 3.2.8)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/compositeTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "listDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: List", + "description": "True when object's type is 'List' and the object has at items array (Section 3.2.7)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/listTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "independentsDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Independents", + "description": "True when object's type is 'Independents' and the object has at items array (Section 3.2.7)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/independentsTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] } - }, - "required": [ "type", "items" ] + + } } diff --git a/testing/web-platform/tests/annotation-model/definitions/compositeDetected.json b/testing/web-platform/tests/annotation-model/definitions/compositeDetected.json new file mode 100644 index 000000000000..158661ce885e --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/compositeDetected.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "compositeDetected.json", + "title": "Definition: Composite Object", + "description": "True when the object's type is 'Composite' and the object has at least one valid item (Section 3.2.8).", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Composite"] + }, + "items": + { + "$ref": "itemsDetected.json" + } + }, + "required": [ "type", "items" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/externalWebResourceDetected.json b/testing/web-platform/tests/annotation-model/definitions/externalWebResourceDetected.json new file mode 100644 index 000000000000..905673659601 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/externalWebResourceDetected.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id" : "externalWebResourceDetected.json", + "title" : "Definition: External Web Resource object", + "description" : "True when the object is a description of an external web resource (Section 3.2.1)", + "type": "object", + "properties": + { + "id": + { + "$ref": "stringUri.json#" + } + }, + "not": + { + "required" : ["value"] + }, + "required": [ "id" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/formatDetected.json b/testing/web-platform/tests/annotation-model/definitions/formatDetected.json new file mode 100644 index 000000000000..543a444605d9 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/formatDetected.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "formatDetected.json", + "title": "Definition: format property", + "description": "True when the object has a valid format property (Section 3.2.1)", + "type": "object", + "properties": + { + "format": + { "oneOf": + [ + { + "type": "string" + }, + { + "type": "array", + "minItems": 1, + "items": + { + "type": "string" + } + } + ] + } + }, + "required": [ "format" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/id.json b/testing/web-platform/tests/annotation-model/definitions/id.json new file mode 100644 index 000000000000..b037e87c94fc --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/id.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id" : "id.json", + "title": "Definitions: id key", + "description": "Schemas in #/definitions used to detect valid id (string of format uri or array containing 1 item of string, format uri).", + "definitions": + { + "stringUri" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "string", + "format": "uri" + }, + + "arraySingleStringUri": + { + "oneOf": + [ + { "$ref": "#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "$ref": "#/definitions/stringUri" } + } + ] + }, + + "idValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ "id" ], + "properties": { + "id" : { "$ref": "#/definitions/arraySingleStringUri" } + } + } + } +} diff --git a/testing/web-platform/tests/annotation-model/definitions/independentsDetected.json b/testing/web-platform/tests/annotation-model/definitions/independentsDetected.json new file mode 100644 index 000000000000..f71671b7c711 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/independentsDetected.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "independentsDetected.json", + "title": "Definition: Independents Object", + "description": "True when the object's type is 'Independents' and the object has at least one valid item (Section 3.2.8).", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": [ "Independents" ] + }, + "items": + { + "$ref": "itemsDetected.json" + } + }, + "required": [ "type", "items" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/itemsDetected.json b/testing/web-platform/tests/annotation-model/definitions/itemsDetected.json new file mode 100644 index 000000000000..7b2d3e1d899b --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/itemsDetected.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "itemsDetected.json", + "title": "Definition: Items", + "description": "True when the object is an array of objects (Sections 3.2.7 and 3.2.8).", + "type": "array", + "minItems": 1 +} diff --git a/testing/web-platform/tests/annotation-model/definitions/languageDetected.json b/testing/web-platform/tests/annotation-model/definitions/languageDetected.json new file mode 100644 index 000000000000..0a4ac5b9619f --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/languageDetected.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "languageDetected.json", + "title": "Definition: language property", + "description": "True when the object has a valid language property (Section 3.2.1)", + "type": "object", + "properties": + { + "language": + { "oneOf": + [ + { + "type": "string" + }, + { + "type": "array", + "minItems": 1, + "items": + { + "type": "string" + } + } + ] + } + }, + "required": [ "language" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/listDetected.json b/testing/web-platform/tests/annotation-model/definitions/listDetected.json new file mode 100644 index 000000000000..dd48fcf3c691 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/listDetected.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "listDetected.json", + "title": "Definition: List Object", + "description": "True when the object's type is 'List' and the object has at least one valid item (Section 3.2.8).", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": [ "List" ] + }, + "items": + { + "$ref": "itemsDetected.json" + } + }, + "required": [ "type", "items" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/otherProperties.json b/testing/web-platform/tests/annotation-model/definitions/otherProperties.json new file mode 100644 index 000000000000..3af109b32598 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/otherProperties.json @@ -0,0 +1,720 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "otherProperties.json", + "title": "Definitions: Other Properties.", + "description": "Schemas in #/definitions detect or validate keys, objects or constraints variously applicable to Annotations, Bodies, Targets, Specific Resources, Textual Bodies, Items, and/or Sources (Section 3.3).", + "definitions": { + + "createdValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: created value", + "description": "True when the object being tested (annotation, body, target...) has no created or has a single created of format date-time (Section 3.3.1)", + "type": "object", + "properties": {"created": {"oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "string", + "format": "date-time" + } + } + ]}} + }, + + "createdPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: created key with qualifying body/target classes", + "description": "Supports implementation check of created (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"$ref": "#/definitions/createdValidIfPresent"}, + {"required": ["created"]} + ] + }, + + "generatedValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: generated value", + "description": "True when the annotation, body or target has no generated or has a single generated of format date-time (Section 3.3.1)", + "type": "object", + "properties": {"generated": {"oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "string", + "format": "date-time" + } + } + ]}} + }, + + "generatedPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: generated key with qualifying body/target classes", + "description": "Supports implementation check of generated (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"$ref": "#/definitions/generatedValidIfPresent"}, + {"required": ["generated"]} + ] + }, + + "modifiedValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: modified value", + "description": "True when the annotation, body or target has no modified or has a single modified of format date-time (Section 3.3.1)", + "type": "object", + "properties": {"modified": {"oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "string", + "format": "date-time" + } + } + ]}} + }, + + "modifiedPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: modified key with qualifying body/target classes", + "description": "Supports implementation check of modified (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"$ref": "#/definitions/modifiedValidIfPresent"}, + {"required": ["modified"]} + ] + }, + + "creatorValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: creator value", + "description": "True when the annotation, body or target has one or more creators (Section 3.3.1)", + "type": "object", + "properties": {"creator": + {"oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" } + ] + } + } + ] + } + } + }, + + "creatorSingularIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: creator value", + "description": "True when the annotation, body or target has exactly 1 creator (Section 3.3.1)", + "type": "object", + "properties": {"creator": + {"oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" } + ] + } + } + ] + } + } + }, + + "creatorPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: creator key with qualifying body/target classes", + "description": "Supports implementation check of creator (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.1)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["creator"]}, + {"$ref": "#/definitions/creatorValidIfPresent"} + ] + }, + + "singleCreatorPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: creator key with qualifying body/target classes", + "description": "Supports implementation check of creator being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.1)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["creator"]}, + {"$ref": "#/definitions/creatorSingularIfPresent"} + ] + }, + + "generatorValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: generator value", + "description": "True when the annotation, body or target has a single generator (Section 3.3.1)", + "type": "object", + "properties": {"generator": + {"oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" } + ] + } + } + ] + } + } + }, + + "generatorPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: generator key with qualifying body/target classes", + "description": "Supports implementation check of generator (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.1)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["generator"]}, + {"$ref": "#/definitions/generatorValidIfPresent"} + ] + }, + + "audienceDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: audience object", + "description": "True when object meets our requirements for audience value (Section 3.3.3)", + "type": "object", + "properties": { + "id": {"$ref": "id.json#/definitions/arraySingleStringUri"} , + "type": { + "oneOf": [ + { "type": "string", + "pattern": "^(schema:)"}, + { "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^(schema:)" + } + } + ] + } + }, + "patternProperties": { + "^(schema:)": { "type": ["string", "object", "array"] } + }, + "additionalProperties": false + }, + + "audienceValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: audience value", + "description": "True when no audience or audience property of the annotation, body, target, ... is valid (Section 3.3.3)", + "type": "object", + "properties": { + "audience": + { "oneOf": + [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "#/definitions/audienceDefinition" }, + { + "type": "array", + "minItems": 1, + "items": { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "#/definitions/audienceDefinition" } + ] + } + } + ] + } + } + }, + + "audiencePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: audience key with qualifying body/target classes", + "description": "Supports implementation check of audience (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["audience"]}, + {"$ref": "#/definitions/audienceValidIfPresent"} + ] + }, + + "accessibilityValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: accessibility value", + "description": "True when no accessibility or accessibility property of the body, target, ... is valid (Section 3.3.4)", + "type": "object", + "properties": { + "accessibility" : { + "oneOf": [ + { "type": "string" }, + { "type": "array" , + "minItems": 1, + "items": { + "type": "string" + } + } + ] + } + } + }, + + "accessibilityPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: accessibility key with qualifying body/target classes", + "description": "Supports implementation check of accessibility (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.4)", + "oneOf": [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["accessibility"]}, + {"$ref": "#/definitions/accessibilityValidIfPresent"} + ] + }, + + "rightsValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: rights value", + "description": "True when the annotation, body or target has 0 or more rights properties that are strings of format uri (Section 3.3.6)", + "type": "object", + "properties": {"rights": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri" } } + ] + } + } + }, + + "rightsPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: rights key with qualifying annotation/body/target classes", + "description": "Supports implementation check of rights (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Sections 3.3.6)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["rights"]}, + {"$ref": "#/definitions/rightsValidIfPresent"} + ] + }, + + "canonicalValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: canonical value", + "description": "True when the annotation, body or target has 0 or 1 canonical properties that are strings of format uri (Section 3.3.7)", + "type": "object", + "properties": { + "canonical": { "$ref": "id.json#/definitions/arraySingleStringUri" } + } + }, + + "canonicalPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: canonical key with qualifying annotation/body/target classes", + "description": "Supports implementation check of canonical (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Sections 3.3.7)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["canonical"]}, + {"$ref": "#/definitions/canonicalValidIfPresent"} + ] + }, + + "viaValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: via value", + "description": "True when the annotation, body or target has 0 or more via properties that are strings of format uri (Section 3.3.7)", + "type": "object", + "properties": {"via": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri" } } + ] + } + } + }, + + "viaPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: via key with qualifying annotation/body/target classes", + "description": "Supports implementation check of via (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Sections 3.3.7)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["via"]}, + {"$ref": "#/definitions/viaValidIfPresent"} + ] + }, + + "purposeRecognizedIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: purpose value", + "description": "True when the body has 0 or more purpose property values (Section 3.3.5)", + "type": "object", + "properties": {"purpose": + { "oneOf": [ + { "$ref": "annotations.json#/definitions/motivationList" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "annotations.json#/definitions/motivationList" } } + ] + } + } + }, + + "purposePropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: purpose key with qualifying body classes", + "description": "Supports implementation check of purpose (if/when) used on Specific Resource Body or Textual Body (Sections 3.3.5)", + "oneOf": [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["purpose"]}, + {"$ref": "#/definitions/purposeRecognizedIfPresent"} + ] + }, + + "agentTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent type value", + "description": "True when the object (creator or generator agent) has no type or has at least one recognized Agent type value (Section 3.3.2)", + "type": "object", + "properties": + { + "type": + { + "oneOf": + [ + {"type": "string", + "enum": ["Person", "Organization", "Software"] }, + {"type": "array", + "minItems": 1, + "not": + { + "items" : + { "not": + { "type": "string", + "enum": ["Person", "Organization", "Software"] } + } + } + } + ] + } + } + }, + + "agentTypeFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent type value", + "description": "True when the object (creator or generator agent) has at least one recognized Agent type value (Section 3.3.2)", + "allOf": [ + {"required": ["type"]}, + {"$ref": "#/definitions/agentTypeDefinition"} + ] + }, + + "agentNameDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent name value", + "description": "True when the object (creator or generator agent) has no name or has Agent name(s) of type string (Section 3.3.2)", + "type": "object", + "properties": + { + "name": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentSingularNameDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent name value", + "description": "True when the object (creator or generator agent) has no name or has exactly one Agent name that is a string (Section 3.3.2)", + "type": "object", + "properties": + { + "name": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentNameFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent name value", + "description": "True when the object (creator or generator agent) has Agent name value(s) (Section 3.3.2)", + "allOf": [ + {"required": ["name"]}, + {"$ref": "#/definitions/agentNameDefinition"} + ] + }, + + "agentSingularNameFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent name value", + "description": "True when the object (creator or generator agent) has exactly one Agent name value (Section 3.3.2)", + "allOf": [ + {"required": ["name"]}, + {"$ref": "#/definitions/agentSingularNameDefinition"} + ] + }, + + "agentSingularNicknameDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent nickname value", + "description": "True when the object (creator or generator agent) has no nickname or has exacly one Agent nickname that is a string (Section 3.3.2)", + "type": "object", + "properties": + { + "nickname": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentSingularNicknameFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent nickname value", + "description": "True when the object (creator or generator agent) has an Agent nickname value (Section 3.3.2)", + "allOf": [ + {"required": ["nickname"]}, + {"$ref": "#/definitions/agentSingularNicknameDefinition"} + ] + }, + + "agentEmailDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent email value", + "description": "True when the object (creator or generator agent) has no email or has Agent one or more email addresses that start(s) mailto: and is format uri (Section 3.3.2)", + "type": "object", + "properties": + { + "email": + { + "oneOf": + [ + { "type": "string", + "pattern": "^(mailto)", + "format": "uri" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string", + "pattern": "^(mailto)", + "format": "uri" } + } + ] + } + } + }, + + "agentEmailFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent email value", + "description": "True when the object (creator or generator agent) has Agent email value(s) (Section 3.3.2)", + "allOf": [ + {"required": ["email"]}, + {"$ref": "#/definitions/agentEmailDefinition"} + ] + }, + + "agentEmail_sha1Definition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent email_sha1 value", + "description": "True when the object (creator or generator agent) has no email_sha1 or has one or more email_sha1 that is/are a string (Section 3.3.2)", + "type": "object", + "properties": + { + "email_sha1": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentEmail_sha1Found": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent email_sha1 value", + "description": "True when the object (creator or generator agent) has has one or more email_sha1 that is/are a string (Section 3.3.2)", + "allOf": [ + {"required": ["email_sha1"]}, + {"$ref": "#/definitions/agentEmail_sha1Definition"} + ] + }, + + "agentHomepageDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent homepage value", + "description": "True when the object (creator or generator agent) has no homempage or has one or more agent homepage addresses of format uri (Section 3.3.2)", + "type": "object", + "properties": + { + "email": + { + "oneOf": + [ + { "type": "string", + "format": "uri" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string", + "format": "uri" } + } + ] + } + } + }, + + "agentHomepageFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent homepage value", + "description": "True when the object (creator or generator agent) has Agent homepage value(s) (Section 3.3.2)", + "allOf": [ + {"required": ["homepage"]}, + {"$ref": "#/definitions/agentHomepageDefinition"} + ] + } + + } +} diff --git a/testing/web-platform/tests/annotation-model/definitions/processingLanguageDetected.json b/testing/web-platform/tests/annotation-model/definitions/processingLanguageDetected.json new file mode 100644 index 000000000000..595e9f4c6028 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/processingLanguageDetected.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "processingLanguageDetected.json", + "title": "Definition: processingLanguage property", + "description": "True when the object has a valid processingLanguage property (Section 3.2.1)", + "type": "object", + "properties": + { + "processingLanguage": + { + "type": "string" + } + }, + "required": [ "processingLanguage" ] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/specificResource.json b/testing/web-platform/tests/annotation-model/definitions/specificResource.json index 75bd46ba3d82..829e38c2c87b 100644 --- a/testing/web-platform/tests/annotation-model/definitions/specificResource.json +++ b/testing/web-platform/tests/annotation-model/definitions/specificResource.json @@ -1,17 +1,456 @@ { "$schema": "http://json-schema.org/draft-04/schema#", "id" : "specificResource.json", - "type": "object", - "properties": - { - "source": + "title": "Definitions: Specific Resources.", + "description": "Schemas in #/definitions detect or validate keys/objects used in describing Specific Resources (Section 4).", + "definitions": { + + "specificeResourceDetected": { - "type": ["string", "object" ], + "title": "Detection: Specific Resource", + "description": "True when object has exactly 1 source value and at least one of purpose, selector, state, styleClass, renderedVia, scope (Section 4)", + "type": "object", + "properties": + { + "source": + { + "type": ["string", "object" ], + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"} + ] + } + }, + "required": ["source"], + "anyOf": [ + { "$ref": "otherProperties.json#/definitions/purposeRecognizedIfPresent", + "required": ["purpose"]}, + { "$ref": "#/definitions/selectorDetected" }, + { "$ref": "#/definitions/stateDetected"} + + + + + + ] + }, + + "selectorDetected": + { + "title": "Definition: selector", + "description": "True when object tested has selector with value matching one or more of the selectors described in the model (Section 4.2)", + "type": "object", + "properties": + { + "selector": + { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/rangeSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"} + ] + }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/rangeSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"} + ] + } + ] + } + } + ] + } + }, + "required": ["selector"] + }, + + "fragmentSelectorDetected": + { + "title": "Definition: fragment selector", + "description": "True when object is a fragment selelctor (Section 4.2.1)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["FragmentSelector"] }, + "value": { "type": "string" }, + "conformsTo": { "type": "string", + "format": "uri"}, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "required": ["value", "type"] + }, + + "cssSelectorDetected": + { + "title": "Definition: CssSelector selector", + "description": "True when object is a CssSelector selelctor (Section 4.2.2)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["CssSelector"] }, + "value": { "type": "string" }, + "id": { "$ref": "id.json#/definitions/arraySingleStringUri" }, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "required": [ "type"], "oneOf": [ - { "$ref": "stringUri.json#" }, - { "$ref": "externalWebResource.json#"} + {"required": ["value"] }, + {"required": ["id"] } + ] + }, + + "xpathSelectorDetected": + { + "title": "Definition: XPath selector", + "description": "True when object is a XPath selelctor (Section 4.2.3)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["XPathSelector"] }, + "value": { "type": "string" }, + "id": { "$ref": "id.json#/definitions/arraySingleStringUri" }, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "required": ["type"], + "oneOf": [ + {"required": ["value"] }, + {"required": ["id"] } + ] + }, + + "textQuoteSelectorDetected": + { + "title": "Definition: text quote selector", + "description": "True when object is a text quote selelctor (Section 4.2.4)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["TextQuoteSelector"] }, + "exact": { "type": "string" }, + "prefix": { "type": "string"}, + "suffix": { "type": "string"}, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "required": ["exact", "type"] + }, + + "textPositionSelectorDetected": + { + "title": "Definition: text position selector", + "description": "True when object is a text position selelctor (Section 4.2.5)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["TextPositionSelector"] }, + "start": { "type": "integer", + "minimum": 0 }, + "end": { "type": "integer", + "minimum": 0 }, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "required": ["start", "end", "type"] + }, + + "dataPositionSelectorDetected": + { + "title": "Definition: data position selector", + "description": "True when object is a data position selelctor (Section 4.2.6)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["DataPositionSelector"] }, + "start": { "type": "integer", + "minimum": 0 }, + "end": { "type": "integer", + "minimum": 0 }, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "required": ["start", "end", "type"] + }, + + "svgSelectorDetected": + { + "title": "Definition: svg selector", + "description": "True when object is a svg selelctor (Section 4.2.7)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["SvgSelector"] }, + "value": { "type": "string" }, + "id": { "$ref": "id.json#/definitions/arraySingleStringUri" }, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "required": ["type"], + "oneOf": [ + {"required": ["value"] }, + {"required": ["id"] } + ] + }, + + "rangeSelectorDetected": + { + "title": "Definition: range selector", + "description": "True when object is a range selelctor (Section 4.2.9)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["RangeSelector"] }, + "refinedBy" : { "$ref": "#/definitions/refinedByDetected"} + }, + "patternProperties": + { + "^(startSelector|endSelector)$": + { "type": "object", + "oneOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"} + ] + } + }, + "required": ["type", "startSelector", "endSelector"] + }, + + "refinedByDetected": + { + "title": "Definition: refinedBy selector or state", + "description": "True when object is a refinedBy selelctor or state (Section 4.2.8)", + "type": "object", + "oneOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/rangeSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"}, + {"$ref": "#/definitions/timeStateDetected"}, + {"$ref": "#/definitions/requestHeaderStateDetected"} + ] + }, + + "stateDetected" : + { + "title": "Definition: state", + "description": "True when object tested has state with value matching one or more of the state classes described in the model (Section 4.3)", + "type": "object", + "properties": + { + "state": + { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "id.json#/definitions/idValueFound"}, + {"$ref": "#/definitions/timeStateDetected"}, + {"$ref": "#/definitions/requestHeaderStateDetected"} + ] + }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "id.json#/definitions/idValueFound"}, + {"$ref": "#/definitions/timeStateDetected"}, + {"$ref": "#/definitions/requestHeaderStateDetected"} + ] + } + ] + } + } + ] + } + } + }, + + "timeStateDetected": + { + "title": "Definition: time state", + "description": "True when object is a time state (Section 4.3.1)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["TimeState"] }, + "sourceDate": { "oneOf": [ + {"type": "string", + "format": "date-time"}, + { "type": "array", + "minItems": 1, + "items": + {"type": "string", + "format": "date-time"} + } + ] + }, + "sourceDateStart": { "type": "string", + "format": "date-time"}, + "sourceDateEnd": { "type": "string", + "format": "date-time"}, + "cached": { "type": "string", + "format": "uri"} + }, + "required": ["type"], + "dependencies" : + { + "sourceDateStart" : ["sourceDateEnd"], + "sourceDateEnd": ["sourceDateStart"] + }, + "not": + { "required": [ "sourceDate", "sourceDateStart", "sourceDateEnd" ] } + }, + + "requestHeaderStateDetected": + { + "title": "Definition: request header state", + "description": "True when object is a request header state (Section 4.3.2)", + "type": "object", + "properties": + { + "type": { "type": "string", + "enum": ["HttpRequestState"] }, + "value": { "type": "string"} + }, + "required": ["type", "value"] + }, + + "styleClassDefinition": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: styleClass property value", + "description": "True when the body/target has no styleClass property or has a styleClass property that is a string values (Section 4.4)", + "type": "object", + "properties": { + "styleClass": { "type": "string" } + } + }, + + "styleClassDetected": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: styleClass key with qualifying body/target classes", + "description": "Supports implementation check of styleClass (if/when) used on Specific Resource Body or Textual Body (Sections 4.4)", + "oneOf": [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["styleClass"]}, + {"$ref": "#/definitions/styleClassDefinition"} + ] + }, + + "renderedViaDefinition": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: renderedVia property value", + "description": "True when the body/target has no renderedVia property or has a valid renderedVia property (Section 4.5)", + "type": "object", + "properties": { + "renderedVia": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri"}, + { "$ref": "id.json#/definitions/idValueFound"}, + { "type": "array", + "minItems": 1, + "items": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri"}, + { "$ref": "id.json#/definitions/idValueFound"} + ] + } + } + ] + } + } + }, + + "renderedViaDetected": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: renderedVia key with qualifying body/target classes", + "description": "Supports implementation check of renderedVia (if/when) used on Specific Resource Body or Textual Body (Sections 4.4)", + "oneOf": [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["renderedVia"]}, + {"$ref": "#/definitions/renderedViaDefinition"} + ] + }, + + "scopeDefinition": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: scope property value", + "description": "True when the body/target has no scope property or has a valid scope property (Section 4.6)", + "type": "object", + "properties": { + "scope": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/stringUri"}, + { "type": "array", + "minItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri"} + } + ] + } + } + }, + + "scopeDetected": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: scope key with qualifying body/target classes", + "description": "Supports implementation check of scope (if/when) used on Specific Resource Body (Sections 4.6)", + "oneOf": [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"} + ], + "allOf": [ + {"required": ["scope"]}, + {"$ref": "#/definitions/scopeDefinition"} ] } - }, - "required": ["source"] + + } } diff --git a/testing/web-platform/tests/annotation-model/definitions/specificResourceDetected.json b/testing/web-platform/tests/annotation-model/definitions/specificResourceDetected.json new file mode 100644 index 000000000000..52ec5a7588f4 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/specificResourceDetected.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id" : "specificResourceDetected.json", + "title" : "Definition: SpecificResource object", + "description" : "True when the object has a valid source (Section 4)", + "type": "object", + "properties": + { + "source": + { + "type": ["string", "object" ], + "oneOf": [ + { "$ref": "stringUri.json#" }, + { "$ref": "externalWebResource.json#"} + ] + } + }, + "required": ["source"] +} diff --git a/testing/web-platform/tests/annotation-model/definitions/stringUri.json b/testing/web-platform/tests/annotation-model/definitions/stringUri.json index 74485e081251..c398a191c396 100644 --- a/testing/web-platform/tests/annotation-model/definitions/stringUri.json +++ b/testing/web-platform/tests/annotation-model/definitions/stringUri.json @@ -1,6 +1,8 @@ { "$schema": "http://json-schema.org/draft-04/schema#", "id" : "stringUri.json", + "title" : "Definition: URI", + "description" : "True when the string is a URI", "type": "string", "format": "uri" } diff --git a/testing/web-platform/tests/annotation-model/definitions/textDirectionDetected.json b/testing/web-platform/tests/annotation-model/definitions/textDirectionDetected.json new file mode 100644 index 000000000000..31cc9ca6b368 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/definitions/textDirectionDetected.json @@ -0,0 +1,16 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "textDirectionDetected.json", + "title": "Definition: textDirection property", + "description": "True when the object has a valid textDirection property (Section 3.2.1)", + "type": "object", + "properties": + { + "textDirection": + { + "type": "string", + "enum": [ "ltr", "rtl", "auto" ] + } + }, + "required": [ "textDirection" ] +} diff --git a/testing/web-platform/tests/annotation-model/examples/example3.test b/testing/web-platform/tests/annotation-model/examples/example3.test new file mode 100644 index 000000000000..38263cd18505 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/examples/example3.test @@ -0,0 +1,8 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Automated example test", + "description": "A test that runs with no user intervention", + "testType": "automated", + "assertions": [ "common/requiredProperties.json" ], + "content": "common/sampleContent2.jsonld" +} diff --git a/testing/web-platform/tests/annotation-model/scripts/JSONtest.js b/testing/web-platform/tests/annotation-model/scripts/JSONtest.js index 16c2c8c109c0..825522e9f422 100644 --- a/testing/web-platform/tests/annotation-model/scripts/JSONtest.js +++ b/testing/web-platform/tests/annotation-model/scripts/JSONtest.js @@ -1,4 +1,4 @@ -/* globals add_completion_callback, Promise, done, assert_true, Ajv, on_event */ +/* globals add_completion_callback, Promise, showdown, done, assert_true, Ajv, on_event */ /** * Creates a JSONtest object. If the parameters are supplied @@ -27,14 +27,31 @@ function JSONtest(params) { this.Base = null; // URI "base" for the test suite being run this.TestDir = null; // URI "base" for the test case being run this.Params = null; // paramaters passed in + this.Promise = null; // master Promise that resolves when intialization is complete this.Properties = null; // testharness_properties from the opening window this.Test = null; // test being run this.AssertionCounter = 0;// keeps track of which assertion is being processed - this._assertionText = []; // Array of text or nested arrays of assertions this._assertionCache = [];// Array to put loaded assertions into + this._assertionText = []; // Array of text or nested arrays of assertions this._loading = true; + showdown.extension('strip', function() { + return [ + { type: 'output', + regex: /

/, + replace: '' + }, + { type: 'output', + regex: /<\/p>$/, + replace: '' + } + ]; + }); + + + this.markdown = new showdown.Converter({ extensions: [ 'strip' ] }) ; + var pending = [] ; // set up in case DOM finishes loading early @@ -105,6 +122,28 @@ function JSONtest(params) { this.DescriptionText = test.description; } + if (test.content) { + // we have content + if (typeof test.content === "string") { + // the test content is a string - meaning it is a reference to a file of content + var cPromise = new Promise(function(resolve, reject) { + this.loadDefinition(test.content) + .then(function(content) { + if (typeof content === 'string') { + content = JSON.parse(content) ; + } + test.content = content; + resolve(true); + }.bind(this)) + .catch(function(err) { + reject("Loading " + test.content + ": " + JSON.stringify(err)); + }); + + }.bind(this)); + pending.push(cPromise); + } + } + return new Promise(function(resolve, reject) { if (test.assertions && typeof test.assertions === "object") { @@ -121,6 +160,12 @@ function JSONtest(params) { .then(function (assertContents) { // assertContents has assertions in document order + var typeMap = { + 'must' : "[MANDATORY] ", + 'may' : "[OPTIONAL] ", + 'should' : "[RECOMMENDED] " + }; + var assertIdx = 0; // populate the display of assertions that are being exercised @@ -134,14 +179,22 @@ function JSONtest(params) { // accumulate the assertions - but only when level is 0 var list = [] ; + var type = ""; if (assertions) { if (typeof assertions === "object" && assertions.hasOwnProperty('assertions')) { // this is a conditionObject if (level === 0) { list.push(assertContents[assertIdx]); } + type = assertContents[assertIdx].hasOwnProperty('assertionType') ? + assertContents[assertIdx].assertionType : "must" ; - this.AssertionText += "

  • " + assertContents[assertIdx++].title; + // ensure type defaults to must + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } + + this.AssertionText += "
  • " + typeMap[type] + this.markdown.makeHtml(assertContents[assertIdx++].title); this.AssertionText += "
      "; buildList(assertions.assertions, level+1) ; this.AssertionText += "
  • \n"; @@ -153,12 +206,22 @@ function JSONtest(params) { // it is a nested list - recurse buildList(assert, level+1) ; this.AssertionText += "\n"; - } else if (typeof assert === "object" && !Array.isArray(assert) && assert.hasOwnProperty('assertions')) { + } else if (typeof assert === "object" && + !Array.isArray(assert) && + assert.hasOwnProperty('assertions')) { if (level === 0) { list.push(assertContents[assertIdx]); } + type = assertContents[assertIdx].hasOwnProperty('assertionType') ? + assertContents[assertIdx].assertionType : "must" ; + + // ensure type defaults to must + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } + // there is a condition object in the array - this.AssertionText += "
  • " + assertContents[assertIdx++].title; + this.AssertionText += "
  • " + typeMap[type] + this.markdown.makeHtml(assertContents[assertIdx++].title); this.AssertionText += "
      "; buildList(assert, level+1) ; // capture the children too this.AssertionText += "
  • \n"; @@ -166,7 +229,15 @@ function JSONtest(params) { if (level === 0) { list.push(assertContents[assertIdx]); } - this.AssertionText += "
  • " + assertContents[assertIdx++].title + "
  • \n"; + type = assertContents[assertIdx].hasOwnProperty('assertionType') ? + assertContents[assertIdx].assertionType : "must" ; + + // ensure type defaults to must + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } + + this.AssertionText += "
  • " + typeMap[type] + this.markdown.makeHtml(assertContents[assertIdx++].title) + "
  • \n"; } }.bind(this)); } @@ -191,19 +262,23 @@ function JSONtest(params) { }.bind(this)); }.bind(this))); - // once the DOM and the test / assertions are loaded... set us up - Promise.all(pending) - .then(function() { - this.loading = false; - this.init(); - }.bind(this)) - .catch(function(err) { - // loading the components failed somehow - report the errors and mark the test failed - test( function() { - assert_true(false, "Loading of test components failed: " +JSON.stringify(err)) ; - }, "Loading test components"); - done() ; - return ; + this.Promise = new Promise(function(resolve, reject) { + // once the DOM and the test / assertions are loaded... set us up + Promise.all(pending) + .then(function() { + this.loading = false; + this.init(); + resolve(this); + }.bind(this)) + .catch(function(err) { + // loading the components failed somehow - report the errors and mark the test failed + test( function() { + assert_true(false, "Loading of test components failed: " +JSON.stringify(err)) ; + }, "Loading test components"); + done() ; + reject("Loading of test components failed: "+JSON.stringify(err)); + return ; + }.bind(this)); }.bind(this)); return this; @@ -224,8 +299,10 @@ JSONtest.prototype = { var desc = document.getElementById("testDescription") ; if (!this.loading) { - runButton.disabled = false; - runButton.value = "Check JSON"; + if (runButton) { + runButton.disabled = false; + runButton.value = "Check JSON"; + } if (desc) { desc.innerHTML = this.DescriptionText; } @@ -251,32 +328,34 @@ JSONtest.prototype = { }.bind(this)); } - on_event(runButton, "click", function() { - // user clicked - var content = testInput.value; - runButton.disabled = true; + if (runButton) { + on_event(runButton, "click", function() { + // user clicked + var content = testInput.value; + runButton.disabled = true; - // make sure content is an object - if (typeof content === "string") { - try { - content = JSON.parse(content) ; - } catch(err) { - // if the parsing failed, create a special test and mark it failed - test( function() { - assert_true(false, "Parse of JSON failed: " + err) ; - }, "Parsing submitted input"); - // and just give up - done(); - return ; + // make sure content is an object + if (typeof content === "string") { + try { + content = JSON.parse(content) ; + } catch(err) { + // if the parsing failed, create a special test and mark it failed + test( function() { + assert_true(false, "Parse of JSON failed: " + err) ; + }, "Parsing submitted input"); + // and just give up + done(); + return ; + } } - } - // iterate over all of the tests for this instance - this.runTests(this.Assertions, content); + // iterate over all of the tests for this instance + this.runTests(this.Assertions, content); - // explicitly tell the test framework we are done - done(); - }.bind(this)); + // explicitly tell the test framework we are done + done(); + }.bind(this)); + } }, // runTests - process tests @@ -306,6 +385,13 @@ JSONtest.prototype = { compareWith = 'and'; } + var typeMap = { + 'must' : "", + 'may' : "INFORMATIONAL: ", + 'should' : "WARNING: " + }; + + // for each assertion (in order) load the external json schema if // one is referenced, or use the inline schema if supplied // validate content against the referenced schema @@ -316,8 +402,15 @@ JSONtest.prototype = { assertions.forEach( function(assert, num) { - var expected = assert.hasOwnProperty('expectedResult') ? assert.expectedResult : 'valid' ; - var message = assert.hasOwnProperty('message') ? assert.message : "Result was not " + expected; + var expected = assert.hasOwnProperty('expectedResult') ? + assert.expectedResult : 'valid' ; + var message = assert.hasOwnProperty('errorMessage') ? + assert.errorMessage : "Result was not " + expected; + var type = assert.hasOwnProperty('assertionType') ? + assert.assertionType : "must" ; + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } // first - what is the type of the assert if (typeof assert === "object" && !Array.isArray(assert)) { @@ -442,7 +535,7 @@ JSONtest.prototype = { } if (result === false) { // test result was unexpected; use message - assert_true(result, message + err); + assert_true(result, typeMap[type] + message + err); } else { assert_true(result, err) ; } diff --git a/testing/web-platform/tests/annotation-model/scripts/showdown.min.js b/testing/web-platform/tests/annotation-model/scripts/showdown.min.js new file mode 100644 index 000000000000..b0676c7bc348 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/scripts/showdown.min.js @@ -0,0 +1,4 @@ +/*! showdown 20-07-2016 */ + +(function(){function a(a){"use strict";var b={omitExtraWLInCodeBlocks:{defaultValue:!1,describe:"Omit the default extra whiteline added to code blocks",type:"boolean"},noHeaderId:{defaultValue:!1,describe:"Turn on/off generated header id",type:"boolean"},prefixHeaderId:{defaultValue:!1,describe:"Specify a prefix to generated header ids",type:"string"},headerLevelStart:{defaultValue:!1,describe:"The header blocks level start",type:"integer"},parseImgDimensions:{defaultValue:!1,describe:"Turn on/off image dimension parsing",type:"boolean"},simplifiedAutoLink:{defaultValue:!1,describe:"Turn on/off GFM autolink style",type:"boolean"},literalMidWordUnderscores:{defaultValue:!1,describe:"Parse midword underscores as literal underscores",type:"boolean"},strikethrough:{defaultValue:!1,describe:"Turn on/off strikethrough support",type:"boolean"},tables:{defaultValue:!1,describe:"Turn on/off tables support",type:"boolean"},tablesHeaderId:{defaultValue:!1,describe:"Add an id to table headers",type:"boolean"},ghCodeBlocks:{defaultValue:!0,describe:"Turn on/off GFM fenced code blocks support",type:"boolean"},tasklists:{defaultValue:!1,describe:"Turn on/off GFM tasklist support",type:"boolean"},smoothLivePreview:{defaultValue:!1,describe:"Prevents weird effects in live previews due to incomplete input",type:"boolean"},smartIndentationFix:{defaultValue:!1,description:"Tries to smartly fix identation in es6 strings",type:"boolean"}};if(a===!1)return JSON.parse(JSON.stringify(b));var c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=b[d].defaultValue);return c}function b(a,b){"use strict";var c=b?"Error in "+b+" extension->":"Error in unnamed extension",e={valid:!0,error:""};d.helper.isArray(a)||(a=[a]);for(var f=0;f-1,l=new RegExp(b+"|"+c,"g"+j.replace(/g/g,"")),m=new RegExp(b,j.replace(/g/g,"")),n=[];do for(e=0;g=l.exec(a);)if(m.test(g[0]))e++||(f=l.lastIndex,h=f-g[0].length);else if(e&&!--e){i=g.index+g[0].length;var o={left:{start:h,end:f},match:{start:f,end:g.index},right:{start:g.index,end:i},wholeMatch:{start:h,end:i}};if(n.push(o),!k)return n}while(e&&(l.lastIndex=f));return n};d.helper.matchRecursiveRegExp=function(a,b,c,d){"use strict";for(var e=i(a,b,c,d),f=[],g=0;g0){var l=[];0!==h[0].wholeMatch.start&&l.push(a.slice(0,h[0].wholeMatch.start));for(var m=0;k>m;++m)l.push(b(a.slice(h[m].wholeMatch.start,h[m].wholeMatch.end),a.slice(h[m].match.start,h[m].match.end),a.slice(h[m].left.start,h[m].left.end),a.slice(h[m].right.start,h[m].right.end))),k-1>m&&l.push(a.slice(h[m].wholeMatch.end,h[m+1].wholeMatch.start));h[k-1].wholeMatch.end-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.helper.escapeCharacters(m,"*_",!1);var o='"};return a=a.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)][ ]?(?:\n[ ]*)?\[(.*?)])()()()()/g,e),a=a.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e),a=a.replace(/(\[([^\[\]]+)])()()()()()/g,e),a=c.converter._dispatch("anchors.after",a,b,c)}),d.subParser("autoLinks",function(a,b,c){"use strict";function e(a,b){var c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)}a=c.converter._dispatch("autoLinks.before",a,b,c);var f=/\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+)(?=\s|$)(?!["<>])/gi,g=/<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)>/gi,h=/(?:^|[ \n\t])([A-Za-z0-9!#$%&'*+-\/=?^_`\{|}~\.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?:$|[ \n\t])/gi,i=/<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;return a=a.replace(g,'$1'),a=a.replace(i,e),b.simplifiedAutoLink&&(a=a.replace(f,'$1'),a=a.replace(h,e)),a=c.converter._dispatch("autoLinks.after",a,b,c)}),d.subParser("blockGamut",function(a,b,c){"use strict";a=c.converter._dispatch("blockGamut.before",a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,e),a=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("tables")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c),a=c.converter._dispatch("blockGamut.after",a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"use strict";return a=c.converter._dispatch("blockQuotes.before",a,b,c),a=a.replace(/((^[ \t]{0,3}>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,e){var f=e;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=d.subParser("githubCodeBlocks")(f,b,c),f=d.subParser("blockGamut")(f,b,c),f=f.replace(/(^|\n)/g,"$1 "),f=f.replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /gm,"~0"),c=c.replace(/~0/g,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)}),a=c.converter._dispatch("blockQuotes.after",a,b,c)}),d.subParser("codeBlocks",function(a,b,c){"use strict";a=c.converter._dispatch("codeBlocks.before",a,b,c),a+="~0";var e=/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;return a=a.replace(e,function(a,e,f){var g=e,h=f,i="\n";return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),b.omitExtraWLInCodeBlocks&&(i=""),g="
    "+g+i+"
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,""),a=c.converter._dispatch("codeBlocks.after",a,b,c)}),d.subParser("codeSpans",function(a,b,c){"use strict";return a=c.converter._dispatch("codeSpans.before",a,b,c),"undefined"==typeof a&&(a=""),a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""}),a=c.converter._dispatch("codeSpans.after",a,b,c)}),d.subParser("detab",function(a){"use strict";return a=a.replace(/\t(?=\t)/g," "),a=a.replace(/\t/g,"~A~B"),a=a.replace(/~B(.+?)~A/g,function(a,b){for(var c=b,d=4-c.length%4,e=0;d>e;e++)c+=" ";return c}),a=a.replace(/~A/g," "),a=a.replace(/~B/g,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.subParser("encodeEmailAddress",function(a){"use strict";var b=[function(a){return"&#"+a.charCodeAt(0)+";"},function(a){return"&#x"+a.charCodeAt(0).toString(16)+";"},function(a){return a}];return a="mailto:"+a,a=a.replace(/./g,function(a){if("@"===a)a=b[Math.floor(2*Math.random())](a);else if(":"!==a){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a=''+a+"",a=a.replace(/">.+:/g,'">')}),d.subParser("escapeSpecialCharsWithinTagAttributes",function(a){"use strict";var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"use strict";return b.ghCodeBlocks?(a=c.converter._dispatch("githubCodeBlocks.before",a,b,c),a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,e,f){var g=b.omitExtraWLInCodeBlocks?"":"\n";return f=d.subParser("encodeCode")(f),f=d.subParser("detab")(f),f=f.replace(/^\n+/g,""),f=f.replace(/\n+$/g,""),f="
    "+f+g+"
    ",f=d.subParser("hashBlock")(f,b,c),"\n\n~G"+(c.ghCodeBlocks.push({text:a,codeblock:f})-1)+"G\n\n"}),a=a.replace(/~0/,""),c.converter._dispatch("githubCodeBlocks.after",a,b,c)):a}),d.subParser("hashBlock",function(a,b,c){"use strict";return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),d.subParser("hashElement",function(a,b,c){"use strict";return function(a,b){var d=b;return d=d.replace(/\n\n/g,"\n"),d=d.replace(/^\n/,""),d=d.replace(/\n+$/g,""),d="\n\n~K"+(c.gHtmlBlocks.push(d)-1)+"K\n\n"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"use strict";for(var e=["pre","div","h1","h2","h3","h4","h5","h6","blockquote","table","dl","ol","ul","script","noscript","form","fieldset","iframe","math","style","section","header","footer","nav","article","aside","address","audio","canvas","figure","hgroup","output","video","p"],f=function(a,b,d,e){var f=a;return-1!==d.search(/\bmarkdown\b/)&&(f=d+c.converter.makeHtml(b)+e),"\n\n~K"+(c.gHtmlBlocks.push(f)-1)+"K\n\n"},g=0;g]*>","","gim");return a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/()/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c))}),d.subParser("hashHTMLSpans",function(a,b,c){"use strict";for(var e=d.helper.matchRecursiveRegExp(a,"]*>","","gi"),f=0;f]*>\\s*]*>","^(?: |\\t){0,3}\\s*
    ","gim")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}a=c.converter._dispatch("headers.before",a,b,c);var f=b.prefixHeaderId,g=isNaN(parseInt(b.headerLevelStart))?1:parseInt(b.headerLevelStart),h=b.smoothLivePreview?/^(.+)[ \t]*\n={2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n=+[ \t]*\n+/gm,i=b.smoothLivePreview?/^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n-+[ \t]*\n+/gm;return a=a.replace(h,function(a,f){var h=d.subParser("spanGamut")(f,b,c),i=b.noHeaderId?"":' id="'+e(f)+'"',j=g,k=""+h+"";return d.subParser("hashBlock")(k,b,c)}),a=a.replace(i,function(a,f){var h=d.subParser("spanGamut")(f,b,c),i=b.noHeaderId?"":' id="'+e(f)+'"',j=g+1,k=""+h+"";return d.subParser("hashBlock")(k,b,c)}),a=a.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm,function(a,f,h){var i=d.subParser("spanGamut")(h,b,c),j=b.noHeaderId?"":' id="'+e(h)+'"',k=g-1+f.length,l=""+i+"";return d.subParser("hashBlock")(l,b,c)}),a=c.converter._dispatch("headers.after",a,b,c)}),d.subParser("images",function(a,b,c){"use strict";function e(a,b,e,f,g,h,i,j){var k=c.gUrls,l=c.gTitles,m=c.gDimensions;if(e=e.toLowerCase(),j||(j=""),""===f||null===f){if((""===e||null===e)&&(e=b.toLowerCase().replace(/ ?\n/g," ")),f="#"+e,d.helper.isUndefined(k[e]))return a;f=k[e],d.helper.isUndefined(l[e])||(j=l[e]),d.helper.isUndefined(m[e])||(g=m[e].width,h=m[e].height)}b=b.replace(/"/g,"""),b=d.helper.escapeCharacters(b,"*_",!1),f=d.helper.escapeCharacters(f,"*_",!1);var n=''+b+'?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g,g=/!\[([^\]]*?)] ?(?:\n *)?\[(.*?)]()()()()()/g;return a=a.replace(g,e),a=a.replace(f,e),a=c.converter._dispatch("images.after",a,b,c)}),d.subParser("italicsAndBold",function(a,b,c){"use strict";return a=c.converter._dispatch("italicsAndBold.before",a,b,c),b.literalMidWordUnderscores?(a=a.replace(/(^|\s|>|\b)__(?=\S)([\s\S]+?)__(?=\b|<|\s|$)/gm,"$1$2"),a=a.replace(/(^|\s|>|\b)_(?=\S)([\s\S]+?)_(?=\b|<|\s|$)/gm,"$1$2"),a=a.replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g,"$2"),a=a.replace(/(\*)(?=\S)([^\r]*?\S)\1/g,"$2")):(a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")),a=c.converter._dispatch("italicsAndBold.after",a,b,c)}),d.subParser("lists",function(a,b,c){"use strict";function e(a,e){c.gListLevel++,a=a.replace(/\n{2,}$/,"\n"),a+="~0";var f=/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,g=/\n[ \t]*\n(?!~0)/.test(a);return a=a.replace(f,function(a,e,f,h,i,j,k){k=k&&""!==k.trim();var l=d.subParser("outdent")(i,b,c),m="";return j&&b.tasklists&&(m=' class="task-list-item" style="list-style-type: none;"',l=l.replace(/^[ \t]*\[(x|X| )?]/m,function(){var a='-1?(l=d.subParser("githubCodeBlocks")(l,b,c),l=d.subParser("blockGamut")(l,b,c)):(l=d.subParser("lists")(l,b,c),l=l.replace(/\n$/,""),l=g?d.subParser("paragraphs")(l,b,c):d.subParser("spanGamut")(l,b,c)),l="\n"+l+"\n"}),a=a.replace(/~0/g,""),c.gListLevel--,e&&(a=a.replace(/\s+$/,"")),a}function f(a,b,c){var d="ul"===b?/^ {0,2}\d+\.[ \t]/gm:/^ {0,2}[*+-][ \t]/gm,f=[],g="";if(-1!==a.search(d)){!function i(a){var f=a.search(d);-1!==f?(g+="\n\n<"+b+">"+e(a.slice(0,f),!!c)+"\n\n",b="ul"===b?"ol":"ul",d="ul"===b?/^ {0,2}\d+\.[ \t]/gm:/^ {0,2}[*+-][ \t]/gm,i(a.slice(f))):g+="\n\n<"+b+">"+e(a,!!c)+"\n\n"}(a);for(var h=0;h"+e(a,!!c)+"\n\n";return g}a=c.converter._dispatch("lists.before",a,b,c),a+="~0";var g=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(g,function(a,b,c){var d=c.search(/[*+-]/g)>-1?"ul":"ol";return f(b,d,!0)}):(g=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm,a=a.replace(g,function(a,b,c,d){var e=d.search(/[*+-]/g)>-1?"ul":"ol";return f(c,e)})),a=a.replace(/~0/,""),a=c.converter._dispatch("lists.after",a,b,c)}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("paragraphs",function(a,b,c){"use strict";a=c.converter._dispatch("paragraphs.before",a,b,c),a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var e=a.split(/\n{2,}/g),f=[],g=e.length,h=0;g>h;h++){var i=e[h];i.search(/~(K|G)(\d+)\1/g)>=0?f.push(i):(i=d.subParser("spanGamut")(i,b,c),i=i.replace(/^([ \t]*)/g,"

    "),i+="

    ",f.push(i))}for(g=f.length,h=0;g>h;h++){for(var j="",k=f[h],l=!1;k.search(/~(K|G)(\d+)\1/)>=0;){var m=RegExp.$1,n=RegExp.$2;j="K"===m?c.gHtmlBlocks[n]:l?d.subParser("encodeCode")(c.ghCodeBlocks[n].text):c.ghCodeBlocks[n].codeblock,j=j.replace(/\$/g,"$$$$"),k=k.replace(/(\n\n)?~(K|G)\d+\2(\n\n)?/,j),/^]*>\s*]*>/.test(k)&&(l=!0)}f[h]=k}return a=f.join("\n\n"),a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,""),c.converter._dispatch("paragraphs.after",a,b,c)}),d.subParser("runExtension",function(a,b,c,d){"use strict";if(a.filter)b=a.filter(b,d.converter,c);else if(a.regex){var e=a.regex;!e instanceof RegExp&&(e=new RegExp(e,"g")),b=b.replace(e,a.replace)}return b}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=c.converter._dispatch("spanGamut.before",a,b,c),a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=d.subParser("strikethrough")(a,b,c),a=a.replace(/ +\n/g,"
    \n"),a=c.converter._dispatch("spanGamut.after",a,b,c)}),d.subParser("strikethrough",function(a,b,c){"use strict";return b.strikethrough&&(a=c.converter._dispatch("strikethrough.before",a,b,c),a=a.replace(/(?:~T){2}([\s\S]+?)(?:~T){2}/g,"$1"),a=c.converter._dispatch("strikethrough.after",a,b,c)),a}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"use strict";var e=/^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm;return a+="~0",a=a.replace(e,function(a,e,f,g,h,i,j){return e=e.toLowerCase(),c.gUrls[e]=d.subParser("encodeAmpsAndAngles")(f),i?i+j:(j&&(c.gTitles[e]=j.replace(/"|'/g,""")),b.parseImgDimensions&&g&&h&&(c.gDimensions[e]={width:g,height:h}),"")}),a=a.replace(/~0/,"")}),d.subParser("tables",function(a,b,c){"use strict";function e(a){return/^:[ \t]*--*$/.test(a)?' style="text-align:left;"':/^--*[ \t]*:[ \t]*$/.test(a)?' style="text-align:right;"':/^:[ \t]*--*[ \t]*:$/.test(a)?' style="text-align:center;"':""}function f(a,e){var f="";return a=a.trim(),b.tableHeaderId&&(f=' id="'+a.replace(/ /g,"_").toLowerCase()+'"'),a=d.subParser("spanGamut")(a,b,c),""+a+"\n"}function g(a,e){var f=d.subParser("spanGamut")(a,b,c);return""+f+"\n"}function h(a,b){for(var c="\n\n\n",d=a.length,e=0;d>e;++e)c+=a[e];for(c+="\n\n\n",e=0;e\n";for(var f=0;d>f;++f)c+=b[e][f];c+="\n"}return c+="\n
    \n"}if(!b.tables)return a;var i=/^[ \t]{0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm;return a=c.converter._dispatch("tables.before",a,b,c),a=a.replace(i,function(a){var b,c=a.split("\n");for(b=0;bj'adore !

    ", + "format" : "text/html", + "language" : "fr" + }, + "target": "http://example.org/photo1" +} \ No newline at end of file diff --git a/testing/web-platform/tests/annotation-model/tools/samples/example6.json b/testing/web-platform/tests/annotation-model/tools/samples/example6.json new file mode 100644 index 000000000000..9ae0d88eaeeb --- /dev/null +++ b/testing/web-platform/tests/annotation-model/tools/samples/example6.json @@ -0,0 +1,7 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno6", + "type":"Annotation", + "bodyValue": "Comment text", + "target": "http://example.org/target1" +} \ No newline at end of file diff --git a/testing/web-platform/tests/annotation-model/tools/samples/example7.json b/testing/web-platform/tests/annotation-model/tools/samples/example7.json new file mode 100644 index 000000000000..9f821d22fb2b --- /dev/null +++ b/testing/web-platform/tests/annotation-model/tools/samples/example7.json @@ -0,0 +1,11 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno7", + "type":"Annotation", + "body": { + "type": "TextualBody", + "value": "Comment text", + "format": "text/plain" + }, + "target": "http://example.org/target1" +} \ No newline at end of file diff --git a/testing/web-platform/tests/annotation-model/tools/samples/example8.json b/testing/web-platform/tests/annotation-model/tools/samples/example8.json new file mode 100644 index 000000000000..3187af65746a --- /dev/null +++ b/testing/web-platform/tests/annotation-model/tools/samples/example8.json @@ -0,0 +1,6 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno8", + "type": "Annotation", + "target": "http://example.org/ebook1" +} \ No newline at end of file diff --git a/testing/web-platform/tests/annotation-model/tools/samples/example9.json b/testing/web-platform/tests/annotation-model/tools/samples/example9.json new file mode 100644 index 000000000000..8d72da3563f4 --- /dev/null +++ b/testing/web-platform/tests/annotation-model/tools/samples/example9.json @@ -0,0 +1,16 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno9", + "type": "Annotation", + "body": [ + "http://example.org/description1", + { + "type": "TextualBody", + "value": "tag1" + } + ], + "target": [ + "http://example.org/image1", + "http://example.org/image2" + ] +} \ No newline at end of file diff --git a/testing/web-platform/tests/annotation-model/tools/template_js b/testing/web-platform/tests/annotation-model/tools/template_js new file mode 100644 index 000000000000..29b76b323f1c --- /dev/null +++ b/testing/web-platform/tests/annotation-model/tools/template_js @@ -0,0 +1,36 @@ + + + +{{TESTTITLE}} + + + + + + + +
    +

    The following assertions are being evaluated:

    +
    + + diff --git a/testing/web-platform/tests/annotation-model/tools/template b/testing/web-platform/tests/annotation-model/tools/template_manual similarity index 86% rename from testing/web-platform/tests/annotation-model/tools/template rename to testing/web-platform/tests/annotation-model/tools/template_manual index 9806475b025c..01bac92a824f 100644 --- a/testing/web-platform/tests/annotation-model/tools/template +++ b/testing/web-platform/tests/annotation-model/tools/template_manual @@ -5,6 +5,7 @@ + -

    Fill the textarea below with JSON output from your annotation client +

    Fill the textarea below with JSON output from your annotation client implementation that supports the following criteria:

    Specifically, the following assertions will be evaluated:

    - +

    diff --git a/testing/web-platform/tests/app-uri/appURI_test.html b/testing/web-platform/tests/app-uri/appURI_test.html index feb35d57e829..722c210b5453 100644 --- a/testing/web-platform/tests/app-uri/appURI_test.html +++ b/testing/web-platform/tests/app-uri/appURI_test.html @@ -2,8 +2,8 @@ app:URI compliance tests - - + + + + I'm an HTML <title>! + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html new file mode 100644 index 000000000000..a8b0dc56ac9b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html @@ -0,0 +1,176 @@ + + + + animate-dom-01-f-manual.svg + + + +

    Source SVG: animate-dom-01-f-manual.svg

    + + + + + + + + + + $RCSfile: animate-dom-01-f.svg,v $ + + + + + + + + + + Testing SVGAnimationElement.getStartTime() + + Test running... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Called before a lone interval starts + Called on an animation with no intervals + Called during an interval + Called after a lone interval ends, fill="remove" + Called after a lone interval ends, fill="freeze" + Called with multiple begin values + Called with multiple begin values including "indefinite" + Called with syncbase begin value + + + + + $Revision: 1.11 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html new file mode 100644 index 000000000000..024044443a70 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html @@ -0,0 +1,66 @@ + + + + animate-dom-02-f-manual.svg + + + +

    Source SVG: animate-dom-02-f-manual.svg

    + + + + + + + + + + $RCSfile: animate-dom-02-f.svg,v $ + + + + + + + + + + Testing ElementTimeControl method return values + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html new file mode 100644 index 000000000000..2fa739b96532 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html @@ -0,0 +1,82 @@ + + + + animate-elem-02-t-manual.svg + + + +

    Source SVG: animate-elem-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-02-t.svg,v $ + + + + + + + + + + + + + + + + + anim.5 + + + + + + + + + anim.6 + + + + + + + + + anim.7 + + + + + + + + + anim.8 + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html new file mode 100644 index 000000000000..42a8cba62551 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html @@ -0,0 +1,70 @@ + + + + animate-elem-03-t-manual.svg + + + +

    Source SVG: animate-elem-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + Sample 123 + Sample 123 + Sample 123 + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html new file mode 100644 index 000000000000..74a11744efa5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html @@ -0,0 +1,56 @@ + + + + animate-elem-04-t-manual.svg + + + +

    Source SVG: animate-elem-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-04-t.svg,v $ + + + + + + + + + + Test a motion path + 'from'/'to' attribute. + + + 0 sec. + + 3+ sec. + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html new file mode 100644 index 000000000000..424d9cdff85e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html @@ -0,0 +1,58 @@ + + + + animate-elem-05-t-manual.svg + + + +

    Source SVG: animate-elem-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-05-t.svg,v $ + + + + + + + + + + Test a motion path + 'values' attribute. + + + 0 sec. + + 3+ + + 6+ + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html new file mode 100644 index 000000000000..1b6c7becd763 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html @@ -0,0 +1,56 @@ + + + + animate-elem-06-t-manual.svg + + + +

    Source SVG: animate-elem-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-06-t.svg,v $ + + + + + + + + + + Test a motion path + 'path' attribute. + + + 0 sec. + + 6+ sec. + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html new file mode 100644 index 000000000000..df3082557932 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html @@ -0,0 +1,58 @@ + + + + animate-elem-07-t-manual.svg + + + +

    Source SVG: animate-elem-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-07-t.svg,v $ + + + + + + + + + + Test a motion path + 'mpath' element. + + + 0 sec. + + 6+ sec. + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html new file mode 100644 index 000000000000..7e2891dc8e27 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html @@ -0,0 +1,65 @@ + + + + animate-elem-08-t-manual.svg + + + +

    Source SVG: animate-elem-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-08-t.svg,v $ + + + + + + + + + Test rotate='auto' and rotate='auto-reverse' + + + + 0 sec. + + 6+ sec. + + + + rotate='auto' + + + 0 sec. + + 6+ sec. + + + + rotate='auto-reverse' + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html new file mode 100644 index 000000000000..fcdb741ff694 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html @@ -0,0 +1,77 @@ + + + + animate-elem-09-t-manual.svg + + + +

    Source SVG: animate-elem-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-09-t.svg,v $ + + + + + + + + + + + 0-2 sec. + 2-4 sec. + 4-6 sec. + 6+ sec. + + + + + + + + + + + + + 0-2 sec. + 2-4 sec. + 4-6 sec. + 6+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html new file mode 100644 index 000000000000..ebcbcb510a1c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html @@ -0,0 +1,78 @@ + + + + animate-elem-10-t-manual.svg + + + +

    Source SVG: animate-elem-10-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-10-t.svg,v $ + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html new file mode 100644 index 000000000000..e357d45e19f9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html @@ -0,0 +1,77 @@ + + + + animate-elem-11-t-manual.svg + + + +

    Source SVG: animate-elem-11-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-11-t.svg,v $ + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html new file mode 100644 index 000000000000..f5f459a76125 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html @@ -0,0 +1,77 @@ + + + + animate-elem-12-t-manual.svg + + + +

    Source SVG: animate-elem-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-12-t.svg,v $ + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html new file mode 100644 index 000000000000..22891068bfc1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html @@ -0,0 +1,86 @@ + + + + animate-elem-13-t-manual.svg + + + +

    Source SVG: animate-elem-13-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-13-t.svg,v $ + + + + + + + + + + + + 0-2 sec. + 5+ sec. + + + + + from to + + + + + + from by + + + + + + by + + + + + + to + + + + + + values + + + + + + values + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html new file mode 100644 index 000000000000..da196799e354 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-14-t-manual.svg + + + +

    Source SVG: animate-elem-14-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-14-t.svg,v $ + + + + + + + + + calcMode="discrete" + keyTimes="0;.2;.4;.6" + + + Time (s): + 0 + + 2 + + 4 + + 6 + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html new file mode 100644 index 000000000000..047abbefa040 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-15-t-manual.svg + + + +

    Source SVG: animate-elem-15-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-15-t.svg,v $ + + + + + + + + + calcMode="paced" + keyTimes="0;.25;.5;1" + + + Time (s): + 0 + + 1.5 + + 4 + + 9 + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html new file mode 100644 index 000000000000..5148a5cfb688 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-17-t-manual.svg + + + +

    Source SVG: animate-elem-17-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-17-t.svg,v $ + + + + + + + + + calcMode="spline" + keyTimes="0;.25;.5;1" + + + Time (s): + 0 + + 2 + + 4 + + 8 + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html new file mode 100644 index 000000000000..75f05ae32945 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-19-t-manual.svg + + + +

    Source SVG: animate-elem-19-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-19-t.svg,v $ + + + + + + + + + calcMode="linear" + keyTimes="0;.5;.75;1" + + + Time (s): + 0 + + 4 + + 6 + + 8 + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html new file mode 100644 index 000000000000..950c3568c618 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html @@ -0,0 +1,59 @@ + + + + animate-elem-20-t-manual.svg + + + +

    Source SVG: animate-elem-20-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-20-t.svg,v $ + + + + + + + + + + + + + + + + + Fade in + + + + Fade out + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html new file mode 100644 index 000000000000..c4b1f5a5dfbb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html @@ -0,0 +1,67 @@ + + + + animate-elem-21-t-manual.svg + + + +

    Source SVG: animate-elem-21-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-21-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + Fade in + + + + Fade out + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html new file mode 100644 index 000000000000..dfea322d4058 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html @@ -0,0 +1,63 @@ + + + + animate-elem-22-b-manual.svg + + + +

    Source SVG: animate-elem-22-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-22-b.svg,v $ + + + + + + + + + + + Yellow rect at time 0s + + Yellow rect at time 3s + + Yellow rect at time 9s + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html new file mode 100644 index 000000000000..a39fe7689009 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html @@ -0,0 +1,64 @@ + + + + animate-elem-23-t-manual.svg + + + +

    Source SVG: animate-elem-23-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-23-t.svg,v $ + + + + + + + + + + + Color at 3s + + + Color at 6s + + + Color at 9s + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html new file mode 100644 index 000000000000..922125adb9b9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html @@ -0,0 +1,105 @@ + + + + animate-elem-24-t-manual.svg + + + +

    Source SVG: animate-elem-24-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-24-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text from 0s to 3s + Text at 6s + Text at 9s + + + + It's alive! + It's alive! + It's alive! + + + + + + It's alive! + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html new file mode 100644 index 000000000000..ffa132331db6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html @@ -0,0 +1,61 @@ + + + + animate-elem-25-t-manual.svg + + + +

    Source SVG: animate-elem-25-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-25-t.svg,v $ + + + + + + + + + Test animation options for specifying the target attribute/property. + + 0-3 sec. + + at 6 sec. + + + + + 0-6 sec. + + at 9 sec. + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html new file mode 100644 index 000000000000..b5474f891287 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-26-t-manual.svg + + + +

    Source SVG: animate-elem-26-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-26-t.svg,v $ + + + + + + + + + + + + + + + + anim. 1 + + + + + + + + + anim. 2 + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html new file mode 100644 index 000000000000..2cd182740dd4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html @@ -0,0 +1,60 @@ + + + + animate-elem-27-t-manual.svg + + + +

    Source SVG: animate-elem-27-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-27-t.svg,v $ + + + + + + + + + Test animation options for specifying the target element. + + 0 to 3 sec. + + at 6 sec. + + + + 0 to 6 sec. + + at 9 sec. + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html new file mode 100644 index 000000000000..0dd94c7d199d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html @@ -0,0 +1,54 @@ + + + + animate-elem-28-t-manual.svg + + + +

    Source SVG: animate-elem-28-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-28-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html new file mode 100644 index 000000000000..761f538b25b3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html @@ -0,0 +1,60 @@ + + + + animate-elem-29-b-manual.svg + + + +

    Source SVG: animate-elem-29-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-29-b.svg,v $ + + + + + + + + + + + + + + + + + + Fade in + + + + Fade out + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html new file mode 100644 index 000000000000..554946432feb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html @@ -0,0 +1,146 @@ + + + + animate-elem-30-t-manual.svg + + + +

    Source SVG: animate-elem-30-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-30-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html new file mode 100644 index 000000000000..37f3d463e6ef --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html @@ -0,0 +1,118 @@ + + + + animate-elem-31-t-manual.svg + + + +

    Source SVG: animate-elem-31-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-31-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + display + visibility + Test of display attribute animation. + Circles with same color should be visible at same time. + + Test running... + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html new file mode 100644 index 000000000000..bcd4ca00e60e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html @@ -0,0 +1,139 @@ + + + + animate-elem-32-t-manual.svg + + + +

    Source SVG: animate-elem-32-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-32-t.svg,v $ + + + + + + + + + + + + + Stroked + Unstroked + Zero width rect + Zero height rect + Zero radius circle + Zero x radius ellipse + Zero y radius ellipse + Zero length line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html new file mode 100644 index 000000000000..b9a460041cdc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html @@ -0,0 +1,131 @@ + + + + animate-elem-33-t-manual.svg + + + +

    Source SVG: animate-elem-33-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-33-t.svg,v $ + + + + + + + + + + + 0 + 0.8-3.2 + 4 + + + + + + + + + + + + + + + 0 + 2 + 2 + 4 + + + + + + + + + + + + + + + + + + 3 + 2.6 + 0 + 1 + 4 + 1.4 + + + + + + + + + + + + + + + + 3 + 2.6 + 0 + 1 + 4 + 1.4 + + + + + + + + + + + + + + Test of keyPoints and keyTimes. + Number indicates the circle's passing time in seconds. + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html new file mode 100644 index 000000000000..dccc5a38c718 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html @@ -0,0 +1,92 @@ + + + + animate-elem-34-t-manual.svg + + + +

    Source SVG: animate-elem-34-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-34-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on: 'points' and 'fill-rule'. + Digit should match outline at indicated time. + Filled square should follow morphing digit discretely. + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html new file mode 100644 index 000000000000..39ef7d68983b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html @@ -0,0 +1,120 @@ + + + + animate-elem-35-t-manual.svg + + + +

    Source SVG: animate-elem-35-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-35-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on: 'stroke-dasharray', 'stroke-dashoffset', + 'stroke-miterlimit', 'stroke-linecap' and 'stroke-linejoin'. + + + $Revision: 1.8 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html new file mode 100644 index 000000000000..0073cff7ae6b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html @@ -0,0 +1,134 @@ + + + + animate-elem-36-t-manual.svg + + + +

    Source SVG: animate-elem-36-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-36-t.svg,v $ + + + + + + + + + <animateTransform> on structure, + hyperlinking and text elements + + + + + + + + + + + + + + + <g> + + + + + + + + + + + <use> + + + + + + + <image> + + + + + + + + + + + + + + + + + + <switch> + + + + + + + + + + + + + + + + <a> + + + + + + + + + + + + + + 123 + + + + <text> + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html new file mode 100644 index 000000000000..1f720042bc7a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html @@ -0,0 +1,88 @@ + + + + animate-elem-37-t-manual.svg + + + +

    Source SVG: animate-elem-37-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-37-t.svg,v $ + + + + + + + + + <animateTransform> shape elements + + + + + <path> + + + + + + <rect> + + + + + + <circle> + + + + + + <ellipse> + + + + + + <line> + + + + + + <polyline> + + + + + + <polygon> + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html new file mode 100644 index 000000000000..9e9c151298db --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html @@ -0,0 +1,80 @@ + + + + animate-elem-38-t-manual.svg + + + +

    Source SVG: animate-elem-38-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-38-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on: 'viewBox'. Flashing frame should + only appear at the edges of the SVG element. + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html new file mode 100644 index 000000000000..44cc438c7e87 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html @@ -0,0 +1,114 @@ + + + + animate-elem-39-t-manual.svg + + + +

    Source SVG: animate-elem-39-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-39-t.svg,v $ + + + + + + + + + <animate> on xlink:href + + + <set> + + + + + + 38 + 02 + + + + + <a> + + + + + + + <image> + + + + + Use A + Use B + Use C + + + + + + + <use> + + + + <animate> + + + + + + 09 + 03 + + + + + <a> + + + + + + + <image> + + + + + + + + <use> + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html new file mode 100644 index 000000000000..0e8682825a70 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html @@ -0,0 +1,200 @@ + + + + animate-elem-40-t-manual.svg + + + +

    Source SVG: animate-elem-40-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-40-t.svg,v $ + + + + + + + + + <animate> of x/y/width/height + + + + + + + + + + + + + + + + + + + + + + + + + + + + x/y on <use> + + + + + + + + + + + x/y on <image> + + + + + + + + + + + x/y on <rect> + + + + + + + + + + + + x/y on <rect> + + + + + + + + + + + + + + 123 + + + + + + + x/y on <text> + + + + + + + + + + + + + + + + + + 12 + + + + + + + x/y on <text>(2) + + + + + + + + + + + + + + + + + + + + + width/height + on <image> + + + + + + + + + + + + + + + + + + + + + + width/height + on <rect> + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html new file mode 100644 index 000000000000..ff2a8c3f7590 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html @@ -0,0 +1,393 @@ + + + + animate-elem-41-t-manual.svg + + + +

    Source SVG: animate-elem-41-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-41-t.svg,v $ + + + + + + + + + graphics + + + fill + fill-rule + stroke + stroke-width + stroke-linecap + stroke-linejoin + stroke-miterlimit + stroke-dashoffset + display + visibility + color + + + + element + <g> + <a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html new file mode 100644 index 000000000000..6a58cc71f8d9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html @@ -0,0 +1,72 @@ + + + + animate-elem-44-t-manual.svg + + + +

    Source SVG: animate-elem-44-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-44-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on the 'd' + attribute of path. + + Digit should match outline at indicated time. + Filled circle should follow morphing digit discretely. + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html new file mode 100644 index 000000000000..86d81826c64b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html @@ -0,0 +1,239 @@ + + + + animate-elem-46-t-manual.svg + + + +

    Source SVG: animate-elem-46-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-46-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-anchor + font-size + font-family + font-style + font-weight + + + + <text> + <g> + <a> + + + + + + + A + + A + + A + + + + + + + + + + + + A + + + + + + + + A + + + + + + A + + + + + + + A + A + A + + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + A + A + A + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + A + A + A + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + + A + A + A + + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html new file mode 100644 index 000000000000..83430f9f9d35 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html @@ -0,0 +1,78 @@ + + + + animate-elem-52-t-manual.svg + + + +

    Source SVG: animate-elem-52-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-52-t.svg,v $ + + + + + + + + + A + B + C + D + + + + + click A + + + + + click B+2 + + + + + click C+4 + + + + + never + + + + + + + Test of Eventbase targets. + Note that clicking rect D should give no result. + Clicking a rectangle should change its color at the + time for the click + delay as indicated in each rect. + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html new file mode 100644 index 000000000000..1b1bebc7a8be --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html @@ -0,0 +1,88 @@ + + + + animate-elem-53-t-manual.svg + + + +

    Source SVG: animate-elem-53-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-53-t.svg,v $ + + + + + + + + + + + + + + 0s + + 3s + + 6s + + 9s + + + + + + + + + + + + + 0s + + 2.22s + + 6.66s + + 8s + + + + + + + + + + + Animation on: 'points' with 'calc-mode'. + Coloblue and black squares should match at indicated time. + Same coloblue squares (green and blue) should match at all times + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html new file mode 100644 index 000000000000..057df82b79cb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html @@ -0,0 +1,157 @@ + + + + animate-elem-60-t-manual.svg + + + +

    Source SVG: animate-elem-60-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-60-t.svg,v $ + + + + + + + + + begin + + + unspecified + offset + event base + sync base + indefinite + repeat() + accessKey() + wallclock() + + + + 0s + 1s + 2s + 3s + 4s + 5s + 6s + 7s + 8s + 0s + 1s + 2s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html new file mode 100644 index 000000000000..c1abfb35e288 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html @@ -0,0 +1,115 @@ + + + + animate-elem-61-t-manual.svg + + + +

    Source SVG: animate-elem-61-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-61-t.svg,v $ + + + + + + + + + multiple begin + + + 2 offsets + 2 sync bases + 2 repeat + 2 event base + 2 accessKeys + misc + + + + 0-1s + 2s-4s + > 5s + + 1-2s + 4-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html new file mode 100644 index 000000000000..9154bf0ea95f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html @@ -0,0 +1,157 @@ + + + + animate-elem-62-t-manual.svg + + + +

    Source SVG: animate-elem-62-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-62-t.svg,v $ + + + + + + + + + end + + + unspecified + offset + event base + sync base + indefinite + repeat() + accessKey() + wallclock() + + + + 0s + 1s + 2s + 3s + 4s + 5s + 6s + 7s + 8s + 0s + 1s + 2s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html new file mode 100644 index 000000000000..287450592b6e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html @@ -0,0 +1,122 @@ + + + + animate-elem-63-t-manual.svg + + + +

    Source SVG: animate-elem-63-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-63-t.svg,v $ + + + + + + + + + multiple end + + + 2 offsets + 2 sync bases + 2 repeat + 2 event base + 2 accessKeys + misc + + + + 0-1s + 2s-4s + > 5s + + 1-2s + 4-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html new file mode 100644 index 000000000000..4a6871f47eb5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html @@ -0,0 +1,100 @@ + + + + animate-elem-64-t-manual.svg + + + +

    Source SVG: animate-elem-64-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-64-t.svg,v $ + + + + + + + + + dur + + + clock value + indefinite + media + + + + > 2s + 0s-2s + + + never + > 0s + + + + never + > 0s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html new file mode 100644 index 000000000000..ae4d9d1ab154 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html @@ -0,0 +1,146 @@ + + + + animate-elem-65-t-manual.svg + + + +

    Source SVG: animate-elem-65-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-65-t.svg,v $ + + + + + + + + + min + + + + + no min / media + invalid min + min < active dur + min > active dur + min < repeat dur + min > repeat dur, remove + min > repeat dur, freeze + + + + > 5s + 0s-5s + + + never + > 0s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html new file mode 100644 index 000000000000..35674a7ef22a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html @@ -0,0 +1,139 @@ + + + + animate-elem-66-t-manual.svg + + + +

    Source SVG: animate-elem-66-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-66-t.svg,v $ + + + + + + + + + max + min & max + + + no max / media + invalid max values + max < active dur + max > active dur + min < max + min = max + min > max (both ignored) + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html new file mode 100644 index 000000000000..1975b64f51f6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html @@ -0,0 +1,123 @@ + + + + animate-elem-67-t-manual.svg + + + +

    Source SVG: animate-elem-67-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-67-t.svg,v $ + + + + + + + + + restart + + + + + no restart (defaults to always) + restart="always" + restart="whenNotActive" + restart="never" + reference + + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html new file mode 100644 index 000000000000..927dfe08eea7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html @@ -0,0 +1,102 @@ + + + + animate-elem-68-t-manual.svg + + + +

    Source SVG: animate-elem-68-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-68-t.svg,v $ + + + + + + + + + repeatCount + + + dur=5s repeatCount unspecified + dur=1s repeatCount=5 + dur=10s repeatCount=0.5 + dur=1s repeatCount=indefinite + end=5s + + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html new file mode 100644 index 000000000000..7b28226b3824 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html @@ -0,0 +1,113 @@ + + + + animate-elem-69-t-manual.svg + + + +

    Source SVG: animate-elem-69-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-69-t.svg,v $ + + + + + + + + + repeatDur + + + dur=5s repeatDur unspecified + dur=1s repeatDur=5s + dur=0.5s repeatDur=5s + dur=1s repeatDur=indefinite + end=5s + dur=0.7s repeatDur=5s + + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html new file mode 100644 index 000000000000..5754fdf37868 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html @@ -0,0 +1,105 @@ + + + + animate-elem-70-t-manual.svg + + + +

    Source SVG: animate-elem-70-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-70-t.svg,v $ + + + + + + + + + fill + + + fill unspecified (remove) + fill=remove + fill=freeze (with restart) + fill=freeze (no restart) + + + + never + here + always + here + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html new file mode 100644 index 000000000000..8cfc4cbd8295 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html @@ -0,0 +1,287 @@ + + + + animate-elem-77-t-manual.svg + + + +

    Source SVG: animate-elem-77-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-77-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + + + transform + text-anchor + font-size + font-family + font-style + font-weight + + + + <text> + <g> + <a> + + + + A + + + + + A + A + + + + + + + + + A + + + + + + A + + + + + A + + + + + + + A + A + + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + A + A + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + A + A + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + + A + A + + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + A + A + + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html new file mode 100644 index 000000000000..675d0c74a6cc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html @@ -0,0 +1,423 @@ + + + + animate-elem-78-t-manual.svg + + + +

    Source SVG: animate-elem-78-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-78-t.svg,v $ + + + + + + + + + graphics + + + fill + fill-rule + stroke + stroke-width + stroke-linecap + stroke-linejoin + stroke-miterlimit + stroke-dashoffset + display + visibility + color + + + + 'Basic Shape' + <g> + <a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html new file mode 100644 index 000000000000..f72ab64f5a0b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html @@ -0,0 +1,252 @@ + + + + animate-elem-80-t-manual.svg + + + +

    Source SVG: animate-elem-80-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-80-t.svg,v $ + + + + + + + + + <animateTransform> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + type=rotate + + + + + + + + + + + + + + + + + + + type=skewX + + + + + + + + + + + + + + + + + + + + + + type=skewY + + + + + + + + + + + + + + + + + + + + + + + type=scale + (sx and sy) + + + + + + + + + + + + + + + + + + + + + + + + + + + type=rotate + (with cx/cy) + + + + + + + + + + + + + + + + + + + + + + + + + + + type=translate + (tx only) + + + + + + + + + + + + + + + + + + + + + + + + + + + type=translate + (tx and ty) + + + + + + + + + + + + + + + + + + + + + + + type=scale + (sx only) + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html new file mode 100644 index 000000000000..0198df2524b0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html @@ -0,0 +1,107 @@ + + + + animate-elem-81-t-manual.svg + + + +

    Source SVG: animate-elem-81-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-81-t.svg,v $ + + + + + + + + + <animateTransform> + + + + + + + + + + + + + + + additive=replace + + + + + + + + + additive=sum + + + + + + + + accumulate=none + additive=replace + + + + + + + + accumulate=sum + additive=replace + + + + + + + + accumulate=none + additive=sum + + + + + + + + accumulate=sum + additive=sum + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html new file mode 100644 index 000000000000..bdbff9d35e68 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html @@ -0,0 +1,213 @@ + + + + animate-elem-82-t-manual.svg + + + +

    Source SVG: animate-elem-82-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-82-t.svg,v $ + + + + + + + + + <animateTransform> + + + + + + + + + + + + + + + + + + + + + + + + + + same rotation + center + + + + + + + + + + + + + + + + + + + different rotation + centers + + + + + + + + + + + + + + + + + + + paced translation + + + + + + + + + + + + + + + + + + + linear translation + + + + + + + + + + + + + + + + + + + + + paced scale + + + + + + + + + + + + + + + + + + + + linear scale + + + + + + + + + + + + + + + + + + + paced rotation + + + + + + + + + + + + + + + + + + + linear rotation + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html new file mode 100644 index 000000000000..ed0bf103cafe --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html @@ -0,0 +1,161 @@ + + + + animate-elem-83-t-manual.svg + + + +

    Source SVG: animate-elem-83-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-83-t.svg,v $ + + + + + + + + + <animate> on <path>'s d attribute + + + + + + + + + + + + + + + + + + + + + + + + #1: from-to animation + + + + + + + + + + + + + + + + #2: to animation + + + + + + + + + + + + + + + + + + + + #3: values animation + + + + + + + + + + + + + + + + #4: from-to animation + compatible H/h, V/v, + L/l segments + + + + + + + + + + + + + + + + #5: from-to animation + compatible C/c + s/S segments + + + + + + + + + + + + + + + + #6: from-to animation + compatible Q/q, T/t + segments + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html new file mode 100644 index 000000000000..f451aa14fb76 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html @@ -0,0 +1,70 @@ + + + + animate-elem-84-t-manual.svg + + + +

    Source SVG: animate-elem-84-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-84-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + currentColor + green + inherit + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html new file mode 100644 index 000000000000..ccb5a36088d6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html @@ -0,0 +1,83 @@ + + + + animate-elem-85-t-manual.svg + + + +

    Source SVG: animate-elem-85-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-85-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html new file mode 100644 index 000000000000..605adfd8900d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html @@ -0,0 +1,71 @@ + + + + animate-elem-86-t-manual.svg + + + +

    Source SVG: animate-elem-86-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-86-t.svg,v $ + + + + + + + + + fill="freeze" with discrete calcMode + + + + discrete + + + + > 2s + 0s-2s + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html new file mode 100644 index 000000000000..6be01ce816c3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html @@ -0,0 +1,63 @@ + + + + animate-elem-87-t-manual.svg + + + +

    Source SVG: animate-elem-87-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-elem-87-t.svg,v $ + + + + + + + + + + Test zero value of a scale transform animation + + + + + + + Reference + + + + + + + <animateTransform type='scale' by='1'/> + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html new file mode 100644 index 000000000000..83965435e79b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html @@ -0,0 +1,52 @@ + + + + animate-elem-88-t-manual.svg + + + +

    Source SVG: animate-elem-88-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-elem-88-t.svg,v $ + + + + + + + + + + Test values attribute list syntax + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html new file mode 100644 index 000000000000..07885c3a8c81 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html @@ -0,0 +1,94 @@ + + + + animate-elem-89-t-manual.svg + + + +

    Source SVG: animate-elem-89-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-89-t.svg,v $ + + + + + + + + + + + + + 0 sec. + 3 sec. + 6 sec. + 9+ sec. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html new file mode 100644 index 000000000000..6141e62c9caf --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html @@ -0,0 +1,71 @@ + + + + animate-elem-90-b-manual.svg + + + +

    Source SVG: animate-elem-90-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-90-b.svg,v $ + + + + + + + + + + + + Color at start + + + Color at 3s + + + Color at 5s + + + + + + + + + + + + CSS not supported + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html new file mode 100644 index 000000000000..fe95c822e0a6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html @@ -0,0 +1,186 @@ + + + + animate-elem-91-t-manual.svg + + + +

    Source SVG: animate-elem-91-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-91-t.svg,v $ + + + + + + + + + + Testing <animate to=""> with non-interpolable attributes + + + + 0s-2s + > 2s + + + + (reference) + + + + + + + + + + + + class + + + + + + + + + + + clipPathUnits + + + + + + + + + + + + + in + + + + + + + + + + + + + + + + + + + + + + + preserveAspectRatio + + + + + + + + + + + + + + + + + + + spreadMethod + + + + + + + + + + + + + + + + + + + + + + + xlink:href + + + + + + + + + + + + + + + display + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html new file mode 100644 index 000000000000..c785fccd8e49 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html @@ -0,0 +1,103 @@ + + + + animate-elem-92-t-manual.svg + + + +

    Source SVG: animate-elem-92-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-92-t.svg,v $ + + + + + + + + + discrete to-animation + + + without freezing + with freezing + with keyTimes + + + + 0s-2s + > 4s + 2s-4s + + + 0s-2s + > 2s + + + + 0s-2s + > 2s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html new file mode 100644 index 000000000000..879aa5221364 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html @@ -0,0 +1,94 @@ + + + + animate-interact-events-01-t-manual.svg + + + +

    Source SVG: animate-interact-events-01-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-events-01-t.svg,v $ + + + + + + + + + + + + + + + + + Shadow tree event listener chain + + + + Case 1: on mouseover all squares must turn blue + + + + + + + + + Case 2: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + + + + + Case 3: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + + + Case 4: on mouseover all squares must turn blue + and on mousedown a black stroke must appear on reference square + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html new file mode 100644 index 000000000000..0bcb3122237a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html @@ -0,0 +1,265 @@ + + + + animate-interact-pevents-01-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-interact-pevents-01-t.svg,v $ + + + + + + + + + + Test pointer-events on text + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + + + + + + + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + + + + + + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + + + + + + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html new file mode 100644 index 000000000000..d0790a299a1f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html @@ -0,0 +1,109 @@ + + + + animate-interact-pevents-02-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-02-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-pevents-02-t.svg,v $ + + + + + + + + + + + + Testing pointer-events and rendering order + Rectangles should turn RED on mouseover + Ovals should turn RED if Pointer-Events are set to "ALL" + + + + Change "Pointer-Events" of + ovals from "ALL" to "NONE" + + + + + Purple ovals have "Pointer-Events" set to "ALL". + Purple ovals have Pointer-Events set to "NONE". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html new file mode 100644 index 000000000000..2ed0f2e7b218 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html @@ -0,0 +1,189 @@ + + + + animate-interact-pevents-03-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-03-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-pevents-03-t.svg,v $ + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + + + + + + + + + + default : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + visiblePainted : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + + + + visibleFill : + only fill of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + + + + visibleStroke : + only stroke of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + + + + visible : + fill and stroke of rects 1, 2 and 3 must trigger + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html new file mode 100644 index 000000000000..64f956ea2e0b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html @@ -0,0 +1,180 @@ + + + + animate-interact-pevents-04-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-04-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-pevents-04-t.svg,v $ + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + + + + + + + + + + painted : + fill and stroke of rects 1, 3 and 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + fill : + fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + stroke : + stroke of rects 1 to 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + all : + stroke and fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + none : + nothing is to trigger + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html new file mode 100644 index 000000000000..acdb407362d1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html @@ -0,0 +1,88 @@ + + + + animate-pservers-grad-01-b-manual.svg + + + +

    Source SVG: animate-pservers-grad-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-pservers-grad-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html new file mode 100644 index 000000000000..b01dd5475949 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html @@ -0,0 +1,70 @@ + + + + animate-script-elem-01-b-manual.svg + + + +

    Source SVG: animate-script-elem-01-b-manual.svg

    + + + + + + + + + + $RCSfile: animate-script-elem-01-b.svg,v $ + + + + + + + + + + Test that <script xlink:href=""> is not animatable + + + + + + Test script.href.animVal does not change + Test animating xlink:href="" does not load a script + + + + + + + + + + + $Revision: 1.1 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html new file mode 100644 index 000000000000..3ca95a754dfc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html @@ -0,0 +1,74 @@ + + + + animate-struct-dom-01-b-manual.svg + + + +

    Source SVG: animate-struct-dom-01-b-manual.svg

    + + + + + + + + + + $RCSfile: animate-struct-dom-01-b.svg,v $ + + + + + + + + + + Test getCurrentTime() and setCurrentTime() before timeline begin + + + + + + + + getCurrentTime + setCurrentTime + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html new file mode 100644 index 000000000000..9fbae2730183 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html @@ -0,0 +1,56 @@ + + + + color-prof-01-f-manual.svg + + + +

    Source SVG: color-prof-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prof-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + Basic test of ICC profile with an image. + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html new file mode 100644 index 000000000000..a9c4accc828a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html @@ -0,0 +1,69 @@ + + + + color-prop-01-b-manual.svg + + + +

    Source SVG: color-prop-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fill + stroke + stop-color + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html new file mode 100644 index 000000000000..42754474770b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html @@ -0,0 +1,99 @@ + + + + color-prop-02-f-manual.svg + + + +

    Source SVG: color-prop-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html new file mode 100644 index 000000000000..84c7b282957a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html @@ -0,0 +1,88 @@ + + + + color-prop-03-t-manual.svg + + + +

    Source SVG: color-prop-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html new file mode 100644 index 000000000000..68e9644de014 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html @@ -0,0 +1,84 @@ + + + + color-prop-04-t-manual.svg + + + +

    Source SVG: color-prop-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-04-t.svg,v $ + + + + + + + + + + + + + + + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Vestibulum pulvinar. Duis laoreet, nunc vitae facilisis + tristique, pede sem iaculis mi, non consectetuer lorem + libero et est. Donec imperdiet purus sed odio. Duis + venenatis tortor eu lectus. Suspendisse sed metus at + metus viverra ultricies. Mauris porttitor, justo a vulputate + + + + + Load + + Save + + + + + + + + File + Edit + + + + Lorem + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html new file mode 100644 index 000000000000..ce0752f553ee --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html @@ -0,0 +1,47 @@ + + + + color-prop-05-t-manual.svg + + + +

    Source SVG: color-prop-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-05-t.svg,v $ + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html new file mode 100644 index 000000000000..ebde81958d49 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html @@ -0,0 +1,64 @@ + + + + conform-viewers-02-f-manual.svg + + + +

    Source SVG: conform-viewers-02-f-manual.svg

    + + + + + + + + + + $RCSfile: conform-viewers-02-f.svg,v $ + + + + + + + + + Test data uri with svgz content + + FAILED + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html new file mode 100644 index 000000000000..0e7115ff9d39 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html @@ -0,0 +1,102 @@ + + + + conform-viewers-03-f-manual.svg + + + +

    Source SVG: conform-viewers-03-f-manual.svg

    + + + + + + + + + + $RCSfile: conform-viewers-03-f.svg,v $ + + + + + + + + + + + + + Generated prefix 1: ... + + + Status: No exceptions. + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html new file mode 100644 index 000000000000..806bfe74182a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html @@ -0,0 +1,69 @@ + + + + coords-coord-01-t-manual.svg + + + +

    Source SVG: coords-coord-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-coord-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html new file mode 100644 index 000000000000..685623789073 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html @@ -0,0 +1,69 @@ + + + + coords-coord-02-t-manual.svg + + + +

    Source SVG: coords-coord-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-coord-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html new file mode 100644 index 000000000000..d00af6e2fec2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html @@ -0,0 +1,103 @@ + + + + coords-dom-01-f-manual.svg + + + +

    Source SVG: coords-dom-01-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html new file mode 100644 index 000000000000..af8616b368e2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html @@ -0,0 +1,84 @@ + + + + coords-dom-02-f-manual.svg + + + +

    Source SVG: coords-dom-02-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html new file mode 100644 index 000000000000..15d373e1e5a9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html @@ -0,0 +1,99 @@ + + + + coords-dom-03-f-manual.svg + + + +

    Source SVG: coords-dom-03-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-03-f.svg,v $ + + + + + + + + + + Test that some methods taking an SVGMatrix take a copy of it + + + + + + SVGTransformList.createSVGTransformFromMatrix() + SVGSVGElement.createSVGTransformFromMatrix() + SVGTransform.setMatrix() + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html new file mode 100644 index 000000000000..4a722f8f84dd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html @@ -0,0 +1,155 @@ + + + + coords-dom-04-f-manual.svg + + + +

    Source SVG: coords-dom-04-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-04-f.svg,v $ + + + + + + + + + + + + + + + + + Scripting disabled + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html new file mode 100644 index 000000000000..ca656c65d243 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html @@ -0,0 +1,226 @@ + + + + coords-trans-01-b-manual.svg + + + +

    Source SVG: coords-trans-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + translate (50, 50) + + + + + rotate(-90) + + + + + skew x (45) + + + + + skew y (45) + + + + + scale (2) + + + + + + + + + + + + + + + + + + + + + + + + + + + scale(25, 95) and translate(2, 2) + + + + + scale(25, 95) then translate(2, 2) + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html new file mode 100644 index 000000000000..fd4bdad836d5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html @@ -0,0 +1,163 @@ + + + + coords-trans-02-t-manual.svg + + + +

    Source SVG: coords-trans-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + translate (50, 50) + + + + + rotate(-90) + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html new file mode 100644 index 000000000000..2d27a14c7f83 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html @@ -0,0 +1,86 @@ + + + + coords-trans-03-t-manual.svg + + + +

    Source SVG: coords-trans-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + skew x (45) + + + + + skew y (45) + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html new file mode 100644 index 000000000000..e3ba8cdd745e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html @@ -0,0 +1,75 @@ + + + + coords-trans-04-t-manual.svg + + + +

    Source SVG: coords-trans-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale (2) + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html new file mode 100644 index 000000000000..3404a4122211 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html @@ -0,0 +1,75 @@ + + + + coords-trans-05-t-manual.svg + + + +

    Source SVG: coords-trans-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-05-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale(25, 95) - translate(2, 2) + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html new file mode 100644 index 000000000000..5b784d7531c8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html @@ -0,0 +1,69 @@ + + + + coords-trans-06-t-manual.svg + + + +

    Source SVG: coords-trans-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + scale(25, 95) then translate(2, 2) + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html new file mode 100644 index 000000000000..183b8c7eb07d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html @@ -0,0 +1,57 @@ + + + + coords-trans-07-t-manual.svg + + + +

    Source SVG: coords-trans-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-07-t.svg,v $ + + + + + + + + + + + + + + rotate+translate + + + + + + translate+rotate + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html new file mode 100644 index 000000000000..5cdbd2c2e721 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html @@ -0,0 +1,63 @@ + + + + coords-trans-08-t-manual.svg + + + +

    Source SVG: coords-trans-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-08-t.svg,v $ + + + + + + + + + + + + + + + + + skewX(45)+skewY(45) + + + + + + + + + skewY(45)+skewX(45) + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html new file mode 100644 index 000000000000..8a38754d8ff5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html @@ -0,0 +1,89 @@ + + + + coords-trans-09-t-manual.svg + + + +

    Source SVG: coords-trans-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-09-t.svg,v $ + + + + + + + + + + + + + + + matrix(0 0 0 0 0 0) + + + + + + matrix(1 0 0 1 100 100) + + + + + + matrix(1.5 0 0 1.5 70 60) + + + + + + matrix(1 0 0.5 1 30 170) + + + + + + matrix(1 0.5 0 1 100 200) + + + + + + matrix(0 1 -1 0 450 0) + + + + + + matrix(1 0.8 0.8 1 300 220) + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html new file mode 100644 index 000000000000..1762d21fd10a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html @@ -0,0 +1,77 @@ + + + + coords-trans-10-f-manual.svg + + + +

    Source SVG: coords-trans-10-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-10-f.svg,v $ + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.9 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html new file mode 100644 index 000000000000..6b95f8b96986 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html @@ -0,0 +1,77 @@ + + + + coords-trans-11-f-manual.svg + + + +

    Source SVG: coords-trans-11-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-11-f.svg,v $ + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html new file mode 100644 index 000000000000..ce8f5e4474b7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html @@ -0,0 +1,79 @@ + + + + coords-trans-12-f-manual.svg + + + +

    Source SVG: coords-trans-12-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-12-f.svg,v $ + + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html new file mode 100644 index 000000000000..25b9a0fdf154 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html @@ -0,0 +1,77 @@ + + + + coords-trans-13-f-manual.svg + + + +

    Source SVG: coords-trans-13-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-13-f.svg,v $ + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html new file mode 100644 index 000000000000..9b663d023709 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html @@ -0,0 +1,79 @@ + + + + coords-trans-14-f-manual.svg + + + +

    Source SVG: coords-trans-14-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-14-f.svg,v $ + + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html new file mode 100644 index 000000000000..aabfb9961914 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html @@ -0,0 +1,83 @@ + + + + coords-transformattr-01-f-manual.svg + + + +

    Source SVG: coords-transformattr-01-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-transformattr-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html new file mode 100644 index 000000000000..1c2c8f10d3d2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html @@ -0,0 +1,83 @@ + + + + coords-transformattr-02-f-manual.svg + + + +

    Source SVG: coords-transformattr-02-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-transformattr-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html new file mode 100644 index 000000000000..7e41124a6236 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html @@ -0,0 +1,52 @@ + + + + coords-transformattr-03-f-manual.svg + + + +

    Source SVG: coords-transformattr-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-transformattr-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html new file mode 100644 index 000000000000..70f5e399509f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html @@ -0,0 +1,50 @@ + + + + coords-transformattr-04-f-manual.svg + + + +

    Source SVG: coords-transformattr-04-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-transformattr-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html new file mode 100644 index 000000000000..8f41cb385e75 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html @@ -0,0 +1,60 @@ + + + + coords-transformattr-05-f-manual.svg + + + +

    Source SVG: coords-transformattr-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-transformattr-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html new file mode 100644 index 000000000000..f8a492610b4b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html @@ -0,0 +1,150 @@ + + + + coords-units-01-b-manual.svg + + + +

    Source SVG: coords-units-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-units-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bounding box relative coordinates (percentage and fraction) + + + + + + + Percentage + Fraction + User Space + + + + + + + + + + + + + + + + + + + + + + + + + + Bounding box relative length (percentage and fraction) + + + + + Percent. + Fraction + User Space + + + + + + + + + + + + + + + + + + + + + + + + + + Bounding box relative width/height (percentage and fraction) + + + + + Percentage + Fraction + User Space + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html new file mode 100644 index 000000000000..7981e2cd0432 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html @@ -0,0 +1,115 @@ + + + + coords-units-02-b-manual.svg + + + +

    Source SVG: coords-units-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-units-02-b.svg,v $ + + + + + + + + + + + + + + + + CSS pixel coordinate to user space conversion + + + + + + + + + + + Percentage coordinates to user space conversion + + + + + + + + + + + + + + CSS width/height to user space conversion + + + + + + + + + + + Percentage width/height to user space conversion + + + + + + + + + + + + + + CSS and percentage length conversion + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html new file mode 100644 index 000000000000..4a855b4fff4b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html @@ -0,0 +1,125 @@ + + + + coords-units-03-b-manual.svg + + + +

    Source SVG: coords-units-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-units-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + Initial viewport and CSS units test + + + + + + 200 + User space units (no specifier) + + + + + + + + 200 px + Pixels (px) + + + + 20 em = 200 px (font-size=10px) + Relative to font size (em) + + + + + + 40 ex + Relative to font x-height (ex) + + + + + + + + 41.67% = 200 px + Percentage (%) + + + + + + 1 in + Inches (in) + + + + 2.54 cm = 1 in + Centimeters (cm) + + + + 25.4 mm = 1 in + Millimeters (mm) + + + + 72pt = 1 in + Points (pt) + + + + 6pc = 1 in + Picas (pc) + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html new file mode 100644 index 000000000000..84555cacb61a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html @@ -0,0 +1,85 @@ + + + + coords-viewattr-03-b-manual.svg + + + +

    Source SVG: coords-viewattr-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-viewattr-03-b.svg,v $ + + + + + + + + + <svg> 'viewBox' attribute + + + + + + + viewBox="0 0 200 200" + overflow="visible" + + + + + viewBox="0 0 200 200" + overflow="hidden" + + + + + viewBox="0,0,200,200" + overflow="visible" + + + + + viewBox="0,0,200,200" + overflow="hidden" + + + + + viewBox="0,0, 200, 200" + overflow="visible" + + + + + viewBox="0,0, 200, 200" + overflow="hidden" + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html new file mode 100644 index 000000000000..3f879566e6de --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html @@ -0,0 +1,162 @@ + + + + extend-namespace-01-f-manual.svg + + + +

    Source SVG: extend-namespace-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: extend-namespace-01-f.svg,v $ + + + + + + + + + + + + + + + East + 3 + + + North + 4 + + + West + 5 + + + Central + 3.2 + + + South + 6 + + + + Pie chart built from data in a different namespace. + + + + Pie chart is built within this 'g' element + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html new file mode 100644 index 000000000000..09a735da49d8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html @@ -0,0 +1,114 @@ + + + + filters-background-01-f-manual.svg + + + +

    Source SVG: filters-background-01-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-background-01-f.svg,v $ + + + + + + + + + + + + This filter discards the SourceGraphic, if any, and just produces + a result consisting of the BackgroundImage shifted down 125 units + and then blurred. + + + + + + + This filter takes the BackgroundImage, shifts it down 125 units, blurs it, + and then renders the SourceGraphic on top of the shifted/blurred background. + + + + + + + + + + + + + The second adds an empty 'g' element which invokes ShiftBGAndBlur. + + + + + + + + + + + The third invokes ShiftBGAndBlur on the inner group. + + + + + + + + + + The fourth invokes ShiftBGAndBlur on the triangle. + + + + + + + + + + The fifth invokes ShiftBGAndBlur_WithSourceGraphic on the triangle. + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html new file mode 100644 index 000000000000..3ed26e28583a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html @@ -0,0 +1,88 @@ + + + + filters-blend-01-b-manual.svg + + + +

    Source SVG: filters-blend-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-blend-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Normal + Multiply + Multiply + Multiply + Screen + Darken + Lighten + + + + + $Revision: 1.9 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html new file mode 100644 index 000000000000..47c5fcc1580f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html @@ -0,0 +1,82 @@ + + + + filters-color-01-b-manual.svg + + + +

    Source SVG: filters-color-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-color-01-b.svg,v $ + + + + + + + + + + Example feColorMatrix - Examples of feColorMatrix operations + Five rectangles filled with a gradient showing the effects of feColorMatrix: an unfiltered rectangle acting as a reference, use of the feColorMatrix matrix option to convert to grayscale, use of the feColorMatrix saturate option, use of the feColorMatrix hueRotate option, and use of the feColorMatrix luminanceToAlpha option. + + + + + + + + + + + + + + + + + + + + + + + + + Unfiltered + + type="matrix" (grayscale matrix) + + type="saturate" values=".4" + + type="hueRotate" values="90" + + type="luminanceToAlpha" + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html new file mode 100644 index 000000000000..758ebd361595 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html @@ -0,0 +1,80 @@ + + + + filters-color-02-b-manual.svg + + + +

    Source SVG: filters-color-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-color-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reference + Default + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html new file mode 100644 index 000000000000..4740a521da29 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html @@ -0,0 +1,181 @@ + + + + filters-composite-02-b-manual.svg + + + +

    Source SVG: filters-composite-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-composite-02-b.svg,v $ + + + + + + + + + + Example feComposite - Examples of feComposite operations + Six pairs of overlapping triangles depicting the six different feComposite operators. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + on first Row : opacity 1.0 + on second row opacity 0.5 + + + + over + + + + + + + + + in + + + + + + + + + out + + + + + + + + atop + + + + + + + + xor + + + + + + + arith- + metic + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html new file mode 100644 index 000000000000..bdc45335c94d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html @@ -0,0 +1,78 @@ + + + + filters-composite-03-f-manual.svg + + + +

    Source SVG: filters-composite-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-composite-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html new file mode 100644 index 000000000000..1309abdc1fc2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html @@ -0,0 +1,68 @@ + + + + filters-composite-04-f-manual.svg + + + +

    Source SVG: filters-composite-04-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-composite-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html new file mode 100644 index 000000000000..14c9993f70bb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html @@ -0,0 +1,56 @@ + + + + filters-composite-05-f-manual.svg + + + +

    Source SVG: filters-composite-05-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-composite-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html new file mode 100644 index 000000000000..683bb6a8fc8d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html @@ -0,0 +1,97 @@ + + + + filters-comptran-01-b-manual.svg + + + +

    Source SVG: filters-comptran-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-comptran-01-b.svg,v $ + + + + + + + + + + Example feComponentTransfer - Examples of feComponentTransfer operations + Four rectangles filled with a gradient showing the effects of feComponentTransfer: an identity function acting as a reference, use of the feComponentTransfer table option, use of the feComponentTransfer linear option, and use of the feComponentTransfer gamma option. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + type: identity + + type: table + + type:linear slope:.5 intercepts:.25/0/.5 + + type: gamma ampl:2 exponents:5/3/1 + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html new file mode 100644 index 000000000000..dc327abb143c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html @@ -0,0 +1,93 @@ + + + + filters-conv-01-f-manual.svg + + + +

    Source SVG: filters-conv-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-conv-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blur (3x3) + + + + Edge Detection (3x3) + + + + Sharpening (3x3) + + + + Embossing (3x3) + + + + Horizontal blur (3x1) + + + + Vertical blur (1x3) + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html new file mode 100644 index 000000000000..1f3b835825ac --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html @@ -0,0 +1,67 @@ + + + + filters-conv-02-f-manual.svg + + + +

    Source SVG: filters-conv-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + feConvolveMatrix 'order' attribute + + + without order + + + order="3" + + + order="3 3" + + + $Revision: 1.9 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html new file mode 100644 index 000000000000..65dd9b4cd285 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html @@ -0,0 +1,84 @@ + + + + filters-conv-03-f-manual.svg + + + +

    Source SVG: filters-conv-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + PASS + + + + + feConvolveMatrix 'in1' DOM + + + + + + + Original image + Animated filter + Scripted filter + + + $Revision: 1.8 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html new file mode 100644 index 000000000000..2998b7c5060f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html @@ -0,0 +1,85 @@ + + + + filters-conv-04-f-manual.svg + + + +

    Source SVG: filters-conv-04-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html new file mode 100644 index 000000000000..c4bf1c950558 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html @@ -0,0 +1,74 @@ + + + + filters-conv-05-f-manual.svg + + + +

    Source SVG: filters-conv-05-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + feConvolveMatrix 'edgeMode' + + + none + + + wrap + + + duplicate + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html new file mode 100644 index 000000000000..40ca7c3089c1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html @@ -0,0 +1,134 @@ + + + + filters-diffuse-01-f-manual.svg + + + +

    Source SVG: filters-diffuse-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-diffuse-01-f.svg,v $ + + + + + + + + + + Filters: feDiffuseLighting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various values for surfaceScale: 1, 10 and -10 + + + + + + + Various values for diffuseConstants: 0, 1 and 2 + + + + + + + Various values for lighting color: red, yellow and blue + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html new file mode 100644 index 000000000000..e7bbcbe61bc6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html @@ -0,0 +1,105 @@ + + + + filters-displace-01-f-manual.svg + + + +

    Source SVG: filters-displace-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-displace-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Checkerboard Image + + + + + Displacement Map + (20 deg. rotation) + + + + + + + + Result + (overlayed with 20 deg. + rotated blue rectangle) + + + + + + Checkerboard Image + + + + + + Displacement Map + (spherical distortion) + + + + + Result + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html new file mode 100644 index 000000000000..983cfed06a6d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html @@ -0,0 +1,67 @@ + + + + filters-displace-02-f-manual.svg + + + +

    Source SVG: filters-displace-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-displace-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html new file mode 100644 index 000000000000..68df18f44afd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html @@ -0,0 +1,66 @@ + + + + filters-example-01-b-manual.svg + + + +

    Source SVG: filters-example-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-example-01-b.svg,v $ + + + + + + + + + + + Example filters01.svg - introducing filter effects + An example which combines multiple filter primitives to produce a 3D lighting effect on a graphic consisting of the string "SVG" sitting on top of oval filled in green and surrounded by an oval outlined in green. + + + + + + + + + + + + + + SVG + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html new file mode 100644 index 000000000000..f88e6ee44131 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html @@ -0,0 +1,68 @@ + + + + filters-felem-01-b-manual.svg + + + +

    Source SVG: filters-felem-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-felem-01-b.svg,v $ + + + + + + + + + + + + + + + + No filter + + + + + Null filter + + + + + Non-existent filter + + + + + Null with small region filter + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html new file mode 100644 index 000000000000..d72286a8563e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html @@ -0,0 +1,113 @@ + + + + filters-felem-02-f-manual.svg + + + +

    Source SVG: filters-felem-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-felem-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html new file mode 100644 index 000000000000..97a4aa975cb4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html @@ -0,0 +1,69 @@ + + + + filters-gauss-01-b-manual.svg + + + +

    Source SVG: filters-gauss-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-gauss-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html new file mode 100644 index 000000000000..b674067c8652 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html @@ -0,0 +1,71 @@ + + + + filters-gauss-02-f-manual.svg + + + +

    Source SVG: filters-gauss-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-gauss-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html new file mode 100644 index 000000000000..383a29e06aa4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html @@ -0,0 +1,57 @@ + + + + filters-gauss-03-f-manual.svg + + + +

    Source SVG: filters-gauss-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-gauss-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html new file mode 100644 index 000000000000..dbce70d71d0d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html @@ -0,0 +1,51 @@ + + + + filters-image-01-b-manual.svg + + + +

    Source SVG: filters-image-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-image-01-b.svg,v $ + + + + + + + + + + + + + + Basic test of feImage filter support. + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html new file mode 100644 index 000000000000..a8936c781070 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html @@ -0,0 +1,64 @@ + + + + filters-image-02-b-manual.svg + + + +

    Source SVG: filters-image-02-b-manual.svg

    + + + + + + + + + + $RCSfile: filters-image-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + Animation in filters + 'feImage' + 'image' + + + + $Revision: 1.9 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html new file mode 100644 index 000000000000..17894f5d0eda --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html @@ -0,0 +1,164 @@ + + + + filters-image-03-f-manual.svg + + + +

    Source SVG: filters-image-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-image-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html new file mode 100644 index 000000000000..47e238d578b8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html @@ -0,0 +1,104 @@ + + + + filters-image-04-f-manual.svg + + + +

    Source SVG: filters-image-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-image-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + primitiveUnits = "objectBoundingBox" + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html new file mode 100644 index 000000000000..d20325754eec --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html @@ -0,0 +1,184 @@ + + + + filters-image-05-f-manual.svg + + + +

    Source SVG: filters-image-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-image-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Example PreserveAspectRatio - demonstrate available options + Test preserveAspectRatio on an feImage element. + Raster to fit + + + + Viewport 1 + + Viewport 2 + + + ---------- meet -------------------- + + xMin* + + + + + xMid* + + + + + xMax* + + + + + + ---------- meet ------------------------ + + *YMin + + + + *YMid + + + + *YMax + + + + + ---------- slice ------------------------- + + xMin* + + + + xMid* + + + + xMax* + + + + + ---------- slice --------------------- + + *YMin + + + + + *YMid + + + + + *YMax + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html new file mode 100644 index 000000000000..b490f3e15585 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html @@ -0,0 +1,170 @@ + + + + filters-light-01-f-manual.svg + + + +

    Source SVG: filters-light-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-light-01-f.svg,v $ + + + + + + + + + + Filters: feDistantLight, fePointLight, feSpotLight + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various values for feDistantLight azimuth and elevation + (0, 0) + (45, 0) + (0, 45) + (45, 45) + + + + + + + + Various values for fePointLight's x, y and z + (0, 0, 10) + (50, 0, 10) + (0, 30, 10) + (50, 30, 10) + + + + + + + + + + Various values for feSpotLight's x, y, z, pointsAtX, pointsAtY, pointsAtZ + (25, 0, 25) + (25, 30, 0) + (25, 30, 25) + (25, 0, 0) + np=1 + limitingConeAngle=30 + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html new file mode 100644 index 000000000000..5ac432761d09 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html @@ -0,0 +1,86 @@ + + + + filters-light-02-f-manual.svg + + + +

    Source SVG: filters-light-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-light-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 'feDistantLight' azimuth + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html new file mode 100644 index 000000000000..a6a9c2b3adc4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html @@ -0,0 +1,106 @@ + + + + filters-light-03-f-manual.svg + + + +

    Source SVG: filters-light-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-light-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + primitiveUnits="objectBoundingBox" + + + + + + + + + primitiveUnits="userSpaceOnUse" + + + + + + + + + primitiveUnits unspecified + + + + + + $Revision: 1.10 $ + + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html new file mode 100644 index 000000000000..16c15798ee2a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html @@ -0,0 +1,123 @@ + + + + filters-light-04-f-manual.svg + + + +

    Source SVG: filters-light-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-light-04-f.svg,v $ + + + + + + + + + + feSpotLight's limitingConeAngle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + 20 + Animated (0..50) + 5 + + -30 + -20 + Animated (0..-50) + -5 + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html new file mode 100644 index 000000000000..9d2701034ae6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html @@ -0,0 +1,207 @@ + + + + filters-light-05-f-manual.svg + + + +

    Source SVG: filters-light-05-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-light-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + feDiffuseLight using feDistantLight source + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + feSpecularLight using feDistantLight source + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + feDiffuseLight and feSpecularLight using feDistantLight + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html new file mode 100644 index 000000000000..2f3a162d6695 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html @@ -0,0 +1,89 @@ + + + + filters-morph-01-f-manual.svg + + + +

    Source SVG: filters-morph-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-morph-01-f.svg,v $ + + + + + + + + + Filter Effect: feMorphology + + + + + + + + + + + + + + + + + + + + + + + + + + + + + type=erode radius=1 + + + + type=erode radius=2 + + + + type=dilate radius=1 + + + + type=dilate radius=3 + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html new file mode 100644 index 000000000000..d1129afd2424 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html @@ -0,0 +1,85 @@ + + + + filters-offset-01-b-manual.svg + + + +

    Source SVG: filters-offset-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-offset-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html new file mode 100644 index 000000000000..951b0c5dd55e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html @@ -0,0 +1,71 @@ + + + + filters-offset-02-b-manual.svg + + + +

    Source SVG: filters-offset-02-b-manual.svg

    + + + + + + + + + + $RCSfile: filters-offset-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html new file mode 100644 index 000000000000..69726a9e9eb6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html @@ -0,0 +1,151 @@ + + + + filters-overview-01-b-manual.svg + + + +

    Source SVG: filters-overview-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-overview-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SourceAlpha + + =========================================================================================== + + + + + + + + SourceGraphic + + =========================================================================================== + + + + + + + + BackgroundAlpha + + =========================================================================================== + + + + + + + + BackgroundImage + + =========================================================================================== + + + + + + + + FillPaint + + =========================================================================================== + + + + + + + + StrokePaint + + + + Filter input test + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html new file mode 100644 index 000000000000..b91fc64207a5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html @@ -0,0 +1,160 @@ + + + + filters-overview-02-b-manual.svg + + + +

    Source SVG: filters-overview-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-overview-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SourceAlpha + + =========================================================================================== + + + + + + + + SourceGraphic + + =========================================================================================== + + + + + + + + BackgroundAlpha + + =========================================================================================== + + + + + + + + BackgroundImage + + =========================================================================================== + + + + + + + + + FillPaint + + =========================================================================================== + + + + + + + + + StrokePaint + + + + Filter input test + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html new file mode 100644 index 000000000000..6ecdc69fe4a5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html @@ -0,0 +1,151 @@ + + + + filters-overview-03-b-manual.svg + + + +

    Source SVG: filters-overview-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-overview-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SourceAlpha + + =========================================================================================== + + + + + + + + SourceGraphic + + =========================================================================================== + + + + + + + + BackgroundAlpha + + =========================================================================================== + + + + + + + + BackgroundImage + + =========================================================================================== + + + + + + + + FillPaint + + =========================================================================================== + + + + + + + + StrokePaint + + + + Filter input test + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html new file mode 100644 index 000000000000..03da4c31b3dd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html @@ -0,0 +1,179 @@ + + + + filters-specular-01-f-manual.svg + + + +

    Source SVG: filters-specular-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-specular-01-f.svg,v $ + + + + + + + + + + Filters: feSpecularLighting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various values for surfaceScale: 1, 10 and -10 + + + + + + + + + + + + Various values for specularConstants: 0, 1 and 2 + + + + + + + + + + + + Various values for specularExponents: 1, 2 and 4 + + + + + + + + + + + + Various values for lighting color: red, yellow and blue + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html new file mode 100644 index 000000000000..8f0402a7da71 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html @@ -0,0 +1,63 @@ + + + + filters-tile-01-b-manual.svg + + + +

    Source SVG: filters-tile-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-tile-01-b.svg,v $ + + + + + + + + + feTile filter test: a tiled pattern + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html new file mode 100644 index 000000000000..780459e8756d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html @@ -0,0 +1,91 @@ + + + + filters-turb-01-f-manual.svg + + + +

    Source SVG: filters-turb-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-turb-01-f.svg,v $ + + + + + + + + + Six rectangular areas showing the effects of various parameter settings for feTurbulence. + + + + + + + + + + + + + + + + + + + + + + + type=turbulence + baseFrequency=0.05 + numOctaves=2 + + type=turbulence + baseFrequency=0.1 + numOctaves=2 + + type=turbulence + baseFrequency=0.05 + numOctaves=8 + + type=fractalNoise + baseFrequency=0.1 + numOctaves=4 + + type=fractalNoise + baseFrequency=0.4 + numOctaves=4 + + type=fractalNoise + baseFrequency=0.1 + numOctaves=1 + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html new file mode 100644 index 000000000000..203f6a79e999 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html @@ -0,0 +1,125 @@ + + + + filters-turb-02-f-manual.svg + + + +

    Source SVG: filters-turb-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-turb-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + feTurbulence seed + + + + -0.8 + + -0.5 + + -0.2 + + 0 + + 0.2 + + 0.5 + + 1.5 + + + + -1 + + -1.5 + + + + -2 + + -2.6 + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html new file mode 100644 index 000000000000..38fd4973631b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html @@ -0,0 +1,91 @@ + + + + fonts-desc-01-t-manual.svg + + + +

    Source SVG: fonts-desc-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html new file mode 100644 index 000000000000..7fd43f5c7437 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html @@ -0,0 +1,115 @@ + + + + fonts-desc-02-t-manual.svg + + + +

    Source SVG: fonts-desc-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + + a + a + + + a + a + a + a + + + a + a + a + a + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html new file mode 100644 index 000000000000..7a847714a829 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html @@ -0,0 +1,102 @@ + + + + fonts-desc-03-t-manual.svg + + + +

    Source SVG: fonts-desc-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + a + a + + a + a + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html new file mode 100644 index 000000000000..1420e16a2c69 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html @@ -0,0 +1,120 @@ + + + + fonts-desc-04-t-manual.svg + + + +

    Source SVG: fonts-desc-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + + a + a + + + a + a + a + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html new file mode 100644 index 000000000000..7799438c3e6a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html @@ -0,0 +1,107 @@ + + + + fonts-desc-05-t-manual.svg + + + +

    Source SVG: fonts-desc-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-05-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + a + a + + + a + a + a + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html new file mode 100644 index 000000000000..6788ac071e3a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html @@ -0,0 +1,97 @@ + + + + fonts-elem-01-t-manual.svg + + + +

    Source SVG: fonts-elem-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + Basic SVG font element + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html new file mode 100644 index 000000000000..191196b0cb99 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html @@ -0,0 +1,105 @@ + + + + fonts-elem-02-t-manual.svg + + + +

    Source SVG: fonts-elem-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + SVG font element accuracy + + SVG over Glyphs + + + + + + + + + + + + + + + + + + + AyÖ@ç + + Glyphs over SVG + + AyÖ@ç + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html new file mode 100644 index 000000000000..e8e47d4d238c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html @@ -0,0 +1,97 @@ + + + + fonts-elem-03-b-manual.svg + + + +

    Source SVG: fonts-elem-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-03-b.svg,v $ + + + + + + + + + + + + + + + + + External SVG font element (xml) + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html new file mode 100644 index 000000000000..543abe3c9832 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html @@ -0,0 +1,97 @@ + + + + fonts-elem-04-b-manual.svg + + + +

    Source SVG: fonts-elem-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-04-b.svg,v $ + + + + + + + + + + + + + External SVG font element (css) + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html new file mode 100644 index 000000000000..5eaa8a62e18f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html @@ -0,0 +1,125 @@ + + + + fonts-elem-05-t-manual.svg + + + +

    Source SVG: fonts-elem-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-05-t.svg,v $ + + + + + + + + + <font> horiz-origin-x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horiz-origin-x unspecified (0) + + + + + 1234 + + + + horiz-origin-x=500 + + + + + 1234 + + + + + horiz-adv-x=1000 but ignored + + + + + 1234 + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html new file mode 100644 index 000000000000..54c42c57db77 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html @@ -0,0 +1,98 @@ + + + + fonts-elem-06-t-manual.svg + + + +

    Source SVG: fonts-elem-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-06-t.svg,v $ + + + + + + + + + <font> horiz-adv-x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horiz-adv-x=1000 + + + 12 + + + + horiz-adv-x=2000 + + + 12 + + + + + horiz-adv-x=1000 but ignored + + + 12 + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html new file mode 100644 index 000000000000..8bb396fe6a1d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html @@ -0,0 +1,108 @@ + + + + fonts-elem-07-b-manual.svg + + + +

    Source SVG: fonts-elem-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic SVG font element + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html new file mode 100644 index 000000000000..26fe17a3f3ea --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html @@ -0,0 +1,72 @@ + + + + fonts-glyph-02-t-manual.svg + + + +

    Source SVG: fonts-glyph-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-glyph-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ښ ښښښ + + + + خ خخخ + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html new file mode 100644 index 000000000000..912da902bdfb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html @@ -0,0 +1,63 @@ + + + + fonts-glyph-03-t-manual.svg + + + +

    Source SVG: fonts-glyph-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-glyph-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + a + + a + + a + + a + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html new file mode 100644 index 000000000000..d8c09495be38 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html @@ -0,0 +1,58 @@ + + + + fonts-glyph-04-t-manual.svg + + + +

    Source SVG: fonts-glyph-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-glyph-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + ffl + ffl + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html new file mode 100644 index 000000000000..f23ccc5b1064 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html @@ -0,0 +1,253 @@ + + + + fonts-kern-01-t-manual.svg + + + +

    Source SVG: fonts-kern-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-kern-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <hkern> + + + + + font A + + + u1="1" u2="2" + + + + + + + + + 12 + + + + + + + font B + + + g1="gl_1" g2="gl_2" + + + + 12 + + + + + + + font C + + + u1="1" u2="2" g1="gl_3" g2="gl_4" + + + + + + + + 1234 + + + + + + + font D + + + u1="1,3" u2="2,4" + + + + + + 1234 + + + + + + + font E + + + g1="gl_1,gl_3" g2="gl_2,gl_4" + + + + + + 1234 + + + + + + + font F + + + u1="U+003?" u2="U+0031-34" + + + + + + + + + 1234 + + + + + + + font G + + + u1="1" g2="gl_2" + + + + + + + + + 12 + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html new file mode 100644 index 000000000000..8cc1f54b5253 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html @@ -0,0 +1,107 @@ + + + + fonts-overview-201-t-manual.svg + + + +

    Source SVG: fonts-overview-201-t-manual.svg

    + + + + + + + + + + + $RCSfile: fonts-overview-201-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + β + β + β + + 1,000 + 10 + 10,000 + varying units-per-em values + + + $Revision: 1.2 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html new file mode 100644 index 000000000000..905bcb3194c0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html @@ -0,0 +1,50 @@ + + + + imp-path-01-f-manual.svg + + + +

    Source SVG: imp-path-01-f-manual.svg

    + + + + + + + + + + $RCSfile: imp-path-01-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html new file mode 100644 index 000000000000..2fa936410e51 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html @@ -0,0 +1,113 @@ + + + + interact-cursor-01-f-manual.svg + + + +

    Source SVG: interact-cursor-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-cursor-01-f.svg,v $ + + + + + + + + + + + + + Text Cursor + Pointer Cursor + + + + + + + + + + crosshair + + + + default + + + + pointer + + + + move + + + + text + + + + wait + + + + help + + + + <url> + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html new file mode 100644 index 000000000000..101082a941fe --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html @@ -0,0 +1,108 @@ + + + + interact-dom-01-b-manual.svg + + + +

    Source SVG: interact-dom-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-dom-01-b.svg,v $ + + + + + + + + + + + + + + + + + Start Test + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html new file mode 100644 index 000000000000..64041cfd8b5e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html @@ -0,0 +1,94 @@ + + + + interact-events-01-b-manual.svg + + + +

    Source SVG: interact-events-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-events-01-b.svg,v $ + + + + + + + + + + + + + 'onload' event attribute. + + + + + 1: No + + + + 2: Yes + + + + + + 3: Yes + + + + + + 4: Yes + + + + + + 5: No + + + + 6: Yes + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html new file mode 100644 index 000000000000..e85bd93e7ac8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html @@ -0,0 +1,61 @@ + + + + interact-events-02-b-manual.svg + + + +

    Source SVG: interact-events-02-b-manual.svg

    + + + + + + + + + + $RCSfile: interact-events-02-b.svg,v $ + + + + + + + + + + Testing that SVGLoad does not bubble + + + + + On root <svg> + On an <image> + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html new file mode 100644 index 000000000000..378177a13b2a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html @@ -0,0 +1,72 @@ + + + + interact-events-202-f-manual.svg + + + +

    Source SVG: interact-events-202-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-events-202-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html new file mode 100644 index 000000000000..6aa4683b04fc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html @@ -0,0 +1,87 @@ + + + + interact-events-203-t-manual.svg + + + +

    Source SVG: interact-events-203-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-events-203-t.svg,v $ + + + + + + + + + + + + + + + Shadow tree event listener chain + + + + Case 1: on mouseover all squares must turn blue + + + + + + + + Case 2: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + + + Case 3: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + Case 4: on mouseover all squares must turn blue + and on mousedown a black stroke must appear on reference square + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html new file mode 100644 index 000000000000..02d48a0d86ec --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html @@ -0,0 +1,89 @@ + + + + interact-order-01-b-manual.svg + + + +

    Source SVG: interact-order-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-order-01-b.svg,v $ + + + + + + + + + + + + Event bubbling - a + + + + + + + + + + + + Pointer in circle, + + + circle turns pink + + + Pointer in circle, + + + circle turns blue + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html new file mode 100644 index 000000000000..39eb27681c1e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html @@ -0,0 +1,87 @@ + + + + interact-order-02-b-manual.svg + + + +

    Source SVG: interact-order-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-order-02-b.svg,v $ + + + + + + + + + + + + Event bubbling - b + + + + + + + + + + + + + Click on circle, + + + circle turns red + + + Click on circle, + + + hyperlink + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html new file mode 100644 index 000000000000..85f2b717db51 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html @@ -0,0 +1,86 @@ + + + + interact-order-03-b-manual.svg + + + +

    Source SVG: interact-order-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-order-03-b.svg,v $ + + + + + + + + + + + + Event bubbling - c + + + + + + + + String turns red on click + + + + String hyperlinks to + + + interact-order-03b-targ.svg + + + + All strings are selectable. + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html new file mode 100644 index 000000000000..851efb652882 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html @@ -0,0 +1,173 @@ + + + + interact-pevents-01-b-manual.svg + + + +

    Source SVG: interact-pevents-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-01-b.svg,v $ + + + + + + + + + + + + Test pointer-events on text + + + O + O + O + O + O + O + O + O + O + O + + + + + + + + + + O + O + O + O + O + O + O + O + O + O + + + + + + + + + + O + O + O + O + O + O + O + O + O + O + + + + + + + + + + O + O + + O + O + O + + O + + O + O + O + + O + + + + + + + + + + + + Toggle freeze + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html new file mode 100644 index 000000000000..7e28b1e9d301 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html @@ -0,0 +1,114 @@ + + + + interact-pevents-03-b-manual.svg + + + +

    Source SVG: interact-pevents-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test pointer-events on text + + + + + @ A y Ö ç + + + + @ A y Ö ç + + + + @AyÖç + + + + + + @ A y Ö ç + + + + @AyÖç + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html new file mode 100644 index 000000000000..10f0395387ce --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html @@ -0,0 +1,109 @@ + + + + interact-pevents-04-t-manual.svg + + + +

    Source SVG: interact-pevents-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test pointer-events on text + + + + + @ A y Ö ç + + + + @ A y Ö ç + + + + @AyÖç + + + + + + @ A y Ö ç + + + + @AyÖç + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html new file mode 100644 index 000000000000..69d39b6492c3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html @@ -0,0 +1,102 @@ + + + + interact-pevents-05-b-manual.svg + + + +

    Source SVG: interact-pevents-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-05-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test pointer-events on text + + @AyÖç + @AyÖç + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html new file mode 100644 index 000000000000..0ee3f03d9416 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html @@ -0,0 +1,107 @@ + + + + interact-pevents-07-t-manual.svg + + + +

    Source SVG: interact-pevents-07-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-07-t.svg,v $ + + + + + + + + + + + + Testing pointer-events and rendering order + Rectangles should turn RED on mouseover + Ovals should turn RED if Pointer-Events are set to "ALL" + + + + Change "Pointer-Events" of + ovals from "ALL" to "NONE" + + + + + Purple ovals have "Pointer-Events" set to "ALL". + Purple ovals have Pointer-Events set to "NONE". + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html new file mode 100644 index 000000000000..42126ad1fd7c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html @@ -0,0 +1,155 @@ + + + + interact-pevents-08-f-manual.svg + + + +

    Source SVG: interact-pevents-08-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-08-f.svg,v $ + + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + default : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + visiblePainted : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + + + + visibleFill : + only fill of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + visibleStroke : + only stroke of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + visible : + fill and stroke of rects 1, 2 and 3 must trigger + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html new file mode 100644 index 000000000000..fb8d9a82ba3c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html @@ -0,0 +1,146 @@ + + + + interact-pevents-09-f-manual.svg + + + +

    Source SVG: interact-pevents-09-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-09-f.svg,v $ + + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + painted : + fill and stroke of rects 1, 3 and 4 must trigger + + + + + + + + + + + + + + + fill : + fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + stroke : + stroke of rects 1 to 4 must trigger + + + + + + + + + + + + + + + all : + stroke and fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + none : + nothing is to trigger + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html new file mode 100644 index 000000000000..9aec374030bb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html @@ -0,0 +1,68 @@ + + + + interact-pevents-10-f-manual.svg + + + +

    Source SVG: interact-pevents-10-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-10-f.svg,v $ + + + + + + + + + + + + + + + FAIL + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html new file mode 100644 index 000000000000..5b2da1f4c72f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html @@ -0,0 +1,64 @@ + + + + interact-pointer-01-t-manual.svg + + + +

    Source SVG: interact-pointer-01-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-01-t.svg,v $ + + + + + + + + + + Test pointer events with zero opacity mask pixels + + + + + + + Move the pointing device over the rectangle. + If it is red, you've already failed. + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html new file mode 100644 index 000000000000..2a2724caf16c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html @@ -0,0 +1,64 @@ + + + + interact-pointer-02-t-manual.svg + + + +

    Source SVG: interact-pointer-02-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-02-t.svg,v $ + + + + + + + + + + Test pointer events with shapes that have clip paths + + + + + + + Move the pointing device over the rectangle. + If it is red, you've already failed. + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html new file mode 100644 index 000000000000..36e1e46d54f8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html @@ -0,0 +1,62 @@ + + + + interact-pointer-03-t-manual.svg + + + +

    Source SVG: interact-pointer-03-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-03-t.svg,v $ + + + + + + + + + + Test pointer-events="painted" with paint server fallback + + + + + + Move the pointing device over the rectangle. + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html new file mode 100644 index 000000000000..499797d21761 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html @@ -0,0 +1,71 @@ + + + + interact-pointer-04-f-manual.svg + + + +

    Source SVG: interact-pointer-04-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html new file mode 100644 index 000000000000..a4cf8b4f6144 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html @@ -0,0 +1,56 @@ + + + + interact-zoom-01-t-manual.svg + + + +

    Source SVG: interact-zoom-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-zoom-01-t.svg,v $ + + + + + + + + + + Test default value of + zoomAndPan attribute. + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html new file mode 100644 index 000000000000..29d3fdfd971b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html @@ -0,0 +1,56 @@ + + + + interact-zoom-02-t-manual.svg + + + +

    Source SVG: interact-zoom-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-zoom-02-t.svg,v $ + + + + + + + + + + Test "magnify" value of + zoomAndPan attribute. + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html new file mode 100644 index 000000000000..46f531a32103 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html @@ -0,0 +1,56 @@ + + + + interact-zoom-03-t-manual.svg + + + +

    Source SVG: interact-zoom-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-zoom-03-t.svg,v $ + + + + + + + + + + + Test "disable" value of + zoomAndPan attribute. + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html new file mode 100644 index 000000000000..af8c35bea17d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html @@ -0,0 +1,54 @@ + + + + linking-a-01-b-manual.svg + + + +

    Source SVG: linking-a-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-01-b.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html new file mode 100644 index 000000000000..c548dd67caae --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html @@ -0,0 +1,54 @@ + + + + linking-a-03-b-manual.svg + + + +

    Source SVG: linking-a-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-03-b.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html new file mode 100644 index 000000000000..04352e6cd94c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html @@ -0,0 +1,65 @@ + + + + linking-a-04-t-manual.svg + + + +

    Source SVG: linking-a-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-04-t.svg,v $ + + + + + + + + + Basic out-bound links and the 'a' element. + + + + + + + + + + + + + + + + + + + + id="internal-circle" + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html new file mode 100644 index 000000000000..3c0461e5a02f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html @@ -0,0 +1,71 @@ + + + + linking-a-05-t-manual.svg + + + +

    Source SVG: linking-a-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-05-t.svg,v $ + + + + + + + + + Verify transform attributes in the 'a' element. + + + + + + transform="rotate(20,225,65) + + + + + + + transform="skewX(-30) + + + + + + + + + transform="translate(-10,-20) + + + + id="internal-circle" + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html new file mode 100644 index 000000000000..8b0288e69579 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html @@ -0,0 +1,75 @@ + + + + linking-a-07-t-manual.svg + + + +

    Source SVG: linking-a-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-07-t.svg,v $ + + + + + + + + + xlink 'show' attribute on 'a' element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html new file mode 100644 index 000000000000..a44ee88567ec --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html @@ -0,0 +1,52 @@ + + + + linking-a-08-t-manual.svg + + + +

    Source SVG: linking-a-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-08-t.svg,v $ + + + + + + + + + + + Link inside text + + + Link around text + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html new file mode 100644 index 000000000000..703f79623c6e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html @@ -0,0 +1,62 @@ + + + + linking-a-09-b-manual.svg + + + +

    Source SVG: linking-a-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-09-b.svg,v $ + + + + + + + + + + + A + + link + inside tspan + for testing + + + + A + + link + around tspan + + for testing + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html new file mode 100644 index 000000000000..17a3a07ef2e7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html @@ -0,0 +1,77 @@ + + + + linking-a-10-f-manual.svg + + + +

    Source SVG: linking-a-10-f-manual.svg

    + + + + + + + + + + $RCSfile: linking-a-10-f.svg,v $ + + + + + + + + + + + + + + + X + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html new file mode 100644 index 000000000000..f56810732f83 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html @@ -0,0 +1,57 @@ + + + + linking-frag-01-f-manual.svg + + + +

    Source SVG: linking-frag-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-frag-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html new file mode 100644 index 000000000000..0873b286d594 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html @@ -0,0 +1,91 @@ + + + + linking-uri-01-b-manual.svg + + + +

    Source SVG: linking-uri-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-uri-01-b.svg,v $ + + + + + + + + + Link test of the 'view' element and its attributes, 1 of 2, internal. + + + + + Go to Rectangle + + + Go to Ellipse + + + Go to Circle + + + Go to Polygon + + Click element's line + to link to its view + + + + + + Rectangle + + No view attributes except id. + + + + Ellipse + + viewBox, should fill frame. + + + + Circle + + viewBox & non-uniform + preserveAspectRatio + + + + Polygon + + viewTarget, no + changes to viewport + + + + $Revision: 1.12 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html new file mode 100644 index 000000000000..88f9962ec203 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html @@ -0,0 +1,96 @@ + + + + linking-uri-02-b-manual.svg + + + +

    Source SVG: linking-uri-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-uri-02-b.svg,v $ + + + + + + + + + Link test of the 'view' element and its attributes, 2 of 2, external. + + + + + Go to Rectangle + + + Go to Ellipse + + + Go to Circle + + + Go to Polygon + + Click element's line + to link to its view in + linking-uri-01-b. + + + + + + + Rectangle + + No view attributes except id. + + + + + Ellipse + + viewBox, should fill frame. + + + + + Circle + + viewBox & non-uniform + preserveAspectRatio + + + + + Polygon + + viewTarget, no + changes to viewport + + + + $Revision: 1.10 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html new file mode 100644 index 000000000000..778fa719d3f4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html @@ -0,0 +1,59 @@ + + + + linking-uri-03-t-manual.svg + + + +

    Source SVG: linking-uri-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-uri-03-t.svg,v $ + + + + + + + + + Simple exercise of xlink attributes on the 'a' element. + + + + Click for TOC + Link to local file + linkingToc-t.svg. + + xlink:type="simple" + xlink:show="replace" + xlink:actuate="onRequest" + xlink:href="linkingToc-t.svg" + xlink:role="figure-out-a-role" + xlink:title="TOC of Linking BE tests." + target="_self" + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html new file mode 100644 index 000000000000..1c143f955fa6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html @@ -0,0 +1,64 @@ + + + + masking-filter-01-f-manual.svg + + + +

    Source SVG: masking-filter-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-filter-01-f.svg,v $ + + + + + + + + + + Testing 'filter' applied to 'mask' + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html new file mode 100644 index 000000000000..51834cd161f4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html @@ -0,0 +1,69 @@ + + + + masking-intro-01-f-manual.svg + + + +

    Source SVG: masking-intro-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-intro-01-f.svg,v $ + + + + + + + + + + masking-mask-04-f.svg + Tests the impact of strokes within clipPath and mask + Testing stroke inclusion for 'clip-path' and 'mask' + + + + + + + + + + With a 'clip-path': + + + + + + + + + + With a 'mask': + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html new file mode 100644 index 000000000000..23590f257b53 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html @@ -0,0 +1,98 @@ + + + + masking-mask-01-b-manual.svg + + + +

    Source SVG: masking-mask-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-mask-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + Test for mask support + + + + + + + + + + + + + + Mask with linear gradient from + opacity=1 to opactity=0.5 + + + + + + Mask with uniform opacity of 0.5 + + + Rectangle with uniform opacity of 0.5 + + + + + + + + SVG + Text with mask containing rectangles + of various opacities + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html new file mode 100644 index 000000000000..930e9a915264 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html @@ -0,0 +1,45 @@ + + + + masking-mask-02-f-manual.svg + + + +

    Source SVG: masking-mask-02-f-manual.svg

    + + + + + + + + + + $RCSfile: masking-mask-02-f.svg,v $ + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html new file mode 100644 index 000000000000..be156f600e57 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html @@ -0,0 +1,74 @@ + + + + masking-opacity-01-b-manual.svg + + + +

    Source SVG: masking-opacity-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-opacity-01-b.svg,v $ + + + + + + + + + Test for opacity property on a group. + + + + + + Group opacity: 1 + Blue rectangle opacity: 1 + Green rectangle opacity: 1 + + + + + Group opacity: 0.5 + Blue rectangle opacity: 1 + Green rectangle opacity: 1 + + + + + Group opacity: 1 + Blue rectangle opacity: 0.5 + Green rectangle opacity: 0.5 + + + + + Group opacity: 0.5 + Blue rectangle opacity: 0.5 + Green rectangle opacity: 0.5 + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html new file mode 100644 index 000000000000..c8a675c9f415 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html @@ -0,0 +1,69 @@ + + + + masking-path-01-b-manual.svg + + + +

    Source SVG: masking-path-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + Rectangle being clipped + + + + Line of text to be clipped + + Group being clipped + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html new file mode 100644 index 000000000000..9110dacef2db --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html @@ -0,0 +1,58 @@ + + + + masking-path-02-b-manual.svg + + + +

    Source SVG: masking-path-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-02-b.svg,v $ + + + + + + + + + + + + + + + clipPathUnits=objectBoundingBox + + + + + + clipPathUnits=userSpaceOnUse + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html new file mode 100644 index 000000000000..55033509f756 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html @@ -0,0 +1,91 @@ + + + + masking-path-03-b-manual.svg + + + +

    Source SVG: masking-path-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-03-b.svg,v $ + + + + + + + + + + + Test 'overflow'/'clip' on outermost and inner 'svg' elements + + + + + Outer Clip + + + + Outer Clip + + + + Outer Clip + + + + Outer Clip + + + + + + + + + Inner Clip + + + + Inner Clip + + + + Inner Clip + + + + Inner Clip + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html new file mode 100644 index 000000000000..ed4bd15a70b5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html @@ -0,0 +1,59 @@ + + + + masking-path-04-b-manual.svg + + + +

    Source SVG: masking-path-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-04-b.svg,v $ + + + + + + + + + + + + Clip Test + + + + + + Clip Test + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html new file mode 100644 index 000000000000..f792a39f0360 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html @@ -0,0 +1,57 @@ + + + + masking-path-05-f-manual.svg + + + +

    Source SVG: masking-path-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-05-f.svg,v $ + + + + + + + + + + Test for clip-rule property. + + + + + clip-rule=evenodd + + + + + cliprule=nonzero + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html new file mode 100644 index 000000000000..d71f8d54235c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html @@ -0,0 +1,57 @@ + + + + masking-path-06-b-manual.svg + + + +

    Source SVG: masking-path-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-06-b.svg,v $ + + + + + + + + + + 'clip' property on images + + + + + <-- raster image + + + + + SVG image --> + + + + $Revision: 1.8 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html new file mode 100644 index 000000000000..0412497f072b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html @@ -0,0 +1,117 @@ + + + + masking-path-07-b-manual.svg + + + +

    Source SVG: masking-path-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test clip unions and intersections + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.11 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html new file mode 100644 index 000000000000..05816c0d3715 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html @@ -0,0 +1,125 @@ + + + + masking-path-08-b-manual.svg + + + +

    Source SVG: masking-path-08-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-08-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Establishing a new clipping path + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html new file mode 100644 index 000000000000..d6f44374479e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html @@ -0,0 +1,63 @@ + + + + masking-path-09-b-manual.svg + + + +

    Source SVG: masking-path-09-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-09-b.svg,v $ + + + + + + + + + + Test bounding box calculations with clip paths + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html new file mode 100644 index 000000000000..085bf66b3d5d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html @@ -0,0 +1,123 @@ + + + + masking-path-10-b-manual.svg + + + +

    Source SVG: masking-path-10-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-10-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Establishing a new masking path + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html new file mode 100644 index 000000000000..40effffb20f1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html @@ -0,0 +1,56 @@ + + + + masking-path-11-b-manual.svg + + + +

    Source SVG: masking-path-11-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-11-b.svg,v $ + + + + + + + + + + + + + ABC + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html new file mode 100644 index 000000000000..6cf14af1c2e6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html @@ -0,0 +1,73 @@ + + + + masking-path-12-f-manual.svg + + + +

    Source SVG: masking-path-12-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-12-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html new file mode 100644 index 000000000000..42955237929f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html @@ -0,0 +1,50 @@ + + + + masking-path-13-f-manual.svg + + + +

    Source SVG: masking-path-13-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-13-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html new file mode 100644 index 000000000000..aeac28c46bc7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html @@ -0,0 +1,62 @@ + + + + masking-path-14-f-manual.svg + + + +

    Source SVG: masking-path-14-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html new file mode 100644 index 000000000000..6339d524d944 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html @@ -0,0 +1,147 @@ + + + + metadata-example-01-t-manual.svg + + + +

    Source SVG: metadata-example-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: metadata-example-01-t.svg,v $ + + + + + + + + + + + + + Line drawing of woman in antique attire, + which looks legal or perhaps mystical. + image/svg+xml + Sibyll Trelawney + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://prismstandard.org/vocabularies/1.0/resourcetype.xml#birdsEye + http://prismstandard.org/vocabularies/1.0/resourcetype.xml#illustration + image/svg+xml + Line drawing of woman in antique attire, ... + online: + Sibyll Trelawney + + + http://purl.org/dc/elements/1.1/type + http://purl.org/dc/elements/1.1/format + http://purl.org/dc/elements/1.1/subject + http://purl.org/dc/elements/1.1/type + http://purl.org/dc/elements/1.1/description + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html new file mode 100644 index 000000000000..b3c1240bfbe5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html @@ -0,0 +1,94 @@ + + + + painting-control-01-f-manual.svg + + + +

    Source SVG: painting-control-01-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html new file mode 100644 index 000000000000..a44dfd189cf3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-control-02-f-manual.svg + + + +

    Source SVG: painting-control-02-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-02-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html new file mode 100644 index 000000000000..9cd40e1238da --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-control-03-f-manual.svg + + + +

    Source SVG: painting-control-03-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-03-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html new file mode 100644 index 000000000000..f4d3faa9c208 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html @@ -0,0 +1,50 @@ + + + + painting-control-04-f-manual.svg + + + +

    Source SVG: painting-control-04-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-04-f.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html new file mode 100644 index 000000000000..78e538fd3332 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html @@ -0,0 +1,107 @@ + + + + painting-control-05-f-manual.svg + + + +

    Source SVG: painting-control-05-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html new file mode 100644 index 000000000000..1b2a2eaaf015 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-control-06-f-manual.svg + + + +

    Source SVG: painting-control-06-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html new file mode 100644 index 000000000000..eb75daaf03e1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html @@ -0,0 +1,56 @@ + + + + painting-fill-01-t-manual.svg + + + +

    Source SVG: painting-fill-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-01-t.svg,v $ + + + + + + + + + Basic paint: fill properties. + + + + + + + + + + fill="none" + fill="green" + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html new file mode 100644 index 000000000000..f5221bb921e3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html @@ -0,0 +1,60 @@ + + + + painting-fill-02-t-manual.svg + + + +

    Source SVG: painting-fill-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-02-t.svg,v $ + + + + + + + + + + + Basic paint: fill properties. + fill="currentColor" + + + + + + + + + green + blue + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html new file mode 100644 index 000000000000..efba8a992b9b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html @@ -0,0 +1,54 @@ + + + + painting-fill-03-t-manual.svg + + + +

    Source SVG: painting-fill-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-03-t.svg,v $ + + + + + + + + + Basic paint: fill properties. + + + + + + + + fill-rule="evenodd" + fill-rule="nonzero" + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html new file mode 100644 index 000000000000..54974d263f4b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html @@ -0,0 +1,54 @@ + + + + painting-fill-04-t-manual.svg + + + +

    Source SVG: painting-fill-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html new file mode 100644 index 000000000000..e81b09aa9550 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html @@ -0,0 +1,60 @@ + + + + painting-fill-05-b-manual.svg + + + +

    Source SVG: painting-fill-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-05-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html new file mode 100644 index 000000000000..9ae06cc9fe80 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html @@ -0,0 +1,124 @@ + + + + painting-marker-01-f-manual.svg + + + +

    Source SVG: painting-marker-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic Markers + + + + + + + + + + + + + + + + + + + + Start, Middle and End + + + + + + + + + + + + + + + + + + + + Automatic Orientation + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html new file mode 100644 index 000000000000..2aee5884741c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html @@ -0,0 +1,212 @@ + + + + painting-marker-02-f-manual.svg + + + +

    Source SVG: painting-marker-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-02-f.svg,v $ + + + + + + + + + + + + + + + + + + Marker Rendering Properties + + + + + + + + Fill Property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stroke Property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mixed Properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mixed Properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html new file mode 100644 index 000000000000..0c73e6d0e975 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html @@ -0,0 +1,75 @@ + + + + painting-marker-03-f-manual.svg + + + +

    Source SVG: painting-marker-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + 'marker' property test + + 'marker' property + + + + + + + + + 'marker-start', 'marker-mid' & 'marker-end' attribute + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html new file mode 100644 index 000000000000..c250a36dd706 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html @@ -0,0 +1,72 @@ + + + + painting-marker-04-f-manual.svg + + + +

    Source SVG: painting-marker-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-04-f.svg,v $ + + + + + + + + + + + + + + + + + + 'marker' attribute test + + 'marker' attribute + + + + + + + + + 'marker-start', 'marker-mid' & 'marker-end' attributes + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html new file mode 100644 index 000000000000..0180187137c8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html @@ -0,0 +1,221 @@ + + + + painting-marker-05-f-manual.svg + + + +

    Source SVG: painting-marker-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test marker overflow + + + default + 'visible' + 'auto' + 'scroll' + 'hidden' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html new file mode 100644 index 000000000000..8f273c05c28b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html @@ -0,0 +1,125 @@ + + + + painting-marker-06-f-manual.svg + + + +

    Source SVG: painting-marker-06-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-marker-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic Markers + + + + + + + + + + + + + + + + + + + + Start, Middle and End + + + + + + + + + + + + + + + + + + + + Automatic Orientation + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html new file mode 100644 index 000000000000..c389e9b332a1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html @@ -0,0 +1,58 @@ + + + + painting-marker-07-f-manual.svg + + + +

    Source SVG: painting-marker-07-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-07-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html new file mode 100644 index 000000000000..6781359b25f6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html @@ -0,0 +1,80 @@ + + + + painting-marker-properties-01-f-manual.svg + + + +

    Source SVG: painting-marker-properties-01-f-manual.svg

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html new file mode 100644 index 000000000000..1b336f26106b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html @@ -0,0 +1,128 @@ + + + + painting-render-01-b-manual.svg + + + +

    Source SVG: painting-render-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-render-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic test of color-interpolation property. + + + + + + + + + + + + + + + + + + + + default (sRGB) + + + + + + + + + + + + + + + + + + + + + sRGB + + + + + + + + + + + + + + + + + + + + + linearRGB + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html new file mode 100644 index 000000000000..7c38d72e6f8c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html @@ -0,0 +1,72 @@ + + + + painting-render-02-b-manual.svg + + + +

    Source SVG: painting-render-02-b-manual.svg

    + + + + + + + + + + $RCSfile: painting-render-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + dark + light + dark + light + dark + dark or light + light + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html new file mode 100644 index 000000000000..b117fc494cbe --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-01-t-manual.svg + + + +

    Source SVG: painting-stroke-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-01-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke="none" + stroke="green" + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html new file mode 100644 index 000000000000..823669d1a991 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-02-t-manual.svg + + + +

    Source SVG: painting-stroke-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-02-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke-width="20" + stroke-linejoin="round" + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html new file mode 100644 index 000000000000..39a2f3630646 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-03-t-manual.svg + + + +

    Source SVG: painting-stroke-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-03-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke-linecap="round" + stroke-miterlimit="1" + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html new file mode 100644 index 000000000000..cf9b06fbc9bc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-04-t-manual.svg + + + +

    Source SVG: painting-stroke-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-04-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke-dasharray="10, 10" + stroke-dashoffset="10" + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html new file mode 100644 index 000000000000..78ff685cf82d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html @@ -0,0 +1,73 @@ + + + + painting-stroke-05-t-manual.svg + + + +

    Source SVG: painting-stroke-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-05-t.svg,v $ + + + + + + + + + Rendering thin strokes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html new file mode 100644 index 000000000000..6c59096b2ac2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html @@ -0,0 +1,60 @@ + + + + painting-stroke-06-t-manual.svg + + + +

    Source SVG: painting-stroke-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html new file mode 100644 index 000000000000..8eecdec1b3e5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html @@ -0,0 +1,54 @@ + + + + painting-stroke-07-t-manual.svg + + + +

    Source SVG: painting-stroke-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-07-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html new file mode 100644 index 000000000000..01cbd305152f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html @@ -0,0 +1,68 @@ + + + + painting-stroke-08-t-manual.svg + + + +

    Source SVG: painting-stroke-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-08-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html new file mode 100644 index 000000000000..7f623f8ea6e5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html @@ -0,0 +1,48 @@ + + + + painting-stroke-09-t-manual.svg + + + +

    Source SVG: painting-stroke-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-09-t.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html new file mode 100644 index 000000000000..3900e4f29444 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html @@ -0,0 +1,63 @@ + + + + painting-stroke-10-t-manual.svg + + + +

    Source SVG: painting-stroke-10-t-manual.svg

    + + + + + + + + + + $RCSfile: painting-stroke-10-t.svg,v $ + + + + + + + + + + Test stroking of zero length subpaths + + + + + + + + + + + + + Using an 'L' command: + Using a 'c' command: + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html new file mode 100644 index 000000000000..6c7c7dcfddc6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html @@ -0,0 +1,135 @@ + + + + paths-data-01-t-manual.svg + + + +

    Source SVG: paths-data-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-01-t.svg,v $ + + + + + + + + + + + + Cubic bezier curves drawn with commands: + + + + + + + + + + + M, C, S, m, c, s + + + + + + + + + + + + M, c, c, c, C, z + + + + + + + + + + M, C, Z + + + + + + + + + + + M, C, c, Z + + + + + + + + + + + m, c, s + + + + + + + + + + M, C + + + + + + + + + + + + M, c, s, s, s, z + + + + + + + + + + m, c, z + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html new file mode 100644 index 000000000000..447cc441e7fc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html @@ -0,0 +1,108 @@ + + + + paths-data-02-t-manual.svg + + + +

    Source SVG: paths-data-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-02-t.svg,v $ + + + + + + + + + Quadric bezier curves drawn with commands: + + + + + M, Q, M, q, z + + + + + + + + + m, q, z, m, q, z + + + + + + + + + M, Q, Z + + + + + + + M, Q, T, Q, z + + + + + + + + + M, Q, Q, z + + + + + + + + M, q, t, t, t, t, z + + + + + + + + + + + M, q, Q, q, Q, z + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html new file mode 100644 index 000000000000..e3fe48031c4d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html @@ -0,0 +1,97 @@ + + + + paths-data-03-f-manual.svg + + + +

    Source SVG: paths-data-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-03-f.svg,v $ + + + + + + + + + Elliptical arc curves drawn with commands: + + + + + M, A, Z + + + + + + + m, a, z + + + + + + + M, a + + + + + + + M, A, a, a, z + + + + + + + + + M, a, Z, m, A, Z, m, a, z + + + + + + + + + + + M, A, A, A, A + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html new file mode 100644 index 000000000000..5ffd91862ef8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html @@ -0,0 +1,69 @@ + + + + paths-data-04-t-manual.svg + + + +

    Source SVG: paths-data-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-04-t.svg,v $ + + + + + + + + + + + + + + M, L, L, L, Z, + subpath + M, L, L, L, Z + + + + + + + + stroked + + + + + + + + filled + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html new file mode 100644 index 000000000000..239171011f42 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html @@ -0,0 +1,66 @@ + + + + paths-data-05-t-manual.svg + + + +

    Source SVG: paths-data-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-05-t.svg,v $ + + + + + + + + + + + + + m, l, l, l, z, + subpath + m, l, l, l, z + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html new file mode 100644 index 000000000000..ee909bb871db --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html @@ -0,0 +1,71 @@ + + + + paths-data-06-t-manual.svg + + + +

    Source SVG: paths-data-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-06-t.svg,v $ + + + + + + + + + + + + + M, H, V, H, + V. H, V, H, + V, Z + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html new file mode 100644 index 000000000000..8a4ca054dca7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html @@ -0,0 +1,70 @@ + + + + paths-data-07-t-manual.svg + + + +

    Source SVG: paths-data-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-07-t.svg,v $ + + + + + + + + + + + + + m, h, v, h + v, h, v, h + v, z + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html new file mode 100644 index 000000000000..5d2e719802d6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html @@ -0,0 +1,68 @@ + + + + paths-data-08-t-manual.svg + + + +

    Source SVG: paths-data-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-08-t.svg,v $ + + + + + + + + + + + + Lines drawn with commands: + M and Z + + + + + + + + + + stroked + + + + + + + + filled + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html new file mode 100644 index 000000000000..f3fc4d153921 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html @@ -0,0 +1,65 @@ + + + + paths-data-09-t-manual.svg + + + +

    Source SVG: paths-data-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-09-t.svg,v $ + + + + + + + + + + + + Lines drawn with commands: + m and z + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html new file mode 100644 index 000000000000..b64ddcd940ea --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html @@ -0,0 +1,98 @@ + + + + paths-data-10-t-manual.svg + + + +

    Source SVG: paths-data-10-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-10-t.svg,v $ + + + + + + + + + + open + join=round + cap=butt + M, L + + + + + + open + join=bevel + cap=round + m, l + + + + + + open + join=miter + cap=square + M, L + + + + + + closed + join=round + cap=butt + M, L, Z + + + + + + closed + join=bevel + cap=round + m, l, z + + + + + + closed + join=miter + cap=square + M, L, Z + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html new file mode 100644 index 000000000000..20d8f0b96f73 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html @@ -0,0 +1,57 @@ + + + + paths-data-12-t-manual.svg + + + +

    Source SVG: paths-data-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-12-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html new file mode 100644 index 000000000000..9c4534824497 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html @@ -0,0 +1,49 @@ + + + + paths-data-13-t-manual.svg + + + +

    Source SVG: paths-data-13-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-13-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html new file mode 100644 index 000000000000..56fa8f979460 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html @@ -0,0 +1,50 @@ + + + + paths-data-14-t-manual.svg + + + +

    Source SVG: paths-data-14-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-14-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html new file mode 100644 index 000000000000..2fa718653ae0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html @@ -0,0 +1,53 @@ + + + + paths-data-15-t-manual.svg + + + +

    Source SVG: paths-data-15-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-15-t.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html new file mode 100644 index 000000000000..6e43196a37cb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html @@ -0,0 +1,56 @@ + + + + paths-data-16-t-manual.svg + + + +

    Source SVG: paths-data-16-t-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-16-t.svg,v $ + + + + + + + + + + Test relative-ness of implicit lineto path commands + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html new file mode 100644 index 000000000000..2b83f839bac9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html @@ -0,0 +1,51 @@ + + + + paths-data-17-f-manual.svg + + + +

    Source SVG: paths-data-17-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-17-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html new file mode 100644 index 000000000000..cbf6cf30b1e6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html @@ -0,0 +1,86 @@ + + + + paths-data-18-f-manual.svg + + + +

    Source SVG: paths-data-18-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-18-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html new file mode 100644 index 000000000000..1359839da459 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html @@ -0,0 +1,94 @@ + + + + paths-data-19-f-manual.svg + + + +

    Source SVG: paths-data-19-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-19-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html new file mode 100644 index 000000000000..654b484e22e0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html @@ -0,0 +1,77 @@ + + + + paths-data-20-f-manual.svg + + + +

    Source SVG: paths-data-20-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-20-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html new file mode 100644 index 000000000000..8d071607439c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html @@ -0,0 +1,123 @@ + + + + paths-dom-01-f-manual.svg + + + +

    Source SVG: paths-dom-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-dom-01-f.svg,v $ + + + + + + + + + + + + + + + Using startOffset="50": + + + + + The text goes around the rect. + + + + Using startOffset="50" and + pathLength="100": + + + + The text goes around the rect. + + + + + getTotalLength: + -1 + -1 + + getPointAtLength(0): + -1 + -1 + + getPathSegAtLength(0): + + -1n/a + + + -1n/a + + + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html new file mode 100644 index 000000000000..87b11d6a81ff --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html @@ -0,0 +1,259 @@ + + + + paths-dom-02-f-manual.svg + + + +

    Source SVG: paths-dom-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-dom-02-f.svg,v $ + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html new file mode 100644 index 000000000000..b5781089de87 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html @@ -0,0 +1,56 @@ + + + + pservers-grad-01-b-manual.svg + + + +

    Source SVG: pservers-grad-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-01-b.svg,v $ + + + + + + + + + + + + + + + + + + Linear gradient. + + Referencing gradient below. + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html new file mode 100644 index 000000000000..61707995637c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html @@ -0,0 +1,56 @@ + + + + pservers-grad-02-b-manual.svg + + + +

    Source SVG: pservers-grad-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-02-b.svg,v $ + + + + + + + + + + + + + + + + + + Radial gradient. + + Referencing gradient below. + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html new file mode 100644 index 000000000000..88a2a176f548 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html @@ -0,0 +1,58 @@ + + + + pservers-grad-03-b-manual.svg + + + +

    Source SVG: pservers-grad-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + Pattern fill. + + Referencing pattern fill below. + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html new file mode 100644 index 000000000000..97d94f289556 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html @@ -0,0 +1,67 @@ + + + + pservers-grad-04-b-manual.svg + + + +

    Source SVG: pservers-grad-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-04-b.svg,v $ + + + + + + + + + + + + + + + + + + Multi-color linear gradient. + + + + + + + + + + + + + Multi-color radial gradient. + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html new file mode 100644 index 000000000000..1c573bcf358d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html @@ -0,0 +1,65 @@ + + + + pservers-grad-05-b-manual.svg + + + +

    Source SVG: pservers-grad-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-05-b.svg,v $ + + + + + + + + + Background + + + + + + + + + + + Background + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html new file mode 100644 index 000000000000..b4680b4fc4e9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html @@ -0,0 +1,74 @@ + + + + pservers-grad-06-b-manual.svg + + + +

    Source SVG: pservers-grad-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-06-b.svg,v $ + + + + + + + + + + + + + + + + + + scale(0.5) on gradient + + + + + + + + + skewX(45) on gradient + + + + + + + + + + + scale(2), skewX(45) on pattern + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html new file mode 100644 index 000000000000..2e55d8d7c223 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html @@ -0,0 +1,63 @@ + + + + pservers-grad-07-b-manual.svg + + + +

    Source SVG: pservers-grad-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + Linear gradient filled rectangle + + + + + Linear gradient on stroke of rectangle + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html new file mode 100644 index 000000000000..561f444ee1fb --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html @@ -0,0 +1,79 @@ + + + + pservers-grad-08-b-manual.svg + + + +

    Source SVG: pservers-grad-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-08-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gradient on fill + + + + Gradient on stroke + + + + Linear gradient on filled text + Linear gradient on stroke of text + + + + $Revision: 1.13 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html new file mode 100644 index 000000000000..b9d5bffeda63 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html @@ -0,0 +1,76 @@ + + + + pservers-grad-09-b-manual.svg + + + +

    Source SVG: pservers-grad-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-09-b.svg,v $ + + + + + + + + + Testing gradientUnits attribute + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html new file mode 100644 index 000000000000..39f919e74ead --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html @@ -0,0 +1,72 @@ + + + + pservers-grad-10-b-manual.svg + + + +

    Source SVG: pservers-grad-10-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-10-b.svg,v $ + + + + + + + + + Testing spreadMethod attribute + + + + + + + + + spreadMethod=pad + + + + + + + + + spreadMethod=reflect + + + + + + + + + spreadMethod=repeat + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html new file mode 100644 index 000000000000..5056c94b8a74 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html @@ -0,0 +1,80 @@ + + + + pservers-grad-11-b-manual.svg + + + +

    Source SVG: pservers-grad-11-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-11-b.svg,v $ + + + + + + + + + + + + + + + + + Radial gradient on fill of rectangle + + + + + + + + + Radial gradient on stroke of rectangle + + + + + + + + Gradient on text fill + Radial gradient on text, black to yellow + + + + + + + + Gradient on text stroke + Radial gradient on stroke of text, black to red + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html new file mode 100644 index 000000000000..733082c3f9e8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html @@ -0,0 +1,75 @@ + + + + pservers-grad-12-b-manual.svg + + + +

    Source SVG: pservers-grad-12-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-12-b.svg,v $ + + + + + + + + + Testing gradientUnits attribute + + + + + + + + + Radial gradient with default attributes (from blue to yellow) + Gradient is blue at the object center and lime at the object edges + + + + + + + + + gradientUnits=objectBoundingBox + cx=.2, cy=.2, r=.5, fx=.2 fy=.2 + + + + + + + + + gradientUnits=userSpaceOnUse + Gradient is yellow to blue radial gradient from center to horizontal bounds + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html new file mode 100644 index 000000000000..b527b45410e9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html @@ -0,0 +1,166 @@ + + + + pservers-grad-13-b-manual.svg + + + +

    Source SVG: pservers-grad-13-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-13-b.svg,v $ + + + + + + + + + Radial gradient focal point + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html new file mode 100644 index 000000000000..3a446a1c7b2e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html @@ -0,0 +1,112 @@ + + + + pservers-grad-14-b-manual.svg + + + +

    Source SVG: pservers-grad-14-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-14-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gradient 'spreadMethod' values + + + spreadMethod="pad" + + + spreadMethod="reflect" + + + spreadMethod="repeat" + + + spreadMethod="default" + + + + spreadMethod="pad" + + + spreadMethod="reflect" + + + spreadMethod="repeat" + + + spreadMethod="default" + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html new file mode 100644 index 000000000000..e8bc4b10dd16 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html @@ -0,0 +1,57 @@ + + + + pservers-grad-15-b-manual.svg + + + +

    Source SVG: pservers-grad-15-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-15-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html new file mode 100644 index 000000000000..23222e9e5c06 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html @@ -0,0 +1,63 @@ + + + + pservers-grad-16-b-manual.svg + + + +

    Source SVG: pservers-grad-16-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-16-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html new file mode 100644 index 000000000000..313a956e67ce --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html @@ -0,0 +1,70 @@ + + + + pservers-grad-17-b-manual.svg + + + +

    Source SVG: pservers-grad-17-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-17-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + With fallback + + + + + + + + + + Without fallback + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html new file mode 100644 index 000000000000..8681f1fe5527 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html @@ -0,0 +1,74 @@ + + + + pservers-grad-18-b-manual.svg + + + +

    Source SVG: pservers-grad-18-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-18-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html new file mode 100644 index 000000000000..6ebc6ff7f5a1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html @@ -0,0 +1,71 @@ + + + + pservers-grad-20-b-manual.svg + + + +

    Source SVG: pservers-grad-20-b-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-20-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + With fallback + + + + + + + + + + Without fallback + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html new file mode 100644 index 000000000000..d9a3f015d40d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html @@ -0,0 +1,133 @@ + + + + pservers-grad-21-b-manual.svg + + + +

    Source SVG: pservers-grad-21-b-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-21-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reference + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html new file mode 100644 index 000000000000..48ee6b367c39 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html @@ -0,0 +1,88 @@ + + + + pservers-grad-22-b-manual.svg + + + +

    Source SVG: pservers-grad-22-b-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-22-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html new file mode 100644 index 000000000000..9c1f75b822de --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html @@ -0,0 +1,57 @@ + + + + pservers-grad-23-f-manual.svg + + + +

    Source SVG: pservers-grad-23-f-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-23-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html new file mode 100644 index 000000000000..62dee44c98b1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html @@ -0,0 +1,60 @@ + + + + pservers-grad-24-f-manual.svg + + + +

    Source SVG: pservers-grad-24-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-24-f.svg,v $ + + + + + + + + + + + + + + + + + There should be no red. + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html new file mode 100644 index 000000000000..c475e31853f4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html @@ -0,0 +1,61 @@ + + + + pservers-grad-stops-01-f-manual.svg + + + +

    Source SVG: pservers-grad-stops-01-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-stops-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html new file mode 100644 index 000000000000..c8f3e75caf02 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html @@ -0,0 +1,82 @@ + + + + pservers-pattern-01-b-manual.svg + + + +

    Source SVG: pservers-pattern-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-pattern-01-b.svg,v $ + + + + + + + + + + + + + + + + + Pattern created using yellow and green rectangles applied to fill of rectangle + + + + + + + + + + + Pattern of 4 rectangles applied to a stroke of a rectangle. + + + + + + + + Pattern on fill + Pattern consists of orange and green rows + + + + + + + + Pattern on stroke + Pattern consists of maroon and blue columns + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html new file mode 100644 index 000000000000..34f0a395db72 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html @@ -0,0 +1,52 @@ + + + + pservers-pattern-02-f-manual.svg + + + +

    Source SVG: pservers-pattern-02-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-02-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html new file mode 100644 index 000000000000..1e8830c89779 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html @@ -0,0 +1,83 @@ + + + + pservers-pattern-03-f-manual.svg + + + +

    Source SVG: pservers-pattern-03-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html new file mode 100644 index 000000000000..266e93dd9aa2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html @@ -0,0 +1,57 @@ + + + + pservers-pattern-04-f-manual.svg + + + +

    Source SVG: pservers-pattern-04-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html new file mode 100644 index 000000000000..b394cf07abcd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html @@ -0,0 +1,52 @@ + + + + pservers-pattern-05-f-manual.svg + + + +

    Source SVG: pservers-pattern-05-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html new file mode 100644 index 000000000000..0fbb2002872c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html @@ -0,0 +1,52 @@ + + + + pservers-pattern-06-f-manual.svg + + + +

    Source SVG: pservers-pattern-06-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html new file mode 100644 index 000000000000..5b710e35f8f2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html @@ -0,0 +1,55 @@ + + + + pservers-pattern-07-f-manual.svg + + + +

    Source SVG: pservers-pattern-07-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-07-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html new file mode 100644 index 000000000000..448a01543246 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html @@ -0,0 +1,55 @@ + + + + pservers-pattern-08-f-manual.svg + + + +

    Source SVG: pservers-pattern-08-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-08-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html new file mode 100644 index 000000000000..6fad23309938 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html @@ -0,0 +1,59 @@ + + + + pservers-pattern-09-f-manual.svg + + + +

    Source SVG: pservers-pattern-09-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-09-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html new file mode 100644 index 000000000000..50bd46bcbd32 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html @@ -0,0 +1,56 @@ + + + + render-elems-01-t-manual.svg + + + +

    Source SVG: render-elems-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + Shape fill + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html new file mode 100644 index 000000000000..8172ed326749 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html @@ -0,0 +1,56 @@ + + + + render-elems-02-t-manual.svg + + + +

    Source SVG: render-elems-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + Shape stroke + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html new file mode 100644 index 000000000000..fcbebe48d7c8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html @@ -0,0 +1,64 @@ + + + + render-elems-06-t-manual.svg + + + +

    Source SVG: render-elems-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Text fill + + G + G + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html new file mode 100644 index 000000000000..a4a0cf575cf4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html @@ -0,0 +1,62 @@ + + + + render-elems-07-t-manual.svg + + + +

    Source SVG: render-elems-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-07-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Text stroke + + G + G + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html new file mode 100644 index 000000000000..46f409cd5ad3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html @@ -0,0 +1,64 @@ + + + + render-elems-08-t-manual.svg + + + +

    Source SVG: render-elems-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-08-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Text fill and stroke + + G + G + + + + $Revision: 1.10 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html new file mode 100644 index 000000000000..a81e5c59fad7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html @@ -0,0 +1,90 @@ + + + + render-groups-01-b-manual.svg + + + +

    Source SVG: render-groups-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: render-groups-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SVG + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html new file mode 100644 index 000000000000..937a76c867ef --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html @@ -0,0 +1,84 @@ + + + + render-groups-03-t-manual.svg + + + +

    Source SVG: render-groups-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-groups-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SVG + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html new file mode 100644 index 000000000000..aff8a2468639 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html @@ -0,0 +1,81 @@ + + + + script-handle-01-b-manual.svg + + + +

    Source SVG: script-handle-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-01-b.svg,v $ + + + + + + + + + + + Event and DOM Access Test + + + + + + + + Click on the blue square + + + + Scripting Test Passed! + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html new file mode 100644 index 000000000000..7adcbb895959 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html @@ -0,0 +1,106 @@ + + + + script-handle-02-b-manual.svg + + + +

    Source SVG: script-handle-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-02-b.svg,v $ + + + + + + + + + + + + Mouse event handlers test. + + + + + + + + Target + Use the target to trigger events + + + + + + + + + + + + + + + onfocusin + onfocusout + onactivate + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html new file mode 100644 index 000000000000..9a15d2e59f77 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html @@ -0,0 +1,106 @@ + + + + script-handle-03-b-manual.svg + + + +

    Source SVG: script-handle-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-03-b.svg,v $ + + + + + + + + + + + + Mouse event handlers test. + + + + + + + + Target + Use the target to trigger events + + + + + + + + + + + + + + + onmousedown + onmouseup + onclick + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html new file mode 100644 index 000000000000..7faa657bd90e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html @@ -0,0 +1,106 @@ + + + + script-handle-04-b-manual.svg + + + +

    Source SVG: script-handle-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-04-b.svg,v $ + + + + + + + + + + + + Mouse event handlers test. + + + + + + + + Target + Use the target to trigger events + + + + + + + + + + + + + + + onmouseover + onmousemove + onmouseout + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html new file mode 100644 index 000000000000..14aa6f6179f8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html @@ -0,0 +1,59 @@ + + + + script-specify-01-f-manual.svg + + + +

    Source SVG: script-specify-01-f-manual.svg

    + + + + + + + + + + $RCSfile: script-specify-01-f.svg,v $ + + + + + + + + + + + contentScriptType Test + + + + + Good, script didn't run. + No! This is not ECMAScript! + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html new file mode 100644 index 000000000000..9688f54247da --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html @@ -0,0 +1,61 @@ + + + + script-specify-02-f-manual.svg + + + +

    Source SVG: script-specify-02-f-manual.svg

    + + + + + + + + + + $RCSfile: script-specify-02-f.svg,v $ + + + + + + + + + + + Test unknown type attribute value on script element + + + + Good, script didn't run. + No! This is not ECMAScript! + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html new file mode 100644 index 000000000000..ae7ff60659bd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html @@ -0,0 +1,50 @@ + + + + shapes-circle-01-t-manual.svg + + + +

    Source SVG: shapes-circle-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-circle-01-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html new file mode 100644 index 000000000000..f4f70d3553d2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html @@ -0,0 +1,60 @@ + + + + shapes-circle-02-t-manual.svg + + + +

    Source SVG: shapes-circle-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-circle-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html new file mode 100644 index 000000000000..e470800920f7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html @@ -0,0 +1,63 @@ + + + + shapes-ellipse-01-t-manual.svg + + + +

    Source SVG: shapes-ellipse-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-ellipse-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html new file mode 100644 index 000000000000..ed45b7a46af3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html @@ -0,0 +1,57 @@ + + + + shapes-ellipse-02-t-manual.svg + + + +

    Source SVG: shapes-ellipse-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-ellipse-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html new file mode 100644 index 000000000000..96e4e3de9807 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html @@ -0,0 +1,58 @@ + + + + shapes-ellipse-03-f-manual.svg + + + +

    Source SVG: shapes-ellipse-03-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-ellipse-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html new file mode 100644 index 000000000000..c6aa3cfbd10a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html @@ -0,0 +1,63 @@ + + + + shapes-grammar-01-f-manual.svg + + + +

    Source SVG: shapes-grammar-01-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-grammar-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html new file mode 100644 index 000000000000..1d7fc22cf462 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html @@ -0,0 +1,103 @@ + + + + shapes-intro-01-t-manual.svg + + + +

    Source SVG: shapes-intro-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-intro-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stroked + Unstroked + Zero width rect + Zero height rect + Zero radius circle + Zero x radius ellipse + Zero y radius ellipse + Zero length line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html new file mode 100644 index 000000000000..3d9765dd94d6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html @@ -0,0 +1,76 @@ + + + + shapes-intro-02-f-manual.svg + + + +

    Source SVG: shapes-intro-02-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-intro-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html new file mode 100644 index 000000000000..d5707729a3db --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html @@ -0,0 +1,72 @@ + + + + shapes-line-01-t-manual.svg + + + +

    Source SVG: shapes-line-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-line-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html new file mode 100644 index 000000000000..cf6374cf0ee2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html @@ -0,0 +1,48 @@ + + + + shapes-line-02-f-manual.svg + + + +

    Source SVG: shapes-line-02-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-line-02-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html new file mode 100644 index 000000000000..2de242bedecd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html @@ -0,0 +1,68 @@ + + + + shapes-polygon-01-t-manual.svg + + + +

    Source SVG: shapes-polygon-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polygon-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html new file mode 100644 index 000000000000..d627e415cbbe --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html @@ -0,0 +1,73 @@ + + + + shapes-polygon-02-t-manual.svg + + + +

    Source SVG: shapes-polygon-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polygon-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html new file mode 100644 index 000000000000..b64ae5eff0e3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html @@ -0,0 +1,52 @@ + + + + shapes-polygon-03-t-manual.svg + + + +

    Source SVG: shapes-polygon-03-t-manual.svg

    + + + + + + + + + + $RCSfile: shapes-polygon-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html new file mode 100644 index 000000000000..3954e8c3a1ef --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html @@ -0,0 +1,74 @@ + + + + shapes-polyline-01-t-manual.svg + + + +

    Source SVG: shapes-polyline-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polyline-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html new file mode 100644 index 000000000000..dda9c7194fd5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html @@ -0,0 +1,73 @@ + + + + shapes-polyline-02-t-manual.svg + + + +

    Source SVG: shapes-polyline-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polyline-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html new file mode 100644 index 000000000000..5a74947fb7c8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html @@ -0,0 +1,64 @@ + + + + shapes-rect-01-t-manual.svg + + + +

    Source SVG: shapes-rect-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-rect-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html new file mode 100644 index 000000000000..651458f76525 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html @@ -0,0 +1,63 @@ + + + + shapes-rect-02-t-manual.svg + + + +

    Source SVG: shapes-rect-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-rect-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html new file mode 100644 index 000000000000..8cfea5eba81a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html @@ -0,0 +1,127 @@ + + + + shapes-rect-03-t-manual.svg + + + +

    Source SVG: shapes-rect-03-t-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html new file mode 100644 index 000000000000..30ad9d4bd54d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html @@ -0,0 +1,53 @@ + + + + shapes-rect-04-f-manual.svg + + + +

    Source SVG: shapes-rect-04-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html new file mode 100644 index 000000000000..f971231d3023 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html @@ -0,0 +1,59 @@ + + + + shapes-rect-05-f-manual.svg + + + +

    Source SVG: shapes-rect-05-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html new file mode 100644 index 000000000000..4fa17abd67e4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html @@ -0,0 +1,57 @@ + + + + shapes-rect-06-f-manual.svg + + + +

    Source SVG: shapes-rect-06-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html new file mode 100644 index 000000000000..d8d11f6476f9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html @@ -0,0 +1,52 @@ + + + + shapes-rect-07-f-manual.svg + + + +

    Source SVG: shapes-rect-07-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-07-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html new file mode 100644 index 000000000000..068059208137 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-cond-01-t-manual.svg + + + +

    Source SVG: struct-cond-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-01-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html new file mode 100644 index 000000000000..e33ec280aa63 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html @@ -0,0 +1,561 @@ + + + + struct-cond-02-t-manual.svg + + + +

    Source SVG: struct-cond-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-02-t.svg,v $ + + + + + + + + + + + + + + Waarom kan hulle nie net doodgewoon Afrikaans praat nie? + Afrikaans + + + ለምንድነው አማርኛ የማይናገሩት፧ + Amharic + + + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + Arabic (SA) + + + Защо те просто не могат да говорят български ? + Bulgarian + + + ওরা েকন বাংলা বলেত পাের না ? + Bengali + + + + Per què no poden simplement parlar en català ? + Catalan + + + Proč prostě nemluví česky ? + Czech + + + Pam dydyn nhw ddim yn siarad Cymraeg ? + Welsh + + + Hvorfor kan de ikke bare tale dansk ? + Danish + + + + Warum sprechen sie nicht einfach Deutsch ? + German (DE) + + + Μα γιατί δεν μπορούν να μιλήσουν Ελληνικά ; + Greek (modern, GR) + + + Why can't they just speak English ? + English (US) + + + ¿Por qué no pueden simplemente hablar en castellano ? + Spanish (ES) + + + Zergatik ezin dute  Euzkeraz bakarrik hitzegin? + Basque + + + خب، چرا فارسى صحبت نمى كنند؟ + Farsi + + + Miksi he eivät yksinkertaisesti puhu suomea ? + Finnish + + + + Pourquoi, tout simplement, ne parlent-ils pas en Français ? + French (FR) + + + Carson nach eil iad a'bruidhinn na Gàidhlige ? + Scots Gaelic + + + બદ્ધા લોકો ગુજરાતી કૅમ નથી બોલતા? + Gujarti (IN) + + + + למה הם פשוט לא מדברים עברית ? + Hebrew (modern) + + + यह लोग हिन्दी क्यों नहीं बोल सकते हैं ? + Hindi + + + Zašto jednostavno ne govore hrvatski ? + Croatian + + + Miért nem beszélnek egyszerűen magyarul ? + Hungarian + + + + Ինչու՞ նրանք չեն խոսում Հայերեն + + Armenian + + + Mengapa mereka tidak bisa bicara bahasa Indonesia ? + Indonesian + + + Hvers vegna geta þeir ekki réttlátur tala Íslenska ? + Icelandic + + + Perchè non possono semplicemente parlare italiano ? + Italian + + + + ᓱᒻᒪᓂᒃᑯᐊ ᐃᓄᒃᑎᑐ ᑐᐃᓐᓇᔭᙱᓚᑦ + Inuktitut + + + なぜ、みんな日本語を話してくれないのか? + Japanese (JP) + + + Kenapa kok ora nganggo  basa Jawa  wae? + Javanese + + + რატომ არ ლაპარაკობენ ისინი ქართულად ? + Georgian + + + Олар неге қазақ тiлiнде сойлемейдi? + Kazakh + + + ಅವರು ಕನ್ನಡ ಮಾತನಾಡಬಹುದಲ್ಲಾ? + Kannada + + + 세계의 모든 사람들이 한국어 를 이해한다면 얼마나 좋을까? + Korean + + + Емне үчүн алар кыргызча сүйлбйт? + Kirghiz + + + Kodėl gi jie nekalba lietuviškai ? + Lithuanian + + + Зошто тие едноставно не говорат македонски ? + Macedonian + + + लोकांना मराठी का बोलता येत नाही? + Marathi + + + Waarom spreken ze niet gewoon Nederlands ? + Dutch + + + Hvorfor kan de ikke bare snakke norsk ? + Norwegian + + + ସେମାନେ ଉଡିଯା ରେ କହିନ୍କି କହିବେ ନହିଁ? + Oriya + + + Dlaczego oni nie mówią po polsku ? + Polish + + + + Porque é que eles não falam simplesmente em Português ? + Portugese (PT) + + + Porque é que eles não falam em Português (do Brasil) ? + Portugese (BR) + + + Porque é que eles não falam simplesmente em Português ? + Portugese + + + De ce ei nu vorbesc moldoveneşte ? + Romanian + + + Почему же они не говорят по-русски ? + Russian + + + ते किं संस्कृतः माम वदन्ति ? + Sanskrit + + + Zašto jednostavno ne govore srpski ? + Serbian + + + අැයි ඔවුන්ට ඉංගරිස කතා ෛනබ ? + Sinhalese + + + + Zakaj vendar ne govorijo slovensko ? + Slovenian + + + Pse nuk duan të flasin vetëm shqip ? + Albanian + + + Varför pratar dom inte bara svenska ? + Swedish + + + அவர்கள் ஏன் தமிழில் பேசக்கூடாது ? + Tamil + + + + తెలుగు లో ఎందుకు మాట్లాడరు? + + Telugu + + + Čaro onho ba zaboni točiki gap namezanand? + Tajik + + + ทำไมเขาถึงไม่พูด ภาษาไทย + Thai + + + Bakit hindi na lang sila magsalita ng Tagalog ? + Tagalog (Filipino) + + + Neden Türkçe konuşamıyorlar? + Turkish + + + Нишләп олар татарча сүләша алмыйлар? + Tatar + + + Чому б їм не розмовляти українською ? + Ukranian + + + ﻦﻴﻫ ﻰﺘﻠﻭﺒ ﻦﻴﻬﻨ ﻦﻭﻴﻜ ﻮﺪﺭﺃ بس ﻮﻩ ﻟﻮﮒ؟ + Urdu (IN) + + + ﻦﻴﻫ ﻰﺘﻠﻭﺒ ﻦﻴﻬﻨ ﻦﻭﻴﻜ ﻮﺪﺭﺃ بس ﻮﻩ ﻟﻮﮒ؟ + Urdu (PK) + + + + Nega ular uzbek tilinda gapirmaidilar? + Uzbek + + + Tại sao họ không thể chỉ nói tiếng Việt ? + Vietnamese + + + פֿאַרװאָס רעדט מען ניט פּשוט ייִדיש ? + Yiddish + + + 他们为什么不说中文 (中国) ? + Chinese (CN) + + + 他們爲什麽不說中文(台灣)? + Chinese (TW) + + + + You have no (matching) language preference set + なぜ、みんな日本語を話してくれないのか? + Why can't they just speak English ? + Pourquoi, tout simplement, ne parlent-ils pas en Français ? + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html new file mode 100644 index 000000000000..7989905dfce7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html @@ -0,0 +1,63 @@ + + + + struct-cond-03-t-manual.svg + + + +

    Source SVG: struct-cond-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-03-t.svg,v $ + + + + + + + + + + + + This viewer does more than SVG Tiny + + + + + + + + + + + + + This is not an SVG Tiny Viewer + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html new file mode 100644 index 000000000000..0a89eae5db1e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html @@ -0,0 +1,55 @@ + + + + struct-cond-overview-02-f-manual.svg + + + +

    Source SVG: struct-cond-overview-02-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-cond-overview-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html new file mode 100644 index 000000000000..000da4f1676f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-cond-overview-03-f-manual.svg + + + +

    Source SVG: struct-cond-overview-03-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-cond-overview-03-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html new file mode 100644 index 000000000000..e775e8bc324e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html @@ -0,0 +1,47 @@ + + + + struct-cond-overview-04-f-manual.svg + + + +

    Source SVG: struct-cond-overview-04-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-cond-overview-04-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html new file mode 100644 index 000000000000..ff93b25160d0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html @@ -0,0 +1,60 @@ + + + + struct-cond-overview-05-f-manual.svg + + + +

    Source SVG: struct-cond-overview-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-overview-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html new file mode 100644 index 000000000000..f93b3a067daa --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html @@ -0,0 +1,51 @@ + + + + struct-defs-01-t-manual.svg + + + +

    Source SVG: struct-defs-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-defs-01-t.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html new file mode 100644 index 000000000000..cf66db736b2e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html @@ -0,0 +1,166 @@ + + + + struct-dom-01-b-manual.svg + + + +

    Source SVG: struct-dom-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html new file mode 100644 index 000000000000..3dbe6f64524f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html @@ -0,0 +1,97 @@ + + + + struct-dom-02-b-manual.svg + + + +

    Source SVG: struct-dom-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-02-b.svg,v $ + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html new file mode 100644 index 000000000000..dba765cf969d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html @@ -0,0 +1,97 @@ + + + + struct-dom-03-b-manual.svg + + + +

    Source SVG: struct-dom-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-03-b.svg,v $ + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html new file mode 100644 index 000000000000..f3e613b2a2c2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html @@ -0,0 +1,116 @@ + + + + struct-dom-04-b-manual.svg + + + +

    Source SVG: struct-dom-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-04-b.svg,v $ + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html new file mode 100644 index 000000000000..2ebb11336c4d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html @@ -0,0 +1,114 @@ + + + + struct-dom-05-b-manual.svg + + + +

    Source SVG: struct-dom-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-05-b.svg,v $ + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html new file mode 100644 index 000000000000..a763b8476d73 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html @@ -0,0 +1,90 @@ + + + + struct-dom-06-b-manual.svg + + + +

    Source SVG: struct-dom-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-06-b.svg,v $ + + + + + + + + + + + + + + + + + + + + Removing DOM Elements is not supported + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html new file mode 100644 index 000000000000..e3688befe993 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html @@ -0,0 +1,81 @@ + + + + struct-dom-07-f-manual.svg + + + +

    Source SVG: struct-dom-07-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-07-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html new file mode 100644 index 000000000000..6216a6541b70 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html @@ -0,0 +1,69 @@ + + + + struct-dom-08-f-manual.svg + + + +

    Source SVG: struct-dom-08-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-08-f.svg,v $ + + + + + + + + + + Test that unsuspendRedraw() doesn't throw + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html new file mode 100644 index 000000000000..0e9a19b7fd8f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html @@ -0,0 +1,153 @@ + + + + struct-dom-11-f-manual.svg + + + +

    Source SVG: struct-dom-11-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-11-f.svg,v $ + + + + + + + + + + Test getIntersectionList and getEnclosureList return value liveness + + + getIntersectionList + + + getEnclosureList + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html new file mode 100644 index 000000000000..b5a467e685c2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html @@ -0,0 +1,84 @@ + + + + struct-dom-12-b-manual.svg + + + +

    Source SVG: struct-dom-12-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-12-b.svg,v $ + + + + + + + + + + + + + + + + + Click on the grey rectangle to start + Test for correspondingUseElement + Test for correspondingElement + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html new file mode 100644 index 000000000000..3d1a44d4f3c5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html @@ -0,0 +1,159 @@ + + + + struct-dom-13-f-manual.svg + + + +

    Source SVG: struct-dom-13-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-13-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html new file mode 100644 index 000000000000..94ef4480ea97 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html @@ -0,0 +1,96 @@ + + + + struct-dom-14-f-manual.svg + + + +

    Source SVG: struct-dom-14-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html new file mode 100644 index 000000000000..d84d99c77b35 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html @@ -0,0 +1,131 @@ + + + + struct-dom-15-f-manual.svg + + + +

    Source SVG: struct-dom-15-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-15-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html new file mode 100644 index 000000000000..e16c3a55151c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html @@ -0,0 +1,117 @@ + + + + struct-dom-16-f-manual.svg + + + +

    Source SVG: struct-dom-16-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-16-f.svg,v $ + + + + + + + + + + FAIL + PASS + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html new file mode 100644 index 000000000000..f24a537d0db0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html @@ -0,0 +1,95 @@ + + + + struct-dom-17-f-manual.svg + + + +

    Source SVG: struct-dom-17-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-17-f.svg,v $ + + + + + + + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html new file mode 100644 index 000000000000..89c29539372c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html @@ -0,0 +1,130 @@ + + + + struct-dom-18-f-manual.svg + + + +

    Source SVG: struct-dom-18-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-18-f.svg,v $ + + + + + + + + + + + + + + + + + + + Filler text + + FAIL + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html new file mode 100644 index 000000000000..1dabbecde7f9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html @@ -0,0 +1,80 @@ + + + + struct-dom-19-f-manual.svg + + + +

    Source SVG: struct-dom-19-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-19-f.svg,v $ + + + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html new file mode 100644 index 000000000000..d57ffb8806dc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html @@ -0,0 +1,131 @@ + + + + struct-dom-20-f-manual.svg + + + +

    Source SVG: struct-dom-20-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-20-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html new file mode 100644 index 000000000000..2627fe74e615 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html @@ -0,0 +1,41 @@ + + + + struct-frag-01-t-manual.svg + + + +

    Source SVG: struct-frag-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-01-t.svg,v $ + + + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html new file mode 100644 index 000000000000..3e2a8660bec7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html @@ -0,0 +1,51 @@ + + + + struct-frag-02-t-manual.svg + + + +

    Source SVG: struct-frag-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-02-t.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html new file mode 100644 index 000000000000..83a83efbcb2b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-frag-03-t-manual.svg + + + +

    Source SVG: struct-frag-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-03-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html new file mode 100644 index 000000000000..b43e0a261503 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-frag-04-t-manual.svg + + + +

    Source SVG: struct-frag-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-04-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html new file mode 100644 index 000000000000..e9c0a8792bc5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html @@ -0,0 +1,56 @@ + + + + struct-frag-05-t-manual.svg + + + +

    Source SVG: struct-frag-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-05-t.svg,v $ + + + + + + + + + + + + + + + Valid + + + Invalid + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html new file mode 100644 index 000000000000..791a75610bb6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html @@ -0,0 +1,58 @@ + + + + struct-frag-06-t-manual.svg + + + +

    Source SVG: struct-frag-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-06-t.svg,v $ + + + + + + + + + Default entities: amp, lt, gt, apos, quot: + &, <, >, ', " + Character references: + A hexadecimal (&#x41)= A + A decimal (&#65)= A + Entity references: + gray + + + + outlined + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html new file mode 100644 index 000000000000..e38ea32bd3da --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html @@ -0,0 +1,58 @@ + + + + struct-group-01-t-manual.svg + + + +

    Source SVG: struct-group-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-group-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html new file mode 100644 index 000000000000..7a74783d8c39 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html @@ -0,0 +1,53 @@ + + + + struct-group-02-b-manual.svg + + + +

    Source SVG: struct-group-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-group-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html new file mode 100644 index 000000000000..d2525331d6cc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html @@ -0,0 +1,269 @@ + + + + struct-group-03-t-manual.svg + + + +

    Source SVG: struct-group-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-group-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + color + display + fill + fill-rule + stroke + stroke-dasharray + stroke-dashoffset + stroke-linecap + stroke-linejoin + stroke-miterlimit + stroke-width + visibility + font-family + font-size + font-style + font-weight + text-anchor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A + + + + A + + + + A + + + + A + + + + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A + + + + A + + + + A + + + + A + + + + A + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html new file mode 100644 index 000000000000..042f324ff382 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html @@ -0,0 +1,46 @@ + + + + struct-image-01-t-manual.svg + + + +

    Source SVG: struct-image-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-01-t.svg,v $ + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html new file mode 100644 index 000000000000..b28ba8b24593 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html @@ -0,0 +1,69 @@ + + + + struct-image-02-b-manual.svg + + + +

    Source SVG: struct-image-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html new file mode 100644 index 000000000000..4852a11138e8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html @@ -0,0 +1,52 @@ + + + + struct-image-03-t-manual.svg + + + +

    Source SVG: struct-image-03-t-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-03-t.svg,v $ + + + + + + + + + + + + + + + Gamma correction + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html new file mode 100644 index 000000000000..0a99c3049a04 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html @@ -0,0 +1,46 @@ + + + + struct-image-04-t-manual.svg + + + +

    Source SVG: struct-image-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-04-t.svg,v $ + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html new file mode 100644 index 000000000000..6d810c721f69 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html @@ -0,0 +1,45 @@ + + + + struct-image-05-b-manual.svg + + + +

    Source SVG: struct-image-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-05-b.svg,v $ + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html new file mode 100644 index 000000000000..0d7a38a42900 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html @@ -0,0 +1,83 @@ + + + + struct-image-06-t-manual.svg + + + +

    Source SVG: struct-image-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-06-t.svg,v $ + + + + + + + + + + Example PreserveAspectRatio - demonstrate available options + SVG to fit + + + + Viewport 1 + + + + Viewport 2 + + + + + ---------- meet ---------- + + xMid* + + + + + + ---------- meet ---------- + + *YMid + + + + + + ---------- meet ---------- + + *none + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html new file mode 100644 index 000000000000..abb9fb422986 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html @@ -0,0 +1,66 @@ + + + + struct-image-07-t-manual.svg + + + +

    Source SVG: struct-image-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-07-t.svg,v $ + + + + + + + + + + + + no + xml:base + + + + + + xml:base + on image + + + + + + xml:base + on parent + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html new file mode 100644 index 000000000000..bd3171949356 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html @@ -0,0 +1,50 @@ + + + + struct-image-08-t-manual.svg + + + +

    Source SVG: struct-image-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-08-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html new file mode 100644 index 000000000000..61b5717c9fbd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-image-09-t-manual.svg + + + +

    Source SVG: struct-image-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-09-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html new file mode 100644 index 000000000000..59d76cead849 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html @@ -0,0 +1,50 @@ + + + + struct-image-10-t-manual.svg + + + +

    Source SVG: struct-image-10-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-10-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html new file mode 100644 index 000000000000..baba6dfacee5 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html @@ -0,0 +1,56 @@ + + + + struct-image-11-b-manual.svg + + + +

    Source SVG: struct-image-11-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-11-b.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html new file mode 100644 index 000000000000..c9201db7cec1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html @@ -0,0 +1,60 @@ + + + + struct-image-12-b-manual.svg + + + +

    Source SVG: struct-image-12-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-12-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html new file mode 100644 index 000000000000..fb87740daf8e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html @@ -0,0 +1,111 @@ + + + + struct-image-13-f-manual.svg + + + +

    Source SVG: struct-image-13-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-13-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Greyscale, various bit depths, two with alpha + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Truecolor and indexed, various bit depths, two with alpha + + Non-interlaced images + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html new file mode 100644 index 000000000000..ee6ef116c1c4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html @@ -0,0 +1,111 @@ + + + + struct-image-14-f-manual.svg + + + +

    Source SVG: struct-image-14-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Greyscale, various bit depths, two with alpha + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Truecolor and indexed, various bit depths, two with alpha + + Interlaced images + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html new file mode 100644 index 000000000000..29b21469dbd6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html @@ -0,0 +1,120 @@ + + + + struct-image-15-f-manual.svg + + + +

    Source SVG: struct-image-15-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-15-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Background color, with alpha + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Background color, with transparency + + Handling bKGd and tRNs + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html new file mode 100644 index 000000000000..f80990ee5bf7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-image-16-f-manual.svg + + + +

    Source SVG: struct-image-16-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-16-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html new file mode 100644 index 000000000000..cd70a27a11b6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html @@ -0,0 +1,46 @@ + + + + struct-image-17-b-manual.svg + + + +

    Source SVG: struct-image-17-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-17-b.svg,v $ + + + + + + + + + Test that SVG images in <image> are not scripted or animated + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html new file mode 100644 index 000000000000..8f7d163ce69a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html @@ -0,0 +1,52 @@ + + + + struct-image-18-f-manual.svg + + + +

    Source SVG: struct-image-18-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-18-f.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html new file mode 100644 index 000000000000..c6ff4c82c4d8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html @@ -0,0 +1,53 @@ + + + + struct-image-19-f-manual.svg + + + +

    Source SVG: struct-image-19-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-19-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html new file mode 100644 index 000000000000..24f927f9da95 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html @@ -0,0 +1,114 @@ + + + + struct-svg-01-f-manual.svg + + + +

    Source SVG: struct-svg-01-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-svg-01-f.svg,v $ + + + + + + + + + + + + Initial value of the 'svg' tag's 'width' attribute: + + + Initial value of the 'svg' tag's 'height' attribute: + + + Initial value of the 'svg' tag's 'x' attribute: + + + Initial value of the 'svg' tag's 'y' attribute: + + + FAIL + + + + + + $Revision: 1.4 $ + + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html new file mode 100644 index 000000000000..b5a4b3f49f7d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html @@ -0,0 +1,134 @@ + + + + struct-svg-02-f-manual.svg + + + +

    Source SVG: struct-svg-02-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-svg-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html new file mode 100644 index 000000000000..edb9af23d6ca --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html @@ -0,0 +1,60 @@ + + + + struct-svg-03-f-manual.svg + + + +

    Source SVG: struct-svg-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-svg-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html new file mode 100644 index 000000000000..e52bc5632f3f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html @@ -0,0 +1,60 @@ + + + + struct-symbol-01-b-manual.svg + + + +

    Source SVG: struct-symbol-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-symbol-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html new file mode 100644 index 000000000000..da3389e6de27 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html @@ -0,0 +1,99 @@ + + + + struct-use-01-t-manual.svg + + + +

    Source SVG: struct-use-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text + + + + + + + <rect> + <circle> + <ellipse> + <line> + <polyline> + <polygon> + <path> + <image> + <text> + + + <g> + <use> + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html new file mode 100644 index 000000000000..2f917b3309d3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html @@ -0,0 +1,61 @@ + + + + struct-use-03-t-manual.svg + + + +

    Source SVG: struct-use-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-03-t.svg,v $ + + + + + + + + + + + + + Reference + + <use> + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html new file mode 100644 index 000000000000..a3c60058cd02 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html @@ -0,0 +1,54 @@ + + + + struct-use-04-b-manual.svg + + + +

    Source SVG: struct-use-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-04-b.svg,v $ + + + + + + + + + + + + + + + + + + External references on <use> + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html new file mode 100644 index 000000000000..e5ade488fcf0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html @@ -0,0 +1,70 @@ + + + + struct-use-05-b-manual.svg + + + +

    Source SVG: struct-use-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-05-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + External references and computed values + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html new file mode 100644 index 000000000000..613ed6fcfb89 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html @@ -0,0 +1,51 @@ + + + + struct-use-06-b-manual.svg + + + +

    Source SVG: struct-use-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-06-b.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html new file mode 100644 index 000000000000..84d9a1cd54d2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html @@ -0,0 +1,56 @@ + + + + struct-use-07-b-manual.svg + + + +

    Source SVG: struct-use-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html new file mode 100644 index 000000000000..0e42e2b1b7d9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html @@ -0,0 +1,57 @@ + + + + struct-use-08-b-manual.svg + + + +

    Source SVG: struct-use-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-08-b.svg,v $ + + + + + + + + + + + + 'use' referencing 'svg' element + + + + + + 'use' referencing 'image' element + + + This text should be visible. + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html new file mode 100644 index 000000000000..70b079a1c12e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html @@ -0,0 +1,67 @@ + + + + struct-use-09-b-manual.svg + + + +

    Source SVG: struct-use-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-09-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html new file mode 100644 index 000000000000..f2da4cd7ece3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html @@ -0,0 +1,121 @@ + + + + struct-use-10-f-manual.svg + + + +

    Source SVG: struct-use-10-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-10-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + CSS selectors and use element + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html new file mode 100644 index 000000000000..ad303ba7c290 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html @@ -0,0 +1,137 @@ + + + + struct-use-11-f-manual.svg + + + +

    Source SVG: struct-use-11-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-11-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html new file mode 100644 index 000000000000..bddac061e441 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html @@ -0,0 +1,86 @@ + + + + struct-use-12-f-manual.svg + + + +

    Source SVG: struct-use-12-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-12-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html new file mode 100644 index 000000000000..7bd9b978ceba --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html @@ -0,0 +1,65 @@ + + + + struct-use-13-f-manual.svg + + + +

    Source SVG: struct-use-13-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-13-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html new file mode 100644 index 000000000000..6812e6042820 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html @@ -0,0 +1,63 @@ + + + + struct-use-14-f-manual.svg + + + +

    Source SVG: struct-use-14-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html new file mode 100644 index 000000000000..2dd2cea81a75 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html @@ -0,0 +1,66 @@ + + + + struct-use-15-f-manual.svg + + + +

    Source SVG: struct-use-15-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-15-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html new file mode 100644 index 000000000000..923205d91505 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html @@ -0,0 +1,62 @@ + + + + styling-class-01-f-manual.svg + + + +

    Source SVG: styling-class-01-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-class-01-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html new file mode 100644 index 000000000000..e5e0ab360431 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html @@ -0,0 +1,82 @@ + + + + styling-css-01-b-manual.svg + + + +

    Source SVG: styling-css-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + element selectors: + + + + + + + + + + + + + + + class selectors: + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html new file mode 100644 index 000000000000..6845ede211dd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html @@ -0,0 +1,78 @@ + + + + styling-css-02-b-manual.svg + + + +

    Source SVG: styling-css-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-02-b.svg,v $ + + + + + + + + + + + + + + + + id selectors: + + + + + + + + + + + + + + attribute selectors: + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html new file mode 100644 index 000000000000..2bc98ea6ce5f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html @@ -0,0 +1,84 @@ + + + + styling-css-03-b-manual.svg + + + +

    Source SVG: styling-css-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-03-b.svg,v $ + + + + + + + + + + + + + + + ancestor selectors and child selectors: + + + + + + + + + + + + + + + ancestor, immediate-sibling and first-child selectors: + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html new file mode 100644 index 000000000000..e9aeb2e16325 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html @@ -0,0 +1,141 @@ + + + + styling-css-04-f-manual.svg + + + +

    Source SVG: styling-css-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-04-f.svg,v $ + + + + + + + + + + CSS selector test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A + B + C + D + E + F + 1 + 2 + 3 + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html new file mode 100644 index 000000000000..9b831845f6a7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html @@ -0,0 +1,60 @@ + + + + styling-css-05-b-manual.svg + + + +

    Source SVG: styling-css-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-05-b.svg,v $ + + + + + + + + + + + + + + + + Good morning! + + Bon avant-midi! + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html new file mode 100644 index 000000000000..2767329013e7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html @@ -0,0 +1,165 @@ + + + + styling-css-06-b-manual.svg + + + +

    Source SVG: styling-css-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-06-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visited + + + Unvisited + + + Hover me + + And me, too! + Select me + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html new file mode 100644 index 000000000000..e08d2febdfa2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html @@ -0,0 +1,50 @@ + + + + styling-css-07-f-manual.svg + + + +

    Source SVG: styling-css-07-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-07-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html new file mode 100644 index 000000000000..ab31884c8a15 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html @@ -0,0 +1,104 @@ + + + + styling-css-08-f-manual.svg + + + +

    Source SVG: styling-css-08-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-08-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html new file mode 100644 index 000000000000..f7e053ef6825 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html @@ -0,0 +1,70 @@ + + + + styling-css-09-f-manual.svg + + + +

    Source SVG: styling-css-09-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-09-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html new file mode 100644 index 000000000000..1f2f2ff2ab11 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html @@ -0,0 +1,59 @@ + + + + styling-css-10-f-manual.svg + + + +

    Source SVG: styling-css-10-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-10-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html new file mode 100644 index 000000000000..6d59038b16b8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html @@ -0,0 +1,56 @@ + + + + styling-elem-01-b-manual.svg + + + +

    Source SVG: styling-elem-01-b-manual.svg

    + + + + + + + + + + $RCSfile: styling-elem-01-b.svg,v $ + + + + + + + + + + Test that <style type=""> is honored + + + + No type="" attribute + Rubbish type="" attribute + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html new file mode 100644 index 000000000000..a3709ae70810 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html @@ -0,0 +1,61 @@ + + + + styling-inherit-01-b-manual.svg + + + +

    Source SVG: styling-inherit-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-inherit-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html new file mode 100644 index 000000000000..329792c63f00 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html @@ -0,0 +1,48 @@ + + + + styling-pres-01-t-manual.svg + + + +

    Source SVG: styling-pres-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-pres-01-t.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html new file mode 100644 index 000000000000..35fa750d4140 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html @@ -0,0 +1,185 @@ + + + + styling-pres-02-f-manual.svg + + + +

    Source SVG: styling-pres-02-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-02-f.svg,v $ + + + + + + + + + Testing inapplicable presentation attributes + + + + + + + + + abc + + + + + + + + fill on image + + + stop-opacity on tspan + + + font-size on rect + + + font-style on circle + + + stop-color on text + + + font-variant on ellipse + + + letter-spacing on polyline + + + flood-color on tref + + + flood-opacity on textPath + + + clr-intp-filters on altGlyph + + + display on linearGradient + + + fill-rule on stop + + + visibility on radialGradient + + + lighting-color on clipPath + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html new file mode 100644 index 000000000000..117eb41ad597 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html @@ -0,0 +1,48 @@ + + + + styling-pres-03-f-manual.svg + + + +

    Source SVG: styling-pres-03-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-03-f.svg,v $ + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html new file mode 100644 index 000000000000..6ddcdb289eff --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html @@ -0,0 +1,93 @@ + + + + styling-pres-04-f-manual.svg + + + +

    Source SVG: styling-pres-04-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html new file mode 100644 index 000000000000..226dc0db47cf --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html @@ -0,0 +1,66 @@ + + + + styling-pres-05-f-manual.svg + + + +

    Source SVG: styling-pres-05-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html new file mode 100644 index 000000000000..71108691bd0c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html @@ -0,0 +1,190 @@ + + + + svgdom-over-01-f-manual.svg + + + +

    Source SVG: svgdom-over-01-f-manual.svg

    + + + + + + + + + + $RCSfile: svgdom-over-01-f.svg,v $ + + + + + + + + + + + + + + + + sometext + + + + + + + + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html new file mode 100644 index 000000000000..edfd5a317f3b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html @@ -0,0 +1,67 @@ + + + + text-align-01-b-manual.svg + + + +

    Source SVG: text-align-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-01-b.svg,v $ + + + + + + + + + Test 'text-anchor' (horizontal) + + + + + text-anchor:none + + + + + text-anchor:start + + + + + text-anchor:middle + + + + + text-anchor:end + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html new file mode 100644 index 000000000000..098c04096f86 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html @@ -0,0 +1,56 @@ + + + + text-align-02-b-manual.svg + + + +

    Source SVG: text-align-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-02-b.svg,v $ + + + + + + + + + Test 'baseline-shift' (horizontal) + + + Normalbaseline-shift:7text + + + Normalbaseline-shift:-70%text + + + Normalsubsupertext + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html new file mode 100644 index 000000000000..c6e84fa2f6b1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html @@ -0,0 +1,53 @@ + + + + text-align-03-b-manual.svg + + + +

    Source SVG: text-align-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-03-b.svg,v $ + + + + + + + + + Test of 'text-anchor' + + + + + + Begin with "end", switch to "middle" in a tspan, and "start" ends it. + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html new file mode 100644 index 000000000000..80cb910d30c4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html @@ -0,0 +1,72 @@ + + + + text-align-04-b-manual.svg + + + +

    Source SVG: text-align-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-04-b.svg,v $ + + + + + + + + + + + + + + Test of 'text-anchor' + + end text tref + + + + Tspan, tref, toap + + + + + start text pink tspan + + + middle text bold tspan + + + + + + Text-anchor: end text on path + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html new file mode 100644 index 000000000000..98fba0d2917b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html @@ -0,0 +1,61 @@ + + + + text-align-05-b-manual.svg + + + +

    Source SVG: text-align-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-05-b.svg,v $ + + + + + + + + + Test 'text-anchor' (vertical) + + + + + start + + + + middle + + + + end + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html new file mode 100644 index 000000000000..3ceb6a540df1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html @@ -0,0 +1,62 @@ + + + + text-align-06-b-manual.svg + + + +

    Source SVG: text-align-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-06-b.svg,v $ + + + + + + + + + Test 'baseline-shift' (vertic.) + + + + + te7xt + + + te-70%xt + + + tesubxt + + + tesuperxt + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html new file mode 100644 index 000000000000..865da7e53a3b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html @@ -0,0 +1,69 @@ + + + + text-align-07-t-manual.svg + + + +

    Source SVG: text-align-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-07-t.svg,v $ + + + + + + + + + + + + a犜णa犜णa犜ण + + + + hanging base line + + + + alphabetic base line + + + + ideographic base line + + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html new file mode 100644 index 000000000000..d94599332e59 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html @@ -0,0 +1,73 @@ + + + + text-align-08-b-manual.svg + + + +

    Source SVG: text-align-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-08-b.svg,v $ + + + + + + + + + + + + + + + + + + + + a犜णa犜णa犜ण + + + + + + + + $Revision: 1.10 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html new file mode 100644 index 000000000000..f339b216b4d8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html @@ -0,0 +1,100 @@ + + + + text-altglyph-01-b-manual.svg + + + +

    Source SVG: text-altglyph-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-altglyph-01-b.svg,v $ + + + + + + + + + + Test 'altGlyph' facilities + and many-to-many chars to glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +H +A +P +P +Y + + + SAD + + SASSY + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html new file mode 100644 index 000000000000..01a47f922e8f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html @@ -0,0 +1,323 @@ + + + + text-altglyph-02-b-manual.svg + + + +

    Source SVG: text-altglyph-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-altglyph-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actual + Expected + Actual + Expected + + + + + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + + + + + abde + + + abde + + + abde + + + abde + + + abde + + + abde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + a + b + + + + + + abcde + + + abcde + + + abcde + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abde + + + acde + + + acde + + + acde + + abcde + + + + + + + + + + + + $Revision: 1.10 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html new file mode 100644 index 000000000000..595f8a134529 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html @@ -0,0 +1,348 @@ + + + + text-altglyph-03-b-manual.svg + + + +

    Source SVG: text-altglyph-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-altglyph-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actual + Expected + Actual + Expected + + + + + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + + + bcde + + + bcde + + + bcde + + + bcde + + + + + + + abde + + + abde + + + abde + + + abde + + + abde + + + abde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + a + b + + + + + + abcde + + + abcde + + + abcde + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abcde + + + abcde + + + abcde + + + abcde + + bcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abde + + + acde + + + acde + + + acde + + abcde + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html new file mode 100644 index 000000000000..ecd3a129314b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html @@ -0,0 +1,49 @@ + + + + text-bidi-01-t-manual.svg + + + +

    Source SVG: text-bidi-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-bidi-01-t.svg,v $ + + + + + + + + + مفتاح معايير الويب + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html new file mode 100644 index 000000000000..d42609eb2159 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html @@ -0,0 +1,60 @@ + + + + text-deco-01-b-manual.svg + + + +

    Source SVG: text-deco-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-deco-01-b.svg,v $ + + + + + + + + + + Normal text + Text with line-through + Underlined text + + + One + word + has + different + underlining + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html new file mode 100644 index 000000000000..198307a90911 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html @@ -0,0 +1,161 @@ + + + + text-dom-01-f-manual.svg + + + +

    Source SVG: text-dom-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-01-f.svg,v $ + + + + + + + + + + + + This is a test of the interface SVGTextContentElement. + + .getCharNumAtPosition() result: + .getComputedTextLength() result: + .getEndPositionOfChar(11) result ('e'): + .getExtentOfChar(11) result ('e'): + .getNumberOfChars() result: + .getRotationOfChar(5) result: + .getStartPositionOfChar(11) result: + .getSubStringLength(22,9) result ('interface'): + .selectSubString(18,3) result: the word 'the' should be selected + .textLength.baseVal.value result: + .textLength.animVal.value result: + .lengthAdjust.baseVal and .lengthAdjust.animVal result: + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html new file mode 100644 index 000000000000..da0d7228b3cf --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html @@ -0,0 +1,110 @@ + + + + text-dom-02-f-manual.svg + + + +

    Source SVG: text-dom-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-02-f.svg,v $ + + + + + + + + + Test that SVGTextContentElement methods work on UTF-16 code units + Methods independent of layout + + + + + + + + a𐀀b + + + getNumberOfChars + + + getSubStringLength + + + + + $Revision: 1.10 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html new file mode 100644 index 000000000000..d9ce2ca07491 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html @@ -0,0 +1,113 @@ + + + + text-dom-03-f-manual.svg + + + +

    Source SVG: text-dom-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-03-f.svg,v $ + + + + + + + + + Test that getSubStringLength() handles out-of-range arguments + + + + + + + + + ababa + + + charnum < 0 + + + nchars < 0 + + + charnum = 0, nchars = length + + + charnum = 0, nchars = length + 10 + + + charnum = 1, nchars = -1 + + + + + $Revision: 1.9 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html new file mode 100644 index 000000000000..76ac4659814f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html @@ -0,0 +1,149 @@ + + + + text-dom-04-f-manual.svg + + + +

    Source SVG: text-dom-04-f-manual.svg

    + + + + + + + + + + $RCSfile: text-dom-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abca𝍒cb + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html new file mode 100644 index 000000000000..af843569ba6f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html @@ -0,0 +1,157 @@ + + + + text-dom-05-f-manual.svg + + + +

    Source SVG: text-dom-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-05-f.svg,v $ + + + + + + + + + Test that SVGTextContentElement methods work on UTF-16 code units + Methods that rely on layout + + + + + + + + a𐀀b + + + getStartPositionOfChar + + + getEndPositionOfChar + + + getExtentOfChar + + + getRotationOfChar + + + getCharNumAtPosition + + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html new file mode 100644 index 000000000000..1f228b767646 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html @@ -0,0 +1,55 @@ + + + + text-fonts-01-t-manual.svg + + + +

    Source SVG: text-fonts-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-01-t.svg,v $ + + + + + + + + + + A serifed face 画像 + A sans-serif face 画像 + A mono (iW) face 画像 + + A serifed face 画像 + A sans-serif face 画像 + A mono (iW) face 画像 + + This must be displayed + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html new file mode 100644 index 000000000000..9a94bf4e81e2 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html @@ -0,0 +1,63 @@ + + + + text-fonts-02-t-manual.svg + + + +

    Source SVG: text-fonts-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-02-t.svg,v $ + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html new file mode 100644 index 000000000000..8417477271af --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html @@ -0,0 +1,73 @@ + + + + text-fonts-03-t-manual.svg + + + +

    Source SVG: text-fonts-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + font-family = "Haettenschweiler" + ABC + + font-family = "Charlesworth" + ABC + + font-family = "Invalid Name" + ABC + + font-family = not specified + ABC + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html new file mode 100644 index 000000000000..488e07f81b2b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html @@ -0,0 +1,59 @@ + + + + text-fonts-04-t-manual.svg + + + +

    Source SVG: text-fonts-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-04-t.svg,v $ + + + + + + + + + + + font-family = "Haettenschweiler" + ABC + + font-family = "Charlesworth" + ABC + + font-family = "Invalid Name" + ABC + + font-family = not specified + ABC + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html new file mode 100644 index 000000000000..0f008ed9a4f4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html @@ -0,0 +1,51 @@ + + + + text-fonts-05-f-manual.svg + + + +

    Source SVG: text-fonts-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-05-f.svg,v $ + + + + + + + + + + FillerText + FillerText + FillerText + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html new file mode 100644 index 000000000000..acf7ebb1bebc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html @@ -0,0 +1,74 @@ + + + + text-fonts-202-t-manual.svg + + + +

    Source SVG: text-fonts-202-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-202-t.svg,v $ + + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + ZalamanderCaps is an OpenType font + by Tim Ahrens of Just Another Foundry + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html new file mode 100644 index 000000000000..8c0743cad3d6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html @@ -0,0 +1,119 @@ + + + + text-fonts-203-t-manual.svg + + + +

    Source SVG: text-fonts-203-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-203-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + ZalamanderCaps is an OpenType font + by Tim Ahrens of Just Another Foundry + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html new file mode 100644 index 000000000000..7a4b1d63eadd --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html @@ -0,0 +1,111 @@ + + + + text-fonts-204-t-manual.svg + + + +

    Source SVG: text-fonts-204-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-204-t.svg,v $ + + + + + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + ZalamanderCaps is an OpenType font + by Tim Ahrens of Just Another Foundry + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html new file mode 100644 index 000000000000..7951c2c2d907 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html @@ -0,0 +1,64 @@ + + + + text-intro-01-t-manual.svg + + + +

    Source SVG: text-intro-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-01-t.svg,v $ + + + + + + + + + + + + + + + Test left-to-right text. + + Polish: Mogę jeść szkło, i mi ... + Russian: Я могу есть стекло, ... + Greek: Μπορώ να φάω ... + Hebrew: אני יכול לאכול זכוכית ... + Yiddish: איך קען עסן גלאָז און ... + + + Chinese:我能吞下玻璃而不伤身体。 + + + Japanese: 私はガラスを食べます。 + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html new file mode 100644 index 000000000000..8a789427bd0f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-02-b-manual.svg + + + +

    Source SVG: text-intro-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-02-b.svg,v $ + + + + + + + + + unicode-bidi="bidi-override" direction="ltr". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="bidi-override" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="normal" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + + + $Revision: 1.10 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html new file mode 100644 index 000000000000..d219e4039329 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html @@ -0,0 +1,52 @@ + + + + text-intro-03-b-manual.svg + + + +

    Source SVG: text-intro-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-03-b.svg,v $ + + + + + + + + + + Text "我能吞下玻璃而不伤身体。" in Chinese + Japanese: 私はガラスを食べられます。それは私を傷つけません。 + Japanese: 私はガラスを食べられます。それは私を傷つけません。 + xt "我能吞 + se: 私は + se: 私は + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html new file mode 100644 index 000000000000..4131a17e108d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html @@ -0,0 +1,55 @@ + + + + text-intro-04-t-manual.svg + + + +

    Source SVG: text-intro-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-04-t.svg,v $ + + + + + + + + + Test horizontal text. + + Polish: Mogę jeść szkło, i mi nie szkodzi. + Russian: Я могу есть стекло, это мне не вредит. + Greek: Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα. + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + Yiddish: איך קען עסן גלאָז און עס טוט מיר נישט װײ. + Chinese:我能吞下玻璃而不伤身体。 + Japanese: 私はガラスを食べられます。それは私を傷つけません。 + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html new file mode 100644 index 000000000000..fcd2a965cdc0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html @@ -0,0 +1,54 @@ + + + + text-intro-05-t-manual.svg + + + +

    Source SVG: text-intro-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-05-t.svg,v $ + + + + + + + + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html new file mode 100644 index 000000000000..48b50d8d42c0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-06-t-manual.svg + + + +

    Source SVG: text-intro-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-06-t.svg,v $ + + + + + + + + + + + + + آلات + ثلاثة + + + + $Revision: 1.10 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html new file mode 100644 index 000000000000..55d3a817649e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html @@ -0,0 +1,52 @@ + + + + text-intro-07-t-manual.svg + + + +

    Source SVG: text-intro-07-t-manual.svg

    + + + + + + + + + + $RCSfile: text-intro-07-t.svg,v $ + + + + + + + + + + + + + آلات + ثلاثة + + + + + $Revision: 1.2 $ + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html new file mode 100644 index 000000000000..d6c6f8d325a3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html @@ -0,0 +1,67 @@ + + + + text-intro-09-b-manual.svg + + + +

    Source SVG: text-intro-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-09-b.svg,v $ + + + + + + + + + + + + + + + unicode-bidi="bidi-override" direction="ltr". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="bidi-override" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="normal" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html new file mode 100644 index 000000000000..783afff2b22b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-10-f-manual.svg + + + +

    Source SVG: text-intro-10-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-10-f.svg,v $ + + + + + + + + + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html new file mode 100644 index 000000000000..0e94a24dcf56 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html @@ -0,0 +1,57 @@ + + + + text-intro-11-t-manual.svg + + + +

    Source SVG: text-intro-11-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-11-t.svg,v $ + + + + + + + + + + + + + + + آلات + آلات + آلات + ثلاثة + ثلاثة + ثلاثة + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html new file mode 100644 index 000000000000..a2d65e1893ba --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-12-t-manual.svg + + + +

    Source SVG: text-intro-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-12-t.svg,v $ + + + + + + + + + + + + + آلات + ثلاثة + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html new file mode 100644 index 000000000000..e5f9b605e879 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html @@ -0,0 +1,76 @@ + + + + text-path-01-b-manual.svg + + + +

    Source SVG: text-path-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-path-01-b.svg,v $ + + + + + + + + + + + + + + + + + Text on a path + + + + + + + + Text on a path + + + + 'tspan' subelement inside + the 'textPath' element. + + + + + The Text on path + + + 'startOffset' attribute of the + 'textPath' element. + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html new file mode 100644 index 000000000000..48dea56fb8e6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html @@ -0,0 +1,81 @@ + + + + text-path-02-b-manual.svg + + + +

    Source SVG: text-path-02-b-manual.svg

    + + + + + + + + + + $RCSfile: text-path-02-b.svg,v $ + + + + + + + + + + + + + + + + + Positive offset Negative offset + + + + + + Positive offset Negative offset + + + + + + + Positive offset Negative offset + + + + + + Positive offset Negative offset + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html new file mode 100644 index 000000000000..d9e3826cda2c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html @@ -0,0 +1,52 @@ + + + + text-spacing-01-b-manual.svg + + + +

    Source SVG: text-spacing-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-spacing-01-b.svg,v $ + + + + + + + + + + letter-spacing:0 + letter-spacing:-1 + letter-spacing:.3 + ws:0 - Two Words + ws:-3 - Two Words + ws:3 - Two Words + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html new file mode 100644 index 000000000000..800a0e65744d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html @@ -0,0 +1,147 @@ + + + + text-text-01-b-manual.svg + + + +

    Source SVG: text-text-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-01-b.svg,v $ + + + + + + + + + Basic test of 'textLength' + and 'lengthAdjust' attributes. + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + + + + + + textLength: default + lengthAdjust: default + textLength: default + lengthAdjust: default + + + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + textLength: 25% longer + lengthAdjust: default + textLength: 15% shorter + lengthAdjust: default + + + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + textLength: 25% longer + lengthAdjust: spacing + textLength: 15% shorter + lengthAdjust: spacing + + + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + textLength: 25% longer + lengthAdjust: sAG + textLength: 20% shorter + lengthAdjust: sAG + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html new file mode 100644 index 000000000000..d7b3d08a9a0b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html @@ -0,0 +1,78 @@ + + + + text-text-03-b-manual.svg + + + +

    Source SVG: text-text-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Plain + Italic + Bold + Underline + Line through + Bold, italic and underlined + + + + Each line of text which flows in a + rectangular box has to be broken + into separated lines. + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html new file mode 100644 index 000000000000..ab06f0f36f8a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html @@ -0,0 +1,183 @@ + + + + text-text-04-t-manual.svg + + + +

    Source SVG: text-text-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Reference + + + + + + 1234 + + + + + + + x all + + + + + + 1234 + + + + x more + + + + + + + 1234 + + + + x fewer + + + + + + 1234 + + + + y all + + + + + 1234 + + + + y more + + + + + 1234 + + + + y fewer + + + + + 1234 + + + + + x/y all + + + + + + 1234 + + + + x/y more + + + + + + + 1234 + + + + x/y fewer + + + + + + 1234 + + + + x all y fewer + + + + + + 1234 + + + + x fewer y all + + + + + + 1234 + + + + + + $Revision: 1.12 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html new file mode 100644 index 000000000000..9dd6b49b8d0d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html @@ -0,0 +1,157 @@ + + + + text-text-05-t-manual.svg + + + +

    Source SVG: text-text-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-05-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.x 1.y + 4.x 1.y + 2.x 1.y + 1.x 4.y + 4.x 4.y + 2.x 4.y + 1.x 2.y + 4.x 2.y + 2.x 2.y + + + + text-anchor + start + + + + + + 1234 + + + + + + + 1234 + + + + + 1234 + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html new file mode 100644 index 000000000000..823cbb68db82 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html @@ -0,0 +1,108 @@ + + + + text-text-06-t-manual.svg + + + +

    Source SVG: text-text-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x positioning + y positioning + x/y positioning + + + + + + + + + + fi1234 + + + + + + + + + + fi1234 + + + + + + + + + + fi1234 + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html new file mode 100644 index 000000000000..70414a516b21 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html @@ -0,0 +1,47 @@ + + + + text-text-07-t-manual.svg + + + +

    Source SVG: text-text-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-07-t.svg,v $ + + + + + + + + + Multi X Y + ROTATE + Both Together + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html new file mode 100644 index 000000000000..a0735eae1599 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html @@ -0,0 +1,48 @@ + + + + text-text-08-b-manual.svg + + + +

    Source SVG: text-text-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-08-b.svg,v $ + + + + + + + + + Normal Text + Fill opacity + Stroke opacity + Opacity + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html new file mode 100644 index 000000000000..1512cb330a18 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html @@ -0,0 +1,47 @@ + + + + text-text-09-t-manual.svg + + + +

    Source SVG: text-text-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-09-t.svg,v $ + + + + + + + + + Multi X Y + ROTATE + Both Together + + + $Revision: 1.7 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html new file mode 100644 index 000000000000..399223c58a1f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html @@ -0,0 +1,68 @@ + + + + text-text-10-t-manual.svg + + + +

    Source SVG: text-text-10-t-manual.svg

    + + + + + + + + + + $RCSfile: text-text-10-t.svg,v $ + + + + + + + + + + Rotated 90 degrees + Rotated -90 degrees + Rotated 180 degrees + Unrotated text + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html new file mode 100644 index 000000000000..341dfc052a39 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html @@ -0,0 +1,72 @@ + + + + text-text-11-t-manual.svg + + + +

    Source SVG: text-text-11-t-manual.svg

    + + + + + + + + + + $RCSfile: text-text-11-t.svg,v $ + + + + + + + + + + + + Rotated 90 degrees + Rotated -90 degrees + Rotated 180 degrees + Unrotated text + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + + + + + $Revision: 1.3 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html new file mode 100644 index 000000000000..d28fd0745dca --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html @@ -0,0 +1,167 @@ + + + + text-text-12-t-manual.svg + + + +

    Source SVG: text-text-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-12-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.x 1.y + 4.x 1.y + 2.x 1.y + 1.x 4.y + 4.x 4.y + 2.x 4.y + 1.x 2.y + 4.x 2.y + 2.x 2.y + + + + + + + 1234 + + + + + + + 1234 + + + + + 1234 + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + text-anchor + middle + + + + + + text-anchor + end + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html new file mode 100644 index 000000000000..2681a1d57da7 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html @@ -0,0 +1,58 @@ + + + + text-tref-01-b-manual.svg + + + +

    Source SVG: text-tref-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tref-01-b.svg,v $ + + + + + + + + + + Test 'tref' element with an external referenced string. + + + + + + 'tref' to a string in another file + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html new file mode 100644 index 000000000000..8c01db917374 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html @@ -0,0 +1,55 @@ + + + + text-tselect-01-b-manual.svg + + + +

    Source SVG: text-tselect-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tselect-01-b.svg,v $ + + + + + + + + + Test single line and multiline text selection. + + Here is a stand-alone 'text' element. + Here is a second 'text' element just below. + Because these are four separate 'text' elements, + text selection should not go across lines here. + + However, these lines of text are achieved by using + one 'tspan' per line, all contained within the same + 'text' element, so you should be able to select all + four lines at the same time. + + + $Revision: 1.8 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html new file mode 100644 index 000000000000..bee4bf91dd92 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html @@ -0,0 +1,94 @@ + + + + text-tselect-02-f-manual.svg + + + +

    Source SVG: text-tselect-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tselect-02-f.svg,v $ + + + + + + + + + + + + + + StartIndex: 0 NumChars: 0 + + + abc אבג 123 דהו def + + + + + startIndex++ + + + startIndex-- + + + numChars++ + + + numChars-- + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html new file mode 100644 index 000000000000..6ce8758c73f9 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html @@ -0,0 +1,105 @@ + + + + text-tselect-03-f-manual.svg + + + +

    Source SVG: text-tselect-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tselect-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + StartIndex: 0 NumChars: 0 + + + abc אבג 123 דהו def + + + + + startIndex++ + + + startIndex-- + + + numChars++ + + + numChars-- + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html new file mode 100644 index 000000000000..c583e13e6718 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html @@ -0,0 +1,100 @@ + + + + text-tspan-01-b-manual.svg + + + +

    Source SVG: text-tspan-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tspan-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basics of tspan: changing visual properties and positioning. + + + + You are not a banana. + + + Text: "You are not a banana." + 'tspan' changes visual attributes of "not", + to green, bold. + + + + + But youare a peach! + + + Text: "But you are a peach!" + Using dx,dy, 'tspan' raises "are", + 'tspan' lowers "a peach!" + + + + + Cute and + fuzzy. + + + Text: "Cute and fuzzy." + 'tspan' char-by-char placement of "Cute and", + 'tspan' char-by-char "fuzzy", below it. + + + + $Revision: 1.10 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html new file mode 100644 index 000000000000..3c48f013531a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html @@ -0,0 +1,110 @@ + + + + text-tspan-02-b-manual.svg + + + +

    Source SVG: text-tspan-02-b-manual.svg

    + + + + + + + + + + $RCSfile: text-tspan-02-b.svg,v $ + + + + + + + + + + + Not all characters in the + text have a specified rotation + + + + + Not + + + all characters + + + in + + + the + + + + + text + + + have a + + + + specified + + + rotation + + + + +5 15 25 + + +-10 -20 -30 + + + -40 -40 -40 -40 -40 -40 -40 -40 -40 -40 + + +70 60 + + +40 30 20 + + +-40 -40 -40 -40 -40 -40 -40 -40 -40 + + + -10 -10 -10 -10 -10 -10 -10 -10 + + +-10 + + + 55 55 55 55 55 55 55 55 + + + + + + $Revision: 1.11 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html new file mode 100644 index 000000000000..0051cc3f9586 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html @@ -0,0 +1,64 @@ + + + + types-basic-01-f-manual.svg + + + +

    Source SVG: types-basic-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-basic-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + Different forms of the <number> type + + + 50 + 5e1 + .5e2 + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html new file mode 100644 index 000000000000..341db7a1de85 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html @@ -0,0 +1,75 @@ + + + + types-basic-02-f-manual.svg + + + +

    Source SVG: types-basic-02-f-manual.svg

    + + + + + + + + + + $RCSfile: types-basic-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html new file mode 100644 index 000000000000..35ccad211304 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html @@ -0,0 +1,75 @@ + + + + types-dom-01-b-manual.svg + + + +

    Source SVG: types-dom-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: types-dom-01-b.svg,v $ + + + + + + + + + + + + Rotated Text for testing SVGLocatable + Some other text with id 'otherText' + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html new file mode 100644 index 000000000000..9072bacb932b --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html @@ -0,0 +1,134 @@ + + + + types-dom-02-f-manual.svg + + + +

    Source SVG: types-dom-02-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-02-f.svg,v $ + + + + + + + + + + animVal != baseVal: + + + + SVGAnimatedNumberList + + SVGAnimatedLength + + SVGAnimatedLengthList + + SVGAnimatedAngle + + SVGAnimatedRect + + SVGAnimatedTransformList + + SVGAnimatedPreserveAspectRatio + + + + abc + + + + + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html new file mode 100644 index 000000000000..03623bf3256e --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html @@ -0,0 +1,69 @@ + + + + types-dom-03-b-manual.svg + + + +

    Source SVG: types-dom-03-b-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-03-b.svg,v $ + + + + + + + + + + Test that getBBox() works before SVGLoad + + + Abc + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html new file mode 100644 index 000000000000..123399b0ae72 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html @@ -0,0 +1,226 @@ + + + + types-dom-04-b-manual.svg + + + +

    Source SVG: types-dom-04-b-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-04-b.svg,v $ + + + + + + + + + + Testing liveness of SVG DOM objects + + + + SVGAnimatedNumberList + + SVGAnimatedLength + + SVGAnimatedLengthList + + SVGAnimatedAngle + + SVGAnimatedRect + + SVGAnimatedTransformList + + SVGAnimatedPreserveAspectRatio + + SVGAnimatedBoolean + + SVGAnimatedString + + SVGAnimatedEnumeration + + SVGAnimatedInteger + + SVGAnimatedNumber + + + + abc + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html new file mode 100644 index 000000000000..22a540f71b80 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html @@ -0,0 +1,109 @@ + + + + types-dom-05-b-manual.svg + + + +

    Source SVG: types-dom-05-b-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-05-b.svg,v $ + + + + + + + + + + Test side effects of assigning to valueAsString + + + + + + + Valid string on SVGLength + Invalid string on SVGLength + Valid string on SVGAngle + Invalid string on SVGAngle + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html new file mode 100644 index 000000000000..983ce09fa890 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html @@ -0,0 +1,119 @@ + + + + types-dom-06-f-manual.svg + + + +

    Source SVG: types-dom-06-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-06-f.svg,v $ + + + + + + + + + + + + + + SVGStringList DOM + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html new file mode 100644 index 000000000000..e5edef0d70bc --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html @@ -0,0 +1,135 @@ + + + + types-dom-07-f-manual.svg + + + +

    Source SVG: types-dom-07-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-07-f.svg,v $ + + + + + + + + + + animVal is read only: + + + + SVGAnimatedNumberList + + SVGAnimatedLength + + SVGAnimatedLengthList + + SVGAnimatedAngle + + SVGAnimatedRect + + SVGAnimatedTransformList + + SVGAnimatedPreserveAspectRatio + + + + abc + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html new file mode 100644 index 000000000000..2f46c1cbebc8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html @@ -0,0 +1,181 @@ + + + + types-dom-08-f-manual.svg + + + +

    Source SVG: types-dom-08-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-08-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SVGLocatable.getBBox() - basic test + + + + failed + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html new file mode 100644 index 000000000000..a4ec2b6a648d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html @@ -0,0 +1,82 @@ + + + + types-dom-svgfittoviewbox-01-f-manual.svg + + + +

    Source SVG: types-dom-svgfittoviewbox-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: types-dom-svgfittoviewbox-01-f.svg,v $ + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html new file mode 100644 index 000000000000..1b0470c23fef --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html @@ -0,0 +1,105 @@ + + + + types-dom-svglengthlist-01-f-manual.svg + + + +

    Source SVG: types-dom-svglengthlist-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svglengthlist-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html new file mode 100644 index 000000000000..7dbda069fc4a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html @@ -0,0 +1,105 @@ + + + + types-dom-svgnumberlist-01-f-manual.svg + + + +

    Source SVG: types-dom-svgnumberlist-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svgnumberlist-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html new file mode 100644 index 000000000000..f1ad11693eba --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html @@ -0,0 +1,104 @@ + + + + types-dom-svgstringlist-01-f-manual.svg + + + +

    Source SVG: types-dom-svgstringlist-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svgstringlist-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html new file mode 100644 index 000000000000..c9ba4eb84256 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html @@ -0,0 +1,81 @@ + + + + types-dom-svgtransformable-01-f-manual.svg + + + +

    Source SVG: types-dom-svgtransformable-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svgtransformable-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html new file mode 100644 index 000000000000..8fcc801efba3 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid href: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html new file mode 100644 index 000000000000..13106ac2279f --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid href: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html new file mode 100644 index 000000000000..76b70598e17a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/base/href/port-999999-isvalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/base/href/port-999999-novalid.html similarity index 62% rename from testing/web-platform/tests/conformance-checkers/html/elements/base/href/port-999999-isvalid.html rename to testing/web-platform/tests/conformance-checkers/html/elements/base/href/port-999999-novalid.html index 391b88094ba1..95393fab21c3 100644 --- a/testing/web-platform/tests/conformance-checkers/html/elements/base/href/port-999999-isvalid.html +++ b/testing/web-platform/tests/conformance-checkers/html/elements/base/href/port-999999-novalid.html @@ -1,4 +1,4 @@ -valid href: port-999999 +invalid href: port-999999 diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html new file mode 100644 index 000000000000..1797e6467cb0 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 +
    diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html new file mode 100644 index 000000000000..8a997594d1b1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid formaction: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html new file mode 100644 index 000000000000..a654a888c15a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html new file mode 100644 index 000000000000..21fb6e26f28a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html new file mode 100644 index 000000000000..fe4932f5f690 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid action: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/port-999999-isvalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html similarity index 64% rename from testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/port-999999-isvalid.html rename to testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html index bd27dd49f1b0..d05e591ed815 100644 --- a/testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/port-999999-isvalid.html +++ b/testing/web-platform/tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html @@ -1,5 +1,5 @@ -valid manifest: port-999999 +invalid manifest: port-999999 diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html new file mode 100644 index 000000000000..4f2290d2a504 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html new file mode 100644 index 000000000000..0c7d01801d41 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html new file mode 100644 index 000000000000..a01365d72779 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid formaction: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html new file mode 100644 index 000000000000..7c5b961f4c8d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html new file mode 100644 index 000000000000..56fed6806c98 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid formaction: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html new file mode 100644 index 000000000000..9ea67f37828a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid value attribute: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html new file mode 100644 index 000000000000..006149af2f3d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html new file mode 100644 index 000000000000..4b7e189c426d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid href: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html new file mode 100644 index 000000000000..7cc877269c1d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid data: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html new file mode 100644 index 000000000000..2f0ddf31561d --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html new file mode 100644 index 000000000000..e9fc4b917bcf --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html new file mode 100644 index 000000000000..c635f3b667e1 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html new file mode 100644 index 000000000000..963a3310125a --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html new file mode 100644 index 000000000000..9ceec19628f8 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid poster: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html new file mode 100644 index 000000000000..e877d815b976 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/testing/web-platform/tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html new file mode 100644 index 000000000000..6c1f14fbad31 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid itemid: port-999999 +
    diff --git a/testing/web-platform/tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html b/testing/web-platform/tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html new file mode 100644 index 000000000000..ceb94815df3c --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid itemtype: port-999999 +
    diff --git a/testing/web-platform/tests/conformance-checkers/messages.json b/testing/web-platform/tests/conformance-checkers/messages.json index 62cf37b56c1c..70841a3f4f84 100644 --- a/testing/web-platform/tests/conformance-checkers/messages.json +++ b/testing/web-platform/tests/conformance-checkers/messages.json @@ -80,6 +80,7 @@ "html/elements/a/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/a/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/a/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/a/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Port number must be less than 65536.", "html/elements/a/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/a/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/a/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -149,6 +150,7 @@ "html/elements/area/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/area/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/area/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/area/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Port number must be less than 65536.", "html/elements/area/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/area/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/area/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -218,6 +220,7 @@ "html/elements/audio/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/audio/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/audio/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/audio/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Port number must be less than 65536.", "html/elements/audio/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/audio/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/audio/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -283,6 +286,7 @@ "html/elements/base/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/base/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/base/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/base/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Port number must be less than 65536.", "html/elements/base/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/base/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/base/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -348,6 +352,7 @@ "html/elements/blockquote/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/blockquote/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/blockquote/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/blockquote/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Port number must be less than 65536.", "html/elements/blockquote/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/blockquote/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/blockquote/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -416,6 +421,7 @@ "html/elements/button/formaction/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/button/formaction/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/button/formaction/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/button/formaction/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Port number must be less than 65536.", "html/elements/button/formaction/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/button/formaction/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/button/formaction/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -483,6 +489,7 @@ "html/elements/del/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/del/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/del/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/del/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Port number must be less than 65536.", "html/elements/del/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/del/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/del/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -645,6 +652,7 @@ "html/elements/embed/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/embed/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/embed/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/embed/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Port number must be less than 65536.", "html/elements/embed/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/embed/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/embed/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -715,6 +723,7 @@ "html/elements/form/action/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/form/action/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/form/action/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/form/action/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Port number must be less than 65536.", "html/elements/form/action/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/form/action/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/form/action/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -790,6 +799,7 @@ "html/elements/html/manifest/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/html/manifest/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/html/manifest/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/html/manifest/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Port number must be less than 65536.", "html/elements/html/manifest/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/html/manifest/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/html/manifest/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -858,6 +868,7 @@ "html/elements/iframe/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/iframe/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/iframe/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/iframe/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Port number must be less than 65536.", "html/elements/iframe/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/iframe/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/iframe/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -925,6 +936,7 @@ "html/elements/img/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/img/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/img/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/img/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Port number must be less than 65536.", "html/elements/img/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/img/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/img/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -996,6 +1008,7 @@ "html/elements/input/type-image-formaction/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-formaction/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-image-formaction/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-image-formaction/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Port number must be less than 65536.", "html/elements/input/type-image-formaction/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-formaction/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-image-formaction/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1062,6 +1075,7 @@ "html/elements/input/type-image-src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-image-src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-image-src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Port number must be less than 65536.", "html/elements/input/type-image-src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-image-src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1128,6 +1142,7 @@ "html/elements/input/type-submit-formaction/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-submit-formaction/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-submit-formaction/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-submit-formaction/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Port number must be less than 65536.", "html/elements/input/type-submit-formaction/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-submit-formaction/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-submit-formaction/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1200,6 +1215,7 @@ "html/elements/input/type-url-value/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Tab, new line or carriage return found.", "html/elements/input/type-url-value/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-url-value/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-url-value/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Port number must be less than 65536.", "html/elements/input/type-url-value/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Tab, new line or carriage return found.", "html/elements/input/type-url-value/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-url-value/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1266,6 +1282,7 @@ "html/elements/ins/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/ins/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/ins/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/ins/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Port number must be less than 65536.", "html/elements/ins/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/ins/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/ins/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1433,6 +1450,7 @@ "html/elements/link/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/link/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/link/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/link/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Port number must be less than 65536.", "html/elements/link/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/link/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/link/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1501,6 +1519,7 @@ "html/elements/object/data/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/object/data/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/object/data/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/object/data/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Port number must be less than 65536.", "html/elements/object/data/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/object/data/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/object/data/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1769,6 +1788,7 @@ "html/elements/q/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/q/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/q/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/q/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Port number must be less than 65536.", "html/elements/q/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/q/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/q/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1840,6 +1860,7 @@ "html/elements/script/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/script/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/script/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/script/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Port number must be less than 65536.", "html/elements/script/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/script/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/script/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1907,6 +1928,7 @@ "html/elements/source/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/source/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/source/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/source/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Port number must be less than 65536.", "html/elements/source/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/source/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/source/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1988,6 +2010,7 @@ "html/elements/track/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/track/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/track/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/track/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Port number must be less than 65536.", "html/elements/track/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/track/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/track/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2057,6 +2080,7 @@ "html/elements/video/poster/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/poster/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/video/poster/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/video/poster/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Port number must be less than 65536.", "html/elements/video/poster/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/poster/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/video/poster/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2121,6 +2145,7 @@ "html/elements/video/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/video/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/video/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Port number must be less than 65536.", "html/elements/video/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/video/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2209,6 +2234,7 @@ "html/microdata/itemid/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Tab, new line or carriage return found.", "html/microdata/itemid/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/microdata/itemid/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/microdata/itemid/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Port number must be less than 65536.", "html/microdata/itemid/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Tab, new line or carriage return found.", "html/microdata/itemid/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/microdata/itemid/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2282,6 +2308,7 @@ "html/microdata/itemtype/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201cbar\u201d is not an absolute URL.", "html/microdata/itemtype/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201c?\u201d is not an absolute URL.", "html/microdata/itemtype/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/microdata/itemtype/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Port number must be less than 65536.", "html/microdata/itemtype/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201c/c\u201d is not an absolute URL.", "html/microdata/itemtype/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/microdata/itemtype/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", diff --git a/testing/web-platform/tests/conformance-checkers/tools/build-svg-tests.py b/testing/web-platform/tests/conformance-checkers/tools/build-svg-tests.py new file mode 100644 index 000000000000..c212e78896b6 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/tools/build-svg-tests.py @@ -0,0 +1,315 @@ +#!/usr/bin/env python2.7 + +# Copyright (c) 2016 PowerMapper Software +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +"""build_svg_tests.py. + +This script builds a set of SVG-in-HTML test files for the Nu Html Checker +based on the SVG 1.1 Second Edition Test Suite +http://www.w3.org/Graphics/SVG/Test/20110816/archives/W3C_SVG_11_TestSuite.tar.gz + +""" + +import logging +import os +import sys, getopt +import urllib2 + +# some files in the SVG 1.1 test suite don't validate against the SVG 1.1 DTD +# but are valid against the HTML 5 spec + +valid_svg_files = dict([ + # these entries manually added after cross checking behaviour with spec + + # VNU warns about text not in Unicode Normalization Form C, but it's not an error + ('struct-cond-02-t-manual.svg', 'Source text is not in Unicode Normalization Form C'), + # FiLl, fill and FILL are all valid in case-insensitive HTML (but SVG DTD is case-sensitive) + ('styling-css-10-f-manual.svg', 'Attribute FiLl not allowed on SVG element circle at this point') +]) + +# some files in the SVG 1.1 test suite don't validate against the SVG 1.1 DTD +# and some files are marked as version='SVG 1.2'. +# this is used to toggle between -isvalid.html and -novalid.html output + +invalid_svg_files = dict([ + # 'DTD Invalid' entries are produced by calling validate_svg_dtd (see below) + ('animate-dom-01-f-manual.svg', 'DTD Invalid'), + ('animate-dom-02-f-manual.svg', 'DTD Invalid'), + ('animate-elem-24-t-manual.svg', 'DTD Invalid'), + ('animate-elem-77-t-manual.svg', 'DTD Invalid'), + ('animate-pservers-grad-01-b-manual.svg', 'DTD Invalid'), + ('animate-script-elem-01-b-manual.svg', 'DTD Invalid'), + ('animate-struct-dom-01-b-manual.svg', 'DTD Invalid'), + ('conform-viewers-03-f-manual.svg', 'DTD Invalid'), + ('coords-dom-01-f-manual.svg', 'DTD Invalid'), + ('coords-dom-02-f-manual.svg', 'DTD Invalid'), + ('coords-dom-03-f-manual.svg', 'DTD Invalid'), + ('extend-namespace-01-f-manual.svg', 'DTD Invalid'), + ('filters-color-02-b-manual.svg', 'DTD Invalid'), + ('filters-conv-02-f-manual.svg', 'DTD Invalid'), + ('filters-conv-04-f-manual.svg', 'DTD Invalid'), + ('filters-conv-05-f-manual.svg', 'DTD Invalid'), + ('filters-light-05-f-manual.svg', 'DTD Invalid'), + ('fonts-glyph-04-t-manual.svg', 'DTD Invalid'), + ('interact-events-02-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-01-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-03-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-05-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-07-t-manual.svg', 'DTD Invalid'), + ('interact-pevents-08-f-manual.svg', 'DTD Invalid'), + ('interact-pevents-09-f-manual.svg', 'DTD Invalid'), + ('interact-pointer-01-t-manual.svg', 'DTD Invalid'), + ('interact-pointer-02-t-manual.svg', 'DTD Invalid'), + ('interact-pointer-03-t-manual.svg', 'DTD Invalid'), + ('linking-a-09-b-manual.svg', 'DTD Invalid'), + ('linking-a-10-f-manual.svg', 'DTD Invalid'), + ('masking-filter-01-f-manual.svg', 'DTD Invalid'), + ('masking-intro-01-f-manual.svg', 'DTD Invalid'), + ('masking-path-09-b-manual.svg', 'DTD Invalid'), + ('painting-marker-04-f-manual.svg', 'DTD Invalid'), + ('paths-data-18-f-manual.svg', 'DTD Invalid'), + ('paths-data-20-f-manual.svg', 'DTD Invalid'), + ('paths-dom-01-f-manual.svg', 'DTD Invalid'), + ('paths-dom-02-f-manual.svg', 'DTD Invalid'), + ('pservers-grad-23-f-manual.svg', 'DTD Invalid'), + ('render-elems-03-t-manual.svg', 'DTD Invalid'), + ('shapes-rect-03-t-manual.svg', 'DTD Invalid'), + ('struct-cond-02-t-manual.svg', 'DTD Invalid'), + ('struct-dom-07-f-manual.svg', 'DTD Invalid'), + ('struct-dom-08-f-manual.svg', 'DTD Invalid'), + ('struct-dom-11-f-manual.svg', 'DTD Invalid'), + ('struct-dom-13-f-manual.svg', 'DTD Invalid'), + ('struct-dom-14-f-manual.svg', 'DTD Invalid'), + ('struct-dom-15-f-manual.svg', 'DTD Invalid'), + ('struct-dom-17-f-manual.svg', 'DTD Invalid'), + ('struct-dom-19-f-manual.svg', 'DTD Invalid'), + ('struct-dom-20-f-manual.svg', 'DTD Invalid'), + ('struct-frag-05-t-manual.svg', 'DTD Invalid'), + ('struct-image-12-b-manual.svg', 'DTD Invalid'), + ('struct-use-11-f-manual.svg', 'DTD Invalid'), + ('struct-use-12-f-manual.svg', 'DTD Invalid'), + ('struct-use-13-f-manual.svg', 'DTD Invalid'), + ('styling-css-10-f-manual.svg', 'DTD Invalid'), + ('styling-pres-02-f-manual.svg', 'DTD Invalid'), + ('svgdom-over-01-f-manual.svg', 'DTD Invalid'), + ('text-dom-02-f-manual.svg', 'DTD Invalid'), + ('text-dom-03-f-manual.svg', 'DTD Invalid'), + ('text-dom-05-f-manual.svg', 'DTD Invalid'), + ('text-fonts-03-t-manual.svg', 'DTD Invalid'), + ('text-fonts-05-f-manual.svg', 'DTD Invalid'), + ('text-tref-02-b-manual.svg', 'DTD Invalid'), + ('text-tselect-02-f-manual.svg', 'DTD Invalid'), + ('text-tselect-03-f-manual.svg', 'DTD Invalid'), + ('types-dom-02-f-manual.svg', 'DTD Invalid'), + ('types-dom-03-b-manual.svg', 'DTD Invalid'), + ('types-dom-04-b-manual.svg', 'DTD Invalid'), + ('types-dom-05-b-manual.svg', 'DTD Invalid'), + ('types-dom-07-f-manual.svg', 'DTD Invalid'), + ('types-dom-08-f-manual.svg', 'DTD Invalid'), + + # these entries manually added after cross checking behaviour with spec + # note there are some confusing differences between w:iri-ref (used in HTML for img/@src) + # and xsd:anyURI (used in SVG for image/@xlink:href) + ('animate-elem-40-t-manual.svg', 'Spaces in data: URI - not allowed by URL Standard or RFC 2397.'), + ('conform-viewers-02-f-manual.svg', 'Newlines in data: URI - not allowed by URL Standard or RFC 2397.'), + ('coords-transformattr-01-f-manual.svg', 'Numeric character reference expanded to carriage return - not allowed in HTML5 - see 8.1.4'), + ('fonts-overview-201-t-manual.svg', 'Unsupported SVG version specified - specifies SVG 1.2'), + ('script-specify-01-f-manual.svg', 'Attribute contentscripttype not allowed on element svg at this point - not allowed in HTML5 - see 4.8.18 SVG'), + ('types-dom-04-b-manual.svg', 'Attribute externalresourcesrequired not allowed on element svg at this point - not allowed in HTML5 - see 4.8.18 SVG'), + ('metadata-example-01-t-manual.svg', 'Element rdf:rdf not allowed as child of element metadata in this context - namespaced XML not allowed in HTML5') +]) + +# TODO Github Issue #216 MathML and SVG uses xsd:anyURI, HTML URLs use URL Standard +# TODO Github Issue #217 NU has script/@type optional for HTML, but not SVG-in-HTML + +def build_html_testfiles(svgdirectory,htmldirectory): + """Builds HTML test files from SVG test suite folder.""" + + logging.debug('build_html_testfiles: IN') + + testfiles = [] + + for filename in os.listdir(svgdirectory): + #logging.debug(filename) + if filename.endswith(".svg"): + htmlpathname = build_html_test_file(filename, svgdirectory, htmldirectory) + if htmlpathname: + testfiles.append(htmlpathname) + pass + pass + + indexpathname = "index-isvalid.html" + build_html_index_file(indexpathname, testfiles) + + +def build_html_index_file(indexpathname, testfiles): + """Builds HTML test index.""" + + htmlfile = open(indexpathname, "w") + + htmlfile.write("\n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write(" SVG in HTML Test Index\n") + htmlfile.write(" \n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write("

    SVG in HTML Test Index

    \n") + + for filename in testfiles: + if filename.find("-isvalid") > 0: + htmlfile.write("

    %s

    \n" % (filename, filename)) + + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.close() + + +def build_html_test_file(filename, svgdirectory, htmldirectory): + """Builds HTML test file by wrapping input SVG in boilerplate HTML.""" + + svgpathname = svgdirectory + "/" + filename + + # valid_svg_file overrides invalid_svg_files (may invalid in case-sensitive XML but valid in case-insensitive HTML) + if invalid_svg_files.has_key(filename) and not valid_svg_files.has_key(filename): + htmlpathname = htmldirectory + "/" + filename.replace( "-manual.svg", "-novalid.html") + else: + htmlpathname = htmldirectory + "/" + filename.replace( "-manual.svg", "-isvalid.html") + + logging.debug(svgpathname) + logging.debug(htmlpathname) + + # read SVG data + svgfile = open(svgpathname, "r") + svg = svgfile.read() + svgfile.close() + + # but remove from file (not valid in HTML or SVG DTD) + svg = svg.replace('', '') + svgbefore = svg.split("")[1]; + svg = svgbefore + svgafter + + # ignore files with SVG DOCTYPE and !ENTITY declarations (unsupported in HTML) + if svg.find( "\n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write(" %s\n" % os.path.basename(svgpathname) ) + htmlfile.write(" \n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write("

    Source SVG: %s

    \n" % os.path.basename(svgpathname) ) + + # insert SVG without any XML processing to avoid unexpected transformations on + # encoding and entity refs, but remove from file (not valid in HTML) + htmlfile.write(svgbefore) + htmlfile.write(svgafter) + + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.close() + + return htmlpathname + +def create_dir_if_missing(directory): + """Create the given directory if it doesn't exist""" + + d = os.path.dirname(directory) + if not os.path.exists(directory): + os.makedirs(directory) + + +def validate_svg_dtd(filename,svg): + """Prints legacy DTD markup validation status to stdout in a format suitable for pasting into invalid_svg_files dict above.""" + + # setup multipart/form-data POST body + body = '' + body = body + '--AaB03x\r\n' + body = body + 'Content-Disposition: form-data; name="fieldname"\r\n' + body = body + '\r\n' + body = body + 'value\r\n' + body = body + '--AaB03x\r\n' + body = body + 'Content-Disposition: form-data; name="uploaded_file"; filename="test.svg"\r\n' + body = body + 'Content-Type: image/svg+xml\r\n' + body = body + '\r\n' + body = body + svg + body = body + '\r\n' + body = body + '--AaB03x--\r\n' + + # send request to W3 DTD validator for SVG 1.1 validation + headers = { "Content-type" : "multipart/form-data; boundary=AaB03x", "Content-length" : len(body) } + request = urllib2.Request("http://validator.w3.org/check?charset=utf-8&doctype=SVG+1.1&output=json", data=body, headers=headers) + response = urllib2.urlopen(request, timeout=60) + + status = response.info().getheader('X-W3C-Validator-Status') + logging.debug(status) + + if status == "Valid": + return True + + print " ('%s', 'DTD %s')," % (filename, status) + return False + + +def main(): + + #logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') + logging.debug('main: IN') + + svgdirectory = "../../svg/import" + htmldirectory = "../html-svg" + + try: + opts, args = getopt.getopt(sys.argv[1:],"",["svgdir=","outdir="]) + except getopt.GetoptError: + print 'build-svg-tests.py --svgdir --outdir ' + sys.exit(2) + + for opt, arg in opts: + print opt, arg + if opt in ("-s", "--svgdir"): + svgdirectory = arg + elif opt in ("-o", "--outdir"): + htmldirectory = arg + + + create_dir_if_missing(htmldirectory) + build_html_testfiles(svgdirectory, htmldirectory) + + +main() \ No newline at end of file diff --git a/testing/web-platform/tests/conformance-checkers/tools/index-isvalid.html b/testing/web-platform/tests/conformance-checkers/tools/index-isvalid.html new file mode 100644 index 000000000000..5f3e02fc0ba4 --- /dev/null +++ b/testing/web-platform/tests/conformance-checkers/tools/index-isvalid.html @@ -0,0 +1,451 @@ + + + + SVG in HTML Test Index + + + +

    SVG in HTML Test Index

    +

    ../html-svg/animate-elem-02-t-isvalid.html

    +

    ../html-svg/animate-elem-03-t-isvalid.html

    +

    ../html-svg/animate-elem-04-t-isvalid.html

    +

    ../html-svg/animate-elem-05-t-isvalid.html

    +

    ../html-svg/animate-elem-06-t-isvalid.html

    +

    ../html-svg/animate-elem-07-t-isvalid.html

    +

    ../html-svg/animate-elem-08-t-isvalid.html

    +

    ../html-svg/animate-elem-09-t-isvalid.html

    +

    ../html-svg/animate-elem-10-t-isvalid.html

    +

    ../html-svg/animate-elem-11-t-isvalid.html

    +

    ../html-svg/animate-elem-12-t-isvalid.html

    +

    ../html-svg/animate-elem-13-t-isvalid.html

    +

    ../html-svg/animate-elem-14-t-isvalid.html

    +

    ../html-svg/animate-elem-15-t-isvalid.html

    +

    ../html-svg/animate-elem-17-t-isvalid.html

    +

    ../html-svg/animate-elem-19-t-isvalid.html

    +

    ../html-svg/animate-elem-20-t-isvalid.html

    +

    ../html-svg/animate-elem-21-t-isvalid.html

    +

    ../html-svg/animate-elem-22-b-isvalid.html

    +

    ../html-svg/animate-elem-23-t-isvalid.html

    +

    ../html-svg/animate-elem-25-t-isvalid.html

    +

    ../html-svg/animate-elem-26-t-isvalid.html

    +

    ../html-svg/animate-elem-27-t-isvalid.html

    +

    ../html-svg/animate-elem-28-t-isvalid.html

    +

    ../html-svg/animate-elem-29-b-isvalid.html

    +

    ../html-svg/animate-elem-30-t-isvalid.html

    +

    ../html-svg/animate-elem-31-t-isvalid.html

    +

    ../html-svg/animate-elem-32-t-isvalid.html

    +

    ../html-svg/animate-elem-33-t-isvalid.html

    +

    ../html-svg/animate-elem-34-t-isvalid.html

    +

    ../html-svg/animate-elem-35-t-isvalid.html

    +

    ../html-svg/animate-elem-36-t-isvalid.html

    +

    ../html-svg/animate-elem-37-t-isvalid.html

    +

    ../html-svg/animate-elem-38-t-isvalid.html

    +

    ../html-svg/animate-elem-39-t-isvalid.html

    +

    ../html-svg/animate-elem-41-t-isvalid.html

    +

    ../html-svg/animate-elem-44-t-isvalid.html

    +

    ../html-svg/animate-elem-46-t-isvalid.html

    +

    ../html-svg/animate-elem-52-t-isvalid.html

    +

    ../html-svg/animate-elem-53-t-isvalid.html

    +

    ../html-svg/animate-elem-60-t-isvalid.html

    +

    ../html-svg/animate-elem-61-t-isvalid.html

    +

    ../html-svg/animate-elem-62-t-isvalid.html

    +

    ../html-svg/animate-elem-63-t-isvalid.html

    +

    ../html-svg/animate-elem-64-t-isvalid.html

    +

    ../html-svg/animate-elem-65-t-isvalid.html

    +

    ../html-svg/animate-elem-66-t-isvalid.html

    +

    ../html-svg/animate-elem-67-t-isvalid.html

    +

    ../html-svg/animate-elem-68-t-isvalid.html

    +

    ../html-svg/animate-elem-69-t-isvalid.html

    +

    ../html-svg/animate-elem-70-t-isvalid.html

    +

    ../html-svg/animate-elem-78-t-isvalid.html

    +

    ../html-svg/animate-elem-80-t-isvalid.html

    +

    ../html-svg/animate-elem-81-t-isvalid.html

    +

    ../html-svg/animate-elem-82-t-isvalid.html

    +

    ../html-svg/animate-elem-83-t-isvalid.html

    +

    ../html-svg/animate-elem-84-t-isvalid.html

    +

    ../html-svg/animate-elem-85-t-isvalid.html

    +

    ../html-svg/animate-elem-86-t-isvalid.html

    +

    ../html-svg/animate-elem-87-t-isvalid.html

    +

    ../html-svg/animate-elem-88-t-isvalid.html

    +

    ../html-svg/animate-elem-89-t-isvalid.html

    +

    ../html-svg/animate-elem-90-b-isvalid.html

    +

    ../html-svg/animate-elem-91-t-isvalid.html

    +

    ../html-svg/animate-elem-92-t-isvalid.html

    +

    ../html-svg/animate-interact-events-01-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-01-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-02-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-03-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-04-t-isvalid.html

    +

    ../html-svg/color-prof-01-f-isvalid.html

    +

    ../html-svg/color-prop-01-b-isvalid.html

    +

    ../html-svg/color-prop-02-f-isvalid.html

    +

    ../html-svg/color-prop-03-t-isvalid.html

    +

    ../html-svg/color-prop-04-t-isvalid.html

    +

    ../html-svg/color-prop-05-t-isvalid.html

    +

    ../html-svg/coords-coord-01-t-isvalid.html

    +

    ../html-svg/coords-coord-02-t-isvalid.html

    +

    ../html-svg/coords-dom-04-f-isvalid.html

    +

    ../html-svg/coords-trans-01-b-isvalid.html

    +

    ../html-svg/coords-trans-02-t-isvalid.html

    +

    ../html-svg/coords-trans-03-t-isvalid.html

    +

    ../html-svg/coords-trans-04-t-isvalid.html

    +

    ../html-svg/coords-trans-05-t-isvalid.html

    +

    ../html-svg/coords-trans-06-t-isvalid.html

    +

    ../html-svg/coords-trans-07-t-isvalid.html

    +

    ../html-svg/coords-trans-08-t-isvalid.html

    +

    ../html-svg/coords-trans-09-t-isvalid.html

    +

    ../html-svg/coords-trans-10-f-isvalid.html

    +

    ../html-svg/coords-trans-11-f-isvalid.html

    +

    ../html-svg/coords-trans-12-f-isvalid.html

    +

    ../html-svg/coords-trans-13-f-isvalid.html

    +

    ../html-svg/coords-trans-14-f-isvalid.html

    +

    ../html-svg/coords-transformattr-02-f-isvalid.html

    +

    ../html-svg/coords-transformattr-03-f-isvalid.html

    +

    ../html-svg/coords-transformattr-04-f-isvalid.html

    +

    ../html-svg/coords-transformattr-05-f-isvalid.html

    +

    ../html-svg/coords-units-01-b-isvalid.html

    +

    ../html-svg/coords-units-02-b-isvalid.html

    +

    ../html-svg/coords-units-03-b-isvalid.html

    +

    ../html-svg/coords-viewattr-03-b-isvalid.html

    +

    ../html-svg/filters-background-01-f-isvalid.html

    +

    ../html-svg/filters-blend-01-b-isvalid.html

    +

    ../html-svg/filters-color-01-b-isvalid.html

    +

    ../html-svg/filters-composite-02-b-isvalid.html

    +

    ../html-svg/filters-composite-03-f-isvalid.html

    +

    ../html-svg/filters-composite-04-f-isvalid.html

    +

    ../html-svg/filters-composite-05-f-isvalid.html

    +

    ../html-svg/filters-comptran-01-b-isvalid.html

    +

    ../html-svg/filters-conv-01-f-isvalid.html

    +

    ../html-svg/filters-conv-03-f-isvalid.html

    +

    ../html-svg/filters-diffuse-01-f-isvalid.html

    +

    ../html-svg/filters-displace-01-f-isvalid.html

    +

    ../html-svg/filters-displace-02-f-isvalid.html

    +

    ../html-svg/filters-example-01-b-isvalid.html

    +

    ../html-svg/filters-felem-01-b-isvalid.html

    +

    ../html-svg/filters-felem-02-f-isvalid.html

    +

    ../html-svg/filters-gauss-01-b-isvalid.html

    +

    ../html-svg/filters-gauss-02-f-isvalid.html

    +

    ../html-svg/filters-gauss-03-f-isvalid.html

    +

    ../html-svg/filters-image-01-b-isvalid.html

    +

    ../html-svg/filters-image-02-b-isvalid.html

    +

    ../html-svg/filters-image-03-f-isvalid.html

    +

    ../html-svg/filters-image-04-f-isvalid.html

    +

    ../html-svg/filters-image-05-f-isvalid.html

    +

    ../html-svg/filters-light-01-f-isvalid.html

    +

    ../html-svg/filters-light-02-f-isvalid.html

    +

    ../html-svg/filters-light-03-f-isvalid.html

    +

    ../html-svg/filters-light-04-f-isvalid.html

    +

    ../html-svg/filters-morph-01-f-isvalid.html

    +

    ../html-svg/filters-offset-01-b-isvalid.html

    +

    ../html-svg/filters-offset-02-b-isvalid.html

    +

    ../html-svg/filters-overview-01-b-isvalid.html

    +

    ../html-svg/filters-overview-02-b-isvalid.html

    +

    ../html-svg/filters-overview-03-b-isvalid.html

    +

    ../html-svg/filters-specular-01-f-isvalid.html

    +

    ../html-svg/filters-tile-01-b-isvalid.html

    +

    ../html-svg/filters-turb-01-f-isvalid.html

    +

    ../html-svg/filters-turb-02-f-isvalid.html

    +

    ../html-svg/fonts-desc-01-t-isvalid.html

    +

    ../html-svg/fonts-desc-02-t-isvalid.html

    +

    ../html-svg/fonts-desc-03-t-isvalid.html

    +

    ../html-svg/fonts-desc-04-t-isvalid.html

    +

    ../html-svg/fonts-desc-05-t-isvalid.html

    +

    ../html-svg/fonts-elem-01-t-isvalid.html

    +

    ../html-svg/fonts-elem-02-t-isvalid.html

    +

    ../html-svg/fonts-elem-03-b-isvalid.html

    +

    ../html-svg/fonts-elem-04-b-isvalid.html

    +

    ../html-svg/fonts-elem-05-t-isvalid.html

    +

    ../html-svg/fonts-elem-06-t-isvalid.html

    +

    ../html-svg/fonts-elem-07-b-isvalid.html

    +

    ../html-svg/fonts-glyph-02-t-isvalid.html

    +

    ../html-svg/fonts-glyph-03-t-isvalid.html

    +

    ../html-svg/fonts-kern-01-t-isvalid.html

    +

    ../html-svg/imp-path-01-f-isvalid.html

    +

    ../html-svg/interact-cursor-01-f-isvalid.html

    +

    ../html-svg/interact-dom-01-b-isvalid.html

    +

    ../html-svg/interact-events-01-b-isvalid.html

    +

    ../html-svg/interact-events-202-f-isvalid.html

    +

    ../html-svg/interact-events-203-t-isvalid.html

    +

    ../html-svg/interact-order-01-b-isvalid.html

    +

    ../html-svg/interact-order-02-b-isvalid.html

    +

    ../html-svg/interact-order-03-b-isvalid.html

    +

    ../html-svg/interact-pevents-04-t-isvalid.html

    +

    ../html-svg/interact-pevents-10-f-isvalid.html

    +

    ../html-svg/interact-pointer-04-f-isvalid.html

    +

    ../html-svg/interact-zoom-01-t-isvalid.html

    +

    ../html-svg/interact-zoom-02-t-isvalid.html

    +

    ../html-svg/interact-zoom-03-t-isvalid.html

    +

    ../html-svg/linking-a-01-b-isvalid.html

    +

    ../html-svg/linking-a-03-b-isvalid.html

    +

    ../html-svg/linking-a-04-t-isvalid.html

    +

    ../html-svg/linking-a-05-t-isvalid.html

    +

    ../html-svg/linking-a-07-t-isvalid.html

    +

    ../html-svg/linking-a-08-t-isvalid.html

    +

    ../html-svg/linking-frag-01-f-isvalid.html

    +

    ../html-svg/linking-uri-01-b-isvalid.html

    +

    ../html-svg/linking-uri-02-b-isvalid.html

    +

    ../html-svg/linking-uri-03-t-isvalid.html

    +

    ../html-svg/masking-mask-01-b-isvalid.html

    +

    ../html-svg/masking-mask-02-f-isvalid.html

    +

    ../html-svg/masking-opacity-01-b-isvalid.html

    +

    ../html-svg/masking-path-01-b-isvalid.html

    +

    ../html-svg/masking-path-02-b-isvalid.html

    +

    ../html-svg/masking-path-03-b-isvalid.html

    +

    ../html-svg/masking-path-04-b-isvalid.html

    +

    ../html-svg/masking-path-05-f-isvalid.html

    +

    ../html-svg/masking-path-06-b-isvalid.html

    +

    ../html-svg/masking-path-07-b-isvalid.html

    +

    ../html-svg/masking-path-08-b-isvalid.html

    +

    ../html-svg/masking-path-10-b-isvalid.html

    +

    ../html-svg/masking-path-11-b-isvalid.html

    +

    ../html-svg/masking-path-12-f-isvalid.html

    +

    ../html-svg/masking-path-13-f-isvalid.html

    +

    ../html-svg/masking-path-14-f-isvalid.html

    +

    ../html-svg/painting-control-01-f-isvalid.html

    +

    ../html-svg/painting-control-02-f-isvalid.html

    +

    ../html-svg/painting-control-03-f-isvalid.html

    +

    ../html-svg/painting-control-04-f-isvalid.html

    +

    ../html-svg/painting-control-05-f-isvalid.html

    +

    ../html-svg/painting-control-06-f-isvalid.html

    +

    ../html-svg/painting-fill-01-t-isvalid.html

    +

    ../html-svg/painting-fill-02-t-isvalid.html

    +

    ../html-svg/painting-fill-03-t-isvalid.html

    +

    ../html-svg/painting-fill-04-t-isvalid.html

    +

    ../html-svg/painting-fill-05-b-isvalid.html

    +

    ../html-svg/painting-marker-01-f-isvalid.html

    +

    ../html-svg/painting-marker-02-f-isvalid.html

    +

    ../html-svg/painting-marker-03-f-isvalid.html

    +

    ../html-svg/painting-marker-05-f-isvalid.html

    +

    ../html-svg/painting-marker-06-f-isvalid.html

    +

    ../html-svg/painting-marker-07-f-isvalid.html

    +

    ../html-svg/painting-marker-properties-01-f-isvalid.html

    +

    ../html-svg/painting-render-01-b-isvalid.html

    +

    ../html-svg/painting-render-02-b-isvalid.html

    +

    ../html-svg/painting-stroke-01-t-isvalid.html

    +

    ../html-svg/painting-stroke-02-t-isvalid.html

    +

    ../html-svg/painting-stroke-03-t-isvalid.html

    +

    ../html-svg/painting-stroke-04-t-isvalid.html

    +

    ../html-svg/painting-stroke-05-t-isvalid.html

    +

    ../html-svg/painting-stroke-06-t-isvalid.html

    +

    ../html-svg/painting-stroke-07-t-isvalid.html

    +

    ../html-svg/painting-stroke-08-t-isvalid.html

    +

    ../html-svg/painting-stroke-09-t-isvalid.html

    +

    ../html-svg/painting-stroke-10-t-isvalid.html

    +

    ../html-svg/paths-data-01-t-isvalid.html

    +

    ../html-svg/paths-data-02-t-isvalid.html

    +

    ../html-svg/paths-data-03-f-isvalid.html

    +

    ../html-svg/paths-data-04-t-isvalid.html

    +

    ../html-svg/paths-data-05-t-isvalid.html

    +

    ../html-svg/paths-data-06-t-isvalid.html

    +

    ../html-svg/paths-data-07-t-isvalid.html

    +

    ../html-svg/paths-data-08-t-isvalid.html

    +

    ../html-svg/paths-data-09-t-isvalid.html

    +

    ../html-svg/paths-data-10-t-isvalid.html

    +

    ../html-svg/paths-data-12-t-isvalid.html

    +

    ../html-svg/paths-data-13-t-isvalid.html

    +

    ../html-svg/paths-data-14-t-isvalid.html

    +

    ../html-svg/paths-data-15-t-isvalid.html

    +

    ../html-svg/paths-data-16-t-isvalid.html

    +

    ../html-svg/paths-data-17-f-isvalid.html

    +

    ../html-svg/paths-data-19-f-isvalid.html

    +

    ../html-svg/pservers-grad-01-b-isvalid.html

    +

    ../html-svg/pservers-grad-02-b-isvalid.html

    +

    ../html-svg/pservers-grad-03-b-isvalid.html

    +

    ../html-svg/pservers-grad-04-b-isvalid.html

    +

    ../html-svg/pservers-grad-05-b-isvalid.html

    +

    ../html-svg/pservers-grad-06-b-isvalid.html

    +

    ../html-svg/pservers-grad-07-b-isvalid.html

    +

    ../html-svg/pservers-grad-08-b-isvalid.html

    +

    ../html-svg/pservers-grad-09-b-isvalid.html

    +

    ../html-svg/pservers-grad-10-b-isvalid.html

    +

    ../html-svg/pservers-grad-11-b-isvalid.html

    +

    ../html-svg/pservers-grad-12-b-isvalid.html

    +

    ../html-svg/pservers-grad-13-b-isvalid.html

    +

    ../html-svg/pservers-grad-14-b-isvalid.html

    +

    ../html-svg/pservers-grad-15-b-isvalid.html

    +

    ../html-svg/pservers-grad-16-b-isvalid.html

    +

    ../html-svg/pservers-grad-17-b-isvalid.html

    +

    ../html-svg/pservers-grad-18-b-isvalid.html

    +

    ../html-svg/pservers-grad-20-b-isvalid.html

    +

    ../html-svg/pservers-grad-21-b-isvalid.html

    +

    ../html-svg/pservers-grad-22-b-isvalid.html

    +

    ../html-svg/pservers-grad-24-f-isvalid.html

    +

    ../html-svg/pservers-grad-stops-01-f-isvalid.html

    +

    ../html-svg/pservers-pattern-01-b-isvalid.html

    +

    ../html-svg/pservers-pattern-02-f-isvalid.html

    +

    ../html-svg/pservers-pattern-03-f-isvalid.html

    +

    ../html-svg/pservers-pattern-04-f-isvalid.html

    +

    ../html-svg/pservers-pattern-05-f-isvalid.html

    +

    ../html-svg/pservers-pattern-06-f-isvalid.html

    +

    ../html-svg/pservers-pattern-07-f-isvalid.html

    +

    ../html-svg/pservers-pattern-08-f-isvalid.html

    +

    ../html-svg/pservers-pattern-09-f-isvalid.html

    +

    ../html-svg/render-elems-01-t-isvalid.html

    +

    ../html-svg/render-elems-02-t-isvalid.html

    +

    ../html-svg/render-elems-06-t-isvalid.html

    +

    ../html-svg/render-elems-07-t-isvalid.html

    +

    ../html-svg/render-elems-08-t-isvalid.html

    +

    ../html-svg/render-groups-01-b-isvalid.html

    +

    ../html-svg/render-groups-03-t-isvalid.html

    +

    ../html-svg/script-handle-01-b-isvalid.html

    +

    ../html-svg/script-handle-02-b-isvalid.html

    +

    ../html-svg/script-handle-03-b-isvalid.html

    +

    ../html-svg/script-handle-04-b-isvalid.html

    +

    ../html-svg/script-specify-02-f-isvalid.html

    +

    ../html-svg/shapes-circle-01-t-isvalid.html

    +

    ../html-svg/shapes-circle-02-t-isvalid.html

    +

    ../html-svg/shapes-ellipse-01-t-isvalid.html

    +

    ../html-svg/shapes-ellipse-02-t-isvalid.html

    +

    ../html-svg/shapes-ellipse-03-f-isvalid.html

    +

    ../html-svg/shapes-grammar-01-f-isvalid.html

    +

    ../html-svg/shapes-intro-01-t-isvalid.html

    +

    ../html-svg/shapes-intro-02-f-isvalid.html

    +

    ../html-svg/shapes-line-01-t-isvalid.html

    +

    ../html-svg/shapes-line-02-f-isvalid.html

    +

    ../html-svg/shapes-polygon-01-t-isvalid.html

    +

    ../html-svg/shapes-polygon-02-t-isvalid.html

    +

    ../html-svg/shapes-polygon-03-t-isvalid.html

    +

    ../html-svg/shapes-polyline-01-t-isvalid.html

    +

    ../html-svg/shapes-polyline-02-t-isvalid.html

    +

    ../html-svg/shapes-rect-01-t-isvalid.html

    +

    ../html-svg/shapes-rect-02-t-isvalid.html

    +

    ../html-svg/shapes-rect-04-f-isvalid.html

    +

    ../html-svg/shapes-rect-05-f-isvalid.html

    +

    ../html-svg/shapes-rect-06-f-isvalid.html

    +

    ../html-svg/shapes-rect-07-f-isvalid.html

    +

    ../html-svg/struct-cond-01-t-isvalid.html

    +

    ../html-svg/struct-cond-02-t-isvalid.html

    +

    ../html-svg/struct-cond-03-t-isvalid.html

    +

    ../html-svg/struct-cond-overview-02-f-isvalid.html

    +

    ../html-svg/struct-cond-overview-03-f-isvalid.html

    +

    ../html-svg/struct-cond-overview-04-f-isvalid.html

    +

    ../html-svg/struct-cond-overview-05-f-isvalid.html

    +

    ../html-svg/struct-defs-01-t-isvalid.html

    +

    ../html-svg/struct-dom-01-b-isvalid.html

    +

    ../html-svg/struct-dom-02-b-isvalid.html

    +

    ../html-svg/struct-dom-03-b-isvalid.html

    +

    ../html-svg/struct-dom-04-b-isvalid.html

    +

    ../html-svg/struct-dom-05-b-isvalid.html

    +

    ../html-svg/struct-dom-06-b-isvalid.html

    +

    ../html-svg/struct-dom-12-b-isvalid.html

    +

    ../html-svg/struct-dom-16-f-isvalid.html

    +

    ../html-svg/struct-dom-18-f-isvalid.html

    +

    ../html-svg/struct-frag-01-t-isvalid.html

    +

    ../html-svg/struct-frag-02-t-isvalid.html

    +

    ../html-svg/struct-frag-03-t-isvalid.html

    +

    ../html-svg/struct-frag-04-t-isvalid.html

    +

    ../html-svg/struct-frag-06-t-isvalid.html

    +

    ../html-svg/struct-group-01-t-isvalid.html

    +

    ../html-svg/struct-group-02-b-isvalid.html

    +

    ../html-svg/struct-group-03-t-isvalid.html

    +

    ../html-svg/struct-image-01-t-isvalid.html

    +

    ../html-svg/struct-image-02-b-isvalid.html

    +

    ../html-svg/struct-image-03-t-isvalid.html

    +

    ../html-svg/struct-image-04-t-isvalid.html

    +

    ../html-svg/struct-image-05-b-isvalid.html

    +

    ../html-svg/struct-image-06-t-isvalid.html

    +

    ../html-svg/struct-image-07-t-isvalid.html

    +

    ../html-svg/struct-image-08-t-isvalid.html

    +

    ../html-svg/struct-image-09-t-isvalid.html

    +

    ../html-svg/struct-image-10-t-isvalid.html

    +

    ../html-svg/struct-image-11-b-isvalid.html

    +

    ../html-svg/struct-image-13-f-isvalid.html

    +

    ../html-svg/struct-image-14-f-isvalid.html

    +

    ../html-svg/struct-image-15-f-isvalid.html

    +

    ../html-svg/struct-image-16-f-isvalid.html

    +

    ../html-svg/struct-image-17-b-isvalid.html

    +

    ../html-svg/struct-image-18-f-isvalid.html

    +

    ../html-svg/struct-image-19-f-isvalid.html

    +

    ../html-svg/struct-svg-01-f-isvalid.html

    +

    ../html-svg/struct-svg-02-f-isvalid.html

    +

    ../html-svg/struct-svg-03-f-isvalid.html

    +

    ../html-svg/struct-symbol-01-b-isvalid.html

    +

    ../html-svg/struct-use-01-t-isvalid.html

    +

    ../html-svg/struct-use-03-t-isvalid.html

    +

    ../html-svg/struct-use-04-b-isvalid.html

    +

    ../html-svg/struct-use-05-b-isvalid.html

    +

    ../html-svg/struct-use-06-b-isvalid.html

    +

    ../html-svg/struct-use-07-b-isvalid.html

    +

    ../html-svg/struct-use-08-b-isvalid.html

    +

    ../html-svg/struct-use-09-b-isvalid.html

    +

    ../html-svg/struct-use-10-f-isvalid.html

    +

    ../html-svg/struct-use-14-f-isvalid.html

    +

    ../html-svg/struct-use-15-f-isvalid.html

    +

    ../html-svg/styling-class-01-f-isvalid.html

    +

    ../html-svg/styling-css-01-b-isvalid.html

    +

    ../html-svg/styling-css-02-b-isvalid.html

    +

    ../html-svg/styling-css-03-b-isvalid.html

    +

    ../html-svg/styling-css-04-f-isvalid.html

    +

    ../html-svg/styling-css-05-b-isvalid.html

    +

    ../html-svg/styling-css-06-b-isvalid.html

    +

    ../html-svg/styling-css-07-f-isvalid.html

    +

    ../html-svg/styling-css-08-f-isvalid.html

    +

    ../html-svg/styling-css-09-f-isvalid.html

    +

    ../html-svg/styling-css-10-f-isvalid.html

    +

    ../html-svg/styling-elem-01-b-isvalid.html

    +

    ../html-svg/styling-inherit-01-b-isvalid.html

    +

    ../html-svg/styling-pres-01-t-isvalid.html

    +

    ../html-svg/styling-pres-03-f-isvalid.html

    +

    ../html-svg/styling-pres-04-f-isvalid.html

    +

    ../html-svg/styling-pres-05-f-isvalid.html

    +

    ../html-svg/text-align-01-b-isvalid.html

    +

    ../html-svg/text-align-02-b-isvalid.html

    +

    ../html-svg/text-align-03-b-isvalid.html

    +

    ../html-svg/text-align-04-b-isvalid.html

    +

    ../html-svg/text-align-05-b-isvalid.html

    +

    ../html-svg/text-align-06-b-isvalid.html

    +

    ../html-svg/text-align-07-t-isvalid.html

    +

    ../html-svg/text-align-08-b-isvalid.html

    +

    ../html-svg/text-altglyph-01-b-isvalid.html

    +

    ../html-svg/text-altglyph-02-b-isvalid.html

    +

    ../html-svg/text-altglyph-03-b-isvalid.html

    +

    ../html-svg/text-bidi-01-t-isvalid.html

    +

    ../html-svg/text-deco-01-b-isvalid.html

    +

    ../html-svg/text-dom-01-f-isvalid.html

    +

    ../html-svg/text-dom-04-f-isvalid.html

    +

    ../html-svg/text-fonts-01-t-isvalid.html

    +

    ../html-svg/text-fonts-02-t-isvalid.html

    +

    ../html-svg/text-fonts-04-t-isvalid.html

    +

    ../html-svg/text-fonts-202-t-isvalid.html

    +

    ../html-svg/text-fonts-203-t-isvalid.html

    +

    ../html-svg/text-fonts-204-t-isvalid.html

    +

    ../html-svg/text-intro-01-t-isvalid.html

    +

    ../html-svg/text-intro-02-b-isvalid.html

    +

    ../html-svg/text-intro-03-b-isvalid.html

    +

    ../html-svg/text-intro-04-t-isvalid.html

    +

    ../html-svg/text-intro-05-t-isvalid.html

    +

    ../html-svg/text-intro-06-t-isvalid.html

    +

    ../html-svg/text-intro-07-t-isvalid.html

    +

    ../html-svg/text-intro-09-b-isvalid.html

    +

    ../html-svg/text-intro-10-f-isvalid.html

    +

    ../html-svg/text-intro-11-t-isvalid.html

    +

    ../html-svg/text-intro-12-t-isvalid.html

    +

    ../html-svg/text-path-01-b-isvalid.html

    +

    ../html-svg/text-path-02-b-isvalid.html

    +

    ../html-svg/text-spacing-01-b-isvalid.html

    +

    ../html-svg/text-text-01-b-isvalid.html

    +

    ../html-svg/text-text-03-b-isvalid.html

    +

    ../html-svg/text-text-04-t-isvalid.html

    +

    ../html-svg/text-text-05-t-isvalid.html

    +

    ../html-svg/text-text-06-t-isvalid.html

    +

    ../html-svg/text-text-07-t-isvalid.html

    +

    ../html-svg/text-text-08-b-isvalid.html

    +

    ../html-svg/text-text-09-t-isvalid.html

    +

    ../html-svg/text-text-10-t-isvalid.html

    +

    ../html-svg/text-text-11-t-isvalid.html

    +

    ../html-svg/text-text-12-t-isvalid.html

    +

    ../html-svg/text-tref-01-b-isvalid.html

    +

    ../html-svg/text-tselect-01-b-isvalid.html

    +

    ../html-svg/text-tspan-01-b-isvalid.html

    +

    ../html-svg/text-tspan-02-b-isvalid.html

    +

    ../html-svg/types-basic-01-f-isvalid.html

    +

    ../html-svg/types-basic-02-f-isvalid.html

    +

    ../html-svg/types-dom-01-b-isvalid.html

    +

    ../html-svg/types-dom-06-f-isvalid.html

    +

    ../html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html

    +

    ../html-svg/types-dom-svglengthlist-01-f-isvalid.html

    +

    ../html-svg/types-dom-svgnumberlist-01-f-isvalid.html

    +

    ../html-svg/types-dom-svgstringlist-01-f-isvalid.html

    +

    ../html-svg/types-dom-svgtransformable-01-f-isvalid.html

    + + diff --git a/testing/web-platform/tests/conformance-checkers/tools/url.py b/testing/web-platform/tests/conformance-checkers/tools/url.py index ce3eef7d868a..f97d428abe96 100644 --- a/testing/web-platform/tests/conformance-checkers/tools/url.py +++ b/testing/web-platform/tests/conformance-checkers/tools/url.py @@ -29,6 +29,7 @@ invalid = { "host-newline": "http://example.\norg", "host-cr": "http://example.\rorg", "host-square-brackets-port-contains-colon": "http://[1::2]:3:4", + "port-999999": "http://f:999999/c", "port-single-letter": "http://f:b/c", "port-multiple-letters": "http://f:fifty-two/c", "port-leading-colon": "http://2001::1", diff --git a/testing/web-platform/tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html b/testing/web-platform/tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html index 683558e2958a..159338c6db0e 100644 --- a/testing/web-platform/tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html +++ b/testing/web-platform/tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html @@ -2,8 +2,8 @@ stylehash allowed from default-src - - + + diff --git a/testing/web-platform/tests/css-shapes/basic-shape-circle-ellipse-serialization.html b/testing/web-platform/tests/css-shapes/basic-shape-circle-ellipse-serialization.html deleted file mode 100644 index 9c82039ac4e0..000000000000 --- a/testing/web-platform/tests/css-shapes/basic-shape-circle-ellipse-serialization.html +++ /dev/null @@ -1,76 +0,0 @@ - - -Serialization of basic shapes - - - - diff --git a/testing/web-platform/tests/custom-elements/custom-elements-registry/define.html b/testing/web-platform/tests/custom-elements/custom-element-registry/define.html similarity index 77% rename from testing/web-platform/tests/custom-elements/custom-elements-registry/define.html rename to testing/web-platform/tests/custom-elements/custom-element-registry/define.html index 76ab2adfd745..fedb687416e8 100644 --- a/testing/web-platform/tests/custom-elements/custom-elements-registry/define.html +++ b/testing/web-platform/tests/custom-elements/custom-element-registry/define.html @@ -56,26 +56,7 @@ }, `If constructor is ${t[0]}, should throw a TypeError`); }); - // 2. If constructor is an interface object or named constructor whose corresponding - // interface either is HTMLElement or has HTMLElement in its set of inherited interfaces, - // throw a TypeError and abort these steps. - [ - [ 'HTMLElement', HTMLElement ], - [ 'HTMLButtonElement', HTMLButtonElement ], - [ 'HTMLImageElement', HTMLImageElement ], - [ 'HTMLMediaElement', HTMLMediaElement ], - [ 'Image' , Image ], - [ 'Audio' , Audio ], - [ 'Option', Option ], - ].forEach(t => { - test(() => { - assert_throws(expectTypeError, () => { - customElements.define(`test-define-constructor-${t[0]}`, t[1]); - }); - }, `If constructor is ${t[0]}, should throw a TypeError`); - }); - - // 3. If name is not a valid custom element name, + // 2. If name is not a valid custom element name, // then throw a SyntaxError and abort these steps. let validCustomElementNames = [ // [a-z] (PCENChar)* '-' (PCENChar)* @@ -129,7 +110,7 @@ }, `Element names: defining an element named ${name} should throw a SyntaxError`); }); - // 4. If this CustomElementsRegistry contains an entry with name name, + // 3. If this CustomElementRegistry contains an entry with name name, // then throw a NotSupportedError and abort these steps. test(() => { customElements.define('test-define-dup-name', class {}); @@ -138,7 +119,7 @@ }); }, 'If the name is already defined, should throw a NotSupportedError'); - // 6. If this CustomElementsRegistry contains an entry with constructor constructor, + // 5. If this CustomElementRegistry contains an entry with constructor constructor, // then throw a NotSupportedError and abort these steps. test(() => { class TestDupConstructor {}; @@ -148,7 +129,7 @@ }); }, 'If the constructor is already defined, should throw a NotSupportedError'); - // 10.1. If extends is a valid custom element name, + // 9.1. If extends is a valid custom element name, // then throw a NotSupportedError. validCustomElementNames.forEach(name => { test(() => { @@ -158,7 +139,7 @@ }, `If extends is ${name}, should throw a NotSupportedError`); }); - // 10.2. If the element interface for extends and the HTML namespace is HTMLUnknownElement + // 9.2. If the element interface for extends and the HTML namespace is HTMLUnknownElement // (e.g., if extends does not indicate an element definition in this specification), // then throw a NotSupportedError. [ @@ -178,7 +159,7 @@ }, `If extends is ${name}, should throw a NotSupportedError`); }); - // 13.1. Let prototype be Get(constructor, "prototype"). Rethrow any exceptions. + // 12.1. Let prototype be Get(constructor, "prototype"). Rethrow any exceptions. function assert_rethrown(func, description) { assert_throws({ name: 'rethrown' }, func, description); } @@ -198,7 +179,7 @@ }); }, 'If constructor.prototype throws, should rethrow'); - // 13.2. If Type(prototype) is not Object, + // 12.2. If Type(prototype) is not Object, // then throw a TypeError exception. test(() => { const c = (function () { }).bind({}); // prototype is undefined. @@ -214,24 +195,18 @@ }); }, 'If Type(constructor.prototype) is string, should throw a TypeError'); - // 13.4. Let connectedCallbackValue be Get(prototype, "connectedCallback"). - // Rethrow any exceptions. - // 13.5. If connectedCallbackValue is not undefined, then set connectedCallback - // to the result of converting connectedCallbackValue to the Web IDL Function callback type. - // Rethrow any exceptions. - // 13.6. Let disconnectedCallbackValue be Get(prototype, "disconnectedCallback"). - // Rethrow any exceptions. - // 13.7. If disconnectedCallbackValue is not undefined, then set disconnectedCallback - // to the result of converting disconnectedCallbackValue to the Web IDL Function callback type. - // Rethrow any exceptions. - // 13.8. Let attributeChangedCallbackValue be Get(prototype, "attributeChangedCallback"). - // Rethrow any exceptions. - // 13.9. If attributeChangedCallbackValue is not undefined, then set attributeChangedCallback - // to the result of converting attributeChangedCallbackValue to the Web IDL Function callback type. - // Rethrow any exceptions. + // 12.3. Let lifecycleCallbacks be a map with the four keys "connectedCallback", + // "disconnectedCallback", "adoptedCallback", and "attributeChangedCallback", + // each of which belongs to an entry whose value is null. + // 12.4. For each of the four keys callbackName in lifecycleCallbacks: + // 12.4.1. Let callbackValue be Get(prototype, callbackName). Rethrow any exceptions. + // 12.4.2. If callbackValue is not undefined, then set the value of the entry in + // lifecycleCallbacks with key callbackName to the result of converting callbackValue + // to the Web IDL Function callback type. Rethrow any exceptions from the conversion. [ 'connectedCallback', 'disconnectedCallback', + 'adoptedCallback', 'attributeChangedCallback', ].forEach(name => { test(() => { diff --git a/testing/web-platform/tests/dom/events/Event-initEvent.html b/testing/web-platform/tests/dom/events/Event-initEvent.html index 28f7faf349e7..85abdff2fe7b 100644 --- a/testing/web-platform/tests/dom/events/Event-initEvent.html +++ b/testing/web-platform/tests/dom/events/Event-initEvent.html @@ -13,7 +13,7 @@ booleans.forEach(function(bubbles) { e.initEvent("type", bubbles, cancelable) // Step 3. - // Can't test the stop propagation flag and stop immediate propagation flag. + // Stop (immediate) propagation flag is tested later assert_equals(e.defaultPrevented, false, "defaultPrevented") // Step 4. assert_equals(e.isTrusted, false, "isTrusted") @@ -78,31 +78,28 @@ async_test(function() { this.done() }, "Calling initEvent must not have an effect during dispatching.") -async_test(function() { +test(function() { var e = document.createEvent("Event") - e.initEvent("type", false, false) e.stopPropagation() - - var target = document.createElement("div") - target.addEventListener("type", this.step_func(function() { - assert_unreached("") - }), false) - assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true") - assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true") - e.initEvent("type", false, false) - var called = false var target = document.createElement("div") - target.addEventListener("type", this.step_func(function() { - called = true - }), false) - assert_false(called) - assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true") - assert_true(called) - - this.done() + var called = false + target.addEventListener("type", function() { called = true }, false) + assert_true(target.dispatchEvent(e), "dispatchEvent must return true") + assert_true(called, "Listener must be called") }, "Calling initEvent must unset the stop propagation flag.") +test(function() { + var e = document.createEvent("Event") + e.stopImmediatePropagation() + e.initEvent("type", false, false) + var target = document.createElement("div") + var called = false + target.addEventListener("type", function() { called = true }, false) + assert_true(target.dispatchEvent(e), "dispatchEvent must return true") + assert_true(called, "Listener must be called") +}, "Calling initEvent must unset the stop immediate propagation flag.") + async_test(function() { var e = document.createEvent("Event") e.initEvent("type", false, false) diff --git a/testing/web-platform/tests/dom/events/Event-propagation.html b/testing/web-platform/tests/dom/events/Event-propagation.html index c57c7e9b2556..6fc9701012b8 100644 --- a/testing/web-platform/tests/dom/events/Event-propagation.html +++ b/testing/web-platform/tests/dom/events/Event-propagation.html @@ -13,10 +13,11 @@ function testPropagationFlag(ev, expected, desc) { var callback = function() { called = true }; document.head.addEventListener("foo", callback); document.head.dispatchEvent(ev); - // Gecko resets the flags after dispatching; it will happily dispatch + assert_equals(called, expected, "Propagation flag"); + // dispatchEvent resets the propagation flags so it will happily dispatch // the event the second time around. document.head.dispatchEvent(ev); - assert_equals(called, expected, "Propagation flag"); + assert_equals(called, true, "Propagation flag after first dispatch"); document.head.removeEventListener("foo", callback); }, desc); } diff --git a/testing/web-platform/tests/dom/events/EventTarget-dispatchEvent.html b/testing/web-platform/tests/dom/events/EventTarget-dispatchEvent.html index 354441aa03e3..1a8bf3de915d 100644 --- a/testing/web-platform/tests/dom/events/EventTarget-dispatchEvent.html +++ b/testing/web-platform/tests/dom/events/EventTarget-dispatchEvent.html @@ -17,13 +17,13 @@ test(function() { assert_throws(new TypeError(), function() { document.dispatchEvent(null) }) }, "Calling dispatchEvent(null).") -aliases.forEach(function(alias) { +for (var alias in aliases) { test(function() { - var e = document.createEvent(alias[0]) + var e = document.createEvent(alias) assert_equals(e.type, "", "Event type should be empty string before initialization") assert_throws("InvalidStateError", function() { document.dispatchEvent(e) }) - }, "If the event's initialized flag is not set, an InvalidStateError must be thrown (" + alias [0] + ").") -}) + }, "If the event's initialized flag is not set, an InvalidStateError must be thrown (" + alias + ").") +} var dispatch_dispatch = async_test("If the event's dispatch flag is set, an InvalidStateError must be thrown.") dispatch_dispatch.step(function() { diff --git a/testing/web-platform/tests/dom/interfaces.html b/testing/web-platform/tests/dom/interfaces.html index 407bff8a1b56..21c35c238e3e 100644 --- a/testing/web-platform/tests/dom/interfaces.html +++ b/testing/web-platform/tests/dom/interfaces.html @@ -395,15 +395,12 @@ interface NamedNodeMap { [Exposed=Window] -interface Attr { +interface Attr : Node { readonly attribute DOMString? namespaceURI; readonly attribute DOMString? prefix; readonly attribute DOMString localName; readonly attribute DOMString name; - readonly attribute DOMString nodeName; // historical alias of .name attribute DOMString value; - [TreatNullAs=EmptyString] attribute DOMString nodeValue; // historical alias of .value - [TreatNullAs=EmptyString] attribute DOMString textContent; // historical alias of .value readonly attribute Element? ownerElement; diff --git a/testing/web-platform/tests/dom/nodes/Document-Element-getElementsByTagName.js b/testing/web-platform/tests/dom/nodes/Document-Element-getElementsByTagName.js index 3d206062d3a2..edbac646d5ae 100644 --- a/testing/web-platform/tests/dom/nodes/Document-Element-getElementsByTagName.js +++ b/testing/web-platform/tests/dom/nodes/Document-Element-getElementsByTagName.js @@ -162,17 +162,17 @@ function test_getElementsByTagName(context, element) { test(function() { var t = element.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "test:aÇ")) this.add_cleanup(function() {element.removeChild(t)}) - assert_array_equals(context.getElementsByTagName("AÇ"), [t], "All uppercase input") - assert_array_equals(context.getElementsByTagName("aÇ"), [t], "Ascii lowercase input") - assert_array_equals(context.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(context.getElementsByTagName("TEST:AÇ"), [t], "All uppercase input") + assert_array_equals(context.getElementsByTagName("test:aÇ"), [t], "Ascii lowercase input") + assert_array_equals(context.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in HTML namespace, prefix, non-ascii characters in name") test(function() { - var t = element.appendChild(document.createElementNS("test", "test:AÇ")) + var t = element.appendChild(document.createElementNS("test", "TEST:AÇ")) this.add_cleanup(function() {element.removeChild(t)}) - assert_array_equals(context.getElementsByTagName("AÇ"), [t], "All uppercase input") - assert_array_equals(context.getElementsByTagName("aÇ"), [], "Ascii lowercase input") - assert_array_equals(context.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(context.getElementsByTagName("TEST:AÇ"), [t], "All uppercase input") + assert_array_equals(context.getElementsByTagName("test:aÇ"), [], "Ascii lowercase input") + assert_array_equals(context.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in non-HTML namespace, prefix, non-ascii characters in name") test(function() { diff --git a/testing/web-platform/tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml b/testing/web-platform/tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml index 2ae90748c2ff..309a29ae7723 100644 --- a/testing/web-platform/tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml +++ b/testing/web-platform/tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml @@ -71,17 +71,17 @@ test(function() { test(function() { var t = document.body.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "test:aÇ")) this.add_cleanup(function() {document.body.removeChild(t)}) - assert_array_equals(document.getElementsByTagName("AÇ"), [], "All uppercase input") - assert_array_equals(document.getElementsByTagName("aÇ"), [t], "Ascii lowercase input") - assert_array_equals(document.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(document.getElementsByTagName("TEST:AÇ"), [], "All uppercase input") + assert_array_equals(document.getElementsByTagName("test:aÇ"), [t], "Ascii lowercase input") + assert_array_equals(document.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in HTML namespace, prefix, non-ascii characters in name") test(function() { - var t = document.body.appendChild(document.createElementNS("test", "test:AÇ")) + var t = document.body.appendChild(document.createElementNS("test", "TEST:AÇ")) this.add_cleanup(function() {document.body.removeChild(t)}) - assert_array_equals(document.getElementsByTagName("AÇ"), [t], "All uppercase input") - assert_array_equals(document.getElementsByTagName("aÇ"), [], "Ascii lowercase input") - assert_array_equals(document.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(document.getElementsByTagName("TEST:AÇ"), [t], "All uppercase input") + assert_array_equals(document.getElementsByTagName("test:aÇ"), [], "Ascii lowercase input") + assert_array_equals(document.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in non-HTML namespace, prefix, non-ascii characters in name") test(function() { diff --git a/testing/web-platform/tests/dom/nodes/Node-properties.html b/testing/web-platform/tests/dom/nodes/Node-properties.html index 83723ae1ed35..10f92e7d7e85 100644 --- a/testing/web-platform/tests/dom/nodes/Node-properties.html +++ b/testing/web-platform/tests/dom/nodes/Node-properties.html @@ -226,7 +226,7 @@ var expected = { textContent: "do re mi fa so la ti", // Element - namespaceURI: "http://www.w3.org/1999/xhtml", + namespaceURI: null, prefix: null, localName: "igiveuponcreativenames", tagName: "igiveuponcreativenames", @@ -246,7 +246,7 @@ var expected = { textContent: "", // Element - namespaceURI: "http://www.w3.org/1999/xhtml", + namespaceURI: null, prefix: null, localName: "everyone-hates-hyphenated-element-names", tagName: "everyone-hates-hyphenated-element-names", diff --git a/testing/web-platform/tests/dom/nodes/attributes.html b/testing/web-platform/tests/dom/nodes/attributes.html index 0f324ba42a19..8d983350df9d 100644 --- a/testing/web-platform/tests/dom/nodes/attributes.html +++ b/testing/web-platform/tests/dom/nodes/attributes.html @@ -20,23 +20,6 @@ var XML = "http://www.w3.org/XML/1998/namespace" var XMLNS = "http://www.w3.org/2000/xmlns/" -// AttrExodus -test(function() { - document.body.setAttribute("abc", "pass") - var attr = document.body.attributes[0] - assert_true(attr instanceof Attr, "should be an Attr") - assert_false(attr instanceof Node, "should not be a Node") - var removed_members = [ - "appendChild", - "insertBefore", - "childNodes", - ] - removed_members.forEach(function(m) { - assert_false(m in attr, m + " should not be supported") - }) - assert_equals(attr.value, "pass") -}, "AttrExodus") - // setAttribute exhaustive tests // Step 1 test(function() { diff --git a/testing/web-platform/tests/dom/ranges/Range-mutations.html b/testing/web-platform/tests/dom/ranges/Range-mutations.html index ade44bb989b0..ef99ca2ef047 100644 --- a/testing/web-platform/tests/dom/ranges/Range-mutations.html +++ b/testing/web-platform/tests/dom/ranges/Range-mutations.html @@ -86,12 +86,14 @@ function doTests(sourceTests, descFn, testFn) { ]); tests.push([ descFn(params) + ", with selected " + describeRange(params[len - 4], params[len - 3], params[len - 2], params[len - 1]), - function(params) { return function() { - var evaledParams = params.map(eval); + function(params) { return function(selectedRange) { + var evaledParams = params.slice(0, len - 4).map(eval); for (var i = 0; i < evaledParams.length; i++) { assert_true(typeof evaledParams[i] != "undefined", "Test bug: " + params[i] + " is undefined"); } + // Override input range with the one that was actually selected when computing the expected result. + evaledParams = evaledParams.concat([selectedRange.startContainer, selectedRange.startOffset, selectedRange.endContainer, selectedRange.endOffset]); return testFn.apply(null, evaledParams); } }(params), true, @@ -133,26 +135,16 @@ function doTest(callback, useSelection, startContainer, startOffset, endContaine getSelection().removeAllRanges(); getSelection().addRange(range); - assert_equals(getSelection().rangeCount, 1, - "Sanity check: selection must have exactly one range after adding the range"); - assert_equals(getSelection().getRangeAt(0), range, - "Sanity check: selection's range must initially be the same as the range we added"); - assert_equals(range.startContainer, startContainer, - "Sanity check: range's startContainer must initially be the one we set"); - assert_equals(range.endContainer, endContainer, - "Sanity check: range's endContainer must initially be the one we set"); - assert_equals(range.startOffset, startOffset, - "Sanity check: range's startOffset must initially be the one we set"); - assert_equals(range.endOffset, endOffset, - "Sanity check: range's endOffset must initially be the one we set"); + // Some browsers refuse to add a range unless it results in an actual visible selection. + if (!getSelection().rangeCount) + return; + + // Override range with the one that was actually selected as it differs in some browsers. + range = getSelection().getRangeAt(0); } - var expected = callback(); + var expected = callback(range); - if (useSelection) { - assert_equals(getSelection().getRangeAt(0), range, - "The range we added must not be removed from the selection"); - } assert_equals(range.startContainer, expected[0], "Wrong start container"); assert_equals(range.startOffset, expected[1], diff --git a/testing/web-platform/tests/domparsing/DOMParser-parseFromString-xml-doctype.html b/testing/web-platform/tests/domparsing/DOMParser-parseFromString-xml-doctype.html new file mode 100644 index 000000000000..cd655acf930e --- /dev/null +++ b/testing/web-platform/tests/domparsing/DOMParser-parseFromString-xml-doctype.html @@ -0,0 +1,27 @@ + + +HTML entities for various XHTML Doctype variants + + + +
    + diff --git a/testing/web-platform/tests/domparsing/insert_adjacent_html.xhtml b/testing/web-platform/tests/domparsing/insert_adjacent_html-xhtml.xhtml similarity index 100% rename from testing/web-platform/tests/domparsing/insert_adjacent_html.xhtml rename to testing/web-platform/tests/domparsing/insert_adjacent_html-xhtml.xhtml diff --git a/testing/web-platform/tests/editing/data/delete.js b/testing/web-platform/tests/editing/data/delete.js index 0ee5805d49f5..bfea92831421 100644 --- a/testing/web-platform/tests/editing/data/delete.js +++ b/testing/web-platform/tests/editing/data/delete.js @@ -73,7 +73,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["delete",""]], "

    foo{}bar

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"delete":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"delete":[false,false,"",false,false,""]}], ["

    foo

    []bar

    ", [["defaultparagraphseparator","p"],["delete",""]], "

    foo{}bar

    ", diff --git a/testing/web-platform/tests/editing/data/formatblock.js b/testing/web-platform/tests/editing/data/formatblock.js index c478dba243b8..39c20e2680af 100644 --- a/testing/web-platform/tests/editing/data/formatblock.js +++ b/testing/web-platform/tests/editing/data/formatblock.js @@ -3,7 +3,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["formatblock","
    "]], "
    foo[]bar

    extra

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"formatblock":[false,false,"",false,false,"div"]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"formatblock":[false,false,"",false,false,"div"]}], ["foo[]bar

    extra", [["defaultparagraphseparator","p"],["formatblock","

    "]], "
    foo[]bar

    extra

    ", diff --git a/testing/web-platform/tests/editing/data/forwarddelete.js b/testing/web-platform/tests/editing/data/forwarddelete.js index abfc488aeee3..66cf6cf33780 100644 --- a/testing/web-platform/tests/editing/data/forwarddelete.js +++ b/testing/web-platform/tests/editing/data/forwarddelete.js @@ -88,7 +88,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["forwarddelete",""]], "

    foo{}bar

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"forwarddelete":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"forwarddelete":[false,false,"",false,false,""]}], ["

    foo[]

    bar

    ", [["defaultparagraphseparator","p"],["forwarddelete",""]], "

    foo{}bar

    ", diff --git a/testing/web-platform/tests/editing/data/inserthorizontalrule.js b/testing/web-platform/tests/editing/data/inserthorizontalrule.js index f79ae5058a39..6f0cdba33c17 100644 --- a/testing/web-platform/tests/editing/data/inserthorizontalrule.js +++ b/testing/web-platform/tests/editing/data/inserthorizontalrule.js @@ -103,7 +103,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["inserthorizontalrule",""]], "

    foo


    {}

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"inserthorizontalrule":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"inserthorizontalrule":[false,false,"",false,false,""]}], ["

    foo

    [bar]

    baz", [["defaultparagraphseparator","p"],["inserthorizontalrule",""]], "

    foo


    {}

    baz

    ", diff --git a/testing/web-platform/tests/editing/data/inserthtml.js b/testing/web-platform/tests/editing/data/inserthtml.js index f790fc2e8579..78581bf533d7 100644 --- a/testing/web-platform/tests/editing/data/inserthtml.js +++ b/testing/web-platform/tests/editing/data/inserthtml.js @@ -138,7 +138,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["inserthtml","

    abc"]], "

    foo

    abc

    {}

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"inserthtml":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"inserthtml":[false,false,"",false,false,""]}], ["

    foo[bar]baz", [["defaultparagraphseparator","p"],["inserthtml","

    abc"]], "

    foo

    abc

    {}

    baz

    ", diff --git a/testing/web-platform/tests/editing/data/insertimage.js b/testing/web-platform/tests/editing/data/insertimage.js index 4478cd12a278..d1874e652121 100644 --- a/testing/web-platform/tests/editing/data/insertimage.js +++ b/testing/web-platform/tests/editing/data/insertimage.js @@ -128,7 +128,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertimage","/img/lion.svg"]], "

    foo

    {}

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertimage":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertimage":[false,false,"",false,false,""]}], ["

    foo

    {

    bar

    }

    baz

    ", [["defaultparagraphseparator","p"],["insertimage","/img/lion.svg"]], "

    foo

    {}

    baz

    ", diff --git a/testing/web-platform/tests/editing/data/insertlinebreak.js b/testing/web-platform/tests/editing/data/insertlinebreak.js index 635ddd14dc45..2793cbb1c5f6 100644 --- a/testing/web-platform/tests/editing/data/insertlinebreak.js +++ b/testing/web-platform/tests/editing/data/insertlinebreak.js @@ -333,7 +333,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertlinebreak",""]], "

    foo
    {}quz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertlinebreak":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertlinebreak":[false,false,"",false,false,""]}], ["

    foo[bar

    baz]quz

    ", [["defaultparagraphseparator","p"],["insertlinebreak",""]], "

    foo
    {}quz

    ", diff --git a/testing/web-platform/tests/editing/data/insertorderedlist.js b/testing/web-platform/tests/editing/data/insertorderedlist.js index cf9d148771b0..76bda2d4babd 100644 --- a/testing/web-platform/tests/editing/data/insertorderedlist.js +++ b/testing/web-platform/tests/editing/data/insertorderedlist.js @@ -73,7 +73,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertorderedlist",""]], "

    foo

    1. [bar]

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertorderedlist":[false,false,"",false,true,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertorderedlist":[false,false,"",false,true,""]}], ["

    foo

    [bar]

    baz", [["defaultparagraphseparator","p"],["insertorderedlist",""]], "

    foo

    1. [bar]

    baz

    ", diff --git a/testing/web-platform/tests/editing/data/insertparagraph.js b/testing/web-platform/tests/editing/data/insertparagraph.js index fb55da65dc2e..a9a3be4e7033 100644 --- a/testing/web-platform/tests/editing/data/insertparagraph.js +++ b/testing/web-platform/tests/editing/data/insertparagraph.js @@ -3,7 +3,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertparagraph",""]], "
    foo
    {}baz
    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertparagraph":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertparagraph":[false,false,"",false,false,""]}], ["foo[bar]baz", [["defaultparagraphseparator","p"],["insertparagraph",""]], "

    foo

    {}baz

    ", diff --git a/testing/web-platform/tests/editing/data/inserttext.js b/testing/web-platform/tests/editing/data/inserttext.js index 02f1c7966a89..8d4e31c17a2b 100644 --- a/testing/web-platform/tests/editing/data/inserttext.js +++ b/testing/web-platform/tests/editing/data/inserttext.js @@ -23,7 +23,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["inserttext","\n"]], "
    foo
    {}bar
    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"inserttext":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"inserttext":[false,false,"",false,false,""]}], ["foo[]bar", [["defaultparagraphseparator","p"],["inserttext","\n"]], "

    foo

    {}bar

    ", diff --git a/testing/web-platform/tests/editing/data/insertunorderedlist.js b/testing/web-platform/tests/editing/data/insertunorderedlist.js index 763ac62b5053..ad4a7236faed 100644 --- a/testing/web-platform/tests/editing/data/insertunorderedlist.js +++ b/testing/web-platform/tests/editing/data/insertunorderedlist.js @@ -73,7 +73,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertunorderedlist",""]], "

    foo

    • [bar]

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertunorderedlist":[false,false,"",false,true,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertunorderedlist":[false,false,"",false,true,""]}], ["

    foo

    [bar]

    baz", [["defaultparagraphseparator","p"],["insertunorderedlist",""]], "

    foo

    • [bar]

    baz

    ", diff --git a/testing/web-platform/tests/editing/data/justifycenter.js b/testing/web-platform/tests/editing/data/justifycenter.js index 82049f1bb163..76491ee44c52 100644 --- a/testing/web-platform/tests/editing/data/justifycenter.js +++ b/testing/web-platform/tests/editing/data/justifycenter.js @@ -3,7 +3,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifycenter",""]], "
    foo[]bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifycenter":[false,false,"left",false,true,"center"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifycenter":[false,false,"left",false,true,"center"]}], ["foo[]bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifycenter",""]], "

    foo[]bar

    extra

    ", diff --git a/testing/web-platform/tests/editing/data/justifyfull.js b/testing/web-platform/tests/editing/data/justifyfull.js index d52cbae570ea..c8beca840cfa 100644 --- a/testing/web-platform/tests/editing/data/justifyfull.js +++ b/testing/web-platform/tests/editing/data/justifyfull.js @@ -3,7 +3,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifyfull",""]], "
    foo[]bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifyfull":[false,false,"left",false,true,"justify"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifyfull":[false,false,"left",false,true,"justify"]}], ["foo[]bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifyfull",""]], "

    foo[]bar

    extra

    ", diff --git a/testing/web-platform/tests/editing/data/justifyleft.js b/testing/web-platform/tests/editing/data/justifyleft.js index 74a2bb096296..c08033744beb 100644 --- a/testing/web-platform/tests/editing/data/justifyleft.js +++ b/testing/web-platform/tests/editing/data/justifyleft.js @@ -53,7 +53,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifyleft",""]], "

    [foo]

    bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifyleft":[false,false,"center",false,true,"left"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifyleft":[false,false,"center",false,true,"left"]}], ["

    [foo]

    bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifyleft",""]], "

    [foo]

    bar

    extra

    ", diff --git a/testing/web-platform/tests/editing/data/justifyright.js b/testing/web-platform/tests/editing/data/justifyright.js index fdb8f4a1d005..595f7376eee1 100644 --- a/testing/web-platform/tests/editing/data/justifyright.js +++ b/testing/web-platform/tests/editing/data/justifyright.js @@ -3,7 +3,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifyright",""]], "
    foo[]bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifyright":[false,false,"left",false,true,"right"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifyright":[false,false,"left",false,true,"right"]}], ["foo[]bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifyright",""]], "

    foo[]bar

    extra

    ", diff --git a/testing/web-platform/tests/editing/data/misc.js b/testing/web-platform/tests/editing/data/misc.js index aab6d5f0aa84..490b595377ab 100644 --- a/testing/web-platform/tests/editing/data/misc.js +++ b/testing/web-platform/tests/editing/data/misc.js @@ -3,7 +3,7 @@ var browserTests = [ [["defaultparagraphseparator",""]], "foo[bar]baz", [false], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"]}], ["foo[bar]baz", [["defaultparagraphseparator","div"]], "foo[bar]baz", diff --git a/testing/web-platform/tests/editing/data/outdent.js b/testing/web-platform/tests/editing/data/outdent.js index 548a150c9375..18d48d0cb988 100644 --- a/testing/web-platform/tests/editing/data/outdent.js +++ b/testing/web-platform/tests/editing/data/outdent.js @@ -83,7 +83,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["outdent",""]], "

    foo[bar]

    baz

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"outdent":[false,false,"",false,false,""]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"outdent":[false,false,"",false,false,""]}], ["

    foo[bar]

    baz

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["outdent",""]], "

    foo[bar]

    baz

    extra

    ", diff --git a/testing/web-platform/tests/editing/include/implementation.js b/testing/web-platform/tests/editing/include/implementation.js index b64e93060054..44a7afd82d25 100644 --- a/testing/web-platform/tests/editing/include/implementation.js +++ b/testing/web-platform/tests/editing/include/implementation.js @@ -4,7 +4,7 @@ var htmlNamespace = "http://www.w3.org/1999/xhtml"; var cssStylingFlag = false; -var defaultSingleLineContainerName = "p"; +var defaultSingleLineContainerName = "div"; // This is bad :( var globalRange = null; diff --git a/testing/web-platform/tests/editing/include/tests.js b/testing/web-platform/tests/editing/include/tests.js index a2a96d979f0c..740cbce68540 100644 --- a/testing/web-platform/tests/editing/include/tests.js +++ b/testing/web-platform/tests/editing/include/tests.js @@ -4639,7 +4639,7 @@ var defaultValues = { inserthtml: "abcd", insertimage: "/img/lion.svg", inserttext: "a", - defaultparagraphseparator: "p", + defaultparagraphseparator: "div", stylewithcss: "true", usecss: "true", }; diff --git a/testing/web-platform/tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html b/testing/web-platform/tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html index e982bab7b804..42f1b4d34ddb 100644 --- a/testing/web-platform/tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html +++ b/testing/web-platform/tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html @@ -67,13 +67,13 @@ 0x00, 0x00, 0x00, 0x00 // datasize ]); return test_session('cenc', initData); - }, 'generateRequest() with invalid pssh data.'); + }, 'generateRequest() with invalid pssh box size.'); promise_test(function() { // Invalid data as type = 'psss'. var initData = new Uint8Array([ - 0x00, 0x00, 0x00, 0x00, // size = 0 + 0x00, 0x00, 0x00, 0x20, // size = 32 0x70, 0x73, 0x73, 0x73, // 'psss' 0x00, // version = 0 0x00, 0x00, 0x00, // flags diff --git a/testing/web-platform/tests/encrypted-media/Google/encrypted-media-utils.js b/testing/web-platform/tests/encrypted-media/Google/encrypted-media-utils.js index 5b95de661e69..5fbcdf689a5d 100644 --- a/testing/web-platform/tests/encrypted-media/Google/encrypted-media-utils.js +++ b/testing/web-platform/tests/encrypted-media/Google/encrypted-media-utils.js @@ -34,7 +34,7 @@ function getInitData(initDataType) if (initDataType == 'cenc') { return new Uint8Array([ - 0x00, 0x00, 0x00, 0x00, // size = 0 + 0x00, 0x00, 0x00, 0x34, // size = 52 0x70, 0x73, 0x73, 0x68, // 'pssh' 0x01, // version = 1 0x00, 0x00, 0x00, // flags diff --git a/testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html b/testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html index 6a586387202f..d580a8cc3cdc 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html @@ -3,7 +3,7 @@ - Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4 @@ -30,4 +30,4 @@ runTest(config); - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-events.html b/testing/web-platform/tests/encrypted-media/clearkey-events.html index c9a74a5a0e16..6b0f72fa1c1f 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-events.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-events.html @@ -32,11 +32,13 @@ getSupportedContent( 'org.w3.clearkey' ) .then( function( contents ) { + var handler = new MessageHandler( 'org.w3.clearkey', contents[ 0 ] ); + runTest( { keysystem: 'org.w3.clearkey', content: contents[ 0 ], - messagehandler: messagehandler.bind( contents[ 0 ] ), + messagehandler: handler.messagehandler, } ); } ); - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html b/testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html index 32405f392bd1..7ee374211db3 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html @@ -30,4 +30,4 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html b/testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html index 3964dbcb95d7..ccb0d5ca6781 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html @@ -34,11 +34,12 @@ .then( function( contents ) { // Select a content item with multiple keys - var contentitem = contents.filter( function( item ) { return item.keys.length > 1; } )[ 0 ]; + var contentitem = contents.filter( function( item ) { return item.keys.length > 1; } )[ 0 ], + handler = new MessageHandler( 'org.w3.clearkey', contentitem ); var config = { keysystem: 'org.w3.clearkey', content: contentitem, - messagehandler: messagehandler.bind( contentitem ), + messagehandler: handler.messagehandler, initDataType: 'keyids', initData: getMultikeyInitDatas(contentitem,'keyids'), }; @@ -48,4 +49,4 @@ } ); - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html new file mode 100644 index 000000000000..dea4f6454a7f --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with Clear Key, mp4, event sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license.html new file mode 100644 index 000000000000..92b275dc9e36 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html index 167b36470286..e673d82ca05d 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html index 1ad3e1fb0ac6..64ce9b871713 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html new file mode 100644 index 000000000000..5d991c8e8e02 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with Clear Key, mp4, event sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html index 65706eb430d8..ddd97ad6b2d4 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html index db2aaa4c496b..422b8bd6e97e 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html index 579c7b0fb1ac..6c37eb267ac3 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html index 3a708590f23a..fe3f96dbf416 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html index 5b83b59d5d2a..0b2e6a6f4354 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-first.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html index 2c20e1d94453..99e5ef3465ca 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html @@ -36,10 +36,11 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html new file mode 100644 index 000000000000..17929262d619 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html @@ -0,0 +1,52 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, play, wait for key, continue play + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html index db46fb3cffcc..d6ff85c37fde 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html @@ -35,9 +35,10 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html b/testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html index eb830078ef45..452c252735bb 100644 --- a/testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html +++ b/testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html @@ -33,4 +33,4 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 b/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..526998d6ac9d2933c5163c1521b3b88aeff84cd5 GIT binary patch literal 166614 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%0Dmc^QVGI6W+fEt$ErLE3z_S1y)SB7Q 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

    8W%w{!&pWfLMs6@j{@JdhSbe5%o;`lrk#oA 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 NJdXR#^xx_J{{a5NyxRZ( diff --git a/testing/web-platform/tests/encrypted-media/content/content-metadata.js b/testing/web-platform/tests/encrypted-media/content/content-metadata.js index efce26a62362..282b41f0ab05 100644 --- a/testing/web-platform/tests/encrypted-media/content/content-metadata.js +++ b/testing/web-platform/tests/encrypted-media/content/content-metadata.js @@ -27,20 +27,19 @@ content = addMemberListToObject( { initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQVY7lQbkKsvOVDQCt43YNRRoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AFEAZQBXAE8AVgBRAHEANQA4ADcASwBWAEQAUQBDAHQANAAzAFkATgBSAFEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AWQBpAE8ALwAxADYATABzADkANgBFAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] }, - 'mp4-multikey' : { initDataType: 'cenc', + 'mp4-multikey' : { initDataType: 'cenc', audio: { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_2keys_bis.mp4' }, + path: '/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4' }, video: { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_enc_2keys_bis.mp4' }, - keys: [ { kid: [ 0x36, 0x32, 0xe8, 0x34, 0x58, 0xfc, 0x34, 0x65, 0xd0, 0x4b, 0xb3, 0x9c, 0x51, 0x26, 0xef, 0xd0 ], - key: [ 0x00, 0xf9, 0x5b, 0xde, 0x44, 0x4e, 0x0c, 0xce, 0x0e, 0x37, 0xaf, 0xbb, 0x08, 0xa9, 0xbb, 0xad ], + path: '/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4' }, + keys: [ { kid: [ 0x13, 0xa7, 0x53, 0x06, 0xd1, 0x18, 0x91, 0x7b, 0x47, 0xa6, 0xc1, 0x83, 0x64, 0x42, 0x51, 0x6f ], + key: [ 0x8a, 0xaa, 0xd8, 0xc4, 0xdb, 0xde, 0xac, 0xcd, 0xad, 0x26, 0x76, 0xa1, 0xed, 0x38, 0x95, 0x2e ], + initDataType: 'cenc', + initData: 'AAAAjXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAG0IARIQE6dTBtEYkXtHpsGDZEJRbxoIY2FzdGxhYnMiRGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRNbk5sYzNOcGIyNGlMQ0oyWVhKcFlXNTBTV1FpT2lKclpYa3hJbjA9MgdkZWZhdWx0AAADwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA6KiAwAAAQABAJgDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBCAGwATwBuAEUAeABqAFIAZQA1AEYASABwAHMARwBEAFoARQBKAFIAYgB3AD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AcwB0AGEAZwBpAG4AZwAuAGQAcgBtAHQAbwBkAGEAeQAuAGMAbwBtAC8AbABpAGMAZQBuAHMAZQAtAHAAcgBvAHgAeQAtAGgAZQBhAGQAZQByAGEAdQB0AGgALwBkAHIAbQB0AG8AZABhAHkALwBSAGkAZwBoAHQAcwBNAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA8AC8ATABBAF8AVQBSAEwAPgA8AEwAVQBJAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAFUASQBfAFUAUgBMAD4APABDAEgARQBDAEsAUwBVAE0APgBJAEQAUgB0AFAAZwBVAEkALwBiAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=' }, + { kid: [ 0xee, 0x73, 0x56, 0x4e, 0xc8, 0xa8, 0x90, 0xf0, 0x78, 0xef, 0x68, 0x71, 0xfa, 0x4b, 0xe1, 0x8b ], + key: [ 0xe4, 0x4f, 0xe1, 0x45, 0x7c, 0x5e, 0xbc, 0xd8, 0x3e, 0xad, 0xdc, 0xd6, 0x2c, 0xaf, 0x55, 0x18 ], initDataType: 'cenc', - initData: 'AAAAiXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGkIARIQNjLoNFj8NGXQS7OcUSbv0BoIY2FzdGxhYnMiQGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRiWFZzZEdraUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AE4ATwBnAHkATgB2AHgAWQBaAFQAVABRAFMANwBPAGMAVQBTAGIAdgAwAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AcQBGAGQAMgB5AHIARQB3AHMALwBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' }, - { kid: [ 0xdd, 0xc3, 0x72, 0x2d, 0x85, 0x3e, 0xfe, 0xaa, 0x09, 0x4e, 0x0d, 0xdd, 0xc0, 0x9f, 0x66, 0x98 ], - key: [ 0x1b, 0x0b, 0x74, 0xeb, 0x6e, 0x0f, 0x28, 0xe7, 0x0f, 0xea, 0xb0, 0xa2, 0x7d, 0x85, 0x8d, 0xc7 ], - initDataType: 'cenc', - initData: 'AAAAiXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGkIARIQ3cNyLYU+/qoJTg3dwJ9mmBoIY2FzdGxhYnMiQGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRiWFZzZEdraUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreUluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AEwAWABMAEQAMwBUADYARgBxAHYANABKAFQAZwAzAGQAdwBKADkAbQBtAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AZABFAFMAMAArAFgAMwBSAFoANgBzAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] - }, + initData: 'AAAAjXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAG0IARIQ7nNWTsiokPB472hx+kvhixoIY2FzdGxhYnMiRGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRNbk5sYzNOcGIyNGlMQ0oyWVhKcFlXNTBTV1FpT2lKclpYa3lJbjA9MgdkZWZhdWx0AAADwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA6KiAwAAAQABAJgDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBUAGwAWgB6ADcAcQBqAEkAOABKAEIANAA3ADIAaAB4ACsAawB2AGgAaQB3AD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AcwB0AGEAZwBpAG4AZwAuAGQAcgBtAHQAbwBkAGEAeQAuAGMAbwBtAC8AbABpAGMAZQBuAHMAZQAtAHAAcgBvAHgAeQAtAGgAZQBhAGQAZQByAGEAdQB0AGgALwBkAHIAbQB0AG8AZABhAHkALwBSAGkAZwBoAHQAcwBNAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA8AC8ATABBAF8AVQBSAEwAPgA8AEwAVQBJAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAFUASQBfAFUAUgBMAD4APABDAEgARQBDAEsAUwBVAE0APgB4AEQASwBBAFkAMAB2AFoAaABVAFUAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=' } ] }, 'webm' : { audio : { type: 'audio/webm; codecs="opus"' }, video : { type: 'video/webm; codecs="vp8"', diff --git a/testing/web-platform/tests/encrypted-media/content/drmconfig.json b/testing/web-platform/tests/encrypted-media/content/drmconfig.json deleted file mode 100644 index becc8a8833de..000000000000 --- a/testing/web-platform/tests/encrypted-media/content/drmconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "com.widevine.alpha": { - "serverURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/", - "httpRequestHeaders": { - "dt-custom-data": "eyJ1c2VySWQiOiIxMjM0NSIsInNlc3Npb25JZCI6ImV3b2dJQ0p3Y205bWFXeGxJaUE2SUhzS0lDQWdJQ0p3ZFhKamFHRnpaU0lnT2lCN0lIMEtJQ0I5TEFvZ0lDSnZkWFJ3ZFhSUWNtOTBaV04wYVc5dUlpQTZJSHNLSUNBZ0lDSmthV2RwZEdGc0lpQTZJR1poYkhObExBb2dJQ0FnSW1GdVlXeHZaM1ZsSWlBNklHWmhiSE5sTEFvZ0lDQWdJbVZ1Wm05eVkyVWlJRG9nWm1Gc2MyVUtJQ0I5TEFvZ0lDSnpkRzl5WlV4cFkyVnVjMlVpSURvZ1ptRnNjMlVLZlFvSyIsIm1lcmNoYW50IjoiY2FibGVsYWJzIn0K" - } - }, - "com.microsoft.playready": { - "serverURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx", - "httpRequestHeaders": { - "http-header-CustomData": "eyJ1c2VySWQiOiIxMjM0NSIsInNlc3Npb25JZCI6ImV3b2dJQ0p3Y205bWFXeGxJaUE2SUhzS0lDQWdJQ0p3ZFhKamFHRnpaU0lnT2lCN0lIMEtJQ0I5TEFvZ0lDSnZkWFJ3ZFhSUWNtOTBaV04wYVc5dUlpQTZJSHNLSUNBZ0lDSmthV2RwZEdGc0lpQTZJR1poYkhObExBb2dJQ0FnSW1GdVlXeHZaM1ZsSWlBNklHWmhiSE5sTEFvZ0lDQWdJbVZ1Wm05eVkyVWlJRG9nWm1Gc2MyVUtJQ0I5TEFvZ0lDSnpkRzl5WlV4cFkyVnVjMlVpSURvZ1ptRnNjMlVLZlFvSyIsIm1lcmNoYW50IjoiY2FibGVsYWJzIn0K" - } - } -} \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..d33f2a6c16014c75ebd2eef87d13e2d5a0d74972 GIT binary patch literal 476559 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

    oXP=_VAZn`ANh_~J3DTt3JAakKvH-G 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 z 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¨ukVMa|>Ap{5bUvM_KX%~Pk+W#iSP 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

    k|+e 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 DaTt2q diff --git a/testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html b/testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html index 4815dff46daf..e168b789325a 100644 --- a/testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html +++ b/testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html @@ -30,4 +30,4 @@ runTest(config); - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-events.html b/testing/web-platform/tests/encrypted-media/drm-events.html index 40b65929b299..dc71eecfeb5c 100644 --- a/testing/web-platform/tests/encrypted-media/drm-events.html +++ b/testing/web-platform/tests/encrypted-media/drm-events.html @@ -20,7 +20,7 @@ - + @@ -57,9 +57,11 @@ initData = getInitData( content, initDataType ); } + var handler = new MessageHandler( keysystem, content ); + runTest( { keysystem: keysystem, content: content, - messagehandler: messagehandler.bind( content ), + messagehandler: handler.messagehandler, initDataType: initDataType, initData: initData } ); @@ -67,4 +69,4 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html b/testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html index 719f13115bff..39ae5aea2655 100644 --- a/testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html +++ b/testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html @@ -30,4 +30,4 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html b/testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html index f64c9501437c..5059fcdfcf38 100644 --- a/testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html +++ b/testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html @@ -20,7 +20,7 @@ - + @@ -39,11 +39,12 @@ .then( function( contents ) { // Select a content item with multiple keys and initData - var contentitem = contents.filter( function( item ) { return item.keys.length > 1 && item.initDataType && !item.associatedInitData; } )[ 0 ]; + var contentitem = contents.filter( function( item ) { return item.keys.length > 1 && item.initDataType && !item.associatedInitData; } )[ 0 ], - var config = { keysystem: keysystem, + handler = new MessageHandler( keysystem, contentitem ), + config = { keysystem: keysystem, content: contentitem, - messagehandler: messagehandler.bind( contentitem ), + messagehandler: handler.messagehandler, initDataType: contentitem.initDataType, initData: getProprietaryInitDatas(contentitem).initDatas.map( base64DecodeToUnit8Array ), }; @@ -53,4 +54,4 @@ } ); - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html index a572fb6b849b..243b1ceccf45 100644 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html +++ b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html @@ -20,7 +20,7 @@ - + @@ -34,10 +34,12 @@
    - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html index c4d694b6806e..1e68161ae813 100644 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html +++ b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html @@ -20,7 +20,7 @@ - + @@ -34,19 +34,22 @@
    - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html index 4de324e80fa0..2fd6b45457c5 100644 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html +++ b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html @@ -20,7 +20,7 @@ - + @@ -34,10 +34,12 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html index 4b19d493e1cb..0e05b40d4258 100644 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html +++ b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-first.html @@ -20,7 +20,7 @@ - + @@ -34,10 +34,12 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html index 980a811cd4bd..2e914bfdde0c 100644 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html +++ b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html @@ -20,7 +20,7 @@ - + @@ -35,11 +35,13 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html new file mode 100644 index 000000000000..2f21eb2c6144 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html @@ -0,0 +1,52 @@ + + + + + + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html index 58fcef344c3a..60fd50b18077 100644 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html +++ b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html @@ -20,7 +20,7 @@ - + @@ -34,10 +34,12 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html b/testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html index f718b59221e1..a40519225f7d 100644 --- a/testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html +++ b/testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html @@ -33,4 +33,4 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/idlharness.html b/testing/web-platform/tests/encrypted-media/idlharness.html index 5c9f643823d4..e65ad5e30ba2 100644 --- a/testing/web-platform/tests/encrypted-media/idlharness.html +++ b/testing/web-platform/tests/encrypted-media/idlharness.html @@ -34,6 +34,8 @@ idl_array.add_untested_idls("interface Navigator {};"); idl_array.add_untested_idls("interface ArrayBuffer {};"); idl_array.add_untested_idls("interface HTMLMediaElement {};"); + idl_array.add_untested_idls("interface Event {};"); + idl_array.add_untested_idls("interface EventTarget {};"); idl_array.add_idls(idls); @@ -46,4 +48,4 @@ }, {explicit_done: true}); - \ No newline at end of file + diff --git a/testing/web-platform/tests/encrypted-media/polyfill/Makefile b/testing/web-platform/tests/encrypted-media/polyfill/Makefile index 224174cdf24b..72547ca41083 100644 --- a/testing/web-platform/tests/encrypted-media/polyfill/Makefile +++ b/testing/web-platform/tests/encrypted-media/polyfill/Makefile @@ -1,6 +1,5 @@ awkprog = /<\/head>/ { print " "; \ print " "; \ - print " "; \ print " "; }; \ { print $$0 } diff --git a/testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js b/testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js index c089d86f3ad1..576e0ad04066 100644 --- a/testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js +++ b/testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js @@ -29,7 +29,7 @@ return this._mediaKeys.setServerCertificate( certificate ); }; - MediaKeys.prototype.createSession function createSession( sessionType ) { + MediaKeys.prototype.createSession = function createSession( sessionType ) { if ( sessionType === 'persistent-usage-record' ) { diff --git a/testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js b/testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js index bb0aa36a325f..27961a6a80f4 100644 --- a/testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js +++ b/testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js @@ -177,7 +177,8 @@ { case 'loading': this._session.update( toUtf8( { keys: this._keys } ) ) - .then( this._loaded ); + .then( this._loaded( true ) ) + .catch( this._loadfailed ); break; @@ -324,6 +325,8 @@ this._createSession(); this._state = 'loading'; + this._loaded = resolve; + this._loadfailed = reject; var initData = { kids: this._kids }; @@ -341,7 +344,7 @@ { return new Promise( function( resolve, reject ) { - switch( this._state ) + switch( this._state ) { case 'active' : diff --git a/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html b/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html new file mode 100644 index 000000000000..5b2369fd4177 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html @@ -0,0 +1,90 @@ + + + + + + Encrypted Media Extensions: Retrieve stored persistent-license + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html index da308797ff5e..3bfbb52e5403 100644 --- a/testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html +++ b/testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html @@ -29,7 +29,7 @@ sessionTypes: [ 'persistent-usage-record' ] }, assertions = [ ]; - config.messagehandler = messagehandler; + config.messagehandler = (new MessageHandler('org.w3.keysystem')).messagehandler; function onMessage( event ) { @@ -49,7 +49,7 @@ assertions.push( { expected: true, actual: ( duration >= 2000 ), message: "duration >= 2s" } ); assertions.push( { expected: true, actual: ( duration < 4000 ), message: "duration < 4s" } ); - config.messagehandler( config.keysystem, event.messageType, event.message ) + config.messagehandler( event.messageType, event.message ) .then( function( response ) { event.target.update( response ).catch(function(error) { diff --git a/testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js b/testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js index 81409b8de3e3..ef9a17cd5a95 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js +++ b/testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js @@ -32,4 +32,4 @@ { return checkInitDataType('keyids'); }, config.keysystem + ' support for "keyids".'); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/events.js b/testing/web-platform/tests/encrypted-media/scripts/events.js index 551fc16f1396..04de9b62648c 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/events.js +++ b/testing/web-platform/tests/encrypted-media/scripts/events.js @@ -21,7 +21,7 @@ function runTest(config) { event.messageType, [ 'license-request', 'individualization-request' ] ); - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { waitForEventAndRunStep('keystatuseschange', mediaKeySession, test.step_func(processKeyStatusesChange), test); mediaKeySession.update( response ).catch(function(error) { @@ -61,4 +61,4 @@ function runTest(config) { })); }, testname ); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js b/testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js index d0d94a1fd6d6..fca41a6f79ac 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js +++ b/testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js @@ -25,7 +25,7 @@ function runTest(config) verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] }); // Add key1 to session1. - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { event.target.update( response ).catch(function(error) { forceTestFailureFromPromise(test, error); @@ -60,7 +60,7 @@ function runTest(config) verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] }); // Add key2 to session2. - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { event.target.update( response ).catch(function(error) { forceTestFailureFromPromise(test, error); diff --git a/testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js b/testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js index 160999a5d0be..7cb6fed5970c 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js +++ b/testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js @@ -47,4 +47,4 @@ }); }); }, config.keysystem + ': Remove() immediately after CreateSession().'); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license-events.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license-events.js new file mode 100644 index 000000000000..c0e65db57faa --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license-events.js @@ -0,0 +1,166 @@ +function runTest(config, testname) { + + var testname = config.keysystem + ', successful playback, persistent-license, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', set src before setMediaKeys, check events'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-license' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _sessionId, + _receivedAllKeysUsableEvent = false, + _receivedPlayingEvent = false, + _receivedTimeupdateEvent = false, + _startedReleaseSequence = false, + _events = [ ]; + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + if ( !_startedReleaseSequence ) { + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + } else { + assert_equals( event.messageType, 'license-release' ); + } + + if ( event.messageType !== 'individualization-request' ) { + _events.push( event.messageType ); + } + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + if ( event.messageType === 'license-request' ) { + _events.push( 'license-response' ); + } else if ( event.messageType === 'license-release' ) { + _events.push( 'release-response' ); + } + + waitForEventAndRunStep('keystatuseschange', _mediaKeySession, onKeyStatusesChange, test); + _mediaKeySession.update( response ).then( function() { + _events.push('updated'); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function onKeyStatusesChange(event) { + assert_equals(event.target, _mediaKeySession ); + assert_true(event instanceof window.Event ); + assert_equals(event.type, 'keystatuseschange' ); + + var hasKeys = false, pendingKeys = false; + _mediaKeySession.keyStatuses.forEach( function( value, keyid ) { + assert_any( assert_equals, value, [ 'status-pending', 'usable' ] ); + + hasKeys = true; + pendingKeys = pendingKeys || ( value === 'status-pending' ); + }); + + if ( !_receivedAllKeysUsableEvent && hasKeys && !pendingKeys ) { + _receivedAllKeysUsableEvent = true; + _events.push( 'allkeysusable' ); + } + + if ( !hasKeys ) { + _events.push( 'emptykeyslist' ); + } + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).then( function() { + + _events.push( 'generaterequest' ); + _sessionId = _mediaKeySession.sessionId; + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + + function onClosed(event) { + _events.push( 'closed-promise' ); + + setTimeout( test.step_func( function() { + assert_array_equals( _events, + [ + 'generaterequest', + 'license-request', + 'license-response', + 'updated', + 'allkeysusable', + 'playing', + 'remove', + 'emptykeyslist', + 'license-release', + 'release-response', + 'closed-promise', + 'updated' + ], + "Expected events sequence" ); + + _video.setMediaKeys( null ).then( function() { test.done() } ); + } ), 0 ); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) && !_receivedTimeupdateEvent ) { + _receivedTimeupdateEvent = true; + _video.pause(); + + _startedReleaseSequence = true; + + _mediaKeySession.closed.then( test.step_func( onClosed ) ); + _mediaKeySession.remove().then( function() { + _events.push( 'remove' ); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + } + + function onPlaying(event) { + _receivedPlayingEvent = true; + _events.push( 'playing' ); + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + return _video.setMediaKeys(_mediaKeys); + }).then(function() { + _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license.js new file mode 100644 index 000000000000..419cfb84ae70 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license.js @@ -0,0 +1,91 @@ +function runTest(config, testname) { + + var testname = config.keysystem + ', successful playback, persistent-license, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', set src before setMediaKeys'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-license' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _startedReleaseSequence = false; + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + if ( !_startedReleaseSequence ) { + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + } else { + assert_equals( event.messageType, 'license-release' ); + } + + config.messagehandler( event.messageType, event.message ) + .then( function( response ) { + _mediaKeySession.update( response ) + .catch(onFailure); + }); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) && !_startedReleaseSequence ) { + _video.removeEventListener('timeupdate', onTimeupdate ); + _video.pause(); + _video.removeAttribute('src'); + _video.load(); + + _startedReleaseSequence = true; + + _mediaKeySession.closed.then( function() { test.done(); } ); + _mediaKeySession.remove().catch(onFailure); + } + } + + function onPlaying(event) { + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + return _video.setMediaKeys(_mediaKeys); + }).then(function() { + _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js index 04e894a11cca..465a44c7a386 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js @@ -37,7 +37,7 @@ function runTest(config, testname) { _events.push( event.messageType ); } - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { if ( event.messageType === 'license-request' ) { _events.push( 'license-response' ); } else if ( event.messageType === 'license-release' ) { @@ -123,7 +123,7 @@ function runTest(config, testname) { } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) && !_timeupdateEvent ) { + if ( _video.currentTime > ( config.duration || 2 ) && !_timeupdateEvent ) { _timeupdateEvent = true; _video.pause(); @@ -156,6 +156,8 @@ function runTest(config, testname) { waitForEventAndRunStep('encrypted', _video, onEncrypted, test); waitForEventAndRunStep('playing', _video, onPlaying, test); }).then(function() { + return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; + }).then(function( success ) { return testmediasource(config); }).then(function(source) { _mediaSource = source; @@ -165,4 +167,4 @@ function runTest(config, testname) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js index 8f8877f684c0..dc1d7017ed11 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js @@ -20,7 +20,8 @@ function runTest(config, testname) { function onMessage(event) { assert_equals( event.target, _mediaKeySession ); - assert_true( event instanceof window.MediaKeyMessageEvent ); + // event instance verification failing on CastTV + // assert_true( event instanceof window.MediaKeyMessageEvent ); assert_equals( event.type, 'message'); if ( !_releaseSequence ) @@ -32,9 +33,15 @@ function runTest(config, testname) { assert_equals( event.messageType, 'license-release' ); } - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { _mediaKeySession.update( response ).catch(function(error) { forceTestFailureFromPromise(test, error); + }).then(function() { + if(event.messageType === 'license-request') { + _video.setMediaKeys(_mediaKeys); + } else if(event.messageType === 'license-release') { + test.done(); + } }); }); } @@ -54,13 +61,11 @@ function runTest(config, testname) { function onClosed(event) { _video.src = ""; - _video.setMediaKeys( null ).then(function(){ - test.done(); - }); + _video.setMediaKeys( null ); } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) && !_releaseSequence ) { + if ( _video.currentTime > ( config.duration || 2 ) && !_releaseSequence ) { _video.removeEventListener('timeupdate', onTimeupdate ); @@ -88,12 +93,13 @@ function runTest(config, testname) { return access.createMediaKeys(); }).then(function(mediaKeys) { _mediaKeys = mediaKeys; - _video.setMediaKeys(_mediaKeys); _mediaKeySession = _mediaKeys.createSession( 'persistent-usage-record' ); waitForEventAndRunStep('encrypted', _video, onEncrypted, test); waitForEventAndRunStep('playing', _video, onPlaying, test); }).then(function() { + return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; + }).then(function( success ) { return testmediasource(config); }).then(function(source) { _mediaSource = source; @@ -103,4 +109,4 @@ function runTest(config, testname) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-license.js b/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-license.js new file mode 100644 index 000000000000..a4b0ed16bd37 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-license.js @@ -0,0 +1,109 @@ +function runTest(config, testname) { + + var testname = config.keysystem + ', retrieve persistent-license in new window, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ]; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-license' ] }; + + + async_test( function( test ) { + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _sessionId; + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).then( function() { + _sessionId = _mediaKeySession.sessionId; + }).catch(onFailure); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + _mediaKeySession.update( response ) + .catch(onFailure); + }); + } + + function onPlaying(event) { + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) ) { + _video.removeEventListener('timeupdate', onTimeupdate ); + _video.pause(); + _video.removeAttribute('src'); + _video.load() + + _mediaKeySession.closed.then( test.step_func( onClosed ) ); + _mediaKeySession.close(); + } + } + + function onClosed() { + // Open a new window in which we will attempt to play with the persisted license + var win = window.open( config.windowscript ); + + // Lisen for an event from the new window containing its test assertions + window.addEventListener('message', test.step_func(function( messageEvent ) { + messageEvent.data.forEach(test.step_func(function( assertion ) { + assert_equals(assertion.actual, assertion.expected, assertion.message); + })); + + win.close(); + test.done(); + })); + + // Delete things which can't be cloned and posted over to the new window + delete config.video; + delete config.messagehandler; + + // Post the config and session id to the new window when it is ready + win.onload = function() { + win.postMessage( { config: config, sessionId: _sessionId }, '*' ); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + + _video.setMediaKeys( mediaKeys ); + + _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js b/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js index f58bb573b0f4..7940aeff0c8d 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js @@ -39,10 +39,11 @@ function runTest(config, testname) { assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { - _mediaKeySession.update( response ) - .catch(function(error) { + _mediaKeySession.update( response ).then(function() { + _video.setMediaKeys(_mediaKeys); + }).catch(function(error) { forceTestFailureFromPromise(test, error); }); }); @@ -56,7 +57,7 @@ function runTest(config, testname) { } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) ) { + if ( _video.currentTime > ( config.duration || 2 ) ) { _video.removeEventListener('timeupdate', onTimeupdate ); @@ -108,6 +109,8 @@ function runTest(config, testname) { waitForEventAndRunStep('encrypted', _video, onEncrypted, test); waitForEventAndRunStep('playing', _video, onPlaying, test); }).then(function() { + return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; + }).then(function( success ) { return testmediasource(config); }).then(function(source) { _mediaSource = source; @@ -117,4 +120,4 @@ function runTest(config, testname) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js index 96323664d4e2..3a8552235f08 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js @@ -33,7 +33,7 @@ function runTest(config) { _events.push( event.messageType ); } - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { _events.push( 'license-response' ); waitForEventAndRunStep('keystatuseschange', _mediaKeySession, onKeyStatusesChange, test); @@ -112,7 +112,7 @@ function runTest(config) { } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) && !_timeupdateEvent ) { + if ( _video.currentTime > ( config.duration || 2 ) && !_timeupdateEvent ) { _timeupdateEvent = true; _video.pause(); @@ -152,4 +152,4 @@ function runTest(config) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js index 6d2a08ade097..9e2adde6be8e 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js @@ -17,37 +17,6 @@ function runTest(config) { _mediaKeySessions = [ ], _mediaSource; - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - assert_any( assert_equals, _mediaKeySessions.length, [ 0, 1 ] ); - - var mediaKeySession = _mediaKeys.createSession( 'temporary' ); - - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - - var initDataType, initData; - if ( config.initDataType && config.initData ) - { - initDataType = config.initDataType; - initData = config.initData[ _mediaKeySessions.length ]; - } - else - { - initDataType = event.initDataType; - initData = event.initData; - } - - _mediaKeySessions.push( mediaKeySession ); - - mediaKeySession.generateRequest( initDataType, initData ) - .catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - function onMessage(event) { assert_any( assert_equals, event.target, _mediaKeySessions ); assert_true( event instanceof window.MediaKeyMessageEvent ); @@ -57,7 +26,7 @@ function runTest(config) { event.messageType, [ 'license-request', 'individualization-request' ] ); - config.messagehandler( config.keysystem, event.messageType, event.message ) + config.messagehandler( event.messageType, event.message ) .then( function( response ) { event.target.update( response ) @@ -72,10 +41,11 @@ function runTest(config) { // Not using waitForEventAndRunStep() to avoid too many // EVENT(onTimeUpdate) logs. _video.addEventListener('timeupdate', onTimeupdate, true); + } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) ) { + if ( _video.currentTime > ( config.duration || 2 ) ) { consoleWrite("Session 0:"); dumpKeyStatuses( _mediaKeySessions[ 0 ].keyStatuses ); @@ -95,9 +65,23 @@ function runTest(config) { _video.setMediaKeys(_mediaKeys); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); waitForEventAndRunStep('playing', _video, onPlaying, test); + config.initData.forEach( function( initData ) { + + var mediaKeySession = _mediaKeys.createSession( 'temporary' ); + + waitForEventAndRunStep('message', mediaKeySession, onMessage, test); + + _mediaKeySessions.push( mediaKeySession ); + + mediaKeySession.generateRequest( config.initDataType, initData ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + + } ); + }).then(function() { return testmediasource(config); }).then(function(source) { @@ -108,4 +92,4 @@ function runTest(config) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey.js index 3e27db4f70a7..f1adf11acecf 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey.js @@ -58,7 +58,7 @@ function runTest(config) { event.messageType, [ 'license-request', 'individualization-request' ] ); - config.messagehandler( config.keysystem, event.messageType, event.message ) + config.messagehandler( event.messageType, event.message ) .then( function( response ) { event.target.update( response ) @@ -76,7 +76,7 @@ function runTest(config) { } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) ) { + if ( _video.currentTime > ( config.duration || 2 ) ) { consoleWrite("Session 0:"); dumpKeyStatuses( _mediaKeySessions[ 0 ].keyStatuses ); @@ -107,4 +107,4 @@ function runTest(config) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys-first.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys-first.js index 5d7a4bf0c829..036f225255a4 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys-first.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys-first.js @@ -25,7 +25,7 @@ function runTest(config) { event.messageType, [ 'license-request', 'individualization-request' ] ); - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { _mediaKeySession.update( response ).catch(function(error) { forceTestFailureFromPromise(test, error); @@ -47,7 +47,7 @@ function runTest(config) { } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) ) { + if ( _video.currentTime > ( config.duration || 2 ) ) { _video.pause(); test.done(); } @@ -80,4 +80,4 @@ function runTest(config) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js index 79aadee45312..1567a7e7f247 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js @@ -31,7 +31,7 @@ function runTest(config) { event.messageType, [ 'license-request', 'individualization-request' ] ); - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { _mediaKeySession.update( response ).catch(function(error) { forceTestFailureFromPromise(test, error); @@ -59,7 +59,7 @@ function runTest(config) { { return new Promise(function(resolve) { video.addEventListener('timeupdate', function listener(event) { - if ( event.target.currentTime > ( config.duration || 5 ) ) + if ( event.target.currentTime > ( config.duration || 2 ) ) { video.removeEventListener('timeupdate', listener); resolve(event); @@ -87,4 +87,4 @@ function runTest(config) { forceTestFailureFromPromise(test, error); }); } -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-waitingforkey.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-waitingforkey.js new file mode 100644 index 000000000000..266e84015130 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-waitingforkey.js @@ -0,0 +1,69 @@ +function runTest(config) { + + // config.initData contains a list of keys. We expect those to be needed in order and get + // one waitingforkey event for each one. + + var testname = config.keysystem + ', successful playback, temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', waitingforkey event, ' + + config.initData.length + ' key' + ( config.initData.length > 1 ? 's' : '' ); + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySessions = [ ], + _mediaSource; + + function onFailure( error ) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + event.target.update( response ).catch(onFailure); + }); + } + + function onWaitingForKey(event) { + // Expect one waitingforkey event for each initData we were given + assert_less_than( _mediaKeySessions.length, config.initData.length ); + var mediaKeySession = _mediaKeys.createSession( 'temporary' ); + waitForEventAndRunStep('message', mediaKeySession, onMessage, test); + _mediaKeySessions.push( mediaKeySession ); + mediaKeySession.generateRequest( config.initDataType, config.initData[ _mediaKeySessions.length - 1 ] ).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 5 ) ) { + assert_equals( _mediaKeySessions.length, config.initData.length ); + _video.removeEventListener('timeupdate', onTimeupdate); + _video.pause(); + test.done(); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + _video.setMediaKeys(_mediaKeys); + waitForEventAndRunStep('waitingforkey', _video, onWaitingForKey, test); + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js index c0a2e4f5d2dd..f02f7956a255 100644 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js +++ b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js @@ -25,7 +25,7 @@ function runTest(config) { event.messageType, [ 'license-request', 'individualization-request' ] ); - config.messagehandler( config.keysystem, event.messageType, event.message ).then( function( response ) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { _mediaKeySession.update( response ).catch(function(error) { forceTestFailureFromPromise(test, error); @@ -49,7 +49,7 @@ function runTest(config) { } function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 5 ) ) { + if ( _video.currentTime > ( config.duration || 2 ) ) { _video.pause(); test.done(); } @@ -79,4 +79,4 @@ function runTest(config) { forceTestFailureFromPromise(test, error); }); }, testname); -} \ No newline at end of file +} diff --git a/testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js b/testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js index aeb83f2f2ac7..d82d4daf959f 100644 --- a/testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js +++ b/testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js @@ -1,8 +1,14 @@ // Expect utf8decoder and utf8decoder to be TextEncoder('utf-8') and TextDecoder('utf-8') respectively -function messagehandler( keysystem, messageType, message ) -{ - var contentmetadata = this; +function MessageHandler( keysystem, content ) { + this._keysystem = keysystem; + this._content = content; + this.messagehandler = MessageHandler.prototype.messagehandler.bind( this ); + this.servercertificate = undefined; +} + +MessageHandler.prototype.messagehandler = function messagehandler( messageType, message ) +{ if ( messageType === 'license-request' ) { var request = fromUtf8( message ); @@ -10,18 +16,18 @@ function messagehandler( keysystem, messageType, message ) var keys = request.kids.map( function( kid ) { var key; - for( var i=0; i < contentmetadata.keys.length; ++i ) + for( var i=0; i < this._content.keys.length; ++i ) { - if ( base64urlEncode( contentmetadata.keys[ i ].kid ) === kid ) + if ( base64urlEncode( this._content.keys[ i ].kid ) === kid ) { - key = base64urlEncode( contentmetadata.keys[ i ].key ); + key = base64urlEncode( this._content.keys[ i ].key ); break; } } return { kty: 'oct', kid: kid, k: key }; - } ); + }.bind( this ) ); return Promise.resolve( toUtf8( { keys: keys } ) ); } diff --git a/testing/web-platform/tests/encrypted-media/util/drm-messagehandler.js b/testing/web-platform/tests/encrypted-media/util/drm-messagehandler.js new file mode 100644 index 000000000000..7ead8f4dd720 --- /dev/null +++ b/testing/web-platform/tests/encrypted-media/util/drm-messagehandler.js @@ -0,0 +1,235 @@ +// Expect utf8decoder and utf8decoder to be TextEncoder('utf-8') and TextDecoder('utf-8') respectively +// +// drmconfig format: +// { : { "serverURL" : , +// "httpRequestHeaders" : , +// "servertype" : "microsoft" | "drmtoday", // affects how request parameters are formed +// "certificate" : } } +// + +drmconfig = { + "com.widevine.alpha": { + "serverURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/", + "servertype" : "drmtoday", + "userId" : "12345", + "merchant" : "cablelabs" + }, + + "com.microsoft.playready": { + "serverURL": "http://playready-testserver.azurewebsites.net/rightsmanager.asmx", + "servertype": "microsoft", + "certificate" : "Q0hBSQAAAAEAAAUEAAAAAAAAAAJDRVJUAAAAAQAAAfQAAAFkAAEAAQAAAFjt9G6KdSncCkrjbTQPN+/2AAAAAAAAAAAAAAAJIPbrW9dj0qydQFIomYFHOwbhGZVGP2ZsPwcvjh+NFkP/////AAAAAAAAAAAAAAAAAAAAAAABAAoAAABYxw6TjIuUUmvdCcl00t4RBAAAADpodHRwOi8vcGxheXJlYWR5LmRpcmVjdHRhcHMubmV0L3ByL3N2Yy9yaWdodHNtYW5hZ2VyLmFzbXgAAAAAAQAFAAAADAAAAAAAAQAGAAAAXAAAAAEAAQIAAAAAADBRmRRpqV4cfRLcWz9WoXIGZ5qzD9xxJe0CSI2mXJQdPHEFZltrTkZtdmurwVaEI2etJY0OesCeOCzCqmEtTkcAAAABAAAAAgAAAAcAAAA8AAAAAAAAAAVEVEFQAAAAAAAAABVNZXRlcmluZyBDZXJ0aWZpY2F0ZQAAAAAAAAABAAAAAAABAAgAAACQAAEAQGHic/IPbmLCKXxc/MH20X/RtjhXH4jfowBWsQE1QWgUUBPFId7HH65YuQJ5fxbQJCT6Hw0iHqKzaTkefrhIpOoAAAIAW+uRUsdaChtq/AMUI4qPlK2Bi4bwOyjJcSQWz16LAFfwibn5yHVDEgNA4cQ9lt3kS4drx7pCC+FR/YLlHBAV7ENFUlQAAAABAAAC/AAAAmwAAQABAAAAWMk5Z0ovo2X0b2C9K5PbFX8AAAAAAAAAAAAAAARTYd1EkpFovPAZUjOj2doDLnHiRSfYc89Fs7gosBfar/////8AAAAAAAAAAAAAAAAAAAAAAAEABQAAAAwAAAAAAAEABgAAAGAAAAABAAECAAAAAABb65FSx1oKG2r8AxQjio+UrYGLhvA7KMlxJBbPXosAV/CJufnIdUMSA0DhxD2W3eRLh2vHukIL4VH9guUcEBXsAAAAAgAAAAEAAAAMAAAABwAAAZgAAAAAAAAAgE1pY3Jvc29mdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFBsYXlSZWFkeSBTTDAgTWV0ZXJpbmcgUm9vdCBDQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDEuMC4wLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACAAAAJAAAQBArAKJsEIDWNG5ulOgLvSUb8I2zZ0c5lZGYvpIO56Z0UNk/uC4Mq3jwXQUUN6m/48V5J/vuLDhWu740aRQc1dDDAAAAgCGTWHP8iVuQixWizwoABz7PhUnZYWEugUht5sYKNk23h2Cao/D5uf6epDVyilG8fZKLvufXc/+fkNOtEKT+sWr" + }, +/* + "com.microsoft.playready": { + "serverURL": "http://playready.directtaps.net/pr/svc/rightsmanager.asmx", + "servertype": "microsoft", + "certificate" : "Q0hBSQAAAAEAAAUEAAAAAAAAAAJDRVJUAAAAAQAAAfQAAAFkAAEAAQAAAFjt9G6KdSncCkrjbTQPN+/2AAAAAAAAAAAAAAAJIPbrW9dj0qydQFIomYFHOwbhGZVGP2ZsPwcvjh+NFkP/////AAAAAAAAAAAAAAAAAAAAAAABAAoAAABYxw6TjIuUUmvdCcl00t4RBAAAADpodHRwOi8vcGxheXJlYWR5LmRpcmVjdHRhcHMubmV0L3ByL3N2Yy9yaWdodHNtYW5hZ2VyLmFzbXgAAAAAAQAFAAAADAAAAAAAAQAGAAAAXAAAAAEAAQIAAAAAADBRmRRpqV4cfRLcWz9WoXIGZ5qzD9xxJe0CSI2mXJQdPHEFZltrTkZtdmurwVaEI2etJY0OesCeOCzCqmEtTkcAAAABAAAAAgAAAAcAAAA8AAAAAAAAAAVEVEFQAAAAAAAAABVNZXRlcmluZyBDZXJ0aWZpY2F0ZQAAAAAAAAABAAAAAAABAAgAAACQAAEAQGHic/IPbmLCKXxc/MH20X/RtjhXH4jfowBWsQE1QWgUUBPFId7HH65YuQJ5fxbQJCT6Hw0iHqKzaTkefrhIpOoAAAIAW+uRUsdaChtq/AMUI4qPlK2Bi4bwOyjJcSQWz16LAFfwibn5yHVDEgNA4cQ9lt3kS4drx7pCC+FR/YLlHBAV7ENFUlQAAAABAAAC/AAAAmwAAQABAAAAWMk5Z0ovo2X0b2C9K5PbFX8AAAAAAAAAAAAAAARTYd1EkpFovPAZUjOj2doDLnHiRSfYc89Fs7gosBfar/////8AAAAAAAAAAAAAAAAAAAAAAAEABQAAAAwAAAAAAAEABgAAAGAAAAABAAECAAAAAABb65FSx1oKG2r8AxQjio+UrYGLhvA7KMlxJBbPXosAV/CJufnIdUMSA0DhxD2W3eRLh2vHukIL4VH9guUcEBXsAAAAAgAAAAEAAAAMAAAABwAAAZgAAAAAAAAAgE1pY3Jvc29mdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFBsYXlSZWFkeSBTTDAgTWV0ZXJpbmcgUm9vdCBDQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDEuMC4wLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACAAAAJAAAQBArAKJsEIDWNG5ulOgLvSUb8I2zZ0c5lZGYvpIO56Z0UNk/uC4Mq3jwXQUUN6m/48V5J/vuLDhWu740aRQc1dDDAAAAgCGTWHP8iVuQixWizwoABz7PhUnZYWEugUht5sYKNk23h2Cao/D5uf6epDVyilG8fZKLvufXc/+fkNOtEKT+sWr" + }, + + "com.microsoft.playready": { + "serverURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx", + "servertype" : "drmtoday", + "userId" : "12345", + "merchant" : "cablelabs" + } +*/ + +}; + +function MessageHandler( keysystem, content, sessionType ) { + this._keysystem = keysystem; + this._content = content; + this._sessionType = sessionType || "temporary"; + this._drmconfig = drmconfig[ this._keysystem ]; + + this.messagehandler = MessageHandler.prototype.messagehandler.bind( this ); + if ( this._drmconfig && this._drmconfig.certificate ) { + this.servercertificate = stringToUint8Array( atob( this._drmconfig.certificate ) ); + } +} + +MessageHandler.prototype.messagehandler = function messagehandler( messageType, message) { + + // For the DRM Today server, mapping between Key System messages and server protocol messages depends on + // the Key System, so we provide key-system-specific functions here to perform the mapping. + // + // For the Microsoft server, the mapping for PlayReady is the same as for the DRM Today server + // + const keySystems = { + 'com.widevine.alpha': { + responseType: 'json', + getLicenseMessage: function(response) { + return base64DecodeToUnit8Array( response.license ); + }, + getErrorResponse: function(response) { + return response; + }, + getLicenseRequestFromMessage: function(message) { + return new Uint8Array(message); + }, + getRequestHeadersFromMessage: function(/*message*/) { + return null; + } + }, + 'com.microsoft.playready': { + responseType: 'arraybuffer', + getLicenseMessage: function(response) { + return response; + }, + getErrorResponse: function(response) { + return String.fromCharCode.apply(null, new Uint16Array(response)); + }, + getLicenseRequestFromMessage: function(message) { + var msg, + xmlDoc; + var licenseRequest = null; + var parser = new DOMParser(); + var dataview = new Uint16Array(message); + + msg = String.fromCharCode.apply(null, dataview); + xmlDoc = parser.parseFromString(msg, 'application/xml'); + + if (xmlDoc.getElementsByTagName('Challenge')[0]) { + var Challenge = xmlDoc.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue; + if (Challenge) { + licenseRequest = atob(Challenge); + } + } + return licenseRequest; + }, + getRequestHeadersFromMessage: function(message) { + var msg, + xmlDoc; + var headers = {}; + var parser = new DOMParser(); + var dataview = new Uint16Array(message); + + msg = String.fromCharCode.apply(null, dataview); + xmlDoc = parser.parseFromString(msg, 'application/xml'); + + var headerNameList = xmlDoc.getElementsByTagName('name'); + var headerValueList = xmlDoc.getElementsByTagName('value'); + for (var i = 0; i < headerNameList.length; i++) { + headers[headerNameList[i].childNodes[0].nodeValue] = headerValueList[i].childNodes[0].nodeValue; + } + // some versions of the PlayReady CDM return 'Content' instead of 'Content-Type', + // but the license server expects 'Content-Type', so we fix it up here. + if (headers.hasOwnProperty('Content')) { + headers['Content-Type'] = headers.Content; + delete headers.Content; + } + return headers; + } + } + }; + + // License request parameters are communicated to the DRM Today and Microsoft servers in different ways, + // using a custom HTTP headers (DRM Today) and URL parameters (Microsoft). + const serverTypes = { + 'drmtoday': { + constructLicenseRequestUrl : function( serverURL, sessionType, messageType, content ) { + return serverURL; + }, + getCustomHeaders : function( drmconfig, sessionType ) { + var customToken = { outputProtection: { digital : false, analogue: false, enforce: false }, + profile: { purchase: { } }, + storeLicense: ( sessionType === 'persistent-license' ) }; + var customHeader = { userId: drmconfig.userId, + merchant: drmconfig.merchant, + sessionId: btoa( JSON.stringify( customToken )) }; + return { "dt-custom-data" : btoa( JSON.stringify( customHeader ) ) }; + } + }, + 'microsoft': { + constructLicenseRequestUrl : function( serverURL, sessionType, messageType, content ) { + if ( messageType !== 'license-request' ) { + return serverURL; + } + + var url = serverURL + "?"; + if ( sessionType === 'temporary' || sessionType === 'persistent-usage-record' ) { + url += "UseSimpleNonPersistentLicense=1&"; + } + if ( sessionType === 'persistent-usage-record' ) { + url += "SecureStop=1&"; + } + url += "PlayEnablers=B621D91F-EDCC-4035-8D4B-DC71760D43E9&"; // disable output protection + url += "ContentKey=" + btoa(String.fromCharCode.apply(null, content.keys[0].key)); + return url; + }, + getCustomHeaders : function() { return {}; } + } + }; + + return new Promise(function(resolve, reject) { + var keysystemfns = keySystems[this._keysystem], + serverfns, + url = undefined, + requestheaders = {}, + credentials = undefined; + + if ( !this._drmconfig || !keysystemfns || !this._drmconfig.servertype || !serverTypes[this._drmconfig.servertype] ) { + reject('Unsupported Key System'); + return; + } + + serverfns = serverTypes[this._drmconfig.servertype]; + + if ( !this._drmconfig.serverURL ) { + reject('Undefined serverURL'); + return; + } + + url = serverfns.constructLicenseRequestUrl( this._drmconfig.serverURL, this._sessionType, messageType, this._content ); + + // Ensure valid license server URL + if (!url) { + reject('No license server URL specified!'); + return; + } + + // Set optional XMLHttpRequest headers from protection data and message + var updateHeaders = function(headers) { + var key; + if (headers) { + for (key in headers) { + if ('authorization' === key.toLowerCase()) { + credentials = 'include'; + } + requestheaders[key] = headers[key]; + } + } + }; + + updateHeaders(serverfns.getCustomHeaders( this._drmconfig, this._sessionType ) ); + updateHeaders(keysystemfns.getRequestHeadersFromMessage(message)); + + // Set withCredentials property from server + if ( this._drmconfig.withCredentials ) { + credentials = 'include'; + } + + fetch(url, { + method: 'POST', + headers: requestheaders, + credentials: credentials, + body: keysystemfns.getLicenseRequestFromMessage(message) + }).then(function(fetchresponse) { + if(fetchresponse.status !== 200) { + reject( this._keysystem + ' update, XHR status is "' + fetchresponse.statusText + + '" (' + fetchresponse.status + '), expected to be 200. readyState is ' + fetchresponse.readyState + '.' + + ' Response is ' + ((fetchresponse) ? keysystemfns.getErrorResponse(fetchresponse) : 'NONE' )); + return; + } + + if(keysystemfns.responseType === 'json') { + return fetchresponse.json(); + } else if(keysystemfns.responseType === 'arraybuffer') { + return fetchresponse.arrayBuffer(); + } + }.bind( this )).then(function(response){ + resolve(keysystemfns.getLicenseMessage(response)); + }).catch(reject); + }.bind( this )); +}; diff --git a/testing/web-platform/tests/encrypted-media/util/drmtoday-messagehandler.js b/testing/web-platform/tests/encrypted-media/util/drmtoday-messagehandler.js deleted file mode 100644 index c8c6d820fca3..000000000000 --- a/testing/web-platform/tests/encrypted-media/util/drmtoday-messagehandler.js +++ /dev/null @@ -1,118 +0,0 @@ -// Expect utf8decoder and utf8decoder to be TextEncoder('utf-8') and TextDecoder('utf-8') respectively -function messagehandler(keysystem, messageType, message) { - - var contentmetadata = this; - - const keySystems = { - 'com.widevine.alpha': { - responseType: 'json', - getLicenseMessage: function(response) { - return base64DecodeToUnit8Array( response.license ); - }, - getErrorResponse: function(response) { - return response; - }, - getLicenseRequestFromMessage: function(message) { - return new Uint8Array(message); - }, - getRequestHeadersFromMessage: function(/*message*/) { - return null; - } - }, - 'com.microsoft.playready': { - responseType: 'arraybuffer', - getLicenseMessage: function(response) { - return response; - }, - getErrorResponse: function(response) { - return String.fromCharCode.apply(null, new Uint8Array(response)); - }, - getLicenseRequestFromMessage: function(message) { - // TODO: Add playready specific stuff. - return message; - }, - getRequestHeadersFromMessage: function(message) { - // TODO: Add playready specific stuff. - return null; - } - } - }; - - return new Promise(function(resolve, reject) { - - readDrmConfig().then(function(response) { - - var protData = response[keysystem], - url = undefined, - reqheaders = {}, - credentials = undefined; - - if (protData) { - if (protData.serverURL) { - url = protData.serverURL; - } else { - reject('Undefined serverURL'); - return; - } - } else { - reject('Unsupported keySystem'); - return; - } - - // Ensure valid license server URL - if (!url) { - reject('DRM: No license server URL specified!'); - return; - } - - // Set optional XMLHttpRequest headers from protection data and message - var updateHeaders = function(headers) { - var key; - if (headers) { - for (key in headers) { - if ('authorization' === key.toLowerCase()) { - credentials = 'include'; - } - reqheaders[key] = headers[key]; - } - } - }; - - if (protData) { - updateHeaders(protData.httpRequestHeaders); - } - - updateHeaders(keySystems[keysystem].getRequestHeadersFromMessage(message)); - - // Set withCredentials property from protData - if (protData && protData.withCredentials) { - credentials = 'include'; - } - - fetch(url, { - method: 'POST', - headers: reqheaders, - credentials: credentials, - body: keySystems[keysystem].getLicenseRequestFromMessage(message) - }).then(function(response) { - if(response.status !== 200) { - reject('DRM: ' + keysystem + ' update, XHR status is "' + response.statusText + '" (' + response.status + '), expected to be 200. readyState is ' + response.readyState + '. Response is ' + ((response) ? keySystems[keysystem].getErrorResponse(response) : 'NONE')); - return; - } else { - return response.json(); - } - }).then(function(response){ - resolve(keySystems[keysystem].getLicenseMessage(response)); - }).catch(function(error) { - reject(error); - return; - }); - }); - }); -} - -function readDrmConfig() { - return fetch("/encrypted-media/content/drmconfig.json").then(function(response) { - return response.json(); - }); -} \ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/util/utils.js b/testing/web-platform/tests/encrypted-media/util/utils.js index cf8ec7d95d84..940d07c8cb96 100644 --- a/testing/web-platform/tests/encrypted-media/util/utils.js +++ b/testing/web-platform/tests/encrypted-media/util/utils.js @@ -74,10 +74,10 @@ function createKeyIDs() { function getSupportedKeySystem() { var userAgent = navigator.userAgent.toLowerCase(); var keysystem = undefined; - if( userAgent.indexOf('chrome') > -1 || userAgent.indexOf('firefox') > -1 ) { - keysystem = 'com.widevine.alpha'; - } else if ((userAgent.indexOf('edge') > -1 ) { + if (userAgent.indexOf('edge') > -1 ) { keysystem = 'com.microsoft.playready'; + } else if ( userAgent.indexOf('chrome') > -1 || userAgent.indexOf('firefox') > -1 ) { + keysystem = 'com.widevine.alpha'; } return keysystem; } diff --git a/testing/web-platform/tests/fetch/api/basic/referrer-worker.html b/testing/web-platform/tests/fetch/api/basic/referrer-worker.html new file mode 100644 index 000000000000..4b397de437da --- /dev/null +++ b/testing/web-platform/tests/fetch/api/basic/referrer-worker.html @@ -0,0 +1,17 @@ + + + + + Fetch in worker: same-origin mode + + + + + + + + + + diff --git a/testing/web-platform/tests/fetch/api/basic/referrer.html b/testing/web-platform/tests/fetch/api/basic/referrer.html new file mode 100644 index 000000000000..8c37bf73fe84 --- /dev/null +++ b/testing/web-platform/tests/fetch/api/basic/referrer.html @@ -0,0 +1,17 @@ + + + + + Fetch: same-origin mode + + + + + + + + + + + + diff --git a/testing/web-platform/tests/fetch/api/basic/referrer.js b/testing/web-platform/tests/fetch/api/basic/referrer.js new file mode 100644 index 000000000000..99872c3eee5d --- /dev/null +++ b/testing/web-platform/tests/fetch/api/basic/referrer.js @@ -0,0 +1,23 @@ +if (this.document === undefined) { + importScripts("/resources/testharness.js"); + importScripts("../resources/utils.js"); + importScripts("../resources/get-host-info.sub.js") +} + +function runTest(url, init, expectedReferrer, title) { + promise_test(function(test) { + return fetch(url , init).then(function(resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.headers.get("x-request-referer"), expectedReferrer, "Request's referrer is correct"); + }); + }, title); +} + +var fetchedUrl = RESOURCES_DIR + "inspect-headers.py?headers=referer"; +var corsFetchedUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?headers=referer&cors"; + +runTest(fetchedUrl, { referrerPolicy: "origin-when-cross-origin" }, location.toString(), "origin-when-cross-origin policy on a same-origin URL"); +runTest(corsFetchedUrl, { referrerPolicy: "origin-when-cross-origin" }, get_host_info().HTTP_ORIGIN + "/", "origin-when-cross-origin policy on a cross-origin URL"); + +done(); + diff --git a/testing/web-platform/tests/fetch/api/basic/scheme-about.js b/testing/web-platform/tests/fetch/api/basic/scheme-about.js index 5f3e7cfd5c59..ddf711bf0a19 100644 --- a/testing/web-platform/tests/fetch/api/basic/scheme-about.js +++ b/testing/web-platform/tests/fetch/api/basic/scheme-about.js @@ -3,27 +3,25 @@ if (this.document === undefined) { importScripts("../resources/utils.js"); } -var unicorn = ''; - -function checkFetchResponse(url, data, mime, desc) { +function checkFetchResponse(url, method, desc) { if (!desc) { - var cut = (url.length >= 45) ? "[...]" : ""; - desc = "Fetching " + url.substring(0, 45) + cut + " is OK" + var cut = (url.length >= 40) ? "[...]" : ""; + cut += " (" + method + ")" + desc = "Fetching " + url.substring(0, 40) + cut + " is OK" } promise_test(function(test) { - return fetch(url).then(function(resp) { + return fetch(url, { method: method }).then(function(resp) { assert_equals(resp.status, 200, "HTTP status is 200"); assert_equals(resp.type, "basic", "response type is basic"); - assert_equals(resp.headers.get("Content-Type"), mime, "Content-Type is " + resp.headers.get("Content-Type")); + assert_equals(resp.headers.get("Content-Type"), "text/html;charset=utf-8", "Content-Type is " + resp.headers.get("Content-Type")); return resp.text(); - }).then(function(bodyAsText) { - assert_equals(bodyAsText, data, "Response's body is " + data); }) }, desc); } -checkFetchResponse("about:blank", "", "text/html;charset=utf-8"); -checkFetchResponse("about:unicorn", unicorn, "image/svg+xml"); +checkFetchResponse("about:blank", "GET"); +checkFetchResponse("about:blank", "PUT"); +checkFetchResponse("about:blank", "POST"); function checkKoUrl(url, desc) { if (!desc) @@ -36,5 +34,6 @@ function checkKoUrl(url, desc) { checkKoUrl("about:invalid.com"); checkKoUrl("about:config"); +checkKoUrl("about:unicorn"); done(); diff --git a/testing/web-platform/tests/fetch/api/cors/cors-cookies.js b/testing/web-platform/tests/fetch/api/cors/cors-cookies.js index b31622c2dca8..b4668942f54c 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-cookies.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-cookies.js @@ -39,8 +39,9 @@ function corsCookies(desc, baseURL1, baseURL2, credentialsMode, cookies) { //clean cookies return fetch(urlSetCookie + urlCleanParameters, {"credentials": "include"}); }).catch(function(e) { - fetch(urlSetCookie + urlCleanParameters, {"credentials": "include"}); - throw e; + return fetch(urlSetCookie + urlCleanParameters, {"credentials": "include"}).then(function(resp) { + throw e; + }) }); }, desc); } @@ -48,7 +49,7 @@ function corsCookies(desc, baseURL1, baseURL2, credentialsMode, cookies) { var local = get_host_info().HTTP_ORIGIN; var remote = get_host_info().HTTP_REMOTE_ORIGIN; // FIXME: otherRemote might not be accessible on some test environments. -var otherRemote = "www." + local; +var otherRemote = local.replace("http://", "http://www."); corsCookies("Omit mode: no cookie sent", local, local, "omit", ["g=7"]); corsCookies("Include mode: 1 cookie", remote, remote, "include", ["a=1"]); diff --git a/testing/web-platform/tests/fetch/api/cors/cors-no-preflight.js b/testing/web-platform/tests/fetch/api/cors/cors-no-preflight.js index 21649ef93968..4a93d4bf0546 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-no-preflight.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-no-preflight.js @@ -15,7 +15,7 @@ function corsNoPreflight(desc, baseURL, method, headerName, headerValue) { requestInit["headers"][headerName] = headerValue; promise_test(function(test) { - fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { assert_equals(resp.status, 200, "Clean stash response's status is 200"); return fetch(url + urlParameters, requestInit).then(function(resp) { assert_equals(resp.status, 200, "Response's status is 200"); @@ -28,8 +28,8 @@ function corsNoPreflight(desc, baseURL, method, headerName, headerValue) { var host_info = get_host_info(); corsNoPreflight("Cross domain basic usage [GET]", host_info.HTTP_REMOTE_ORIGIN, "GET"); -corsNoPreflight("Same domain different port [GET]", host_info.HTTP_ORIGIN_WITH_DIFFERENT_ORIGIN, "GET"); -corsNoPreflight("Cross domain different port [GET]", host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_ORIGIN, "GET"); +corsNoPreflight("Same domain different port [GET]", host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, "GET"); +corsNoPreflight("Cross domain different port [GET]", host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, "GET"); corsNoPreflight("Cross domain different protocol [GET]", host_info.HTTPS_REMOTE_ORIGIN, "GET"); corsNoPreflight("Same domain different protocol different port [GET]", host_info.HTTPS_ORIGIN, "GET"); corsNoPreflight("Cross domain [POST]", host_info.HTTP_REMOTE_ORIGIN, "POST"); @@ -41,5 +41,6 @@ corsNoPreflight("Cross domain [GET] [Content-Type: application/x-www-form-urlenc corsNoPreflight("Cross domain [GET] [Content-Type: multipart/form-data]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "multipart/form-data"); corsNoPreflight("Cross domain [GET] [Content-Type: text/plain]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "text/plain"); corsNoPreflight("Cross domain [GET] [Content-Type: text/plain;charset=utf-8]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "text/plain;charset=utf-8"); +corsNoPreflight("Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "Text/Plain;charset=utf-8"); done(); diff --git a/testing/web-platform/tests/fetch/api/cors/cors-preflight-referrer.js b/testing/web-platform/tests/fetch/api/cors/cors-preflight-referrer.js index 40e4a7f79012..3b6ef0c8b27e 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-preflight-referrer.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-preflight-referrer.js @@ -1,6 +1,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("/common/utils.js"); + importScripts("../resources/get-host-info.sub.js"); importScripts("../resources/utils.js"); } @@ -21,17 +22,18 @@ function corsPreflightReferrer(desc, corsUrl, referrerPolicy, expectedReferrer) assert_equals(resp.status, 200, "Response's status is 200"); assert_equals(resp.headers.get("x-did-preflight"), "1", "Preflight request has been made"); assert_equals(resp.headers.get("x-preflight-referrer"), expectedReferrer, "Preflight's referrer is correct"); - assert_equals(resp.headers.get("x-referrer"), expectedReferrer, "Request's refferer is correct"); + assert_equals(resp.headers.get("x-referrer"), expectedReferrer, "Request's referrer is correct"); }); }); }, desc); } -var corsUrl = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; -var origin = "http://{{host}}:{{ports[http][0]}}"; +var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; +var origin = get_host_info().HTTP_ORIGIN + "/"; corsPreflightReferrer("Referrer policy: no-referrer", corsUrl, "no-referrer", ""); -corsPreflightReferrer("Referrer policy: \"\"", corsUrl, "", ""); +corsPreflightReferrer("Referrer policy: \"\"", corsUrl, "", location.toString()) + corsPreflightReferrer("Referrer policy: origin", corsUrl, "origin", origin); corsPreflightReferrer("Referrer policy: origin-when-cross-origin", corsUrl, "origin-when-cross-origin", origin); corsPreflightReferrer("Referrer policy: unsafe-url", corsUrl, "unsafe-url", location.toString()); diff --git a/testing/web-platform/tests/fetch/api/cors/cors-preflight-worker.html b/testing/web-platform/tests/fetch/api/cors/cors-preflight-worker.html index bedef5d77511..c80d1e989bfa 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-preflight-worker.html +++ b/testing/web-platform/tests/fetch/api/cors/cors-preflight-worker.html @@ -14,7 +14,7 @@ - \ No newline at end of file + diff --git a/testing/web-platform/tests/fetch/api/cors/cors-preflight.html b/testing/web-platform/tests/fetch/api/cors/cors-preflight.html index c4a581a55c5c..371f2a26673e 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-preflight.html +++ b/testing/web-platform/tests/fetch/api/cors/cors-preflight.html @@ -14,7 +14,8 @@ + - + - \ No newline at end of file + diff --git a/testing/web-platform/tests/fetch/api/cors/cors-preflight.js b/testing/web-platform/tests/fetch/api/cors/cors-preflight.js index f6f75bb2fbcb..d82a43c034d5 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-preflight.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-preflight.js @@ -1,7 +1,16 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); - importScripts("../resources/utils.js"); importScripts("/common/utils.js"); + importScripts("../resources/utils.js"); + importScripts("../resources/get-host-info.sub.js"); +} + +function headerNames(headers) +{ + let names = []; + for (let header of headers) + names.push(header[0].toLowerCase()); + return names } /* @@ -9,15 +18,19 @@ if (this.document === undefined) { Control if server allows method and headers and check accordingly Check control access headers added by UA (for method and headers) */ -function corsPreflight(desc, corsUrl, method, allowed, headers) { +function corsPreflight(desc, corsUrl, method, allowed, headers, safeHeaders) { return promise_test(function(test) { var uuid_token = token(); return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(response) { var url = corsUrl; var urlParameters = "?token=" + uuid_token + "&max_age=0"; var requestInit = {"mode": "cors", "method": method}; + var requestHeaders = []; if (headers) - requestInit["headers"] = headers; + requestHeaders.push.apply(requestHeaders, headers); + if (safeHeaders) + requestHeaders.push.apply(requestHeaders, safeHeaders); + requestInit["headers"] = requestHeaders; if (allowed) { urlParameters += "&allow_methods=" + method; @@ -26,20 +39,22 @@ function corsPreflight(desc, corsUrl, method, allowed, headers) { //Server will send back headers from Access-Control-Request-Headers in x-control-request-headers urlParameters += "&control_request_headers" //Make the server allow the headers - urlParameters += "&allow_headers=" - urlParameters += headers.map(function (x) { return x[0]; }).join("%2C%20"); + urlParameters += "&allow_headers=" + headerNames(headers).join("%20%2C"); } return fetch(url + urlParameters, requestInit).then(function(resp) { assert_equals(resp.status, 200, "Response's status is 200"); assert_equals(resp.headers.get("x-did-preflight"), "1", "Preflight request has been made"); if (headers) { - var actualHeaders = resp.headers.get("x-control-request-headers").split(","); + var actualHeaders = resp.headers.get("x-control-request-headers").toLowerCase().split(","); for (var i in actualHeaders) actualHeaders[i] = actualHeaders[i].trim(); for (var header of headers) - assert_in_array(header[0], actualHeaders, "Preflight asked permission for header: " + header); + assert_in_array(header[0].toLowerCase(), actualHeaders, "Preflight asked permission for header: " + header); + + let accessControlAllowHeaders = headerNames(headers).sort().join(","); + assert_equals(resp.headers.get("x-control-request-headers").replace(new RegExp(" ", "g"), ""), accessControlAllowHeaders, "Access-Control-Allow-Headers value"); + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token); } - return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token); }); } else { return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit)).then(function(){ @@ -50,7 +65,7 @@ function corsPreflight(desc, corsUrl, method, allowed, headers) { }, desc); } -var corsUrl = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; +var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; corsPreflight("CORS [DELETE], server allows", corsUrl, "DELETE", true); corsPreflight("CORS [DELETE], server refuses", corsUrl, "DELETE", false); @@ -64,12 +79,25 @@ corsPreflight("CORS [NEW], server refuses", corsUrl, "NEW", false); corsPreflight("CORS [GET] [x-test-header: allowed], server allows", corsUrl, "GET", true, [["x-test-header1", "allowed"]]); corsPreflight("CORS [GET] [x-test-header: refused], server refuses", corsUrl, "GET", false, [["x-test-header1", "refused"]]); -var headers = [["x-test-header1", "allowedOrRefused"], - ["x-test-header2", "allowedOrRefused"], - ["x-test-header3", "allowedOrRefused"]]; -corsPreflight("CORS [GET] [several headers], server allows", corsUrl, "GET", true, headers); -corsPreflight("CORS [GET] [several headers], server refuses", corsUrl, "GET", false, headers); -corsPreflight("CORS [PUT] [several headers], server allows", corsUrl, "PUT", true, headers); -corsPreflight("CORS [PUT] [several headers], server refuses", corsUrl, "PUT", false, headers); +var headers = [ + ["x-test-header1", "allowedOrRefused"], + ["x-test-header2", "allowedOrRefused"], + ["X-test-header3", "allowedOrRefused"], + ["x-test-header-b", "allowedOrRefused"], + ["x-test-header-D", "allowedOrRefused"], + ["x-test-header-C", "allowedOrRefused"], + ["x-test-header-a", "allowedOrRefused"], + ["Content-Type", "allowedOrRefused"], +]; +var safeHeaders= [ + ["Accept", "*"], + ["Accept-Language", "bzh"], + ["Content-Language", "eu"], +]; + +corsPreflight("CORS [GET] [several headers], server allows", corsUrl, "GET", true, headers, safeHeaders); +corsPreflight("CORS [GET] [several headers], server refuses", corsUrl, "GET", false, headers, safeHeaders); +corsPreflight("CORS [PUT] [several headers], server allows", corsUrl, "PUT", true, headers, safeHeaders); +corsPreflight("CORS [PUT] [several headers], server refuses", corsUrl, "PUT", false, headers, safeHeaders); done(); diff --git a/testing/web-platform/tests/fetch/api/cors/cors-redirect.js b/testing/web-platform/tests/fetch/api/cors/cors-redirect.js index c46cb510b295..2c2bcb947c32 100644 --- a/testing/web-platform/tests/fetch/api/cors/cors-redirect.js +++ b/testing/web-platform/tests/fetch/api/cors/cors-redirect.js @@ -14,7 +14,7 @@ function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expec var requestInit = {"mode": "cors", "redirect": "follow"}; - promise_test(function(test) { + return promise_test(function(test) { fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { return fetch(url + urlParameters, requestInit).then(function(resp) { assert_equals(resp.status, 200, "Response's status is 200"); diff --git a/testing/web-platform/tests/fetch/api/headers/headers-basic.html b/testing/web-platform/tests/fetch/api/headers/headers-basic.html index 021f279714a1..90ba2b2a9083 100644 --- a/testing/web-platform/tests/fetch/api/headers/headers-basic.html +++ b/testing/web-platform/tests/fetch/api/headers/headers-basic.html @@ -66,7 +66,7 @@ assert_equals(headers2.get(name), String(headerDict[name]), "name: " + name + " has value: " + headerDict[name]); } - }, "Create headers whith existing headers"); + }, "Create headers with existing headers"); test(function() { var headers = new Headers(); diff --git a/testing/web-platform/tests/fetch/api/redirect/redirect-origin-worker.html b/testing/web-platform/tests/fetch/api/redirect/redirect-origin-worker.html new file mode 100644 index 000000000000..fdb542237d9d --- /dev/null +++ b/testing/web-platform/tests/fetch/api/redirect/redirect-origin-worker.html @@ -0,0 +1,17 @@ + + + + + Fetch in worker: redirect mode handling + + + + + + + + + + diff --git a/testing/web-platform/tests/fetch/api/redirect/redirect-origin.html b/testing/web-platform/tests/fetch/api/redirect/redirect-origin.html new file mode 100644 index 000000000000..8c88c71e770a --- /dev/null +++ b/testing/web-platform/tests/fetch/api/redirect/redirect-origin.html @@ -0,0 +1,18 @@ + + + + + Fetch: redirect mode handling + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/fetch/api/redirect/redirect-origin.js b/testing/web-platform/tests/fetch/api/redirect/redirect-origin.js new file mode 100644 index 000000000000..a3d335c6cbc9 --- /dev/null +++ b/testing/web-platform/tests/fetch/api/redirect/redirect-origin.js @@ -0,0 +1,40 @@ +if (this.document === undefined) { + importScripts("/common/utils.js"); + importScripts("/resources/testharness.js"); + importScripts("../resources/utils.js"); + importScripts("../resources/get-host-info.sub.js"); +} + +function testOriginAfterRedirection(desc, redirectUrl, redirectLocation, redirectStatus, expectedOrigin) { + var uuid_token = token(); + var url = redirectUrl; + var urlParameters = "?token=" + uuid_token + "&max_age=0"; + urlParameters += "&redirect_status=" + redirectStatus; + urlParameters += "&location=" + encodeURIComponent(redirectLocation); + + var requestInit = {"mode": "cors", "redirect": "follow"}; + + promise_test(function(test) { + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + assert_equals(resp.status, 200, "Clean stash response's status is 200"); + return fetch(url + urlParameters, requestInit).then(function(response) { + assert_equals(response.status, 200, "Inspect header response's status is 200"); + assert_equals(response.headers.get("x-request-origin"), expectedOrigin, "Check origin header"); + }); + }); + }, desc); +} + +var redirectUrl = RESOURCES_DIR + "redirect.py"; +var corsRedirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "redirect.py"; +var locationUrl = get_host_info().HTTP_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?headers=origin"; +var corsLocationUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=origin"; + +for (var code of [301, 302, 303, 307, 308]) { + testOriginAfterRedirection("Same origin to same origin redirection " + code, redirectUrl, locationUrl, code, null); + testOriginAfterRedirection("Same origin to other origin redirection " + code, redirectUrl, corsLocationUrl, code, get_host_info().HTTP_ORIGIN); + testOriginAfterRedirection("Other origin to other origin redirection " + code, corsRedirectUrl, corsLocationUrl, code, get_host_info().HTTP_ORIGIN); + testOriginAfterRedirection("Other origin to same origin redirection " + code, corsRedirectUrl, locationUrl + "&cors", code, "null"); +} + +done(); diff --git a/testing/web-platform/tests/fetch/api/redirect/redirect-schemes.html b/testing/web-platform/tests/fetch/api/redirect/redirect-schemes.html index 2abb1203c1f9..cffec19d56a3 100644 --- a/testing/web-platform/tests/fetch/api/redirect/redirect-schemes.html +++ b/testing/web-platform/tests/fetch/api/redirect/redirect-schemes.html @@ -6,18 +6,18 @@
    diff --git a/testing/web-platform/tests/fetch/api/request/request-headers.html b/testing/web-platform/tests/fetch/api/request/request-headers.html index 5bdd601cc466..9c4f3674b55a 100644 --- a/testing/web-platform/tests/fetch/api/request/request-headers.html +++ b/testing/web-platform/tests/fetch/api/request/request-headers.html @@ -145,6 +145,22 @@ assert_equals(request.headers.get("Content-Type"), "potato"); }, "Request should get its content-type from init headers if one is provided"); + test(function() { + var array = [["hello", "worldAHH"]]; + var object = {"hello": 'worldOOH'}; + var headers = new Headers(array); + + assert_equals(headers.get("hello"), "worldAHH"); + + var request1 = new Request("", {"headers": headers}); + var request2 = new Request("", {"headers": array}); + var request3 = new Request("", {"headers": object}); + + assert_equals(request1.headers.get("hello"), "worldAHH"); + assert_equals(request2.headers.get("hello"), "worldAHH"); + assert_equals(request3.headers.get("hello"), "worldOOH"); + }, "Testing request header creations with various objects"); + diff --git a/testing/web-platform/tests/fetch/api/resources/redirect.py b/testing/web-platform/tests/fetch/api/resources/redirect.py index 3767b223aacc..1dac4f0d2786 100644 --- a/testing/web-platform/tests/fetch/api/resources/redirect.py +++ b/testing/web-platform/tests/fetch/api/resources/redirect.py @@ -1,3 +1,6 @@ +from urllib import urlencode +from urlparse import urlparse + def main(request, response): stashed_data = {'count': 0, 'preflight': "0"} status = 302 @@ -28,13 +31,16 @@ def main(request, response): stashed_data['count'] += 1 - #keep url parameters in location - url_parameters = "?" + "&".join(map(lambda x: x[0][0] + "=" + x[1][0], request.GET.items())) - #make sure location changes during redirection loop - url_parameters += "&count=" + str(stashed_data['count']) - if "location" in request.GET: - headers.append(("Location", request.GET['location'] + url_parameters)) + url = request.GET['location'] + scheme = urlparse(url).scheme + if scheme == "" or scheme == "http" or scheme == "https": + url += "&" if '?' in url else "?" + #keep url parameters in location + url += urlencode(request.GET.items()) + #make sure location changes during redirection loop + url += "&count=" + str(stashed_data['count']) + headers.append(("Location", url)) if token: request.server.stash.put(request.GET.first("token"), stashed_data) diff --git a/testing/web-platform/tests/fetch/api/resources/utils.js b/testing/web-platform/tests/fetch/api/resources/utils.js index 2eb8353fe1f2..86542c7bc8fd 100644 --- a/testing/web-platform/tests/fetch/api/resources/utils.js +++ b/testing/web-platform/tests/fetch/api/resources/utils.js @@ -59,6 +59,7 @@ function validateBufferFromString(buffer, expectedValue, message) function validateStreamFromString(reader, expectedValue, retrievedArrayBuffer) { return reader.read().then(function(data) { if (!data.done) { + assert_true(data.value instanceof Uint8Array, "Fetch ReadableStream chunks should be Uint8Array"); var newBuffer; if (retrievedArrayBuffer) { newBuffer = new ArrayBuffer(data.value.length + retrievedArrayBuffer.length); diff --git a/testing/web-platform/tests/fetch/api/response/response-consume.html b/testing/web-platform/tests/fetch/api/response/response-consume.html index 02814ff5be92..7ead2a5e8d3b 100644 --- a/testing/web-platform/tests/fetch/api/response/response-consume.html +++ b/testing/web-platform/tests/fetch/api/response/response-consume.html @@ -92,6 +92,25 @@ checkBlobResponseBody(blob, textData, "json", checkBodyJSON); checkBlobResponseBody(blob, textData, "arrayBuffer", checkBodyArrayBuffer); + function checkReadableStreamResponseBody(streamData, bodyType, checkFunction) { + promise_test(function(test) { + var stream = new ReadableStream({ + start: function(controller) { + controller.enqueue(stringToArray(streamData)); + controller.close(); + } + }); + var response = new Response(stream); + assert_false(response.bodyUsed, "bodyUsed is false at init"); + return checkFunction(response, streamData); + }, "Consume stream response's body as " + bodyType); + } + + checkReadableStreamResponseBody(textData, "blob", checkBodyBlob); + checkReadableStreamResponseBody(textData, "text", checkBodyText); + checkReadableStreamResponseBody(textData, "json", checkBodyJSON); + checkReadableStreamResponseBody(textData, "arrayBuffer", checkBodyArrayBuffer); + diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html b/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html index 0159a36b22da..a277eccea818 100644 --- a/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html @@ -17,7 +17,7 @@ log = function(t) {l.textContent += ("\n" + t)} var steps = [ function() {f.src = "browsing_context_name-1.html"}, function() { - var navigated = true; + navigated = true; assert_equals(f.contentWindow.name, "test", "Initial load"); setTimeout(next, 0); }, diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html new file mode 100644 index 000000000000..bd2d9dfdb1e5 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html @@ -0,0 +1,17 @@ + + +Set location from a parent + + +
    + + diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html new file mode 100644 index 000000000000..4a15b3f0837a --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html @@ -0,0 +1,17 @@ + + +Set src from a function called from a parent + + +
    + + diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html new file mode 100644 index 000000000000..b75062b8d93b --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html @@ -0,0 +1,18 @@ + + +Set location from a function called from a parent + + +
    + + diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html new file mode 100644 index 000000000000..dce6ab2f6934 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html @@ -0,0 +1,17 @@ + + +Set the src attribute to about:blank and check referrer + + +
    + + diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html new file mode 100644 index 000000000000..0638657093c6 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html @@ -0,0 +1,3 @@ + + +

    Hello. \ No newline at end of file diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html new file mode 100644 index 000000000000..ad733afac3ec --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html @@ -0,0 +1,8 @@ + + + +

    Hello. Go. \ No newline at end of file diff --git a/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html new file mode 100644 index 000000000000..9d45be8c8dfe --- /dev/null +++ b/testing/web-platform/tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html @@ -0,0 +1,8 @@ + + + +

    Hello. Go. \ No newline at end of file diff --git a/testing/web-platform/tests/html/browsers/history/the-history-interface/008.js b/testing/web-platform/tests/html/browsers/history/the-history-interface/008.js new file mode 100644 index 000000000000..96a1fe5d4a6f --- /dev/null +++ b/testing/web-platform/tests/html/browsers/history/the-history-interface/008.js @@ -0,0 +1,11 @@ +var beforehref = location.href; + +test(function () { + history.pushState('','','/testing_ignore_me_404'); + assert_equals(location.href,beforehref.replace(/^(\w*:\/\/[^\/]*\/)[\w\W]*$/,'$1testing_ignore_me_404')); +}, 'history.pushState URL resolving should be done relative to the document, not the script'); + +test(function () { + history.replaceState('','','/testing_ignore_me_404_2'); + assert_equals(location.href,beforehref.replace(/^(\w*:\/\/[^\/]*\/)[\w\W]*$/,'$1testing_ignore_me_404_2')); +}, 'history.replaceState URL resolving should be done relative to the document, not the script'); diff --git a/testing/web-platform/tests/html/browsers/history/the-location-interface/security_location_0.sub.htm b/testing/web-platform/tests/html/browsers/history/the-location-interface/security_location_0.sub.htm index b6ebbc28a45e..f509c23b18c5 100644 --- a/testing/web-platform/tests/html/browsers/history/the-location-interface/security_location_0.sub.htm +++ b/testing/web-platform/tests/html/browsers/history/the-location-interface/security_location_0.sub.htm @@ -11,13 +11,17 @@

    Access location object from different origins doesn't raise SECURITY_ERR exception

    + - + + diff --git a/testing/web-platform/tests/html/browsers/the-window-object/security-window/window-security.sub.html b/testing/web-platform/tests/html/browsers/the-window-object/security-window/window-security.sub.html index 213c7bdda84a..15f68ee22e94 100644 --- a/testing/web-platform/tests/html/browsers/the-window-object/security-window/window-security.sub.html +++ b/testing/web-platform/tests/html/browsers/the-window-object/security-window/window-security.sub.html @@ -12,10 +12,9 @@ +
    - + + diff --git a/testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html b/testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html index a9fe824ef3cd..f1d5581f6895 100644 --- a/testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html +++ b/testing/web-platform/tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html @@ -4,6 +4,7 @@ + + diff --git a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html index c523bfb0ac34..b0e16274aaa0 100644 --- a/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html +++ b/testing/web-platform/tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html @@ -5,6 +5,7 @@ +
    - + +
    @@ -13,16 +14,20 @@ var testElement; var baseElement; + var otherOrigin = get_host_info().HTTP_REMOTE_ORIGIN; + setup(function() { testElement = document.getElementById("test"); baseElement = document.getElementById("base"); + + baseElement.setAttribute("href", otherOrigin); }); test(function() { - assert_equals(baseElement.href, "http://{{domains[www]}}:{{ports[http][0]}}/", "The href attribute of the base element is incorrect."); + assert_equals(baseElement.href, otherOrigin + "/", "The href attribute of the base element is incorrect."); }, "The href attribute of the base element is specified"); test(function() { - assert_equals(testElement.src, "http://{{domains[www]}}:{{ports[http][0]}}/test.ico", "The src attribute of the img element is incorrect."); + assert_equals(testElement.src, otherOrigin + "/test.ico", "The src attribute of the img element is incorrect."); }, "The src attribute of the img element must relative to the href attribute of the base element"); diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-load-event.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-load-event.html index afe86a4210ce..6f6172a2d62c 100644 --- a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-load-event.html +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-load-event.html @@ -10,12 +10,9 @@ var t = async_test("Check if the stylesheet's load event blocks the document loa document.getElementById('style_test').onload = t.step_func(function() { saw_link_onload = true; }); -window.addEventListener('load', function() { - t.step_func(function() { - assert_true(saw_link_onload); - }); - t.done(); -}, false); +window.addEventListener('load', t.step_func_done(function() { + assert_true(saw_link_onload); +})); diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html index 04608460b83e..7a86a86381d8 100644 --- a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html @@ -40,6 +40,7 @@ tText.step(function() { assert_true(true, "Got error event for 404 error.") tText.done() }) + elt.onload = tText.unreached_func("load event should not be fired"); elt.rel = "stylesheet"; elt.href = "../../../../../common/css-red.txt"; document.getElementsByTagName("head")[0].appendChild(elt); diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html index 301e93ba8b38..ef0fc8db7ca5 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html @@ -3,6 +3,7 @@ Canvas test: security.drawImage.canvas.sub + @@ -31,5 +32,7 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html index e15eaa4e2ceb..55e2f2b8c6f7 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html @@ -3,6 +3,7 @@ Canvas test: security.drawImage.image.sub + @@ -26,5 +27,7 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html index 0a48d9694c7b..87a528eb14a2 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html @@ -3,6 +3,7 @@ Canvas test: security.pattern.canvas.fillStyle.sub + @@ -33,5 +34,7 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html index a65e0621a49b..26b1e1ed1bc8 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html @@ -3,6 +3,7 @@ Canvas test: security.pattern.canvas.strokeStyle.sub + @@ -33,5 +34,7 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html index 5f20edc857f8..b6c5458d99f7 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html @@ -3,6 +3,7 @@ Canvas test: security.pattern.canvas.timing.sub + @@ -36,5 +37,7 @@ _assert(true, "true"); // okay if there was no exception }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html index 41ed250eb5b6..ffd6295feb5f 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html @@ -3,6 +3,7 @@ Canvas test: security.pattern.create.sub + @@ -27,5 +28,7 @@ _assert(true, "true"); // okay if there was no exception }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html index 83ac1c71b6bb..c4f76717df15 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html @@ -3,6 +3,7 @@ Canvas test: security.pattern.cross.sub + @@ -34,5 +35,7 @@ ctx2.getImageData(0, 0, 1, 1); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html index ba0904ec1d4e..66f06cdef9e0 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html @@ -3,6 +3,7 @@ Canvas test: security.pattern.image.fillStyle.sub + @@ -28,5 +29,7 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html index d7f32a9484b6..eda7b4e4b7fb 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html @@ -3,6 +3,7 @@ Canvas test: security.pattern.image.strokeStyle.sub + @@ -28,5 +29,7 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html index 28693490ad3d..e63144983a92 100644 --- a/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html @@ -3,6 +3,7 @@ Canvas test: security.reset.sub + @@ -28,5 +29,7 @@ assert_throws("SECURITY_ERR", function() { canvas.toDataURL(); }); }); - - + + diff --git a/testing/web-platform/tests/html/semantics/forms/the-form-element/form-submission-sandbox.html b/testing/web-platform/tests/html/semantics/forms/the-form-element/form-submission-sandbox.html deleted file mode 100644 index ee91e011b5d1..000000000000 --- a/testing/web-platform/tests/html/semantics/forms/the-form-element/form-submission-sandbox.html +++ /dev/null @@ -1,32 +0,0 @@ - - -Check whether the right events are fired (or not fired, as the case may - be) during form submission attempts in sandboxed iframes. - - - - - diff --git a/testing/web-platform/tests/html/semantics/forms/the-form-element/support/form-submission-sandbox-iframe.html b/testing/web-platform/tests/html/semantics/forms/the-form-element/support/form-submission-sandbox-iframe.html deleted file mode 100644 index 615461487f1a..000000000000 --- a/testing/web-platform/tests/html/semantics/forms/the-form-element/support/form-submission-sandbox-iframe.html +++ /dev/null @@ -1,14 +0,0 @@ - - -
    - - -
    diff --git a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1a.html b/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1a.html index 202315b1c6bc..35e967c05e6a 100644 --- a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1a.html +++ b/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1a.html @@ -1,8 +1,4 @@ - -`reversed` should reverse the numbering correctly - -
    1. Three
    2. Two
    3. diff --git a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1b.html b/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1b.html index 4d6202943d01..d9810560eb7f 100644 --- a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1b.html +++ b/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1b.html @@ -1,8 +1,4 @@ - -Dynamically setting `reversed` should update the numbering - -
      1. Three
      2. Two
      3. diff --git a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1c.html b/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1c.html index 6fad13053f1d..82ae844335e0 100644 --- a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1c.html +++ b/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1c.html @@ -1,8 +1,4 @@ - -Reversed numbering should update on dynamic addition of child nodes - -
        1. Three
        2. Two
        3. diff --git a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1d.html b/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1d.html deleted file mode 100644 index a256b6a428fe..000000000000 --- a/testing/web-platform/tests/html/semantics/grouping-content/the-ol-element/reversed-1d.html +++ /dev/null @@ -1,12 +0,0 @@ - - -Reverse numbering should not be affected by nested div - - -
            -
          1. Three
          2. -
            -
          3. Two
          4. -
          5. One
          6. -
            -
          diff --git a/testing/web-platform/tests/html/semantics/interfaces.html b/testing/web-platform/tests/html/semantics/interfaces.html index c8a9bed85a10..359101dd9496 100644 --- a/testing/web-platform/tests/html/semantics/interfaces.html +++ b/testing/web-platform/tests/html/semantics/interfaces.html @@ -1,4 +1,5 @@ + Test of interfaces diff --git a/testing/web-platform/tests/html/semantics/interfaces.js b/testing/web-platform/tests/html/semantics/interfaces.js index 66cfce4859b4..0280e278c9ad 100644 --- a/testing/web-platform/tests/html/semantics/interfaces.js +++ b/testing/web-platform/tests/html/semantics/interfaces.js @@ -146,5 +146,5 @@ var elements = [ ["video", "Video"], ["wbr", ""], ["xmp", "Pre"], - ["å-bar", "Unknown"], // not a valid custom element name + ["\u00E5-bar", "Unknown"], // not a valid custom element name ]; diff --git a/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm b/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm index 6d1922971a76..8460f5ff18bf 100644 --- a/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm +++ b/testing/web-platform/tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm @@ -9,9 +9,16 @@ var parser = new DOMParser(); var parse = parser.parseFromString.bind(parser); - function generateTestFunction(entitystring, expectedString, doctypeMarkupString, mimeType, friendlyMime) { + function generateTestFunction(entitystring, expectedString, publicId, systemId, mimeType, friendlyMime) { return function () { - var doc = parse(doctypeMarkupString + ""+entitystring+"", mimeType); + var doctypeString = ''; + else if (systemId != null) + doctypeString += ' SYSTEM "' + systemId + '">'; + else // both are null + doctypeString += '>'; + var doc = parse(doctypeString + ""+entitystring+"", mimeType); var root = doc.getElementById('test'); assert_not_equals(root, null, friendlyMime + " parsing the entity reference caused a parse error;"); assert_true(!!root.firstChild); @@ -24,10 +31,10 @@ } } - function setupTests(jsonEntities, doctypeMarkupString, mimeType, friendlyMime) { + function setupTests(jsonEntities, publicId, systemId, mimeType, friendlyMime) { for (entityName in jsonEntities) { if ((mimeType == "text/html") || /;$/.test(entityName)) { - test(generateTestFunction(entityName, jsonEntities[entityName].characters, doctypeMarkupString, mimeType, friendlyMime), friendlyMime + " parsing " + entityName); + test(generateTestFunction(entityName, jsonEntities[entityName].characters, publicId, systemId, mimeType, friendlyMime), friendlyMime + " parsing " + entityName); } } } @@ -37,22 +44,21 @@ var xhr = new XMLHttpRequest(); xhr.open("GET", "/common/entities.json"); xhr.onload = function () { - // Note: for proper XML parsing of the Doctype, Edge requires a non-empty string for url part var entitiesJSON = JSON.parse(xhr.response); [ - ["application/xhtml+xml", "", "XHTML1.0 Transitional"], - ["application/xhtml+xml", "", "XHTML1.1"], - ["application/xhtml+xml", "", "XHTML1.0 Strict"], - ["application/xhtml+xml", "", "XHTML1.0 Frameset"], - ["application/xhtml+xml", "", "XHTML Basic"], - ["application/xhtml+xml", "", "XHTML1.1+MathML"], - ["application/xhtml+xml", "", "XHTML1.1+MathML+SVG"], - ["application/xhtml+xml", "", "MathML"], - ["application/xhtml+xml", "", "XHTML Mobile"], -// ["application/xhtml+xml", "", "SYSTEM MathML"], // Experimental - ["text/html", "", "HTML"] + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Transitional//EN", "foo", "XHTML1.0 Transitional"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1//EN", "foo", "XHTML1.1"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Strict//EN", "foo", "XHTML1.0 Strict"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Frameset//EN", "foo", "XHTML1.0 Frameset"], + ["application/xhtml+xml", "-//W3C//DTD XHTML Basic 1.0//EN", "foo", "XHTML Basic"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN", "foo", "XHTML1.1+MathML"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN", "foo", "XHTML1.1+MathML+SVG"], + ["application/xhtml+xml", "-//W3C//DTD MathML 2.0//EN", "foo", "MathML"], + ["application/xhtml+xml", "-//WAPFORUM//DTD XHTML Mobile 1.0//EN", "foo", "XHTML Mobile"], +// ["application/xhtml+xml", null, "mathml.dtd", "SYSTEM MathML"], // Experimental + ["text/html", null, null, "HTML"] ].forEach(function (row) { - setupTests(entitiesJSON, row[1], row[0], row[2]); + setupTests(entitiesJSON, row[1], row[2], row[0], row[3]); }); done(); } diff --git a/testing/web-platform/tests/innerText/getter-tests.js b/testing/web-platform/tests/innerText/getter-tests.js index 1e966196162f..d4511410b467 100644 --- a/testing/web-platform/tests/innerText/getter-tests.js +++ b/testing/web-platform/tests/innerText/getter-tests.js @@ -83,7 +83,6 @@ if (CSS.supports("display", "contents")) { testText("
          abc", "abc", "display:contents container"); testText("
          abc", "abc", "display:contents container"); testText("
          123abc", "123abc", "display:contents rendered"); - testText("
          123abc", "123abc", "display:contents rendered"); testText("
          ", "", "display:contents not processed via textContent"); testText("
          ", "", "display:contents not processed via textContent"); } diff --git a/testing/web-platform/tests/innerText/getter.html b/testing/web-platform/tests/innerText/getter.html index b5fb4883e837..67f21ef9870b 100644 --- a/testing/web-platform/tests/innerText/getter.html +++ b/testing/web-platform/tests/innerText/getter.html @@ -53,7 +53,7 @@ function textTextInContainer(cont, html, expectedPlain, msg) { } assert_equals(e.innerText, expectedPlain); cont.textContent = ''; - }, msg); + }, msg + ' (' + format_value(html) + ')'); } diff --git a/testing/web-platform/tests/innerText/setter-tests.js b/testing/web-platform/tests/innerText/setter-tests.js index 641795ba3f87..1c973ae048bc 100644 --- a/testing/web-platform/tests/innerText/setter-tests.js +++ b/testing/web-platform/tests/innerText/setter-tests.js @@ -22,3 +22,6 @@ testText("
          ", "abc ", "abc ", "Trailing whitespace preserved"); testText("
          ", "abc def", "abc def", "Whitespace not compressed"); testHTML("
          abc\n\n", "abc", "abc", "Existing text deleted"); testHTML("

          ", "abc", "abc", "Existing
          deleted"); +testHTML("
          ", "", "", "Assigning the empty string"); +testHTML("
          ", null, "", "Assigning null"); +testHTML("
          ", undefined, "undefined", "Assigning undefined"); diff --git a/testing/web-platform/tests/input-events/OWNERS b/testing/web-platform/tests/input-events/OWNERS new file mode 100644 index 000000000000..452445ef596c --- /dev/null +++ b/testing/web-platform/tests/input-events/OWNERS @@ -0,0 +1,2 @@ +@johanneswilm +@siusin \ No newline at end of file diff --git a/testing/web-platform/tests/lint.whitelist b/testing/web-platform/tests/lint.whitelist index 231a9cf50bbd..22fda6434070 100644 --- a/testing/web-platform/tests/lint.whitelist +++ b/testing/web-platform/tests/lint.whitelist @@ -113,6 +113,8 @@ CONSOLE:service-workers/service-worker/resources/clients-get-other-origin.html # use of console in a public library - annotation-model ensures # it is not actually used CONSOLE:annotation-model/scripts/ajv.min.js +CONSOLE:annotation-model/scripts/showdown.min.js +CR AT EOL: annotation-model/scripts/showdown.min.js # Lint doesn't know about sub.svg I guess PARSE-FAILED:content-security-policy/svg/including.sub.svg diff --git a/testing/web-platform/tests/media-source/interfaces.html b/testing/web-platform/tests/media-source/interfaces.html index 0e0d7e23073c..0480944cd12e 100644 --- a/testing/web-platform/tests/media-source/interfaces.html +++ b/testing/web-platform/tests/media-source/interfaces.html @@ -15,8 +15,11 @@ interface EventTarget { interface URL {}; interface HTMLVideoElement {}; interface AudioTrack {}; +interface AudioTrackList {}; interface VideoTrack {}; +interface VideoTrackList {}; interface TextTrack {}; +interface TextTrackList {}; interface TimeRanges {}; typedef double DOMHighResTimeStamp; diff --git a/testing/web-platform/tests/media-source/mediasource-activesourcebuffers.html b/testing/web-platform/tests/media-source/mediasource-activesourcebuffers.html new file mode 100644 index 000000000000..02ebecc7738a --- /dev/null +++ b/testing/web-platform/tests/media-source/mediasource-activesourcebuffers.html @@ -0,0 +1,238 @@ + + + + + Checks MediaSource.activeSourceBuffers and changes to selected/enabled track state + + + + + +
          + + + diff --git a/testing/web-platform/tests/media-source/mediasource-addsourcebuffer-mode.html b/testing/web-platform/tests/media-source/mediasource-addsourcebuffer-mode.html new file mode 100644 index 000000000000..cf7f57f8e285 --- /dev/null +++ b/testing/web-platform/tests/media-source/mediasource-addsourcebuffer-mode.html @@ -0,0 +1,31 @@ + + +Checks MediaSource.addSourceBuffer() sets SourceBuffer.mode appropriately + + + + \ No newline at end of file diff --git a/testing/web-platform/tests/media-source/mediasource-addsourcebuffer.html b/testing/web-platform/tests/media-source/mediasource-addsourcebuffer.html index 47a2b353f6aa..9fc946324107 100644 --- a/testing/web-platform/tests/media-source/mediasource-addsourcebuffer.html +++ b/testing/web-platform/tests/media-source/mediasource-addsourcebuffer.html @@ -1,4 +1,5 @@ + MediaSource.addSourceBuffer() test cases diff --git a/testing/web-platform/tests/media-source/mediasource-append-buffer.html b/testing/web-platform/tests/media-source/mediasource-append-buffer.html index ac2c487491da..bca3f8951e3f 100644 --- a/testing/web-platform/tests/media-source/mediasource-append-buffer.html +++ b/testing/web-platform/tests/media-source/mediasource-append-buffer.html @@ -1,4 +1,5 @@ + SourceBuffer.appendBuffer() test cases diff --git a/testing/web-platform/tests/media-source/mediasource-appendwindow.html b/testing/web-platform/tests/media-source/mediasource-appendwindow.html index 8ea8a15b0a65..272031a6e9ec 100644 --- a/testing/web-platform/tests/media-source/mediasource-appendwindow.html +++ b/testing/web-platform/tests/media-source/mediasource-appendwindow.html @@ -1,4 +1,5 @@ + SourceBuffer.appendWindowStart and SourceBuffer.appendWindowEnd test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-buffered.html b/testing/web-platform/tests/media-source/mediasource-buffered.html index d89379ceddc0..38cd1717eb23 100644 --- a/testing/web-platform/tests/media-source/mediasource-buffered.html +++ b/testing/web-platform/tests/media-source/mediasource-buffered.html @@ -1,4 +1,5 @@ + SourceBuffer.buffered test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-closed.html b/testing/web-platform/tests/media-source/mediasource-closed.html index 4f0dcca228c0..4b22cae85445 100644 --- a/testing/web-platform/tests/media-source/mediasource-closed.html +++ b/testing/web-platform/tests/media-source/mediasource-closed.html @@ -1,4 +1,5 @@ + MediaSource.readyState equals "closed" test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-a-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-a-bitrate.html index 865fadd6d3f8..e5fe45f3a97a 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-a-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-a-bitrate.html @@ -1,4 +1,5 @@ + MP4 audio-only bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html index 75d6e4101a4b..007026b75d0a 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html @@ -1,4 +1,5 @@ + MP4 muxed audio & video with an audio bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-framesize.html b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-framesize.html index 33dd51a2e586..202e09dbc1e1 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-framesize.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-framesize.html @@ -1,4 +1,5 @@ + MP4 muxed audio & video with a video frame size change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-video-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-video-bitrate.html index fce355524914..640a816de288 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-video-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-av-video-bitrate.html @@ -1,4 +1,5 @@ + MP4 muxed audio & video with a video bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-bitrate.html index ce1977ad1869..705c5bd3ca48 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-bitrate.html @@ -1,4 +1,5 @@ + MP4 video-only bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framerate.html b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framerate.html index 65266c4d8781..078236cd1a4a 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framerate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framerate.html @@ -1,4 +1,5 @@ + MP4 video-only frame rate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framesize.html b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framesize.html index 5005903589d7..cb83908c4025 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framesize.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-mp4-v-framesize.html @@ -1,4 +1,5 @@ + MP4 video-only frame size change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-webm-a-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-webm-a-bitrate.html index 99f661e0372d..cc351cd3073f 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-webm-a-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-webm-a-bitrate.html @@ -1,4 +1,5 @@ + WebM audio-only bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-audio-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-audio-bitrate.html index e3acc9850be7..082e5a8131c5 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-audio-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-audio-bitrate.html @@ -1,4 +1,5 @@ + WebM muxed audio & video with an audio bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-framesize.html b/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-framesize.html index 875bda40d3c8..c37f8c2ed4ac 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-framesize.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-framesize.html @@ -1,4 +1,5 @@ + WebM muxed audio & video with a video frame size change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-video-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-video-bitrate.html index ca2e620a90c2..0fe6c358e0a1 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-video-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-webm-av-video-bitrate.html @@ -1,4 +1,5 @@ + WebM muxed audio & video with a video bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-bitrate.html b/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-bitrate.html index c17f5ae9aa3e..e194e267d20f 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-bitrate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-bitrate.html @@ -1,4 +1,5 @@ + WebM video-only bitrate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framerate.html b/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framerate.html index d66de06b769a..fb0100c7b774 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framerate.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framerate.html @@ -1,4 +1,5 @@ + WebM video-only frame rate change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framesize.html b/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framesize.html index cd17671c8466..ca13c78a3502 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framesize.html +++ b/testing/web-platform/tests/media-source/mediasource-config-change-webm-v-framesize.html @@ -1,4 +1,5 @@ + WebM video-only frame size change. diff --git a/testing/web-platform/tests/media-source/mediasource-config-changes.js b/testing/web-platform/tests/media-source/mediasource-config-changes.js index bd16b1dfb32b..ea99b8ba5e4f 100644 --- a/testing/web-platform/tests/media-source/mediasource-config-changes.js +++ b/testing/web-platform/tests/media-source/mediasource-config-changes.js @@ -1,3 +1,5 @@ +// Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). + // Extract & return the resolution string from a filename, if any. function resolutionFromFilename(filename) { diff --git a/testing/web-platform/tests/media-source/mediasource-duration-boundaryconditions.html b/testing/web-platform/tests/media-source/mediasource-duration-boundaryconditions.html index 7b1e8d7176e2..b95e495cb1dd 100644 --- a/testing/web-platform/tests/media-source/mediasource-duration-boundaryconditions.html +++ b/testing/web-platform/tests/media-source/mediasource-duration-boundaryconditions.html @@ -1,4 +1,5 @@ + MediaSource.duration boundary condition test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-duration.html b/testing/web-platform/tests/media-source/mediasource-duration.html index 8765a6b263d6..c880178268ec 100644 --- a/testing/web-platform/tests/media-source/mediasource-duration.html +++ b/testing/web-platform/tests/media-source/mediasource-duration.html @@ -1,4 +1,5 @@ + MediaSource.duration & HTMLMediaElement.duration test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-endofstream-invaliderror.html b/testing/web-platform/tests/media-source/mediasource-endofstream-invaliderror.html index 2221d13296f9..0327e44cc0d8 100644 --- a/testing/web-platform/tests/media-source/mediasource-endofstream-invaliderror.html +++ b/testing/web-platform/tests/media-source/mediasource-endofstream-invaliderror.html @@ -1,4 +1,5 @@ + Invalid MediaSource.endOfStream() parameter test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-getvideoplaybackquality.html b/testing/web-platform/tests/media-source/mediasource-getvideoplaybackquality.html index 96a1391d4724..855d90ad73ed 100644 --- a/testing/web-platform/tests/media-source/mediasource-getvideoplaybackquality.html +++ b/testing/web-platform/tests/media-source/mediasource-getvideoplaybackquality.html @@ -1,4 +1,5 @@ + HTMLVideoElement.getVideoPlaybackQuality() test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-is-type-supported.html b/testing/web-platform/tests/media-source/mediasource-is-type-supported.html index 289cce272d08..c1d392b983eb 100644 --- a/testing/web-platform/tests/media-source/mediasource-is-type-supported.html +++ b/testing/web-platform/tests/media-source/mediasource-is-type-supported.html @@ -1,4 +1,5 @@ + MediaSource.isTypeSupported() test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-multiple-attach.html b/testing/web-platform/tests/media-source/mediasource-multiple-attach.html index d8152ff3044f..4a95a42e8340 100644 --- a/testing/web-platform/tests/media-source/mediasource-multiple-attach.html +++ b/testing/web-platform/tests/media-source/mediasource-multiple-attach.html @@ -1,4 +1,5 @@ + Test Attaching a MediaSource to multiple HTMLMediaElements. diff --git a/testing/web-platform/tests/media-source/mediasource-play-then-seek-back.html b/testing/web-platform/tests/media-source/mediasource-play-then-seek-back.html index aeb115f718a9..66fdbe810dd8 100644 --- a/testing/web-platform/tests/media-source/mediasource-play-then-seek-back.html +++ b/testing/web-platform/tests/media-source/mediasource-play-then-seek-back.html @@ -1,4 +1,5 @@ + Simple MediaSource playback & seek test case. diff --git a/testing/web-platform/tests/media-source/mediasource-play.html b/testing/web-platform/tests/media-source/mediasource-play.html index 3b26fb3031df..5bbfa29d7e8e 100644 --- a/testing/web-platform/tests/media-source/mediasource-play.html +++ b/testing/web-platform/tests/media-source/mediasource-play.html @@ -1,4 +1,5 @@ + Simple MediaSource playback test case. diff --git a/testing/web-platform/tests/media-source/mediasource-redundant-seek.html b/testing/web-platform/tests/media-source/mediasource-redundant-seek.html index 152b156f0fd0..05eae9714f9c 100644 --- a/testing/web-platform/tests/media-source/mediasource-redundant-seek.html +++ b/testing/web-platform/tests/media-source/mediasource-redundant-seek.html @@ -1,4 +1,5 @@ + Test MediaSource behavior when receiving multiple seek requests during a pending seek. diff --git a/testing/web-platform/tests/media-source/mediasource-remove.html b/testing/web-platform/tests/media-source/mediasource-remove.html index 309f6abd3d97..31da44311911 100644 --- a/testing/web-platform/tests/media-source/mediasource-remove.html +++ b/testing/web-platform/tests/media-source/mediasource-remove.html @@ -1,4 +1,5 @@ + SourceBuffer.remove() test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-removesourcebuffer.html b/testing/web-platform/tests/media-source/mediasource-removesourcebuffer.html index cbf3a1b37e54..11a9de3abbb7 100644 --- a/testing/web-platform/tests/media-source/mediasource-removesourcebuffer.html +++ b/testing/web-platform/tests/media-source/mediasource-removesourcebuffer.html @@ -1,4 +1,5 @@ + MediaSource.removeSourceBuffer() test cases. @@ -12,13 +13,13 @@ mediasource_test(function(test, mediaElement, mediaSource) { var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); - assert_true(sourceBuffer != null, "New SourceBuffer returned"); + assert_class_string(sourceBuffer, "SourceBuffer", "New SourceBuffer returned"); mediaSource.removeSourceBuffer(sourceBuffer); var sourceBuffer2 = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); - assert_true(sourceBuffer2 != null, "New SourceBuffer returned"); - assert_true(sourceBuffer != sourceBuffer2, "SourceBuffers are different instances."); + assert_class_string(sourceBuffer2, "SourceBuffer", "New SourceBuffer returned"); + assert_not_equals(sourceBuffer, sourceBuffer2, "SourceBuffers are different instances."); assert_equals(mediaSource.sourceBuffers.length, 1, "sourceBuffers.length == 1"); test.done(); @@ -35,7 +36,7 @@ mediasource_test(function(test, mediaElement, mediaSource) { var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); - assert_true(sourceBuffer != null, "New SourceBuffer returned"); + assert_class_string(sourceBuffer, "SourceBuffer", "New SourceBuffer returned"); mediaSource.removeSourceBuffer(sourceBuffer); @@ -49,14 +50,14 @@ mediasource_test(function(test, mediaElement, mediaSource) { var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); - assert_true(sourceBuffer != null, "New SourceBuffer returned"); + assert_class_string(sourceBuffer, "SourceBuffer", "New SourceBuffer returned"); mediaSource.endOfStream(); - assert_true(mediaSource.readyState == "ended", "MediaSource in ended state"); + assert_equals(mediaSource.readyState, "ended", "MediaSource in ended state"); mediaSource.removeSourceBuffer(sourceBuffer); - assert_true(mediaSource.sourceBuffers.length == 0, "MediaSource.sourceBuffers is empty"); - assert_true(mediaSource.activeSourceBuffers.length == 0, "MediaSource.activesourceBuffers is empty"); + assert_equals(mediaSource.sourceBuffers.length, 0, "MediaSource.sourceBuffers is empty"); + assert_equals(mediaSource.activeSourceBuffers.length, 0, "MediaSource.activesourceBuffers is empty"); test.done(); }, "Test calling removeSourceBuffer() in ended state."); @@ -71,8 +72,8 @@ test.waitForExpectedEvents(function() { - assert_true(mediaSource.sourceBuffers.length == 1, "MediaSource.sourceBuffers is not empty"); - assert_true(mediaSource.activeSourceBuffers.length == 1, "MediaSource.activesourceBuffers is not empty"); + assert_equals(mediaSource.sourceBuffers.length, 1, "MediaSource.sourceBuffers is not empty"); + assert_equals(mediaSource.activeSourceBuffers.length, 1, "MediaSource.activesourceBuffers is not empty"); assert_equals(mediaElement.readyState, mediaElement.HAVE_METADATA); assert_equals(mediaSource.duration, segmentInfo.duration); test.expectEvent(mediaSource.activeSourceBuffers, "removesourcebuffer", "SourceBuffer removed from activeSourceBuffers."); @@ -82,11 +83,29 @@ test.waitForExpectedEvents(function() { - assert_true(mediaSource.sourceBuffers.length == 0, "MediaSource.sourceBuffers is empty"); - assert_true(mediaSource.activeSourceBuffers.length == 0, "MediaSource.activesourceBuffers is empty"); + assert_equals(mediaSource.sourceBuffers.length, 0, "MediaSource.sourceBuffers is empty"); + assert_equals(mediaSource.activeSourceBuffers.length, 0, "MediaSource.activesourceBuffers is empty"); test.done(); }); }, "Test removesourcebuffer event on activeSourceBuffers."); + + mediasource_test(function(test, mediaElement, mediaSource) + { + mediaElement.addEventListener('error', test.unreached_func("Unexpected event 'error'")); + var mimetype = MediaSourceUtil.AUDIO_VIDEO_TYPE; + var sourceBuffer = mediaSource.addSourceBuffer(mimetype); + sourceBuffer.appendBuffer(new Uint8Array(0)); + assert_true(sourceBuffer.updating, "Updating flag set when a buffer is appended."); + test.expectEvent(sourceBuffer, 'abort'); + test.expectEvent(sourceBuffer, 'updateend'); + + mediaSource.removeSourceBuffer(sourceBuffer); + assert_false(sourceBuffer.updating, "Updating flag reset after abort."); + test.waitForExpectedEvents(function() + { + test.done(); + }); + }, "Test abort event when removeSourceBuffer() called while SourceBuffer is updating"); diff --git a/testing/web-platform/tests/media-source/mediasource-seek-beyond-duration.html b/testing/web-platform/tests/media-source/mediasource-seek-beyond-duration.html index 88f3d68511f6..8b07c9f80172 100644 --- a/testing/web-platform/tests/media-source/mediasource-seek-beyond-duration.html +++ b/testing/web-platform/tests/media-source/mediasource-seek-beyond-duration.html @@ -1,4 +1,5 @@ + Test MediaSource behavior when seeking beyond the duration of the clip. diff --git a/testing/web-platform/tests/media-source/mediasource-seek-during-pending-seek.html b/testing/web-platform/tests/media-source/mediasource-seek-during-pending-seek.html index fd347a3c4610..60c5eec1c766 100644 --- a/testing/web-platform/tests/media-source/mediasource-seek-during-pending-seek.html +++ b/testing/web-platform/tests/media-source/mediasource-seek-during-pending-seek.html @@ -1,4 +1,5 @@ + Test MediaSource behavior when a seek is requested while another seek is pending. diff --git a/testing/web-platform/tests/media-source/mediasource-sequencemode-append-buffer.html b/testing/web-platform/tests/media-source/mediasource-sequencemode-append-buffer.html index 04852d0fb27e..92a01abcc0ef 100644 --- a/testing/web-platform/tests/media-source/mediasource-sequencemode-append-buffer.html +++ b/testing/web-platform/tests/media-source/mediasource-sequencemode-append-buffer.html @@ -1,4 +1,5 @@ + SourceBuffer.mode == "sequence" test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-sourcebuffer-mode.html b/testing/web-platform/tests/media-source/mediasource-sourcebuffer-mode.html index 94843e26166d..09db87885928 100644 --- a/testing/web-platform/tests/media-source/mediasource-sourcebuffer-mode.html +++ b/testing/web-platform/tests/media-source/mediasource-sourcebuffer-mode.html @@ -1,4 +1,5 @@ + SourceBuffer.mode test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-sourcebufferlist.html b/testing/web-platform/tests/media-source/mediasource-sourcebufferlist.html index 31757acf7d6b..760e6df46cbd 100644 --- a/testing/web-platform/tests/media-source/mediasource-sourcebufferlist.html +++ b/testing/web-platform/tests/media-source/mediasource-sourcebufferlist.html @@ -1,4 +1,5 @@ + SourceBufferList test cases. @@ -13,10 +14,23 @@ { assert_equals(mediaSource.sourceBuffers.length, expected.length, "sourceBuffers length"); assert_equals(mediaSource.activeSourceBuffers.length, 0, "activeSourceBuffers length"); - for (var i = 0; i < expected.length; ++i) + for (var i = 0; i < expected.length; ++i) { assert_equals(mediaSource.sourceBuffers[i], expected[i], "Verifying mediaSource.sourceBuffers[" + i + "]"); + } + assert_equals(mediaSource.sourceBuffers[expected.length], undefined, + "If index is greater than or equal to the length attribute then return undefined."); } + mediasource_test(function(test, mediaElement, mediaSource) + { + var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VIDEO_ONLY_TYPE); + verifySourceBufferLists(mediaSource, [sourceBufferA]); + + var sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE); + verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBufferB]); + test.done(); + }, "Test SourceBufferList getter method"); + mediasource_test(function(test, mediaElement, mediaSource) { test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "sourceBuffers"); diff --git a/testing/web-platform/tests/media-source/mediasource-timestamp-offset.html b/testing/web-platform/tests/media-source/mediasource-timestamp-offset.html index 728dc2c5f5de..dd9010f02211 100644 --- a/testing/web-platform/tests/media-source/mediasource-timestamp-offset.html +++ b/testing/web-platform/tests/media-source/mediasource-timestamp-offset.html @@ -1,4 +1,5 @@ + SourceBuffer.timestampOffset test cases. diff --git a/testing/web-platform/tests/media-source/mediasource-util.js b/testing/web-platform/tests/media-source/mediasource-util.js index 030b600c2e12..cfd6648a8481 100644 --- a/testing/web-platform/tests/media-source/mediasource-util.js +++ b/testing/web-platform/tests/media-source/mediasource-util.js @@ -1,4 +1,3 @@ - (function(window) { var SEGMENT_INFO_LIST = [ { @@ -342,6 +341,9 @@ return media_test(function(test) { var mediaTag = document.createElement("video"); + if (!document.body) { + document.body = document.createElement("body"); + } document.body.appendChild(mediaTag); test.removeMediaElement_ = true; diff --git a/testing/web-platform/tests/mediacapture-streams/GUM-impossible-constraint.https.html b/testing/web-platform/tests/mediacapture-streams/GUM-impossible-constraint.https.html index d8d6d9a8d96c..b63856275c3c 100644 --- a/testing/web-platform/tests/mediacapture-streams/GUM-impossible-constraint.https.html +++ b/testing/web-platform/tests/mediacapture-streams/GUM-impossible-constraint.https.html @@ -10,7 +10,7 @@

          When prompted, accept to share your video stream.

          Description

          This test checks that setting an impossible mandatory -constraint (width >=infinity) in getUserMedia works

          +constraint (width >=1G) in getUserMedia works

          @@ -19,8 +19,10 @@ constraint (width >=infinity) in getUserMedia works

          + + + + + + + diff --git a/testing/web-platform/tests/payment-request/payment-request-in-iframe.html b/testing/web-platform/tests/payment-request/payment-request-in-iframe.html new file mode 100644 index 000000000000..9ca9f4b84b67 --- /dev/null +++ b/testing/web-platform/tests/payment-request/payment-request-in-iframe.html @@ -0,0 +1,18 @@ + + + +Test for PaymentRequest in an iframe (see also +https://github.com/w3c/browser-payment-api/issues/2) + + + diff --git a/testing/web-platform/tests/pointerevents/pointerevent_styles.css b/testing/web-platform/tests/pointerevents/pointerevent_styles.css index d2acf940dc83..18f12b8e387a 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_styles.css +++ b/testing/web-platform/tests/pointerevents/pointerevent_styles.css @@ -31,6 +31,10 @@ overflow-y: auto; overflow-x: auto; } +#scrollTarget { + background: darkblue; +} + .touchActionNone { touch-action: none; } diff --git a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html index 364c9c11f6a5..dcea2837502b 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html +++ b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch-manual.html @@ -19,11 +19,11 @@

          Pointer Events touch-action attribute support

          -

          Test Description: Try to scroll element DOWN then RIGHT. Tap Complete button under the rectangle when done. Expected: no panning.

          +

          Test Description: Try to scroll element DOWN then RIGHT inside blue rectangle. Tap Complete button under the rectangle when done. Expected: no panning.

          Note: this test is for touch-devices only

          -
          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. diff --git a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-none_touch-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-none_touch-manual.html index 786819b8588a..16e42954e51a 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-none_touch-manual.html +++ b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-none_touch-manual.html @@ -16,10 +16,10 @@

          Pointer Events touch-action attribute support

          -

          Test Description: Try to scroll element DOWN then RIGHT. Tap Complete button under the rectangle when done. Expected: no panning

          +

          Test Description: Try to scroll element DOWN then RIGHT inside blue rectangle. Tap Complete button under the rectangle when done. Expected: no panning

          Note: this test is for touch-devices only

          -
          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. diff --git a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html index 09a97e3cbe23..c75d067e447f 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html +++ b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch-manual.html @@ -19,11 +19,11 @@

          Pointer Events touch-action attribute support

          -

          Test Description: Try to scroll element DOWN then RIGHT. Tap Complete button under the rectangle when done. Expected: only pans in x direction.

          +

          Test Description: Try to scroll element DOWN then RIGHT inside blue rectangle. Tap Complete button under the rectangle when done. Expected: only pans in x direction.

          Note: this test is for touch-devices only

          -
          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. diff --git a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html index 527e55374007..d420cc56c77b 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html +++ b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-y_touch-manual.html @@ -19,11 +19,11 @@

          Pointer Events touch-action attribute support

          -

          Test Description: Try to scroll element DOWN then RIGHT. Tap Complete button under the rectangle when done. Expected: no panning/zooming/etc.

          +

          Test Description: Try to scroll element DOWN then RIGHT inside blue rectangle. Tap Complete button under the rectangle when done. Expected: no panning/zooming/etc.

          Note: this test is for touch-devices only

          -
          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. diff --git a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html index b13013c4376e..d87d2b3a34de 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html +++ b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_highest-parent-none_touch-manual.html @@ -15,11 +15,11 @@

          Pointer Events touch-action attribute support

          -

          Test Description: Try to scroll text DOWN. Wait for description update. Expected: pan enabled

          +

          Test Description: Try to scroll text DOWN inside blue rectangle. Wait for description update. Expected: pan enabled

          Note: this test is for touch-devices only

          -
          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. diff --git a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html index 163ef9b8ef40..5e674a14da55 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html +++ b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch-manual.html @@ -16,10 +16,10 @@

          Pointer Events touch-action attribute support

          -

          Test Description: Try to scroll element DOWN then RIGHT. Tap Complete button under the rectangle when done. Expected: no panning

          +

          Test Description: Try to scroll element DOWN then RIGHT inside blue rectangle. Tap Complete button under the rectangle when done. Expected: no panning

          Note: this test is for touch-devices only

          -
          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. diff --git a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html index e89b8b742e94..e2a4386b27ab 100644 --- a/testing/web-platform/tests/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html +++ b/testing/web-platform/tests/pointerevents/pointerevent_touch-action-pan-x-pan-y-pan-y_touch-manual.html @@ -19,11 +19,11 @@

          Pointer Events touch-action attribute support

          -

          Test Description: Try to scroll element DOWN then RIGHT. Tap Complete button under the rectangle when done. Expected: only pans in y direction.

          +

          Test Description: Try to scroll element DOWN then RIGHT inside blue rectangle. Tap Complete button under the rectangle when done. Expected: only pans in y direction.

          Note: this test is for touch-devices only

          -
          +
          Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat. Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit diff --git a/testing/web-platform/tests/pointerlock/OWNERS b/testing/web-platform/tests/pointerlock/OWNERS index 5a05f35799cc..640884d6444e 100644 --- a/testing/web-platform/tests/pointerlock/OWNERS +++ b/testing/web-platform/tests/pointerlock/OWNERS @@ -1 +1,2 @@ -@plehegar +@scheib +@siusin \ No newline at end of file diff --git a/testing/web-platform/tests/pointerlock/movementX_Y_basic-manual.html b/testing/web-platform/tests/pointerlock/movementX_Y_basic-manual.html new file mode 100644 index 000000000000..1e8fc1f53aa4 --- /dev/null +++ b/testing/web-platform/tests/pointerlock/movementX_Y_basic-manual.html @@ -0,0 +1,124 @@ + + + + + + + + + + +

          Description

          +

          This test if movementX/Y can provide the change in position of the pointer, as if movementX/Y = eNow.screenX/Y-ePrevious.screenX/Y

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Click to start Test1.
          2. +
          3. Move the mouse within the window, slow and fast, like a scribble.
          4. +
          5. Click again to end test.
          6. +
          +

          +
          + +
          Waiting... Click to start loging.
          +
          + + + + + + + +
          XY
          client_init:XY
          client_last:XY
          client_delta:XY
          movement_sum:XY
          movement:XY
          +
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/pointerlock/movementX_Y_no-jumps-manual.html b/testing/web-platform/tests/pointerlock/movementX_Y_no-jumps-manual.html new file mode 100644 index 000000000000..9c8fabd28c9f --- /dev/null +++ b/testing/web-platform/tests/pointerlock/movementX_Y_no-jumps-manual.html @@ -0,0 +1,140 @@ + + + + + + + + + + +

          Description

          +

          This test that movementX/Y do not jump by a large value when exiting and re-entering the window.

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Make sure the window is not maximized.
          2. +
          3. Click to start Test.
          4. +
          5. Move the mouse slowly out of the window. +
          6. Move as fast as needed to a different location outside the window at least 100 pixels away
          7. +
          8. Slowly re-enter the window.
          9. +
          10. Click again to end tests.
          11. +
          +

          +
          + +
          Waiting... Click to start loging.
          +
          + + + + + + + +
          XY
          client_init:XY
          client_last:XY
          client_delta:XY
          movement_sum:XY
          movement:XY
          +
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/pointerlock/pointerlock_basic-manual.html b/testing/web-platform/tests/pointerlock/pointerlock_basic-manual.html new file mode 100644 index 000000000000..d926318abeef --- /dev/null +++ b/testing/web-platform/tests/pointerlock/pointerlock_basic-manual.html @@ -0,0 +1,149 @@ + + + + + + + + + + +

          Description

          +

          This test validates that the pointer properly be locked in a DOM element, and exit afterwards.

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Click the "Lock Target" to test if requestPointerLock() and exitPointerLock() causing a pointerlockchange event.
          2. +
          3. Confirm the lock with a user action (in Firefox).
          4. +
          5. Exit the pointer lock with a user action (usually 'esc'), to test if the cursor is at the same location.
          6. +
          7. Click the "ReEnterLock" to test that no engagement gesture is required to reenter pointer lock if pointer lock is exited via exitPointerLock.
          8. +
          9. Exit the pointer lock with a user action (usually 'esc').
          10. +
          11. Click the "RepeatLock" to validate that each requestPointerLock() will fire a pointerlockchange event.
          12. +
          13. Exit the pointer lock with a user action (usually 'esc').
          14. +
          +

          +
          + + + + +
          Waiting... Please click the "Lock Target" button.
          +
          Target
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/pointerlock/pointerlock_fullscreen-manual.html b/testing/web-platform/tests/pointerlock/pointerlock_fullscreen-manual.html new file mode 100644 index 000000000000..7ce91ad16904 --- /dev/null +++ b/testing/web-platform/tests/pointerlock/pointerlock_fullscreen-manual.html @@ -0,0 +1,173 @@ + + + + + + + + + + +

          Description

          +

          This test validates that pointer lock won't be exited when fullscreen is entered or exited, unless fullscreen is exited with the same user gesture as pointer lock.

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Click the "scriptExitFullscreen" button.
          2. +
          3. If the exitFullscreen doesn't work, use the menu (or any other interaction except for the "esc" key) to exit fullscreen.
          4. +
          5. First test case done.
          6. +
          7. Click the "gestureExitFullscreen" button.
          8. +
          9. Use the "esc" key to exit fullscreen.
          10. +
          11. Second test case done.
          12. +
          +

          +
          + + + + +
          +
          Waiting... Please click the "scriptExitFullscreen" button.
          +
          Target
          +
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/pointerlock/pointerlock_indefinite-manual.html b/testing/web-platform/tests/pointerlock/pointerlock_indefinite-manual.html new file mode 100644 index 000000000000..0db1227ad13d --- /dev/null +++ b/testing/web-platform/tests/pointerlock/pointerlock_indefinite-manual.html @@ -0,0 +1,107 @@ + + + + + + + + + + +

          Description

          +

          This test validates that movementX/Y provided indefinitely even when the mouse cursor would have otherwise hit the edge of a screen.

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Click the "lockTarget" button to request a pointer lock.
          2. +
          3. Move the pointer constantly in a diagonal direction (e.g. up and right).
          4. +
          5. Test is done.
          6. +
          +

          +
          + + + +
          +
          Click the "lockTarget" button.
          +

          screenSize: NaN

          +

          movementX_sum: NaN

          +

          movementY_sum: NaN

          +
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/pointerlock/pointerlock_leave_Tab-manual.html b/testing/web-platform/tests/pointerlock/pointerlock_leave_Tab-manual.html new file mode 100644 index 000000000000..198e2fe63d74 --- /dev/null +++ b/testing/web-platform/tests/pointerlock/pointerlock_leave_Tab-manual.html @@ -0,0 +1,85 @@ + + + + + + + + + + +

          Description

          +

          This test validates that pointer lock will be lost the user agent / window loses focus.

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Click the "lockTarget" button to request a pointer lock.
          2. +
          3. Focus to another tab with keyboard (Ctrl-TAB).
          4. +
          5. Test is done.
          6. +
          +

          +
          + + + +
          +
          Click the "lockTarget" button.
          +
          Target
          +
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/pointerlock/pointerlock_leave_UA-manual.html b/testing/web-platform/tests/pointerlock/pointerlock_leave_UA-manual.html new file mode 100644 index 000000000000..e1440084479f --- /dev/null +++ b/testing/web-platform/tests/pointerlock/pointerlock_leave_UA-manual.html @@ -0,0 +1,85 @@ + + + + + + + + + + +

          Description

          +

          This test validates that pointer lock will be lost the user agent / window loses focus.

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Click the "lockTarget" button to request a pointer lock.
          2. +
          3. Focus to another window with keyboard (ALT-TAB).
          4. +
          5. Test is done.
          6. +
          +

          +
          + + + +
          +
          Click the "lockTarget" button.
          +
          Target
          +
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/pointerlock/pointerlock_remove_target-manual.html b/testing/web-platform/tests/pointerlock/pointerlock_remove_target-manual.html new file mode 100644 index 000000000000..210365090482 --- /dev/null +++ b/testing/web-platform/tests/pointerlock/pointerlock_remove_target-manual.html @@ -0,0 +1,87 @@ + + + + + + + + + + +

          Description

          +

          This test validates that pointer lock will be lost when the target is disconnected.

          +
          + +

          Manual Test Steps:

          +

          +

            +
          1. Click the "lockTarget" button to request a pointer lock.
          2. +
          3. Test is done.
          4. +
          +

          +
          + + + +
          +
          Click the "lockTarget" button.
          +
          Target
          +
          +
          + +
          + + + + diff --git a/testing/web-platform/tests/presentation-api/controlling-ua/defaultRequest_success-manual.html b/testing/web-platform/tests/presentation-api/controlling-ua/defaultRequest_success-manual.html new file mode 100644 index 000000000000..8535d83374c2 --- /dev/null +++ b/testing/web-platform/tests/presentation-api/controlling-ua/defaultRequest_success-manual.html @@ -0,0 +1,52 @@ + + +Presentation API, testing to start a new presentation with an default request setup. (success - manual) + + + + + +

          Click the button below and select the available casting device, to start the manual test.

          + + + diff --git a/testing/web-platform/tests/referrer-policy/generic/tools/generate.py b/testing/web-platform/tests/referrer-policy/generic/tools/generate.py index a7972aec95a5..10fc11c4f210 100755 --- a/testing/web-platform/tests/referrer-policy/generic/tools/generate.py +++ b/testing/web-platform/tests/referrer-policy/generic/tools/generate.py @@ -89,10 +89,6 @@ def generate_selection(selection, spec, subresource_path, if selection['delivery_method'] == 'meta-referrer': selection['meta_delivery_method'] = \ '' % spec - elif selection['delivery_method'] == 'meta-csp': - selection['meta_delivery_method'] = \ - '' % spec elif selection['delivery_method'] == 'http-rp': selection['meta_delivery_method'] = \ "" diff --git a/testing/web-platform/tests/referrer-policy/generic/unsupported-csp-referrer-directive.html b/testing/web-platform/tests/referrer-policy/generic/unsupported-csp-referrer-directive.html new file mode 100644 index 000000000000..a40dded44eba --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/generic/unsupported-csp-referrer-directive.html @@ -0,0 +1,30 @@ + + + + Referrer Policy: CSP 'referrer' directive should not be supported + + + + + + + +

          Referrer Policy: CSP 'referrer' directive should not be supported

          +

          CSP used to have a 'referrer' directive to set a Referrer Policy. This directive has been removed and should not be supported.

          + +
          Running...
          + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 787130839526..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 17bd000db37d..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index a85ffcf6c7ac..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 60c57d18fe87..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index c0929dfa998b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index a852d923c61b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index f455e75d29f6..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 7e2537ad1202..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 32fa30d4648d..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 22103a54b14e..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 39ad80eec067..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 0d25408c491b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index d8fee0d2a8ab..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index e48b530957d2..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 4f8ec62f3d74..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 888684dcaa1b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index ada4d25efe1e..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index d4bf1d9790b4..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 7adfbdfbeaaa..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 8bb81d6d0549..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index bb8503c98368..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index fd54093dbeab..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 6ccea342fe08..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 3db70f74a009..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 603bb9a4ba7c..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 70a811b540d0..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index de7931141a0c..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 5f0747abfe2e..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index e0c604cef736..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 8303520c2f89..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 3fcda95780e8..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index b0d881cd33e5..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index fb248d68bc55..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 201a781f8a9a..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 08f35fc82d26..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 52f3772d91aa..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index d105c20f1e2a..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 54bf1b98fbef..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 116920ff99e4..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index b8b480752743..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 8e38f41e8d2f..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 3c29c0c5b88c..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 40651f00d784..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 33ca77d3bfcf..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 0d245e841daa..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index d81599b3930f..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 29293051d147..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 477879850534..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 194f58aff26b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index fbfe64039b2c..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 309bf79b31ef..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index b07e617d7484..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 56c82b1241db..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 051d8fdc74be..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 1857cfc34dea..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html deleted file mode 100644 index 4bc13403f600..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index ab351c2bd680..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 828257c8a013..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html deleted file mode 100644 index 195ac26cc349..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 0dfc1c8cbecf..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 5dc5ef07786b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html deleted file mode 100644 index 34e03e3ca61d..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index fa797552448e..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 953020d1f72b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html deleted file mode 100644 index 57a0219c01ab..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 5fac187c135b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 181cf791ff3c..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html deleted file mode 100644 index c5de309a38ba..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index 493a238858e2..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 7c0a32a504e1..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html deleted file mode 100644 index 2df1126082e0..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index c1365a8766ed..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 26d6e83362de..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html deleted file mode 100644 index 33b503d7c7cf..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index f72a8d2d22f4..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 44d0f2437002..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html deleted file mode 100644 index 0872e0cf3bb7..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 2bb9302b5517..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 9c7aa619593b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html deleted file mode 100644 index 1c2e2f9debf0..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 66be28a5887b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 799f44ccd75c..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html deleted file mode 100644 index 985174e20a0a..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index 884b0a362b55..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 8b69098af6d5..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html deleted file mode 100644 index bf1cbf2776af..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index 8f14290a5dca..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 8a599a7e9ad6..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html deleted file mode 100644 index 797883b6451e..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index f646d2dedba7..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 6c690d026bd0..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html deleted file mode 100644 index edd11626f6dc..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 26372a764113..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 2c7d59c8a496..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html deleted file mode 100644 index f39bfbcb2005..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index d5b183fb64ea..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index bc53b867ac21..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html deleted file mode 100644 index 0cfa471369fc..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index b9d429b24bc4..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 3eb45e062d65..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html deleted file mode 100644 index a127ff90c4f0..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index cdb58c42db09..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 76a0a5d55fcf..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html deleted file mode 100644 index 20fa0d31bb30..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index e605e19b53d9..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 08ca6a06b5ea..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html deleted file mode 100644 index a2bbc6d216cf..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 0a386b29cf7b..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index ca6660d4660a..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html deleted file mode 100644 index 68d343f6a0cb..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index bc213e26fd69..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 3a0fb88ae0ed..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html deleted file mode 100644 index 0244047627dd..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index c53ba4d88140..000000000000 --- a/testing/web-platform/tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'no-referrer' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html deleted file mode 100644 index 55b8dd0529a1..000000000000 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html deleted file mode 100644 index 2ad310623d0d..000000000000 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html deleted file mode 100644 index ca9937e3055d..000000000000 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html deleted file mode 100644 index 0d051f1fc1bb..000000000000 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index e26c1e21f8ef..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html deleted file mode 100644 index 8b0ef49a66fa..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index f142bce02f22..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index 93494fa281c4..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html deleted file mode 100644 index 13d8b1994787..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index dae9acff02c9..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index 8c871cfd2cac..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html deleted file mode 100644 index 65fd827f261e..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index 7632aa847055..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index e7dfbb232858..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html deleted file mode 100644 index d5918b2f91d2..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index 78dfb80061d0..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index 13fbc49f887d..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html deleted file mode 100644 index 5dc15206a794..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index 132b14bf0c22..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index 656a3e7e3a27..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html deleted file mode 100644 index 841e9512ae62..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index 0738f8912f8e..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index 65e0c014a9ba..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html deleted file mode 100644 index 5c6adf3595cc..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index 60f4e6b2473c..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index 0f5f53541a71..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html deleted file mode 100644 index 9f57ec53258e..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index fd447345e37d..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index 24e87b13645b..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html deleted file mode 100644 index 0c5f900d43b2..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index 33de04e59dc2..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html deleted file mode 100644 index b0f82706aa81..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html deleted file mode 100644 index caa7658f2ada..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html deleted file mode 100644 index 04c7101fb548..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html deleted file mode 100644 index c11eadf715f4..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index 7511d043d3cd..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index 030963940c2e..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html deleted file mode 100644 index ea8d850fee9d..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index 92e696fe6478..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html deleted file mode 100644 index 76eadfff72df..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index c7b0ccd05799..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html deleted file mode 100644 index 1327382f693b..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html deleted file mode 100644 index d07b9371ec4c..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index 5e7fd9fe4511..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index b6299358b6b4..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index f81bfbf62f48..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index ce31f28976c3..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index a1f0550b89ce..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html deleted file mode 100644 index ebdcf58d0f4b..000000000000 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'same-origin' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/spec.src.json b/testing/web-platform/tests/referrer-policy/spec.src.json index fb0b81054cf4..6d76af2f6f32 100644 --- a/testing/web-platform/tests/referrer-policy/spec.src.json +++ b/testing/web-platform/tests/referrer-policy/spec.src.json @@ -12,7 +12,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "http", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -23,7 +23,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -34,7 +34,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "http", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -45,7 +45,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -65,7 +65,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -85,7 +85,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "http", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -96,7 +96,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -107,7 +107,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "http", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -118,7 +118,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -138,7 +138,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -158,7 +158,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "http", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -169,7 +169,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -180,7 +180,7 @@ "expansion": "override", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "swap-origin-redirect", "origin": "same-origin", "subresource": "*", @@ -191,7 +191,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "cross-origin", "subresource": "*", @@ -211,7 +211,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "http", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -222,7 +222,7 @@ "expansion": "default", "source_protocol": "https", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -233,7 +233,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -244,7 +244,7 @@ "expansion": "default", "source_protocol": "http", "target_protocol": "https", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "same-origin", "subresource": "*", @@ -255,7 +255,7 @@ "expansion": "override", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "swap-origin-redirect", "origin": "same-origin", "subresource": "*", @@ -266,7 +266,157 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "cross-origin", + "subresource": "*", + "referrer_url": "origin" + } + ] + }, + { + "name": "strict-origin", + "title": "Referrer Policy is set to 'strict-origin'", + "description": "Check that non a priori insecure subresource gets only the origin portion of the referrer URL. A priori insecure subresource gets no referrer information.", + "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin", + "referrer_policy": "strict-origin", + "test_expansion": [ + { + "name": "insecure-protocol", + "expansion": "default", + "source_protocol": "http", + "target_protocol": "http", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "*", + "subresource": "*", + "referrer_url": "origin" + }, + { + "name": "upgrade-protocol", + "expansion": "default", + "source_protocol": "http", + "target_protocol": "https", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "*", + "subresource": "*", + "referrer_url": "origin" + }, + { + "name": "downgrade-protocol", + "expansion": "default", + "source_protocol": "https", + "target_protocol": "http", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "*", + "subresource": "*", + "referrer_url": "omitted" + }, + { + "name": "secure-protocol", + "expansion": "default", + "source_protocol": "https", + "target_protocol": "https", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "*", + "subresource": "*", + "referrer_url": "origin" + } + ] + }, + { + "name": "strict-origin-when-cross-origin", + "title": "Referrer Policy is set to 'strict-origin-when-cross-origin'", + "description": "Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL.", + "specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin", + "referrer_policy": "strict-origin-when-cross-origin", + "test_expansion": [ + { + "name": "same-insecure", + "expansion": "default", + "source_protocol": "http", + "target_protocol": "http", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "same-origin", + "subresource": "*", + "referrer_url": "stripped-referrer" + }, + { + "name": "same-insecure", + "expansion": "override", + "source_protocol": "http", + "target_protocol": "http", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "swap-origin-redirect", + "origin": "same-origin", + "subresource": "*", + "referrer_url": "origin" + }, + { + "name": "cross-insecure", + "expansion": "default", + "source_protocol": "http", + "target_protocol": "http", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "cross-origin", + "subresource": "*", + "referrer_url": "origin" + }, + { + "name": "upgrade-protocol", + "expansion": "default", + "source_protocol": "http", + "target_protocol": "https", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "*", + "subresource": "*", + "referrer_url": "origin" + }, + { + "name": "downgrade-protocol", + "expansion": "default", + "source_protocol": "https", + "target_protocol": "http", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "*", + "subresource": "*", + "referrer_url": "omitted" + }, + { + "name": "same-secure", + "expansion": "default", + "source_protocol": "https", + "target_protocol": "https", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "*", + "origin": "same-origin", + "subresource": "*", + "referrer_url": "stripped-referrer" + }, + { + "name": "same-secure", + "expansion": "override", + "source_protocol": "https", + "target_protocol": "https", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], + "redirection": "swap-origin-redirect", + "origin": "same-origin", + "subresource": "*", + "referrer_url": "origin" + }, + { + "name": "cross-secure", + "expansion": "default", + "source_protocol": "https", + "target_protocol": "https", + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "cross-origin", "subresource": "*", @@ -286,7 +436,7 @@ "expansion": "default", "source_protocol": "*", "target_protocol": "*", - "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], + "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "origin": "*", "subresource": "*", @@ -418,6 +568,8 @@ "same-origin", "origin", "origin-when-cross-origin", + "strict-origin", + "strict-origin-when-cross-origin", "unsafe-url" ], @@ -430,7 +582,6 @@ "delivery_method": [ "http-rp", "meta-referrer", - "meta-csp", "attr-referrer", "rel-noreferrer" ], diff --git a/testing/web-platform/tests/referrer-policy/spec_json.js b/testing/web-platform/tests/referrer-policy/spec_json.js index 156ae47a0753..1da04bd59e80 100644 --- a/testing/web-platform/tests/referrer-policy/spec_json.js +++ b/testing/web-platform/tests/referrer-policy/spec_json.js @@ -1 +1 @@ -var SPEC_JSON = {"subresource_path": {"img-tag": "/referrer-policy/generic/subresource/image.py", "fetch-request": "/referrer-policy/generic/subresource/xhr.py", "a-tag": "/referrer-policy/generic/subresource/document.py", "area-tag": "/referrer-policy/generic/subresource/document.py", "iframe-tag": "/referrer-policy/generic/subresource/document.py", "xhr-request": "/referrer-policy/generic/subresource/xhr.py", "worker-request": "/referrer-policy/generic/subresource/worker.py", "script-tag": "/referrer-policy/generic/subresource/script.py"}, "test_expansion_schema": {"origin": ["same-origin", "cross-origin"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr-request", "worker-request", "fetch-request"], "target_protocol": ["http", "https"], "expansion": ["default", "override"], "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer", "rel-noreferrer"], "redirection": ["no-redirect", "keep-origin-redirect", "swap-origin-redirect"], "referrer_url": ["omitted", "origin", "stripped-referrer"], "source_protocol": ["http", "https"]}, "specification": [{"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policies", "referrer_policy": null, "title": "Referrer Policy is not explicitly defined", "test_expansion": [{"origin": "*", "name": "insecure-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "secure-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}], "name": "unset-referrer-policy", "description": "Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer", "referrer_policy": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}], "name": "no-referrer", "description": "Check that sub-resource never gets the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade", "referrer_policy": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'", "test_expansion": [{"origin": "*", "name": "insecure-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "secure-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}], "name": "no-referrer-when-downgrade", "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin", "referrer_policy": "origin", "title": "Referrer Policy is set to 'origin'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin", "description": "Check that all subresources in all casses get only the origin portion of the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin", "referrer_policy": "same-origin", "title": "Referrer Policy is set to 'same-origin'", "test_expansion": [{"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-secure-default", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "*", "expansion": "override", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "swap-origin-redirect", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-origin", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}], "name": "same-origin", "description": "Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin", "referrer_policy": "origin-when-cross-origin", "title": "Referrer Policy is set to 'origin-when-cross-origin'", "test_expansion": [{"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-secure-default", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-upgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-downgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "*", "expansion": "override", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "swap-origin-redirect", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-origin", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin-when-cross-origin", "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url", "referrer_policy": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "meta-csp", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "*", "subresource": "*"}], "name": "unsafe-url", "description": "Check that all sub-resources get the stripped referrer URL."}], "referrer_policy_schema": [null, "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "unsafe-url"], "excluded_tests": [{"origin": "cross-origin", "name": "cross-origin-workers", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "worker-request"}, {"origin": "*", "name": "upgraded-protocol-workers", "target_protocol": "https", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "http", "subresource": "worker-request"}, {"origin": "*", "name": "mixed-content-insecure-subresources", "target_protocol": "http", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "elements-not-supporting-attr-referrer", "target_protocol": "*", "expansion": "*", "delivery_method": ["attr-referrer"], "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": ["script-tag", "xhr-request", "worker-request", "fetch-request"]}, {"origin": "*", "name": "elements-not-supporting-rel-noreferrer", "target_protocol": "*", "expansion": "*", "delivery_method": ["rel-noreferrer"], "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": ["iframe-tag", "img-tag", "script-tag", "xhr-request", "worker-request", "fetch-request", "area-tag"]}, {"origin": "*", "name": "area-tag", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "area-tag"}, {"origin": "*", "name": "worker-requests-with-swap-origin-redirect", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "swap-origin-redirect", "referrer_url": "*", "source_protocol": "*", "subresource": ["worker-request"]}, {"origin": "*", "name": "overhead-for-redirection", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": ["keep-origin-redirect", "swap-origin-redirect"], "referrer_url": "*", "source_protocol": "*", "subresource": ["a-tag", "area-tag"]}, {"origin": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}]}; +var SPEC_JSON = {"subresource_path": {"img-tag": "/referrer-policy/generic/subresource/image.py", "fetch-request": "/referrer-policy/generic/subresource/xhr.py", "a-tag": "/referrer-policy/generic/subresource/document.py", "area-tag": "/referrer-policy/generic/subresource/document.py", "iframe-tag": "/referrer-policy/generic/subresource/document.py", "xhr-request": "/referrer-policy/generic/subresource/xhr.py", "worker-request": "/referrer-policy/generic/subresource/worker.py", "script-tag": "/referrer-policy/generic/subresource/script.py"}, "test_expansion_schema": {"origin": ["same-origin", "cross-origin"], "subresource": ["iframe-tag", "img-tag", "script-tag", "a-tag", "area-tag", "xhr-request", "worker-request", "fetch-request"], "target_protocol": ["http", "https"], "expansion": ["default", "override"], "delivery_method": ["http-rp", "meta-referrer", "attr-referrer", "rel-noreferrer"], "redirection": ["no-redirect", "keep-origin-redirect", "swap-origin-redirect"], "referrer_url": ["omitted", "origin", "stripped-referrer"], "source_protocol": ["http", "https"]}, "specification": [{"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policies", "referrer_policy": null, "title": "Referrer Policy is not explicitly defined", "test_expansion": [{"origin": "*", "name": "insecure-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "secure-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}], "name": "unset-referrer-policy", "description": "Check that referrer URL follows no-referrer-when-downgrade policy when no explicit Referrer Policy is set."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer", "referrer_policy": "no-referrer", "title": "Referrer Policy is set to 'no-referrer'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}], "name": "no-referrer", "description": "Check that sub-resource never gets the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer-when-downgrade", "referrer_policy": "no-referrer-when-downgrade", "title": "Referrer Policy is set to 'no-referrer-when-downgrade'", "test_expansion": [{"origin": "*", "name": "insecure-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "secure-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}], "name": "no-referrer-when-downgrade", "description": "Check that non a priori insecure subresource gets the full Referrer URL. A priori insecure subresource gets no referrer information."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin", "referrer_policy": "origin", "title": "Referrer Policy is set to 'origin'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin", "description": "Check that all subresources in all casses get only the origin portion of the referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-same-origin", "referrer_policy": "same-origin", "title": "Referrer Policy is set to 'same-origin'", "test_expansion": [{"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-secure-default", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "*", "expansion": "override", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "swap-origin-redirect", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-origin", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "*", "subresource": "*"}], "name": "same-origin", "description": "Check that cross-origin subresources get no referrer information and same-origin get the stripped referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-origin-when-cross-origin", "referrer_policy": "origin-when-cross-origin", "title": "Referrer Policy is set to 'origin-when-cross-origin'", "test_expansion": [{"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-secure-default", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-upgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-downgrade", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-origin-insecure", "target_protocol": "*", "expansion": "override", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "swap-origin-redirect", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-origin", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "*", "subresource": "*"}], "name": "origin-when-cross-origin", "description": "Check that cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin", "referrer_policy": "strict-origin", "title": "Referrer Policy is set to 'strict-origin'", "test_expansion": [{"origin": "*", "name": "insecure-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "secure-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "https", "subresource": "*"}], "name": "strict-origin", "description": "Check that non a priori insecure subresource gets only the origin portion of the referrer URL. A priori insecure subresource gets no referrer information."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-strict-origin-when-cross-origin", "referrer_policy": "strict-origin-when-cross-origin", "title": "Referrer Policy is set to 'strict-origin-when-cross-origin'", "test_expansion": [{"origin": "same-origin", "name": "same-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "http", "subresource": "*"}, {"origin": "same-origin", "name": "same-insecure", "target_protocol": "http", "expansion": "override", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "swap-origin-redirect", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-insecure", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "upgrade-protocol", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "http", "subresource": "*"}, {"origin": "*", "name": "downgrade-protocol", "target_protocol": "http", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "omitted", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-secure", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "https", "subresource": "*"}, {"origin": "same-origin", "name": "same-secure", "target_protocol": "https", "expansion": "override", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "swap-origin-redirect", "referrer_url": "origin", "source_protocol": "https", "subresource": "*"}, {"origin": "cross-origin", "name": "cross-secure", "target_protocol": "https", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "origin", "source_protocol": "https", "subresource": "*"}], "name": "strict-origin-when-cross-origin", "description": "Check that a priori insecure subresource gets no referrer information. Otherwise, cross-origin subresources get the origin portion of the referrer URL and same-origin get the stripped referrer URL."}, {"specification_url": "https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-unsafe-url", "referrer_policy": "unsafe-url", "title": "Referrer Policy is set to 'unsafe-url'", "test_expansion": [{"origin": "*", "name": "generic", "target_protocol": "*", "expansion": "default", "delivery_method": ["http-rp", "meta-referrer", "attr-referrer"], "redirection": "*", "referrer_url": "stripped-referrer", "source_protocol": "*", "subresource": "*"}], "name": "unsafe-url", "description": "Check that all sub-resources get the stripped referrer URL."}], "referrer_policy_schema": [null, "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "origin-when-cross-origin", "strict-origin", "strict-origin-when-cross-origin", "unsafe-url"], "excluded_tests": [{"origin": "cross-origin", "name": "cross-origin-workers", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "worker-request"}, {"origin": "*", "name": "upgraded-protocol-workers", "target_protocol": "https", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "http", "subresource": "worker-request"}, {"origin": "*", "name": "mixed-content-insecure-subresources", "target_protocol": "http", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}, {"origin": "*", "name": "elements-not-supporting-attr-referrer", "target_protocol": "*", "expansion": "*", "delivery_method": ["attr-referrer"], "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": ["script-tag", "xhr-request", "worker-request", "fetch-request"]}, {"origin": "*", "name": "elements-not-supporting-rel-noreferrer", "target_protocol": "*", "expansion": "*", "delivery_method": ["rel-noreferrer"], "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": ["iframe-tag", "img-tag", "script-tag", "xhr-request", "worker-request", "fetch-request", "area-tag"]}, {"origin": "*", "name": "area-tag", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "*", "subresource": "area-tag"}, {"origin": "*", "name": "worker-requests-with-swap-origin-redirect", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "swap-origin-redirect", "referrer_url": "*", "source_protocol": "*", "subresource": ["worker-request"]}, {"origin": "*", "name": "overhead-for-redirection", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": ["keep-origin-redirect", "swap-origin-redirect"], "referrer_url": "*", "source_protocol": "*", "subresource": ["a-tag", "area-tag"]}, {"origin": "*", "name": "source-https-unsupported-by-web-platform-tests-runners", "target_protocol": "*", "expansion": "*", "delivery_method": "*", "redirection": "*", "referrer_url": "*", "source_protocol": "https", "subresource": "*"}]}; diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..410b5da8bad3 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..ee981716bb17 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..7f80e3dc6137 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..e1acb81c2ed8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..8f524a23ecb6 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..d1d3bfbf4cf8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..6b6302a6a3e7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..bcdf715662d9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..18ec84b8a53e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..07bcce770a9a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..81c5c0b89b35 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..3e08734ae731 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html similarity index 75% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html index dbed67c16be5..14ffec0f8223 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,13 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + - + @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html similarity index 75% rename from testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html index 587ee428bdfb..0ba667d9c74e 100644 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html @@ -2,13 +2,13 @@ - Referrer-Policy: Referrer Policy is not explicitly defined - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + - + @@ -21,8 +21,8 @@ @@ -21,8 +21,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..f21693a2904f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..5ecad4840a7c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html similarity index 74% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html index ce57f512ae02..4a37ed845dde 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -2,14 +2,13 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + - + @@ -22,8 +21,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..e0135ac6550b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,40 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html similarity index 74% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html index 8bc805867763..c03ac3ec36ee 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -2,14 +2,13 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + - + @@ -22,8 +21,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..b436f264f46e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..7f0b239b625d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..7d8657595e36 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..cf0764bda250 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..68f7480b4d97 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..713b5eeb4d46 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..5ce05593ccf4 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..e1b43a7bd76a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..57e841048c12 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..220448dd230d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..1bf99f140246 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..4b41fa5b88c2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..f46debfbe650 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..7642d2f3def8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..23dddef080c9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..41eb7eaa35a7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..fa964a4a4d66 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..a973b979eefe --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..8e6ca11f3f40 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..7073af2d60ef --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..6554f6cfc40c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..65f8a5621e85 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..9c0a097c4b11 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..f456395c4c11 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..6943ffa982bc --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..b14bb43a99cb --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..b9275cb0f0c8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..947e631d1bff --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..f6c8623a069e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html similarity index 73% rename from testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html index cc457b34a9b5..08135c2a8928 100644 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'same-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html similarity index 73% rename from testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html index 475d38a48a0f..0c49b4e91a6d 100644 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html similarity index 73% rename from testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html index 13aef623281b..b40e40125ba8 100644 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html similarity index 73% rename from testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html index 17391103dc6b..16c752ce04c7 100644 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html similarity index 73% rename from testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html index e96a13d9be16..d5979d7ab667 100644 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html index 8ceadad351b2..fa61f3528a74 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..dbbc06464123 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..cd93f802cad6 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..2ce4f8c4f357 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..05cd14306e8a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..6c0eee6a9730 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers new file mode 100644 index 000000000000..d74467b0af6f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin-when-cross-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html index d2dd7ed78e2c..55f137e6d5c3 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..fb54ac71aae5 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..4e71ba5f1220 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..feb537fbc239 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..6dba08c88def --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..d40ed50fffe1 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..ba6cc74c4740 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..285c361d1d1b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..29976794882f --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..dff241107ec7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..6d11862edcaa --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..1fc31fe398fb --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html new file mode 100644 index 000000000000..4a8a1f0488e8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html new file mode 100644 index 000000000000..68b177b6af33 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html new file mode 100644 index 000000000000..68a648275fb1 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..684dcaa146d6 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..ecfd82d0630e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..7071663d6345 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..9d76145215cf --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..f515e1d8a2ef --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..9bba4f399abb --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..b3d45d73923c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..0faae4a906a8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..cc26b0961b8b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..94b42818407c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..ffb2366aa46e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..b67826d7755d --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..596550e89990 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..dc8ee2a8f45e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..266d4ff26737 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html index f813575354bd..0e1f1375da11 100644 --- a/testing/web-platform/tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'no-referrer-when-downgrade' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html index 78052fa990ef..b3079d2dc9d7 100644 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'same-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html index 76f2706b8866..7077dfa12711 100644 --- a/testing/web-platform/tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'same-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html index cb336cc9f8de..06e0cf6ccb57 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html index 31854151ddc0..2c9beb9b272b 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..3dc9ca4eded6 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..fa5788b514de --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html index a74467a9653a..f226759df6ed 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..e631d7950df5 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..dd777e20b01c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..3666ca93a142 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..083863b0823c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..73e1f65bbaa9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..9b8cb3a1d8ef --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..ec76e41ddeb9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html index 4faf684e3138..7f76db13d255 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..8ebdfb9f152a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html similarity index 72% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html index 9c55ab83c57c..793aef76ed98 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin-when-cross-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +21,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..74f5a7ccc92b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html similarity index 75% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html index a625b0c68475..e0c913583e95 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..4fb70527b619 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html similarity index 75% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html index 0543d9f921cf..dc4f644b7837 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..e2be71dd9ce7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html similarity index 75% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html index 94cd2a493085..b3d3dc54a0d2 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..62397c248476 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html similarity index 75% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html index 7f589c84e78a..183620ee89bb 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..c857f4c7695a --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.headers b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.headers new file mode 100644 index 000000000000..07af8e286fd7 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.headers @@ -0,0 +1,2 @@ +Referrer-Policy: strict-origin +Access-Control-Allow-Origin: * diff --git a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html similarity index 75% rename from testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html index c25371cb733e..1f137283c629 100644 --- a/testing/web-platform/tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin-when-cross-origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..bb240bee618e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..0d6b7b272181 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..09d9594c266b --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..c83cd66182d2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..d9ed4f6c0d2c --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html similarity index 76% rename from testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html index 32d3a7fdfcac..f060d3b99992 100644 --- a/testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..ffda52304cd9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..e013b680fef2 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..1a1b2404463e --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html new file mode 100644 index 000000000000..5bfd8faa1d90 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..d648738223cc --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html similarity index 76% rename from testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html index ef6d3e4cea9e..25f01ca1b264 100644 --- a/testing/web-platform/tests/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..5840859b4ef9 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..4e93fafee056 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html new file mode 100644 index 000000000000..9a9490e666f8 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html new file mode 100644 index 000000000000..9e1bd3a1c084 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html new file mode 100644 index 000000000000..46a7a33c3ff1 --- /dev/null +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html @@ -0,0 +1,41 @@ + + + + + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + + + + + + + + + + + + +
          + + diff --git a/testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html similarity index 76% rename from testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html rename to testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html index 119d90b11973..6186d57f3f85 100644 --- a/testing/web-platform/tests/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html +++ b/testing/web-platform/tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html @@ -2,14 +2,14 @@ - Referrer-Policy: Referrer Policy is set to 'origin' - - + Referrer-Policy: Referrer Policy is set to 'strict-origin' + + - + @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ @@ -22,8 +22,8 @@ - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html deleted file mode 100644 index 45a72b332b21..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index a6004a1f347b..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index a2db40013c87..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html deleted file mode 100644 index f5af147e481a..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 3880f17448ef..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 07f807641594..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html deleted file mode 100644 index 45979f1ab49d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index eb565e585444..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index aeadf7c19ca0..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html deleted file mode 100644 index 607716cbdd00..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 0ec7c6a62e6b..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 3cee4005a002..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html deleted file mode 100644 index f152a4431405..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index cf56e1d853b2..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 65218ee3eda6..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html deleted file mode 100644 index 02f1fd0ed907..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index c69c97d9280b..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 17b8104c657d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html deleted file mode 100644 index 3b1678077541..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 4553b230ea46..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 6c7f925e58e2..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html deleted file mode 100644 index 024e661502bb..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 769600364f50..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index f348d09261a7..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html deleted file mode 100644 index 06b2614560fa..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index b3dba93298f8..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 58df96acf167..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html deleted file mode 100644 index 8ef434ca2216..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index 05c56eebe507..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index b2a7e851544c..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index d4eb5c413c17..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 2740e8798384..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 8dcae141529e..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 038e42cb7072..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index df31f57b001d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index a936438e4ec9..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 46627395fd62..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index b2f097102279..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index 5ef01777710b..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index ca88a98ce02f..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html deleted file mode 100644 index aa4e0551a281..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index bb64186819bc..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index edb0d29ccb2d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html deleted file mode 100644 index 4888006bb003..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 25dae42bd400..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 3200fa841838..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html deleted file mode 100644 index f09a8526e3de..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 7d71d96afbf5..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html deleted file mode 100644 index 6ae962eac016..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html deleted file mode 100644 index 9896d20e31e9..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html deleted file mode 100644 index 6123d7911fa9..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html deleted file mode 100644 index 1d780da48e59..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html deleted file mode 100644 index a58ab17cbbe7..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html deleted file mode 100644 index b07e2e627214..000000000000 --- a/testing/web-platform/tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is set to 'unsafe-url' - - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 2b8db4a47112..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index b8a35f1d09bc..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 8d2a9fa1d6ef..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 9547ebdbb4a7..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 70aff42a4e89..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 8f57b34ce707..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index b3255ba8ce10..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index b736b2283a2d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 1da97a929ac2..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 37e350e6f1c5..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index fae986e4ce35..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index be1b67167fcc..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 6bdd14400358..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 9546d559d3ed..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index e7c2b0bf7020..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 43efd37ab782..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 1082069e995e..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index f3abd4cca539..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 09707ddea12c..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index c95dc9886a6b..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index c2dd6d2e2d75..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index cc4ddf624bce..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index f41731e7c787..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index af94a42b883d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 2c7ca2aba762..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index fd1465de9aff..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 635f1e7ee7f5..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 51fb98e90663..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index df1fb5f3ea02..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index e51bf7a4844c..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index a4143617f68a..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 5f19c50b9769..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 70b6b34733e3..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index a752576144f7..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 866c83575221..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 0801753fea84..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index bf3dce313293..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 71f6ca0515b9..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html deleted file mode 100644 index 3ce6e61e768d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index fe6411e36bf6..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html deleted file mode 100644 index b5a075aa60fb..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html deleted file mode 100644 index fc5150f33f70..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 4dc0a503e03d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 6028e98fd546..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 79804201352d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index c9c415a864df..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 3ff07e6759cc..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 916be95dcf36..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 8981fd77f9a8..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index ad658051ce73..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 7a4ce99243f0..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index c2dd920c4d5c..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index 72bae26487c2..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 231f3828427d..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index 106575f942df..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html deleted file mode 100644 index ebd170488549..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html deleted file mode 100644 index 9c53ecbcbb08..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html b/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html deleted file mode 100644 index f65a6d7c6009..000000000000 --- a/testing/web-platform/tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Referrer-Policy: Referrer Policy is not explicitly defined - - - - - - - - - - - - -
          - - diff --git a/testing/web-platform/tests/shadow-dom/event-composed-path-with-related-target.html b/testing/web-platform/tests/shadow-dom/event-composed-path-with-related-target.html index 5b9932bd81e7..24072aa15d3d 100644 --- a/testing/web-platform/tests/shadow-dom/event-composed-path-with-related-target.html +++ b/testing/web-platform/tests/shadow-dom/event-composed-path-with-related-target.html @@ -1,8 +1,8 @@ Shadow DOM: Event path and Event.composedPath() (with related target) - - + +
          diff --git a/testing/web-platform/tests/shadow-dom/event-composed-path.html b/testing/web-platform/tests/shadow-dom/event-composed-path.html index dac9c5b411c9..8c37b1c3bdc1 100644 --- a/testing/web-platform/tests/shadow-dom/event-composed-path.html +++ b/testing/web-platform/tests/shadow-dom/event-composed-path.html @@ -1,8 +1,8 @@ Shadow DOM: Event path and Event.composedPath() - - + +
          diff --git a/testing/web-platform/tests/shadow-dom/event-composed.html b/testing/web-platform/tests/shadow-dom/event-composed.html index 7d3d17b11592..2d6a5e36585b 100644 --- a/testing/web-platform/tests/shadow-dom/event-composed.html +++ b/testing/web-platform/tests/shadow-dom/event-composed.html @@ -1,8 +1,8 @@ Shadow DOM: Event composed - - + +