chromium/chrome/browser/controlled_frame/scoped_test_driver_proxy.h

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

#ifndef CHROME_BROWSER_CONTROLLED_FRAME_SCOPED_TEST_DRIVER_PROXY_H_
#define CHROME_BROWSER_CONTROLLED_FRAME_SCOPED_TEST_DRIVER_PROXY_H_

#include "base/memory/raw_ptr.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_devtools_protocol_client.h"

namespace content {
class DOMMessageQueue;
class RenderFrameHost;
}  // namespace content

namespace controlled_frame {

// Listens to the given RenderFrameHost for messages corresponding to
// testdriver.js actions. These messages come from the Javascript returned by
// `testdriver_override_script_src()`, which should be injected in the page
// being tested.
//
// This is essentially a third partial implementation of testdriver.js, the
// first two being Chromedriver and the Blink internals object used in Web
// Tests. See //third_party/blink/web_tests/resources/testdriver-vendor.js.
//
// This is needed because neither of the aforementioned testdriver.js
// implementations are available to //chrome browser tests. This class should
// be removed when IWAs are natively supported in the WPT infrastructure, but
// this is the simplest way to use testdriver.js until that is done. If this
// class ends up implementing a significant portion of the testdriver.js API,
// consider refactoring the Blink internals implementation so it can be
// exposed to //chrome browser tests.
class ScopedTestDriverProxy {};

}  // namespace controlled_frame

#endif  // CHROME_BROWSER_CONTROLLED_FRAME_SCOPED_TEST_DRIVER_PROXY_H_