in src/background/global-context-factory.ts [38:160]
public static async createContext(
browserAdapter: BrowserAdapter,
telemetryEventHandler: TelemetryEventHandler,
userData: LocalStorageData,
assessmentsProvider: AssessmentsProvider,
telemetryDataFactory: TelemetryDataFactory,
indexedDBInstance: IndexedDBAPI,
persistedData: PersistedData,
issueFilingServiceProvider: IssueFilingServiceProvider,
toolData: ToolData,
storageAdapter: StorageAdapter,
commandsAdapter: CommandsAdapter,
logger: Logger,
): Promise<GlobalContext> {
const interpreter = new Interpreter();
const globalActionsHub = new GlobalActionHub();
const globalStoreHub = new GlobalStoreHub(
globalActionsHub,
telemetryEventHandler,
browserAdapter,
userData,
assessmentsProvider,
indexedDBInstance,
persistedData,
storageAdapter,
logger,
);
const featureFlagsController = new FeatureFlagsController(
globalStoreHub.featureFlagStore,
interpreter,
);
const userConfigurationController = new UserConfigurationController(interpreter);
globalStoreHub.initialize();
const issueFilingController = new IssueFilingControllerImpl(
browserAdapter.createActiveTab,
issueFilingServiceProvider,
globalStoreHub.userConfigurationStore,
);
const scopingActionCreator = new ScopingActionCreator(
interpreter,
globalActionsHub.scopingActions,
);
const issueFilingActionCreator = new IssueFilingActionCreator(
interpreter,
telemetryEventHandler,
issueFilingController,
);
const actionCreator = new GlobalActionCreator(
globalActionsHub,
interpreter,
commandsAdapter,
telemetryEventHandler,
);
const assessmentActionCreator = new AssessmentActionCreator(
interpreter,
globalActionsHub.assessmentActions,
telemetryEventHandler,
);
const userConfigurationActionCreator = new UserConfigurationActionCreator(
globalActionsHub.userConfigurationActions,
);
const featureFlagsActionCreator = new FeatureFlagsActionCreator(
interpreter,
globalActionsHub.featureFlagActions,
telemetryEventHandler,
);
const permissionsStateActionCreator = new PermissionsStateActionCreator(
interpreter,
globalActionsHub.permissionsStateActions,
telemetryEventHandler,
);
const debugToolsActionCreator = new DebugToolsActionCreator(
interpreter,
new DebugToolsController(browserAdapter),
);
issueFilingActionCreator.registerCallbacks();
actionCreator.registerCallbacks();
assessmentActionCreator.registerCallbacks();
registerUserConfigurationMessageCallback(interpreter, userConfigurationActionCreator);
scopingActionCreator.registerCallback();
featureFlagsActionCreator.registerCallbacks();
permissionsStateActionCreator.registerCallbacks();
debugToolsActionCreator.registerCallback();
const messageBroadcasterFactory = new BrowserMessageBroadcasterFactory(
browserAdapter,
logger,
);
const dispatcher = new StateDispatcher(
messageBroadcasterFactory.allTabsBroadcaster,
globalStoreHub,
logger,
);
dispatcher.initialize();
const assessmentChangeHandler = new CompletedTestStepTelemetryCreator(
globalStoreHub.assessmentStore,
assessmentsProvider,
telemetryDataFactory,
interpreter,
);
assessmentChangeHandler.initialize();
const browserPermissionTracker = new BrowserPermissionsTracker(
browserAdapter,
interpreter,
logger,
);
await browserPermissionTracker.initialize();
return new GlobalContext(
interpreter,
globalStoreHub,
featureFlagsController,
userConfigurationController,
);
}