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

#include "chrome/browser/ui/test/fullscreen_test_util.h"

#include "content/public/test/browser_test_utils.h"

namespace content {

void WaitForHTMLFullscreen(WebContents* web_contents) {
  WaitForLoadStop(web_contents);
  ASSERT_TRUE(EvalJs(web_contents, R"JS(
        (new Promise((resolve, reject) => {
          if (!!document.fullscreenElement) {
            resolve();
          } else {
            document.addEventListener(`fullscreenchange`,
              () => { if (!!document.fullscreenElement) resolve(); }
            );
            document.addEventListener(`fullscreenerror`, e => { reject(e); });
          }
        })))JS")
                  .is_ok());
}

void WaitForHTMLFullscreenExit(WebContents* web_contents) {
  WaitForLoadStop(web_contents);
  ASSERT_TRUE(EvalJs(web_contents, R"JS(
        (new Promise((resolve, reject) => {
          if (!document.fullscreenElement) {
            resolve();
          } else {
            document.addEventListener(`fullscreenchange`,
              () => { if (!document.fullscreenElement) resolve(); }
            );
            document.addEventListener(`fullscreenerror`, e => { reject(e); });
          }
        })))JS")
                  .is_ok());
}

}  // namespace content
