chromium/tools/visual_debugger/thread.js

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

// Represents a thread making a debug call to
// the visual debugger.
//
class Thread {
    // Keeps track of all threads that debug calls came in from
    // while the app is running.
    static registered_threads = {};

    constructor(json) {
      this.threadName_ = json.thread_name;
      // Calls from each thread is enabled by default.
      this.enabled_ = true;
      // Thread color overriding filter colors is disabled by default.
      this.overrideFilters_ = false;
      this.drawColor_ = '#000000';
      this.fillAlpha_ = "10";

      // Add new thread to a pool of thread objects.
      Thread.registered_threads[this.threadName_] = this;

      // Create thread filter chip.
      const threadChip = createThreadChip(this);
      const threadFilters = document.querySelector('#threads');
      threadFilters.appendChild(threadChip);
    }

    static isThreadRegistered(threadName) {
      // If thread already registered, return true.
      return (threadName in Thread.registered_threads);
    }

    static getThread(threadName) {
        return Thread.registered_threads[threadName];
    }

    toggleEnableThread() {
      this.enabled_ = !this.enabled_;
    }
  }