@flighthq/device 0.3.1-next.975.01aea94 → 0.4.0-edge.1908.751021c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/device.d.ts +5 -1
- package/dist/device.d.ts.map +1 -1
- package/dist/device.js +96 -39
- package/dist/device.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/device.test.ts +81 -0
package/dist/device.d.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import type { DeviceBackend, DeviceCapabilities, DeviceDisplayMetrics, DeviceInfo, SafeAreaInsets } from '@flighthq/types/contract';
|
|
1
|
+
import type { BackendExplanation, DeviceBackend, DeviceCapabilities, DeviceDisplayMetrics, DeviceInfo, SafeAreaInsets } from '@flighthq/types/contract';
|
|
2
2
|
export declare function createDeviceCapabilities(): DeviceCapabilities;
|
|
3
3
|
export declare function createDeviceDisplayMetrics(): DeviceDisplayMetrics;
|
|
4
4
|
export declare function createDeviceInfo(): DeviceInfo;
|
|
5
5
|
export declare function createSafeAreaInsets(): SafeAreaInsets;
|
|
6
6
|
export declare function createWebDeviceBackend(): DeviceBackend;
|
|
7
7
|
export declare function enableWebSafeAreaInsets(): () => void;
|
|
8
|
+
export declare function explainDeviceBackend(): BackendExplanation;
|
|
8
9
|
export declare function getDeviceBackend(): DeviceBackend;
|
|
9
10
|
export declare function getDeviceCapabilities(out: DeviceCapabilities): DeviceCapabilities;
|
|
10
11
|
export declare function getDeviceDisplayMetrics(out: DeviceDisplayMetrics): DeviceDisplayMetrics;
|
|
11
12
|
export declare function getDeviceId(): string;
|
|
12
13
|
export declare function getDeviceInfo(out: DeviceInfo): DeviceInfo;
|
|
13
14
|
export declare function getSafeAreaInsets(out: SafeAreaInsets): SafeAreaInsets;
|
|
15
|
+
export declare function installDeviceHostBackend(backend: DeviceBackend): void;
|
|
16
|
+
export declare function observeDeviceHostResult(operation: string, succeeded: boolean): void;
|
|
14
17
|
export declare function refreshDeviceInfo(): void;
|
|
18
|
+
export declare function resetDeviceBackendForTest(): void;
|
|
15
19
|
export declare function setDeviceBackend(backend: DeviceBackend | null): void;
|
|
16
20
|
//# sourceMappingURL=device.d.ts.map
|
package/dist/device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACf,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACf,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,wBAAwB,IAAI,kBAAkB,CAM7D;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CAUjE;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CA4B7C;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAID,wBAAgB,sBAAsB,IAAI,aAAa,CA4GtD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,IAAI,CA8BpD;AAED,wBAAgB,oBAAoB,IAAI,kBAAkB,CAazD;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,CAEjF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,oBAAoB,GAAG,oBAAoB,CAEvF;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAEzD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAErE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAMrE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAKnF;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAEpE"}
|
package/dist/device.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { DeviceFormFactorUnknown } from '@flighthq/types/contract';
|
|
2
2
|
import { parseUserAgentArch, parseUserAgentFormFactor, parseUserAgentOsName, parseUserAgentOsVersion, } from '@flighthq/useragent/contract';
|
|
3
|
-
// Allocates a zeroed DeviceCapabilities; use as the `out` for getDeviceCapabilities.
|
|
4
|
-
// All boolean fields default to false (unknown).
|
|
5
3
|
export function createDeviceCapabilities() {
|
|
6
4
|
return {
|
|
7
5
|
hasKeyboard: false,
|
|
@@ -9,8 +7,6 @@ export function createDeviceCapabilities() {
|
|
|
9
7
|
hasStylus: false,
|
|
10
8
|
};
|
|
11
9
|
}
|
|
12
|
-
// Allocates a zeroed DeviceDisplayMetrics; use as the `out` for getDeviceDisplayMetrics.
|
|
13
|
-
// All numeric fields default to -1 when unknown.
|
|
14
10
|
export function createDeviceDisplayMetrics() {
|
|
15
11
|
return {
|
|
16
12
|
colorDepth: -1,
|
|
@@ -22,8 +18,6 @@ export function createDeviceDisplayMetrics() {
|
|
|
22
18
|
pixelRatio: -1,
|
|
23
19
|
};
|
|
24
20
|
}
|
|
25
|
-
// Allocates a zeroed DeviceInfo; use as the `out` for getDeviceInfo or when building a backend.
|
|
26
|
-
// Strings default to '', booleans to false, arrays to [], and unknown-numeric fields to -1.
|
|
27
21
|
export function createDeviceInfo() {
|
|
28
22
|
return {
|
|
29
23
|
arch: '',
|
|
@@ -53,7 +47,6 @@ export function createDeviceInfo() {
|
|
|
53
47
|
webViewVersion: '',
|
|
54
48
|
};
|
|
55
49
|
}
|
|
56
|
-
// Allocates a zeroed SafeAreaInsets (all edges 0); use as the `out` for getSafeAreaInsets.
|
|
57
50
|
export function createSafeAreaInsets() {
|
|
58
51
|
return { bottom: 0, left: 0, right: 0, top: 0 };
|
|
59
52
|
}
|
|
@@ -172,11 +165,6 @@ export function createWebDeviceBackend() {
|
|
|
172
165
|
},
|
|
173
166
|
};
|
|
174
167
|
}
|
|
175
|
-
// Mounts a CSS env(safe-area-inset-*) probe element in the DOM and keeps the active web backend's
|
|
176
|
-
// safe-area values live. Call once after the page is ready; unmount by calling the returned dispose
|
|
177
|
-
// function. Has no effect when called outside of a browser context (SSR, workers). The probe is
|
|
178
|
-
// cheap: one hidden element, no polling — a ResizeObserver detects viewport changes.
|
|
179
|
-
// Returns a dispose function that removes the probe element and stops the observer.
|
|
180
168
|
export function enableWebSafeAreaInsets() {
|
|
181
169
|
if (typeof document === 'undefined')
|
|
182
170
|
return () => { };
|
|
@@ -196,7 +184,6 @@ export function enableWebSafeAreaInsets() {
|
|
|
196
184
|
};
|
|
197
185
|
}
|
|
198
186
|
readInsets();
|
|
199
|
-
// ResizeObserver may be absent in older browsers or test environments; fall back to a no-op.
|
|
200
187
|
const observer = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(readInsets) : null;
|
|
201
188
|
if (observer !== null)
|
|
202
189
|
observer.observe(document.documentElement);
|
|
@@ -207,43 +194,52 @@ export function enableWebSafeAreaInsets() {
|
|
|
207
194
|
_safeAreaInsets = null;
|
|
208
195
|
};
|
|
209
196
|
}
|
|
210
|
-
|
|
197
|
+
export function explainDeviceBackend() {
|
|
198
|
+
if (_custom !== null) {
|
|
199
|
+
return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
|
|
200
|
+
}
|
|
201
|
+
if (_host !== null) {
|
|
202
|
+
return {
|
|
203
|
+
conflict: _hostConflict,
|
|
204
|
+
layer: 'host',
|
|
205
|
+
operation: _hostObservation !== null ? _hostObservation.operation : null,
|
|
206
|
+
viability: _hostObservation !== null ? _hostObservation.viability : 'unobserved',
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
|
|
210
|
+
}
|
|
211
211
|
export function getDeviceBackend() {
|
|
212
|
-
|
|
213
|
-
_backend = createWebDeviceBackend();
|
|
214
|
-
return _backend;
|
|
212
|
+
return _custom ?? _host ?? _sentinel;
|
|
215
213
|
}
|
|
216
|
-
// Fills `out` with the device's input/hardware capability flags and returns it.
|
|
217
|
-
// Only surfaces capabilities with no dedicated package owner; see DeviceCapabilities for cross-refs.
|
|
218
214
|
export function getDeviceCapabilities(out) {
|
|
219
215
|
return getDeviceBackend().getCapabilities(out);
|
|
220
216
|
}
|
|
221
|
-
// Fills `out` with the device's built-in display metrics and returns it. Reads the active backend.
|
|
222
|
-
// For live multi-display enumeration and work-area geometry, use @flighthq/screen.
|
|
223
217
|
export function getDeviceDisplayMetrics(out) {
|
|
224
218
|
return getDeviceBackend().getDisplayMetrics(out);
|
|
225
219
|
}
|
|
226
|
-
// Returns a stable install identifier for this device/app install. Backed by DeviceBackend.getId().
|
|
227
|
-
// Web default: crypto.randomUUID() persisted to localStorage. Returns '' when no stable id can be
|
|
228
|
-
// formed (SSR, blocked storage, privacy mode). This is an _install_ id — resettable by clearing
|
|
229
|
-
// storage — not a hardware serial.
|
|
230
220
|
export function getDeviceId() {
|
|
231
221
|
return getDeviceBackend().getId();
|
|
232
222
|
}
|
|
233
|
-
// Fills `out` with the running device's identity and returns it. Reads the active backend.
|
|
234
223
|
export function getDeviceInfo(out) {
|
|
235
224
|
return getDeviceBackend().getInfo(out);
|
|
236
225
|
}
|
|
237
|
-
// Fills `out` with the device's safe-area insets, in CSS pixels, and returns it.
|
|
238
|
-
// Web: returns zeros by default; call enableWebSafeAreaInsets() for real CSS env() values.
|
|
239
226
|
export function getSafeAreaInsets(out) {
|
|
240
227
|
return getDeviceBackend().getSafeAreaInsets(out);
|
|
241
228
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
229
|
+
export function installDeviceHostBackend(backend) {
|
|
230
|
+
if (_host !== null) {
|
|
231
|
+
if (_host !== backend)
|
|
232
|
+
_hostConflict = true;
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
_host = backend;
|
|
236
|
+
}
|
|
237
|
+
export function observeDeviceHostResult(operation, succeeded) {
|
|
238
|
+
_hostObservation = {
|
|
239
|
+
operation,
|
|
240
|
+
viability: succeeded ? 'available' : 'runtime-api-unavailable',
|
|
241
|
+
};
|
|
242
|
+
}
|
|
247
243
|
export function refreshDeviceInfo() {
|
|
248
244
|
const backend = getDeviceBackend();
|
|
249
245
|
const maybeRefreshable = backend;
|
|
@@ -251,15 +247,76 @@ export function refreshDeviceInfo() {
|
|
|
251
247
|
maybeRefreshable.refresh();
|
|
252
248
|
}
|
|
253
249
|
}
|
|
254
|
-
|
|
250
|
+
export function resetDeviceBackendForTest() {
|
|
251
|
+
_custom = null;
|
|
252
|
+
_host = null;
|
|
253
|
+
_hostConflict = false;
|
|
254
|
+
_hostObservation = null;
|
|
255
|
+
}
|
|
255
256
|
export function setDeviceBackend(backend) {
|
|
256
|
-
|
|
257
|
+
_custom = backend;
|
|
257
258
|
}
|
|
258
|
-
|
|
259
|
+
const _sentinel = {
|
|
260
|
+
getCapabilities(out) {
|
|
261
|
+
out.hasKeyboard = false;
|
|
262
|
+
out.hasMouse = false;
|
|
263
|
+
out.hasStylus = false;
|
|
264
|
+
return out;
|
|
265
|
+
},
|
|
266
|
+
getDisplayMetrics(out) {
|
|
267
|
+
out.colorDepth = -1;
|
|
268
|
+
out.densityDpi = -1;
|
|
269
|
+
out.logicalHeight = -1;
|
|
270
|
+
out.logicalWidth = -1;
|
|
271
|
+
out.physicalHeight = -1;
|
|
272
|
+
out.physicalWidth = -1;
|
|
273
|
+
out.pixelRatio = -1;
|
|
274
|
+
return out;
|
|
275
|
+
},
|
|
276
|
+
getId() {
|
|
277
|
+
return '';
|
|
278
|
+
},
|
|
279
|
+
getInfo(out) {
|
|
280
|
+
out.arch = '';
|
|
281
|
+
out.availableMemory = -1;
|
|
282
|
+
out.boardName = '';
|
|
283
|
+
out.colorGamut = '';
|
|
284
|
+
out.cpuCores = -1;
|
|
285
|
+
out.fontScale = -1;
|
|
286
|
+
out.formFactor = DeviceFormFactorUnknown;
|
|
287
|
+
out.gpuRenderer = '';
|
|
288
|
+
out.gpuVendor = '';
|
|
289
|
+
out.isHdr = false;
|
|
290
|
+
out.isJailbroken = false;
|
|
291
|
+
out.isLowEndDevice = false;
|
|
292
|
+
out.isRooted = false;
|
|
293
|
+
out.isVirtual = false;
|
|
294
|
+
out.manufacturer = '';
|
|
295
|
+
out.marketingName = '';
|
|
296
|
+
out.model = '';
|
|
297
|
+
out.osBuild = '';
|
|
298
|
+
out.osName = '';
|
|
299
|
+
out.osVersion = '';
|
|
300
|
+
out.platformString = '';
|
|
301
|
+
out.productName = '';
|
|
302
|
+
out.supportedAbis = [];
|
|
303
|
+
out.totalMemory = -1;
|
|
304
|
+
out.webViewVersion = '';
|
|
305
|
+
return out;
|
|
306
|
+
},
|
|
307
|
+
getSafeAreaInsets(out) {
|
|
308
|
+
out.bottom = 0;
|
|
309
|
+
out.left = 0;
|
|
310
|
+
out.right = 0;
|
|
311
|
+
out.top = 0;
|
|
312
|
+
return out;
|
|
313
|
+
},
|
|
314
|
+
};
|
|
315
|
+
let _custom = null;
|
|
316
|
+
let _host = null;
|
|
317
|
+
let _hostConflict = false;
|
|
318
|
+
let _hostObservation = null;
|
|
259
319
|
let _safeAreaInsets = null;
|
|
260
|
-
// ---------------------------------------------------------------------------
|
|
261
|
-
// Web-backend detection helpers (private)
|
|
262
|
-
// ---------------------------------------------------------------------------
|
|
263
320
|
function detectDesktopUa(ua) {
|
|
264
321
|
return /win(?:dows)?nt|macintosh|mac os x|linux(?!.*android)|cros|x11/i.test(ua);
|
|
265
322
|
}
|
package/dist/device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { enableWebSafeAreaInsets, getDeviceCapabilities, getDeviceDisplayMetrics, getDeviceId, getDeviceInfo, getSafeAreaInsets, refreshDeviceInfo, } from './contract';
|
|
1
|
+
export { enableWebSafeAreaInsets, explainDeviceBackend, getDeviceCapabilities, getDeviceDisplayMetrics, getDeviceId, getDeviceInfo, getSafeAreaInsets, refreshDeviceInfo, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { enableWebSafeAreaInsets, getDeviceCapabilities, getDeviceDisplayMetrics, getDeviceId, getDeviceInfo, getSafeAreaInsets, refreshDeviceInfo, } from './contract';
|
|
1
|
+
export { enableWebSafeAreaInsets, explainDeviceBackend, getDeviceCapabilities, getDeviceDisplayMetrics, getDeviceId, getDeviceInfo, getSafeAreaInsets, refreshDeviceInfo, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/device",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-edge.1908.751021c",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/types": "0.
|
|
42
|
-
"@flighthq/useragent": "0.
|
|
41
|
+
"@flighthq/types": "0.4.0-edge.1908.751021c",
|
|
42
|
+
"@flighthq/useragent": "0.4.0-edge.1908.751021c"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"typescript": "^5.3.0"
|
package/src/device.test.ts
CHANGED
|
@@ -22,6 +22,10 @@ import {
|
|
|
22
22
|
getSafeAreaInsets,
|
|
23
23
|
refreshDeviceInfo,
|
|
24
24
|
setDeviceBackend,
|
|
25
|
+
explainDeviceBackend,
|
|
26
|
+
installDeviceHostBackend,
|
|
27
|
+
observeDeviceHostResult,
|
|
28
|
+
resetDeviceBackendForTest,
|
|
25
29
|
} from './device';
|
|
26
30
|
|
|
27
31
|
function fakeBackend(): DeviceBackend {
|
|
@@ -241,6 +245,34 @@ describe('enableWebSafeAreaInsets', () => {
|
|
|
241
245
|
});
|
|
242
246
|
});
|
|
243
247
|
|
|
248
|
+
describe('explainDeviceBackend', () => {
|
|
249
|
+
afterEach(() => resetDeviceBackendForTest());
|
|
250
|
+
|
|
251
|
+
it('reports host-not-enabled when no backend is installed', () => {
|
|
252
|
+
resetDeviceBackendForTest();
|
|
253
|
+
const explanation = explainDeviceBackend();
|
|
254
|
+
expect(explanation.layer).toBe('host-not-enabled');
|
|
255
|
+
expect(explanation.conflict).toBe(false);
|
|
256
|
+
expect(explanation.viability).toBe('unobserved');
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
it('reports custom layer when a custom backend is set', () => {
|
|
260
|
+
setDeviceBackend(fakeBackend());
|
|
261
|
+
expect(explainDeviceBackend().layer).toBe('custom');
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
it('reports host layer when a host backend is installed', () => {
|
|
265
|
+
installDeviceHostBackend(fakeBackend());
|
|
266
|
+
expect(explainDeviceBackend().layer).toBe('host');
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
it('reports conflict when two different host backends are installed', () => {
|
|
270
|
+
installDeviceHostBackend(fakeBackend());
|
|
271
|
+
installDeviceHostBackend(fakeBackend());
|
|
272
|
+
expect(explainDeviceBackend().conflict).toBe(true);
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
|
|
244
276
|
describe('getDeviceBackend', () => {
|
|
245
277
|
it('falls back to a web backend when none is set', () => {
|
|
246
278
|
expect(getDeviceBackend()).not.toBeNull();
|
|
@@ -352,6 +384,43 @@ describe('getSafeAreaInsets', () => {
|
|
|
352
384
|
});
|
|
353
385
|
});
|
|
354
386
|
|
|
387
|
+
describe('installDeviceHostBackend', () => {
|
|
388
|
+
afterEach(() => resetDeviceBackendForTest());
|
|
389
|
+
|
|
390
|
+
it('installs a host backend that getDeviceBackend returns', () => {
|
|
391
|
+
const backend = fakeBackend();
|
|
392
|
+
installDeviceHostBackend(backend);
|
|
393
|
+
expect(getDeviceBackend()).toBe(backend);
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
it('is first-host-wins: a second different backend sets conflict', () => {
|
|
397
|
+
const first = fakeBackend();
|
|
398
|
+
const second = fakeBackend();
|
|
399
|
+
installDeviceHostBackend(first);
|
|
400
|
+
installDeviceHostBackend(second);
|
|
401
|
+
expect(getDeviceBackend()).toBe(first);
|
|
402
|
+
expect(explainDeviceBackend().conflict).toBe(true);
|
|
403
|
+
});
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
describe('observeDeviceHostResult', () => {
|
|
407
|
+
afterEach(() => resetDeviceBackendForTest());
|
|
408
|
+
|
|
409
|
+
it('records a successful observation', () => {
|
|
410
|
+
installDeviceHostBackend(fakeBackend());
|
|
411
|
+
observeDeviceHostResult('getCapabilities', true);
|
|
412
|
+
const explanation = explainDeviceBackend();
|
|
413
|
+
expect(explanation.operation).toBe('getCapabilities');
|
|
414
|
+
expect(explanation.viability).toBe('available');
|
|
415
|
+
});
|
|
416
|
+
|
|
417
|
+
it('records a failed observation', () => {
|
|
418
|
+
installDeviceHostBackend(fakeBackend());
|
|
419
|
+
observeDeviceHostResult('getCapabilities', false);
|
|
420
|
+
expect(explainDeviceBackend().viability).toBe('runtime-api-unavailable');
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
|
|
355
424
|
describe('refreshDeviceInfo', () => {
|
|
356
425
|
it('does not throw on the default web backend', () => {
|
|
357
426
|
expect(() => refreshDeviceInfo()).not.toThrow();
|
|
@@ -371,6 +440,18 @@ describe('refreshDeviceInfo', () => {
|
|
|
371
440
|
});
|
|
372
441
|
});
|
|
373
442
|
|
|
443
|
+
describe('resetDeviceBackendForTest', () => {
|
|
444
|
+
it('clears all backend slots', () => {
|
|
445
|
+
setDeviceBackend(fakeBackend());
|
|
446
|
+
installDeviceHostBackend(fakeBackend());
|
|
447
|
+
observeDeviceHostResult('getCapabilities', true);
|
|
448
|
+
resetDeviceBackendForTest();
|
|
449
|
+
expect(explainDeviceBackend().layer).toBe('host-not-enabled');
|
|
450
|
+
expect(explainDeviceBackend().conflict).toBe(false);
|
|
451
|
+
expect(explainDeviceBackend().viability).toBe('unobserved');
|
|
452
|
+
});
|
|
453
|
+
});
|
|
454
|
+
|
|
374
455
|
describe('setDeviceBackend', () => {
|
|
375
456
|
it('clears back to the web fallback when passed null', () => {
|
|
376
457
|
setDeviceBackend(fakeBackend());
|