chromium/chrome/browser/resources/chromeos/accessibility/chromevox/background/event_source.js

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/**
 * @fileoverview Tracks event sources.
 */
import {BridgeHelper} from '/common/bridge_helper.js';
import {TestImportManager} from '/common/testing/test_import_manager.js';

import {BridgeConstants} from '../common/bridge_constants.js';
import {EventSourceType} from '../common/event_source_type.js';

export class EventSource {
  constructor() {
    /** @private {!EventSourceType} */
    this.state_ = chrome.accessibilityPrivate.IS_DEFAULT_EVENT_SOURCE_TOUCH ?
        EventSourceType.TOUCH_GESTURE :
        EventSourceType.NONE;
  }

  static init() {
    EventSource.instance = new EventSource();

    BridgeHelper.registerHandler(
        BridgeConstants.EventSource.TARGET,
        BridgeConstants.EventSource.Action.GET, () => EventSource.get());
  }

  /** @param {!EventSourceType} source */
  static set(source) {
    EventSource.instance.state_ = source;
  }

  /** @return {!EventSourceType} */
  static get() {
    return EventSource.instance.state_;
  }
}

TestImportManager.exportForTesting(EventSource);