| // Copyright (C) 2021 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| import {createEmptyRecordConfig} from '../controller/record_config_types'; |
| import { |
| autosaveConfigStore, |
| recordTargetStore |
| } from '../frontend/record_config'; |
| |
| import {featureFlags} from './feature_flags'; |
| import {defaultTraceTime, State, STATE_VERSION} from './state'; |
| |
| const AUTOLOAD_STARTED_CONFIG_FLAG = featureFlags.register({ |
| id: 'autoloadStartedConfig', |
| name: 'Auto-load last used recording config', |
| description: 'Starting a recording automatically saves its configuration. ' + |
| 'This flag controls whether this config is automatically loaded.', |
| defaultValue: true, |
| }); |
| |
| export function createEmptyState(): State { |
| return { |
| version: STATE_VERSION, |
| nextId: 0, |
| nextNoteId: 1, // 0 is reserved for ephemeral area marking. |
| nextAreaId: 0, |
| newEngineMode: 'USE_HTTP_RPC_IF_AVAILABLE', |
| engines: {}, |
| traceTime: {...defaultTraceTime}, |
| tracks: {}, |
| uiTrackIdByTraceTrackId: {}, |
| aggregatePreferences: {}, |
| trackGroups: {}, |
| visibleTracks: [], |
| pinnedTracks: [], |
| scrollingTracks: [], |
| areas: {}, |
| queries: {}, |
| metrics: {}, |
| permalink: {}, |
| notes: {}, |
| pivotTableConfig: {}, |
| pivotTable: {}, |
| |
| recordConfig: AUTOLOAD_STARTED_CONFIG_FLAG.get() ? |
| autosaveConfigStore.get() : |
| createEmptyRecordConfig(), |
| displayConfigAsPbtxt: false, |
| lastLoadedConfig: {type: 'NONE'}, |
| |
| frontendLocalState: { |
| omniboxState: { |
| lastUpdate: 0, |
| omnibox: '', |
| mode: 'SEARCH', |
| }, |
| |
| visibleState: { |
| ...defaultTraceTime, |
| lastUpdate: 0, |
| resolution: 0, |
| }, |
| }, |
| |
| logsPagination: { |
| offset: 0, |
| count: 0, |
| }, |
| |
| status: {msg: '', timestamp: 0}, |
| currentSelection: null, |
| currentFlamegraphState: null, |
| traceConversionInProgress: false, |
| |
| perfDebug: false, |
| sidebarVisible: true, |
| hoveredUtid: -1, |
| hoveredPid: -1, |
| hoveredLogsTimestamp: -1, |
| hoveredNoteTimestamp: -1, |
| highlightedSliceId: -1, |
| focusedFlowIdLeft: -1, |
| focusedFlowIdRight: -1, |
| searchIndex: -1, |
| |
| recordingInProgress: false, |
| recordingCancelled: false, |
| extensionInstalled: false, |
| recordingTarget: recordTargetStore.getValidTarget(), |
| availableAdbDevices: [], |
| |
| fetchChromeCategories: false, |
| chromeCategories: undefined, |
| pivotTableRedux: |
| {enabled: false, query: null, queryId: 0, queryResult: null}, |
| }; |
| } |