|
1 |
| -/// <reference lib="dom" /> |
2 |
| - |
3 | 1 | import Debug from 'debug'
|
4 | 2 | import pDefer from 'p-defer'
|
5 | 3 | import type { BrowserPreRequest } from '../../types'
|
@@ -59,113 +57,6 @@ export const serviceWorkerFetchEventHandler = (handler: ServiceWorkerFetchHandle
|
59 | 57 | }
|
60 | 58 | }
|
61 | 59 |
|
62 |
| -/** |
63 |
| - * Rewrites the service worker to listen to fetch events to determine if the service worker handled the request. |
64 |
| - * @param body the body of the service worker to rewrite |
65 |
| - * @returns the rewritten service worker |
66 |
| - */ |
67 |
| -export const rewriteServiceWorker = (body: Buffer) => { |
68 |
| - function __cypressCreateListenerFunction (listener) { |
69 |
| - return (event) => { |
70 |
| - // we want to override the respondWith method so we can track if it was called |
71 |
| - // to determine if the service worker handled the request |
72 |
| - const oldRespondWith = event.respondWith |
73 |
| - let respondWithCalled = false |
74 |
| - |
75 |
| - event.respondWith = (...args) => { |
76 |
| - respondWithCalled = true |
77 |
| - oldRespondWith.call(event, ...args) |
78 |
| - } |
79 |
| - |
80 |
| - const returnValue = listener(event) |
81 |
| - |
82 |
| - // @ts-expect-error |
83 |
| - // call the CDP binding to inform the backend whether or not the service worker handled the request |
84 |
| - self.__cypressServiceWorkerFetchEvent(JSON.stringify({ url: event.request.url, respondWithCalled })) |
85 |
| - |
86 |
| - return returnValue |
87 |
| - } |
88 |
| - } |
89 |
| - |
90 |
| - function __cypressOverwriteAddRemoveEventListener () { |
91 |
| - const listeners = new WeakMap() |
92 |
| - |
93 |
| - const oldAddEventListener = self.addEventListener |
94 |
| - |
95 |
| - // Overwrite the addEventListener method so we can |
96 |
| - // determine if the service worker handled the request |
97 |
| - self.addEventListener = (type, listener, options) => { |
98 |
| - if (type === 'fetch') { |
99 |
| - const newListener = __cypressCreateListenerFunction(listener) |
100 |
| - |
101 |
| - listeners.set(listener, newListener) |
102 |
| - |
103 |
| - return oldAddEventListener(type, newListener, options) |
104 |
| - } |
105 |
| - |
106 |
| - return oldAddEventListener(type, listener, options) |
107 |
| - } |
108 |
| - |
109 |
| - const oldRemoveEventListener = self.removeEventListener |
110 |
| - |
111 |
| - // Overwrite the removeEventListener method so we can |
112 |
| - // remove the listener from the map |
113 |
| - self.removeEventListener = (type, listener, options) => { |
114 |
| - if (type === 'fetch') { |
115 |
| - const newListener = listeners.get(listener) |
116 |
| - |
117 |
| - listeners.delete(listener) |
118 |
| - |
119 |
| - return oldRemoveEventListener(type, newListener, options) |
120 |
| - } |
121 |
| - |
122 |
| - return oldRemoveEventListener(type, listener, options) |
123 |
| - } |
124 |
| - } |
125 |
| - |
126 |
| - function __cypressOverwriteOnfetch () { |
127 |
| - const originalPropertyDescriptor = Object.getOwnPropertyDescriptor( |
128 |
| - self, |
129 |
| - 'onfetch', |
130 |
| - ) |
131 |
| - |
132 |
| - if (!originalPropertyDescriptor) { |
133 |
| - return |
134 |
| - } |
135 |
| - |
136 |
| - // Overwrite the onfetch property so we can |
137 |
| - // determine if the service worker handled the request |
138 |
| - Object.defineProperty( |
139 |
| - self, |
140 |
| - 'onfetch', |
141 |
| - { |
142 |
| - configurable: originalPropertyDescriptor.configurable, |
143 |
| - enumerable: originalPropertyDescriptor.enumerable, |
144 |
| - get () { |
145 |
| - return originalPropertyDescriptor.get?.call(this) |
146 |
| - }, |
147 |
| - set (value: (event) => void) { |
148 |
| - let newHandler |
149 |
| - |
150 |
| - if (value) { |
151 |
| - newHandler = __cypressCreateListenerFunction(value) |
152 |
| - } |
153 |
| - |
154 |
| - originalPropertyDescriptor.set?.call(this, newHandler) |
155 |
| - }, |
156 |
| - }, |
157 |
| - ) |
158 |
| - } |
159 |
| - |
160 |
| - const updatedBody = ` |
161 |
| -${__cypressCreateListenerFunction}; |
162 |
| -(${__cypressOverwriteAddRemoveEventListener})(); |
163 |
| -(${__cypressOverwriteOnfetch})(); |
164 |
| -${body}` |
165 |
| - |
166 |
| - return updatedBody |
167 |
| -} |
168 |
| - |
169 | 60 | /**
|
170 | 61 | * Manages service worker registrations and their controlled URLs.
|
171 | 62 | *
|
@@ -288,7 +179,7 @@ export class ServiceWorkerManager {
|
288 | 179 | activatedServiceWorker.scriptURL === paramlessDocumentURL ||
|
289 | 180 | !activatedServiceWorker.initiatorOrigin ||
|
290 | 181 | !paramlessDocumentURL.startsWith(activatedServiceWorker.initiatorOrigin)) {
|
291 |
| - debug('Service worker not activated or request URL is from the service worker, skipping: %o', { activatedServiceWorker, paramlessDocumentURL }) |
| 182 | + debug('Service worker not activated or request URL is from the service worker, skipping: %o', { activatedServiceWorker, browserPreRequest }) |
292 | 183 |
|
293 | 184 | return
|
294 | 185 | }
|
|
0 commit comments