chrome-devtools-frontend
Version:
Chrome DevTools UI
69 lines (56 loc) • 3.13 kB
text/typescript
// Copyright 2024 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Platform from '../../core/platform/platform.js';
import * as SDK from '../../core/sdk/sdk.js';
import type * as Protocol from '../../generated/protocol.js';
import * as TextUtils from '../../models/text_utils/text_utils.js';
import {raf} from '../../testing/DOMHelpers.js';
import {describeWithEnvironment} from '../../testing/EnvironmentHelpers.js';
import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
import * as UI from '../../ui/legacy/legacy.js';
import * as Network from './network.js';
const {urlString} = Platform.DevToolsPath;
describeWithEnvironment('RequestResponseView', () => {
it('does show WASM disassembly for WASM module requests', async () => {
const request = SDK.NetworkRequest.NetworkRequest.create(
'requestId' as Protocol.Network.RequestId, urlString`http://devtools-frontend.test/module.wasm`, urlString``,
null, null, null);
request.setContentDataProvider(
() => Promise.resolve(new TextUtils.ContentData.ContentData(
'AGFzbQEAAAABBQFgAAF/AwIBAAcHAQNiYXIAAAoGAQQAQQILACQEbmFtZQAQD3Nob3ctd2FzbS0yLndhdAEGAQADYmFyAgMBAAA=',
true, 'application/wasm')));
request.mimeType = 'application/wasm';
request.finished = true;
const mockedSourceView = new UI.EmptyWidget.EmptyWidget('<disassembled WASM>', '');
const viewStub = sinon.stub(SourceFrame.ResourceSourceFrame.ResourceSourceFrame, 'createSearchableView')
.returns(mockedSourceView);
const component = new Network.RequestResponseView.RequestResponseView(request);
const showPreviewSpy = sinon.spy(component, 'showPreview');
component.markAsRoot();
component.show(document.body);
const widget = await showPreviewSpy.returnValues[0];
assert.isTrue(viewStub.calledOnceWithExactly(request, 'application/wasm'));
assert.strictEqual(widget, mockedSourceView);
component.detach();
});
it('shows the BinaryResourceView for binary content', async () => {
const request = SDK.NetworkRequest.NetworkRequest.create(
'requestId' as Protocol.Network.RequestId, urlString`http://devtools-frontend.test/image.png`, urlString``,
null, null, null);
request.setContentDataProvider(
() => Promise.resolve(new TextUtils.ContentData.ContentData(
'AGFzbQEAAAABBQFgAAF/AwIBAAcHAQNiYXIAAAoGAQQAQQILACQEbmFtZQAQD3Nob3ctd2FzbS0yLndhdAEGAQADYmFyAgMBAAA=',
true, 'application/octet-stream')));
request.mimeType = 'application/octet-stream';
request.finished = true;
const component = new Network.RequestResponseView.RequestResponseView(request);
const showPreviewSpy = sinon.spy(component, 'showPreview');
component.markAsRoot();
component.show(document.body);
const widget = await showPreviewSpy.returnValues[0];
assert.instanceOf(widget, Network.BinaryResourceView.BinaryResourceView);
await raf();
component.detach();
});
});