in src/injected/main-window-initializer.ts [101:407]
public async initialize(): Promise<void> {
const asyncInitializationSteps: Promise<void>[] = [];
asyncInitializationSteps.push(super.initialize());
this.visualizationStoreProxy = new StoreProxy<VisualizationStoreData>(
StoreNames[StoreNames.VisualizationStore],
this.browserAdapter,
);
this.scopingStoreProxy = new StoreProxy<ScopingStoreData>(
StoreNames[StoreNames.ScopingPanelStateStore],
this.browserAdapter,
);
this.featureFlagStoreProxy = new StoreProxy<FeatureFlagStoreData>(
StoreNames[StoreNames.FeatureFlagStore],
this.browserAdapter,
);
this.userConfigStoreProxy = new StoreProxy<UserConfigurationStoreData>(
StoreNames[StoreNames.UserConfigurationStore],
this.browserAdapter,
);
this.visualizationScanResultStoreProxy = new StoreProxy<VisualizationScanResultData>(
StoreNames[StoreNames.VisualizationScanResultStore],
this.browserAdapter,
);
this.assessmentStoreProxy = new StoreProxy<AssessmentStoreData>(
StoreNames[StoreNames.AssessmentStore],
this.browserAdapter,
);
this.tabStoreProxy = new StoreProxy<TabStoreData>(
StoreNames[StoreNames.TabStore],
this.browserAdapter,
);
this.devToolStoreProxy = new StoreProxy<DevToolStoreData>(
StoreNames[StoreNames.DevToolsStore],
this.browserAdapter,
);
this.inspectStoreProxy = new StoreProxy<InspectStoreData>(
StoreNames[StoreNames.InspectStore],
this.browserAdapter,
);
this.pathSnippetStoreProxy = new StoreProxy<PathSnippetStoreData>(
StoreNames[StoreNames.PathSnippetStore],
this.browserAdapter,
);
this.unifiedScanResultStoreProxy = new StoreProxy<UnifiedScanResultStoreData>(
StoreNames[StoreNames.UnifiedScanResultStore],
this.browserAdapter,
);
this.cardSelectionStoreProxy = new StoreProxy<CardSelectionStoreData>(
StoreNames[StoreNames.CardSelectionStore],
this.browserAdapter,
);
this.needsReviewScanResultStoreProxy = new StoreProxy<NeedsReviewScanResultStoreData>(
StoreNames[StoreNames.NeedsReviewScanResultStore],
this.browserAdapter,
);
this.needsReviewCardSelectionStoreProxy = new StoreProxy<NeedsReviewCardSelectionStoreData>(
StoreNames[StoreNames.NeedsReviewCardSelectionStore],
this.browserAdapter,
);
this.permissionsStateStoreProxy = new StoreProxy<PermissionsStateStoreData>(
StoreNames[StoreNames.PermissionsStateStore],
this.browserAdapter,
);
const logger = createDefaultLogger();
const actionMessageDispatcher = new RemoteActionMessageDispatcher(
this.browserAdapter.sendMessageToFrames,
null,
logger,
);
const storeActionMessageCreatorFactory = new StoreActionMessageCreatorFactory(
actionMessageDispatcher,
);
const storeActionMessageCreator = storeActionMessageCreatorFactory.fromStores([
this.visualizationStoreProxy,
this.scopingStoreProxy,
this.featureFlagStoreProxy,
this.userConfigStoreProxy,
this.visualizationScanResultStoreProxy,
this.assessmentStoreProxy,
this.tabStoreProxy,
this.devToolStoreProxy,
this.inspectStoreProxy,
this.pathSnippetStoreProxy,
this.unifiedScanResultStoreProxy,
this.cardSelectionStoreProxy,
this.needsReviewScanResultStoreProxy,
this.needsReviewCardSelectionStoreProxy,
this.permissionsStateStoreProxy,
]);
storeActionMessageCreator.getAllStates();
const telemetryDataFactory = new TelemetryDataFactory();
const devToolActionMessageCreator = new DevToolActionMessageCreator(
telemetryDataFactory,
actionMessageDispatcher,
);
const targetPageActionMessageCreator = new TargetPageActionMessageCreator(
telemetryDataFactory,
actionMessageDispatcher,
);
const issueFilingActionMessageCreator = new IssueFilingActionMessageCreator(
actionMessageDispatcher,
telemetryDataFactory,
TelemetryEventSource.TargetPage,
);
const tabStopRequirementActionMessageCreator = new TabStopRequirementActionMessageCreator(
telemetryDataFactory,
actionMessageDispatcher,
);
const userConfigMessageCreator = new UserConfigMessageCreator(actionMessageDispatcher);
const browserSpec = new NavigatorUtils(window.navigator, logger).getBrowserSpec();
const toolData = createToolData(
'axe-core',
AxeInfo.Default.version,
toolName,
this.appDataAdapter.getVersion(),
browserSpec,
);
MainWindowContext.initialize(
this.devToolStoreProxy,
this.userConfigStoreProxy,
devToolActionMessageCreator,
targetPageActionMessageCreator,
issueFilingActionMessageCreator,
userConfigMessageCreator,
toolData,
IssueFilingServiceProviderImpl,
);
const drawingInitiator = new DrawingInitiator(this.drawingController);
const elementBasedViewModelCreator = new ElementBasedViewModelCreator(
getDecoratedAxeNode,
getCardSelectionViewData,
isResultHighlightUnavailableWeb,
);
const selectorMapHelper = new SelectorMapHelper(
Assessments,
elementBasedViewModelCreator.getElementBasedViewModel,
);
const storeHub = new BaseClientStoresHub<TargetPageStoreData>([
this.visualizationStoreProxy,
this.tabStoreProxy,
this.visualizationScanResultStoreProxy,
this.featureFlagStoreProxy,
this.assessmentStoreProxy,
this.userConfigStoreProxy,
this.unifiedScanResultStoreProxy,
this.cardSelectionStoreProxy,
this.needsReviewScanResultStoreProxy,
this.needsReviewCardSelectionStoreProxy,
this.permissionsStateStoreProxy,
]);
const clientStoreListener = new ClientStoreListener(storeHub);
const focusChangeHandler = new FocusChangeHandler(
targetPageActionMessageCreator,
this.scrollingController,
);
const targetPageVisualizationUpdater = new TargetPageVisualizationUpdater(
this.visualizationConfigurationFactory,
selectorMapHelper,
drawingInitiator,
isVisualizationEnabled,
visualizationNeedsUpdate,
);
const visualizationStateChangeHandler = new VisualizationStateChangeHandler(
EnumHelper.getNumericValues(VisualizationType),
targetPageVisualizationUpdater.updateVisualization,
Assessments,
);
clientStoreListener.registerOnReadyToExecuteVisualizationCallback(
focusChangeHandler.handleFocusChangeWithStoreData,
);
clientStoreListener.registerOnReadyToExecuteVisualizationCallback(
visualizationStateChangeHandler.updateVisualizationsWithStoreData,
);
const frameUrlController = new FrameUrlController(
this.devToolStoreProxy,
devToolActionMessageCreator,
this.frameUrlFinder,
);
frameUrlController.listenToStore();
const iframeDetector = new IframeDetector(document);
const scanIncompleteWarningDetector = new ScanIncompleteWarningDetector(
iframeDetector,
this.permissionsStateStoreProxy,
);
const convertScanResultsToUnifiedResults = new ConvertScanResultsToUnifiedResults(
generateUID,
getFixResolution,
getCheckResolution,
);
const notificationTextCreator = new NotificationTextCreator(scanIncompleteWarningDetector);
const unifiedResultSender = new UnifiedResultSender(
this.browserAdapter.sendMessageToFrames,
convertScanResultsToUnifiedRules,
toolData,
convertScanResultsToUnifiedResults,
scanIncompleteWarningDetector,
notificationTextCreator,
filterNeedsReviewResults,
);
const tabStopsDoneAnalyzingTracker = new TabStopsDoneAnalyzingTracker(
tabStopRequirementActionMessageCreator,
);
const analyzerProvider = new AnalyzerProvider(
this.manualTabStopListener,
this.tabStopRequirementRunner,
tabStopRequirementActionMessageCreator,
tabStopsDoneAnalyzingTracker,
this.featureFlagStoreProxy,
this.scopingStoreProxy,
this.browserAdapter.sendMessageToFrames,
new ScannerUtils(scan, logger, generateUID),
telemetryDataFactory,
DateProvider.getCurrentDate,
filterResultsByRules,
unifiedResultSender.sendAutomatedChecksResults,
unifiedResultSender.sendNeedsReviewResults,
scanIncompleteWarningDetector,
logger,
);
const analyzerStateUpdateHandler = new AnalyzerStateUpdateHandler(
this.visualizationConfigurationFactory,
);
this.analyzerController = new AnalyzerController(
this.visualizationStoreProxy,
this.visualizationScanResultStoreProxy,
this.featureFlagStoreProxy,
this.scopingStoreProxy,
this.visualizationConfigurationFactory,
analyzerProvider,
analyzerStateUpdateHandler,
Assessments,
tabStopRequirementActionMessageCreator,
);
this.analyzerController.listenToStore();
const htmlElementUtils = new HTMLElementUtils();
const shadowUtils = new ShadowUtils(htmlElementUtils);
const scopingListener = new ScopingListener(
this.elementFinderByPosition,
this.windowUtils,
shadowUtils,
document,
);
const inspectActionMessageCreator = new InspectActionMessageCreator(
telemetryDataFactory,
TelemetryEventSource.TargetPage,
actionMessageDispatcher,
);
const scopingActionMessageCreator = new ScopingActionMessageCreator(
telemetryDataFactory,
TelemetryEventSource.TargetPage,
actionMessageDispatcher,
);
const pathSnippetActionMessageCreator = new PathSnippetActionMessageCreator(
actionMessageDispatcher,
);
this.inspectController = new InspectController(
this.inspectStoreProxy,
scopingListener,
inspectActionMessageCreator.changeInspectMode,
new InspectConfigurationFactory(scopingActionMessageCreator),
targetPageActionMessageCreator.setHoveredOverSelector,
);
this.inspectController.listenToStore();
this.pathSnippetController = new PathSnippetController(
this.pathSnippetStoreProxy,
this.elementFinderByPath,
pathSnippetActionMessageCreator.addCorrespondingSnippet,
);
this.pathSnippetController.listenToStore();
await Promise.all(asyncInitializationSteps);
}