0
Files
android_webview
apps
ash
base
build
build_overrides
buildtools
cc
chrome
chromecast
chromeos
clank
codelabs
components
content
app
app_shim_remote_cocoa
browser
child
common
gpu
ppapi_plugin
public
renderer
services
shell
test
utility
web_test
browser
DEPS
OWNERS
devtools_protocol_test_bindings.cc
devtools_protocol_test_bindings.h
fake_bluetooth_chooser.cc
fake_bluetooth_chooser.h
fake_bluetooth_chooser_factory.cc
fake_bluetooth_chooser_factory.h
fake_bluetooth_delegate.cc
fake_bluetooth_delegate.h
leak_detector.cc
leak_detector.h
mojo_echo.cc
mojo_echo.h
mojo_optional_numerics_unittest.cc
mojo_optional_numerics_unittest.h
mojo_web_test_helper.cc
mojo_web_test_helper.h
test_info_extractor.cc
test_info_extractor.h
web_test_background_fetch_delegate.cc
web_test_background_fetch_delegate.h
web_test_bluetooth_adapter_provider.cc
web_test_bluetooth_adapter_provider.h
web_test_bluetooth_chooser_factory.cc
web_test_bluetooth_chooser_factory.h
web_test_bluetooth_fake_adapter_setter_impl.cc
web_test_bluetooth_fake_adapter_setter_impl.h
web_test_browser_context.cc
web_test_browser_context.h
web_test_browser_main_parts.cc
web_test_browser_main_parts.h
web_test_browser_main_platform_support.h
web_test_browser_main_platform_support_linux.cc
web_test_browser_main_platform_support_mac.mm
web_test_browser_main_platform_support_win.cc
web_test_browser_main_runner.cc
web_test_browser_main_runner.h
web_test_content_browser_client.cc
web_test_content_browser_client.h
web_test_control_host.cc
web_test_control_host.h
web_test_cookie_manager.cc
web_test_cookie_manager.h
web_test_device_posture_provider.cc
web_test_device_posture_provider.h
web_test_devtools_bindings.cc
web_test_devtools_bindings.h
web_test_download_manager_delegate.cc
web_test_download_manager_delegate.h
web_test_fedcm_manager.cc
web_test_fedcm_manager.h
web_test_first_device_bluetooth_chooser.cc
web_test_first_device_bluetooth_chooser.h
web_test_javascript_dialog_manager.cc
web_test_javascript_dialog_manager.h
web_test_origin_trial_throttle.cc
web_test_origin_trial_throttle.h
web_test_permission_manager.cc
web_test_permission_manager.h
web_test_pressure_manager.cc
web_test_pressure_manager.h
web_test_push_messaging_service.cc
web_test_push_messaging_service.h
web_test_sensor_provider_manager.cc
web_test_sensor_provider_manager.h
web_test_shell_platform_delegate.cc
web_test_shell_platform_delegate.h
web_test_shell_platform_delegate_aura.cc
web_test_shell_platform_delegate_ios.mm
web_test_shell_platform_delegate_mac.mm
web_test_shell_platform_delegate_views.cc
web_test_storage_access_manager.cc
web_test_storage_access_manager.h
web_test_tracing_controller.cc
web_test_tracing_controller.h
web_test_tts_platform.cc
web_test_tts_platform.h
common
renderer
BUILD.gn
DIR_METADATA
OWNERS
zygote
BUILD.gn
DEPS
DIR_METADATA
OWNERS
README.md
architecture.png
content_resources.grd
crypto
dbus
device
docs
extensions
fuchsia_web
gin
google_apis
gpu
headless
infra
internal
ios
ios_internal
ipc
media
mojo
native_client
native_client_sdk
net
pdf
ppapi
printing
remoting
rlz
sandbox
services
signing_keys
skia
sql
storage
styleguide
testing
third_party
tools
ui
url
v8
webkit
.clang-format
.clang-tidy
.clangd
.git-blame-ignore-revs
.gitallowed
.gitattributes
.gitignore
.gitmodules
.gn
.mailmap
.rustfmt.toml
.vpython3
.yapfignore
ATL_OWNERS
AUTHORS
BUILD.gn
CODE_OF_CONDUCT.md
CPPLINT.cfg
CRYPTO_OWNERS
DEPS
DIR_METADATA
LICENSE
LICENSE.chromium_os
OWNERS
PRESUBMIT.py
PRESUBMIT_test.py
PRESUBMIT_test_mocks.py
README.md
WATCHLISTS
codereview.settings
src/content/web_test/browser/web_test_javascript_dialog_manager.cc
Avi Drissman 4e1b7bc33d Update copyright headers in content/
The methodology used to generate this CL is documented in
https://crbug.com/1098010#c34.

No-Try: true
No-Presubmit: true
Bug: 1098010
Change-Id: I8c0f009d16350271f07d8e5e561085822cc9dd27
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3895935
Owners-Override: Avi Drissman <avi@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Auto-Submit: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1047456}
2022-09-15 14:03:50 +00:00

80 lines
2.6 KiB
C++

// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/web_test/browser/web_test_javascript_dialog_manager.h"
#include <utility>
#include "base/command_line.h"
#include "base/logging.h"
#include "base/strings/strcat.h"
#include "base/strings/utf_string_conversions.h"
#include "content/public/browser/web_contents.h"
#include "content/shell/browser/shell_javascript_dialog.h"
#include "content/shell/common/shell_switches.h"
#include "content/web_test/browser/web_test_control_host.h"
namespace content {
namespace {
bool DumpJavascriptDialog() {
WebTestControlHost* control_host = WebTestControlHost::Get();
return control_host->web_test_runtime_flags().dump_javascript_dialogs();
}
bool ShouldStayOnPageAfterHandlingBeforeUnload() {
WebTestControlHost* control_host = WebTestControlHost::Get();
return control_host->web_test_runtime_flags()
.stay_on_page_after_handling_before_unload();
}
} // namespace
WebTestJavaScriptDialogManager::WebTestJavaScriptDialogManager() = default;
WebTestJavaScriptDialogManager::~WebTestJavaScriptDialogManager() = default;
void WebTestJavaScriptDialogManager::RunJavaScriptDialog(
WebContents* web_contents,
RenderFrameHost* render_frame_host,
JavaScriptDialogType dialog_type,
const std::u16string& message_text,
const std::u16string& default_prompt_text,
DialogClosedCallback callback,
bool* did_suppress_message) {
if (DumpJavascriptDialog()) {
std::string message;
switch (dialog_type) {
case JAVASCRIPT_DIALOG_TYPE_ALERT:
message =
base::StrCat({"ALERT: ", base::UTF16ToUTF8(message_text), "\n"});
break;
case JAVASCRIPT_DIALOG_TYPE_CONFIRM:
message =
base::StrCat({"CONFIRM: ", base::UTF16ToUTF8(message_text), "\n"});
break;
case JAVASCRIPT_DIALOG_TYPE_PROMPT:
message = base::StrCat(
{"PROMPT: ", base::UTF16ToUTF8(message_text),
", default text: ", base::UTF16ToUTF8(default_prompt_text), "\n"});
break;
}
WebTestControlHost::Get()->printer()->AddMessageRaw(message);
}
std::move(callback).Run(true, std::u16string());
}
void WebTestJavaScriptDialogManager::RunBeforeUnloadDialog(
WebContents* web_contents,
RenderFrameHost* render_frame_host,
bool is_reload,
DialogClosedCallback callback) {
if (DumpJavascriptDialog())
WebTestControlHost::Get()->printer()->AddMessageRaw("CONFIRM NAVIGATION\n");
std::move(callback).Run(!ShouldStayOnPageAfterHandlingBeforeUnload(),
std::u16string());
}
} // namespace content