[go: nahoru, domu]

blob: 3423672b8929abe25330dd03ba8d28ec56494698 [file] [log] [blame]
// Copyright 2023 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.
const {assert} = chai;
import * as Recorder from '../../../../../../front_end/panels/recorder/models/models.js';
import * as Common from '../../../../../../front_end/core/common/common.js';
import {
describeWithEnvironment,
} from '../../../../../../test/unittests/front_end/helpers/EnvironmentHelpers.js';
let instance: Recorder.ScreenshotStorage.ScreenshotStorage;
describeWithEnvironment('ScreenshotStorage', () => {
beforeEach(() => {
instance = Recorder.ScreenshotStorage.ScreenshotStorage.instance();
instance.clear();
});
it('should return null if no screenshot has been stored for the given index', () => {
const imageData = instance.getScreenshotForSection('recording-1', 1);
assert.isNull(imageData);
});
it('should return the stored image data when a screenshot has been stored for the given index', () => {
const imageData = 'data:image/jpeg;base64,...' as Recorder.ScreenshotStorage.Screenshot;
instance.storeScreenshotForSection('recording-1', 1, imageData);
const retrievedImageData = instance.getScreenshotForSection(
'recording-1',
1,
);
assert.strictEqual(retrievedImageData, imageData);
});
it('should load previous screenshots from settings', () => {
const imageData = 'data:image/jpeg;base64,...' as Recorder.ScreenshotStorage.Screenshot;
const setting = Common.Settings.Settings.instance().createSetting<Recorder.ScreenshotStorage.ScreenshotMetaData[]>(
'recorder_screenshots', []);
setting.set([{recordingName: 'recording-1', index: 1, data: imageData}]);
const screenshotStorage = Recorder.ScreenshotStorage.ScreenshotStorage.instance({forceNew: true});
const retrievedImageData = screenshotStorage.getScreenshotForSection(
'recording-1',
1,
);
assert.strictEqual(retrievedImageData, imageData);
});
it('should sync screenshots to settings', () => {
const imageData = 'data:image/jpeg;base64,...' as Recorder.ScreenshotStorage.Screenshot;
instance.storeScreenshotForSection('recording-1', 1, imageData);
const setting = Common.Settings.Settings.instance().createSetting<Recorder.ScreenshotStorage.ScreenshotMetaData[]>(
'recorder_screenshots', []);
const value = setting.get();
assert.strictEqual(value.length, 1);
assert.strictEqual(value[0].index, 1);
assert.strictEqual(value[0].data, imageData);
});
it('should limit the amount of stored screenshots', () => {
const screenshotStorage = Recorder.ScreenshotStorage.ScreenshotStorage.instance({
forceNew: true,
maxStorageSize: 2,
});
screenshotStorage.storeScreenshotForSection(
'recording-1',
1,
'1' as Recorder.ScreenshotStorage.Screenshot,
);
screenshotStorage.storeScreenshotForSection(
'recording-1',
2,
'2' as Recorder.ScreenshotStorage.Screenshot,
);
screenshotStorage.storeScreenshotForSection(
'recording-1',
3,
'3' as Recorder.ScreenshotStorage.Screenshot,
);
const imageData1 = screenshotStorage.getScreenshotForSection(
'recording-1',
1,
);
const imageData2 = screenshotStorage.getScreenshotForSection(
'recording-1',
2,
);
const imageData3 = screenshotStorage.getScreenshotForSection(
'recording-1',
3,
);
assert.isNull(imageData1);
assert.isNotNull(imageData2);
assert.isNotNull(imageData3);
});
it('should drop the oldest screenshots first', () => {
const screenshotStorage = Recorder.ScreenshotStorage.ScreenshotStorage.instance({
forceNew: true,
maxStorageSize: 2,
});
screenshotStorage.storeScreenshotForSection(
'recording-1',
1,
'1' as Recorder.ScreenshotStorage.Screenshot,
);
screenshotStorage.storeScreenshotForSection(
'recording-1',
2,
'2' as Recorder.ScreenshotStorage.Screenshot,
);
screenshotStorage.getScreenshotForSection('recording-1', 1);
screenshotStorage.storeScreenshotForSection(
'recording-1',
3,
'3' as Recorder.ScreenshotStorage.Screenshot,
);
const imageData1 = screenshotStorage.getScreenshotForSection(
'recording-1',
1,
);
const imageData2 = screenshotStorage.getScreenshotForSection(
'recording-1',
2,
);
const imageData3 = screenshotStorage.getScreenshotForSection(
'recording-1',
3,
);
assert.isNotNull(imageData1);
assert.isNull(imageData2);
assert.isNotNull(imageData3);
});
it('should namespace the screenshots by recording name', () => {
const imageData = 'data:image/jpeg;base64,...' as Recorder.ScreenshotStorage.Screenshot;
instance.storeScreenshotForSection('recording-1', 1, imageData);
const storedImageData = instance.getScreenshotForSection('recording-2', 1);
assert.isNull(storedImageData);
});
it('should delete screenshots by recording name', () => {
const imageData = 'data:image/jpeg;base64,...' as Recorder.ScreenshotStorage.Screenshot;
instance.storeScreenshotForSection('recording-1', 1, imageData);
const storedImageData = instance.getScreenshotForSection('recording-2', 1);
assert.isNull(storedImageData);
});
});