Skip to content

Commit 694f02e

Browse files
authored
fix loading race condition (#2689)
2 parents cd85491 + d81cf02 commit 694f02e

File tree

6 files changed

+61
-17
lines changed

6 files changed

+61
-17
lines changed
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import loadEmberDebugInWebpage from '../lib/load-ember-debug-in-webpage';
2-
import { onEmberReady, startInspector } from '../lib/start-inspector';
32

4-
import adapter from '../adapters/basic';
3+
loadEmberDebugInWebpage(async () => {
4+
const { onEmberReady, startInspector } = await import(
5+
'../lib/start-inspector'
6+
);
57

6-
loadEmberDebugInWebpage(() => onEmberReady(startInspector(adapter)));
8+
const adapter = (await import('../adapters/basic')).default;
9+
onEmberReady(startInspector(adapter));
10+
});
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import loadEmberDebugInWebpage from '../lib/load-ember-debug-in-webpage';
2-
import { onEmberReady, startInspector } from '../lib/start-inspector';
32

4-
import adapter from '../adapters/bookmarklet';
3+
loadEmberDebugInWebpage(async () => {
4+
const { onEmberReady, startInspector } = await import(
5+
'../lib/start-inspector'
6+
);
57

6-
loadEmberDebugInWebpage(() => onEmberReady(startInspector(adapter)));
8+
const adapter = (await import('../adapters/bookmarklet.js')).default;
9+
onEmberReady(startInspector(adapter));
10+
});
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import loadEmberDebugInWebpage from '../lib/load-ember-debug-in-webpage';
2-
import { onEmberReady, startInspector } from '../lib/start-inspector';
32

4-
import adapter from '../adapters/chrome';
3+
loadEmberDebugInWebpage(async () => {
4+
const { onEmberReady, startInspector } = await import(
5+
'../lib/start-inspector'
6+
);
57

6-
loadEmberDebugInWebpage(() => onEmberReady(startInspector(adapter)));
8+
const adapter = (await import('../adapters/chrome.js')).default;
9+
onEmberReady(startInspector(adapter));
10+
});
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import loadEmberDebugInWebpage from '../lib/load-ember-debug-in-webpage';
2-
import { onEmberReady, startInspector } from '../lib/start-inspector';
32

4-
import adapter from '../adapters/firefox';
3+
loadEmberDebugInWebpage(async () => {
4+
const { onEmberReady, startInspector } = await import(
5+
'../lib/start-inspector'
6+
);
57

6-
loadEmberDebugInWebpage(() => onEmberReady(startInspector(adapter)));
8+
const adapter = (await import('../adapters/firefox.js')).default;
9+
onEmberReady(startInspector(adapter));
10+
});
Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import loadEmberDebugInWebpage from '../lib/load-ember-debug-in-webpage';
2-
import { onEmberReady, startInspector } from '../lib/start-inspector';
32

4-
import adapter from '../adapters/websocket';
3+
loadEmberDebugInWebpage(async () => {
4+
const { onEmberReady, startInspector } = await import(
5+
'../lib/start-inspector'
6+
);
57

6-
loadEmberDebugInWebpage(() => onEmberReady(startInspector(adapter)));
8+
const adapter = (await import('../adapters/websocket.js')).default;
9+
onEmberReady(startInspector(adapter));
10+
});

tests/integration/injection-test.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,14 @@ module('Integration | Injection', function (hooks) {
171171
let contentChromeApi, inspectorChromeApi, backgroundChromeApi;
172172
const olddefine = window.define;
173173
const olddrequireModule = window.requireModule;
174+
const oldEmber = window.Ember;
174175

175176
let injected;
177+
let EmberService = Service;
176178

177179
async function inject(owner, assert) {
178180
if (injected) return;
181+
179182
const backgroundScript = await (await fetch('/background.js')).text();
180183
{
181184
const chrome = backgroundChromeApi;
@@ -208,6 +211,14 @@ module('Integration | Injection', function (hooks) {
208211

209212
window.chrome = inspectorChromeApi;
210213

214+
owner.register('service:port', class extends EmberService {});
215+
owner.lookup('service:adapters/web-extension');
216+
window.requireModule = null;
217+
Object.defineProperty(window, 'Ember', {
218+
value: null,
219+
writable: true,
220+
});
221+
211222
const emberDebugStarted = new Promise((resolve) => {
212223
inspectorChromeApi.runtime.onMessage.addListener((msg) => {
213224
if (msg.type === 'general:applicationBooted') {
@@ -223,8 +234,21 @@ module('Integration | Injection', function (hooks) {
223234
}
224235
});
225236
});
226-
owner.register('service:port', class extends Service {});
227-
owner.lookup('service:adapters/web-extension');
237+
238+
// check that we do not have any errors
239+
await new Promise((resolve, reject) => {
240+
window.addEventListener('error', reject);
241+
contentChromeApi.runtime.onMessage.addListener((message) => {
242+
if (message?.type === 'inject-ember-debug') {
243+
setTimeout(resolve, 200);
244+
}
245+
});
246+
});
247+
248+
window.requireModule = olddrequireModule;
249+
window.Ember = oldEmber;
250+
window.dispatchEvent(new Event('Ember'));
251+
228252
await p;
229253
await emberDebugStarted;
230254
injected = true;

0 commit comments

Comments
 (0)