#include "chrome/browser/ui/exclusive_access/exclusive_access_test.h"
#include <optional>
#include <utility>
#include <vector>
#include "base/command_line.h"
#include "base/containers/flat_set.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/run_loop.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/exclusive_access/exclusive_access_bubble.h"
#include "chrome/browser/ui/exclusive_access/exclusive_access_context.h"
#include "chrome/browser/ui/exclusive_access/exclusive_access_manager.h"
#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
#include "chrome/browser/ui/exclusive_access/keyboard_lock_controller.h"
#include "chrome/browser/ui/exclusive_access/pointer_lock_controller.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/input/native_web_keyboard_event.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_navigation_observer.h"
#include "exclusive_access_controller_base.h"
#include "exclusive_access_manager.h"
#include "exclusive_access_test.h"
#include "extensions/common/extension.h"
#include "third_party/blink/public/mojom/frame/fullscreen.mojom.h"
#include "ui/base/ui_base_features.h"
#include "ui/events/base_event_utils.h"
#include "ui/events/keycodes/dom/dom_code.h"
#include "ui/events/keycodes/keyboard_codes.h"
WebContents;
const char ExclusiveAccessTest::kFullscreenKeyboardLockHTML[] = …;
const char ExclusiveAccessTest::kFullscreenPointerLockHTML[] = …;
MockExclusiveAccessController::MockExclusiveAccessController(
ExclusiveAccessManager* manager)
: … { … }
MockExclusiveAccessController::~MockExclusiveAccessController() = default;
bool MockExclusiveAccessController::HandleUserPressedEscape() { … }
ExclusiveAccessTest::ExclusiveAccessTest() { … }
ExclusiveAccessTest::~ExclusiveAccessTest() = default;
void ExclusiveAccessTest::SetUpOnMainThread() { … }
void ExclusiveAccessTest::TearDownOnMainThread() { … }
bool ExclusiveAccessTest::IsBubbleDownloadNotification(
ExclusiveAccessBubble* bubble) { … }
bool ExclusiveAccessTest::RequestKeyboardLock(bool esc_key_locked) { … }
void ExclusiveAccessTest::RequestToLockPointer(bool user_gesture,
bool last_unlocked_by_target) { … }
void ExclusiveAccessTest::SetWebContentsGrantedSilentPointerLockPermission() { … }
FullscreenController* ExclusiveAccessTest::GetFullscreenController() { … }
ExclusiveAccessManager* ExclusiveAccessTest::GetExclusiveAccessManager() { … }
void ExclusiveAccessTest::CancelKeyboardLock() { … }
void ExclusiveAccessTest::LostPointerLock() { … }
bool ExclusiveAccessTest::SendEscapeToExclusiveAccessManager(bool is_key_down) { … }
bool ExclusiveAccessTest::IsFullscreenForBrowser() { … }
bool ExclusiveAccessTest::IsWindowFullscreenForTabOrPending() { … }
ExclusiveAccessBubbleType ExclusiveAccessTest::GetExclusiveAccessBubbleType() { … }
bool ExclusiveAccessTest::IsExclusiveAccessBubbleDisplayed() { … }
void ExclusiveAccessTest::GoBack() { … }
void ExclusiveAccessTest::Reload() { … }
void ExclusiveAccessTest::EnterActiveTabFullscreen() { … }
void ExclusiveAccessTest::WaitForTabFullscreenExit() { … }
void ExclusiveAccessTest::WaitAndVerifyFullscreenState(bool browser_fullscreen,
bool tab_fullscreen) { … }
void ExclusiveAccessTest::EnterExtensionInitiatedFullscreen() { … }
bool ExclusiveAccessTest::IsEscKeyHoldTimerRunning() { … }
void ExclusiveAccessTest::SetEscRepeatWindowLength(
base::TimeDelta esc_repeat_window) { … }
void ExclusiveAccessTest::SetEscRepeatThresholdReachedCallback(
base::OnceClosure callback) { … }
void ExclusiveAccessTest::SetEscRepeatTestTickClock(
const base::TickClock* tick_clock_for_test) { … }
void ExclusiveAccessTest::OnBubbleHidden(
std::vector<ExclusiveAccessBubbleHideReason>* reason_recorder,
ExclusiveAccessBubbleHideReason reason) { … }
void ExclusiveAccessTest::SetUserEscapeTimestampForTest(
const base::TimeTicks timestamp) { … }
void ExclusiveAccessTest::ExpectMockControllerReceivedEscape(int count) { … }