/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef nsAHtml5TreeOpSink_h
#define nsAHtml5TreeOpSink_h

#include "nsTArrayForwardDeclare.h"

class nsHtml5TreeOperation;

/**
 * The purpose of this interface is to connect a tree op executor
 * (main-thread case), a tree op stage (non-speculative off-the-main-thread
 * case) or a speculation (speculative case).
 */
class nsAHtml5TreeOpSink {
 public:
  /**
   * Flush the operations from the tree operations from the argument
   * queue into this sink unconditionally.
   *
   * Returns `true` on success and `false` on OOM.
   */
  [[nodiscard]] virtual bool MoveOpsFrom(
      nsTArray<nsHtml5TreeOperation>& aOpQueue) = 0;
};

#endif /* nsAHtml5TreeOpSink_h */
