android_webview
apps
ash
base
build
build_overrides
buildtools
cc
chrome
chromecast
chromeos
cloud_print
codelabs
components
content
app
app_shim_remote_cocoa
browser
accessibility
android
appcache
audio
background_fetch
background_sync
blob_storage
bluetooth
broadcast_channel
browser_plugin
browsing_data
buckets
cache_storage
client_hints
cocoa
code_cache
compositor
contacts
content_index
conversions
cookie_store
device
device_sensors
devtools
direct_sockets
display_cutout
dom_storage
download
federated_learning
file_system
file_system_access
font_access
font_unique_name_lookup
generic_sensor
geolocation
gpu
hid
hyphenation
idle
image_capture
indexed_db
installedapp
keyboard_lock
loader
locks
manifest
media
media_session
memory
native_io
net
notifications
origin_trials
payments
permissions
picture_in_picture
portal
prerender
presentation
process_internals
push_messaging
quota
renderer_host
resources
scheduler
screen_enumeration
screen_orientation
screenlock_monitor
serial
service_worker
shape_detection
sms
speech
ssl
tracing
wake_lock
web_contents
web_database
web_package
webauth
webid
webrtc
websockets
webtransport
webui
worker_host
xr
zygote_host
BUILD.gn
DEPS
OWNERS
PRESUBMIT.py
SITE_ISOLATION_OWNERS
about_url_loader_factory.cc
about_url_loader_factory.h
after_startup_task_utils.cc
after_startup_task_utils.h
back_forward_cache_browsertest.cc
bad_message.cc
bad_message.h
battery_monitor_browsertest.cc
bookmarklet_browsertest.cc
browser_associated_interface_unittest.cc
browser_child_process_host_impl.cc
browser_child_process_host_impl.h
browser_child_process_host_impl_receiver_bindings.cc
browser_context.cc
browser_interface_binders.cc
browser_interface_binders.h
browser_interface_broker_impl.h
browser_main.cc
browser_main.h
browser_main_loop.cc
browser_main_loop.h
browser_main_loop_unittest.cc
browser_main_runner_impl.cc
browser_main_runner_impl.h
browser_process_sub_thread.cc
browser_process_sub_thread.h
browser_thread_browsertest.cc
browser_thread_impl.cc
browser_thread_impl.h
browser_thread_unittest.cc
browser_url_handler_impl.cc
browser_url_handler_impl.h
browser_url_handler_impl_unittest.cc
browsing_instance.cc
browsing_instance.h
byte_stream.cc
byte_stream.h
byte_stream_unittest.cc
can_commit_status.h
child_process_launcher.cc
child_process_launcher.h
child_process_launcher_browsertest.cc
child_process_launcher_helper.cc
child_process_launcher_helper.h
child_process_launcher_helper_android.cc
child_process_launcher_helper_fuchsia.cc
child_process_launcher_helper_linux.cc
child_process_launcher_helper_mac.cc
child_process_launcher_helper_posix.cc
child_process_launcher_helper_posix.h
child_process_launcher_helper_win.cc
child_process_security_policy_browsertest.cc
child_process_security_policy_impl.cc
child_process_security_policy_impl.h
child_process_security_policy_unittest.cc
child_process_task_port_provider_mac.cc
child_process_task_port_provider_mac.h
child_process_task_port_provider_mac_unittest.cc
context_factory.cc
coop_coep_cross_origin_isolated_info.cc
coop_coep_cross_origin_isolated_info.h
cross_origin_opener_policy_browsertest.cc
cross_site_transfer_browsertest.cc
data_decoder_browsertest.cc
data_url_loader_factory.cc
data_url_loader_factory.h
database_browsertest.cc
do_not_track_browsertest.cc
eye_dropper_chooser_impl.cc
eye_dropper_chooser_impl.h
feature_observer.cc
feature_observer.h
field_trial_recorder.cc
field_trial_recorder.h
field_trial_synchronizer.cc
field_trial_synchronizer.h
find_in_page_client.cc
find_in_page_client.h
find_request_manager.cc
find_request_manager.h
find_request_manager_browsertest.cc
font_list_async.cc
font_service.cc
font_service.h
form_controls_browsertest.cc
gpu_data_manager_visual_proxy_ozone_linux.cc
gpu_data_manager_visual_proxy_ozone_linux.h
histogram_controller.cc
histogram_controller.h
histogram_subscriber.h
histogram_synchronizer.cc
histogram_synchronizer.h
histograms_internals_ui.cc
histograms_internals_ui.h
host_zoom_level_context.cc
host_zoom_level_context.h
host_zoom_map_impl.cc
host_zoom_map_impl.h
host_zoom_map_impl_browsertest.cc
host_zoom_map_impl_unittest.cc
initiator_csp_context.cc
initiator_csp_context.h
isolated_origin_browsertest.cc
isolated_origin_util.cc
isolated_origin_util.h
isolation_context.cc
isolation_context.h
keyboard_lock_browsertest.cc
keyboard_lock_browsertest.h
keyboard_lock_browsertest_mac.mm
launch_as_mojo_client_browsertest.cc
log_console_message.cc
log_console_message.h
message_port_provider.cc
message_port_provider_browsertest.cc
mime_registry_impl.cc
mime_registry_impl.h
mojo_binder_policy_applier.cc
mojo_binder_policy_applier.h
mojo_binder_policy_applier_unittest.cc
mojo_binder_policy_map_impl.cc
mojo_binder_policy_map_impl.h
mojo_binder_policy_map_impl_unittest.cc
mojo_sandbox_browsertest.cc
navigation_browsertest.cc
navigation_mhtml_browsertest.cc
navigation_subresource_loader_params.cc
navigation_subresource_loader_params.h
net_info_browsertest.cc
network_context_client_base_impl.cc
network_context_client_base_impl.h
network_context_client_base_impl_unittest.cc
network_service_browsertest.cc
network_service_client.cc
network_service_client.h
network_service_instance_impl.cc
network_service_instance_impl.h
network_service_restart_browsertest.cc
notification_service_impl.cc
notification_service_impl.h
notification_service_impl_unittest.cc
performance_memory_browsertest.cc
plugin_list.cc
plugin_list.h
plugin_list_unittest.cc
plugin_private_storage_helper.cc
plugin_private_storage_helper.h
plugin_service_impl.cc
plugin_service_impl.h
plugin_service_impl_browsertest.cc
pointer_lock_browsertest.cc
pointer_lock_browsertest.h
pointer_lock_browsertest_mac.mm
posix_file_descriptor_info_impl.cc
posix_file_descriptor_info_impl.h
posix_file_descriptor_info_impl_unittest.cc
power_monitor_browsertest.cc
ppapi_plugin_process_host.cc
ppapi_plugin_process_host.h
ppapi_plugin_process_host_receiver_bindings.cc
resource_context_impl.cc
resource_context_impl.h
resource_coordinator_service.cc
resource_loading_browsertest.cc
sandbox_host_linux.cc
sandbox_host_linux.h
sandbox_ipc_linux.cc
sandbox_ipc_linux.h
sandbox_mac_unittest.mm
sandbox_parameters_mac.h
sandbox_parameters_mac.mm
sandbox_support_mac_impl.h
sandbox_support_mac_impl.mm
scoped_active_url.cc
scoped_active_url.h
security_exploit_browsertest.cc
service_process_host_browsertest.cc
service_process_host_impl.cc
service_sandbox_type.h
session_history_browsertest.cc
shareable_file_reference_unittest.cc
site_instance_impl.cc
site_instance_impl.h
site_instance_impl_unittest.cc
site_per_process_browsertest.cc
site_per_process_browsertest.h
site_per_process_hit_test_browsertest.cc
site_per_process_mac_browsertest.mm
site_per_process_unload_browsertest.cc
snapshot_browsertest.cc
ssl_private_key_impl.cc
ssl_private_key_impl.h
startup_data_impl.cc
startup_data_impl.h
startup_helper.cc
startup_helper.h
startup_task_runner.cc
startup_task_runner.h
startup_task_runner_unittest.cc
storage_partition_impl.cc
storage_partition_impl.h
storage_partition_impl_browsertest.cc
storage_partition_impl_map.cc
storage_partition_impl_map.h
storage_partition_impl_map_unittest.cc
storage_partition_impl_unittest.cc
storage_service_restart_browsertest.cc
storage_service_sandbox_browsertest.cc
text_fragment_browsertest.cc
theme_helper.cc
theme_helper.h
theme_helper_mac.h
theme_helper_mac.mm
ukm_internals_ui.cc
ukm_internals_ui.h
url_loader_factory_getter.cc
url_loader_factory_getter.h
url_loader_factory_params_helper.cc
url_loader_factory_params_helper.h
utility_process_host.cc
utility_process_host.h
utility_process_host_browsertest.cc
utility_process_host_receiver_bindings.cc
utility_process_sandbox_browsertest.cc
utility_sandbox_delegate.cc
utility_sandbox_delegate.h
utility_sandbox_delegate_win.cc
v8_snapshot_files.cc
v8_snapshot_files.h
vibration_browsertest.cc
video_capture_service.cc
web_contents_receiver_set_browsertest.cc
webkit_browsertest.cc
worker_network_isolation_key_browsertest.cc
zoom_browsertest.cc
child
common
gpu
ppapi_plugin
public
renderer
services
shell
test
utility
web_test
zygote
BUILD.gn
DEPS
DIR_METADATA
OWNERS
README.md
content_resources.grd
dev_ui_content_resources.grd
courgette
crypto
dbus
device
docs
extensions
fuchsia
gin
google_apis
google_update
gpu
headless
infra
ios
ipc
jingle
media
mojo
native_client_sdk
net
pdf
ppapi
printing
remoting
rlz
sandbox
services
skia
sql
storage
styleguide
testing
third_party
tools
ui
url
weblayer
.clang-format
.clang-tidy
.eslintrc.js
.git-blame-ignore-revs
.gitattributes
.gitignore
.gn
.vpython
.vpython3
.yapfignore
AUTHORS
BUILD.gn
CODE_OF_CONDUCT.md
DEPS
DIR_METADATA
ENG_REVIEW_OWNERS
LICENSE
LICENSE.chromium_os
OWNERS
PRESUBMIT.py
PRESUBMIT_test.py
PRESUBMIT_test_mocks.py
README.md
WATCHLISTS
codereview.settings

R=dcheng@chromium.org NOPRESUBMIT=true TBR= NOTRY=true Change-Id: I93bc6a9360997fae7adeab8c01f56e08fc025dd2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2523543 Commit-Queue: danakj <danakj@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: danakj <danakj@chromium.org> Cr-Commit-Position: refs/heads/master@{#826289}
88 lines
2.8 KiB
C++
88 lines
2.8 KiB
C++
// Copyright 2017 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include <utility>
|
|
|
|
#include "base/bind.h"
|
|
#include "base/callback_helpers.h"
|
|
#include "base/macros.h"
|
|
#include "base/run_loop.h"
|
|
#include "base/strings/string_number_conversions.h"
|
|
#include "content/browser/browser_interface_binders.h"
|
|
#include "content/public/browser/render_frame_host.h"
|
|
#include "content/public/browser/web_contents.h"
|
|
#include "content/public/test/browser_test.h"
|
|
#include "content/public/test/browser_test_utils.h"
|
|
#include "content/public/test/content_browser_test.h"
|
|
#include "content/public/test/content_browser_test_utils.h"
|
|
#include "content/shell/browser/shell.h"
|
|
#include "mojo/public/cpp/bindings/receiver.h"
|
|
#include "services/device/public/mojom/vibration_manager.mojom.h"
|
|
|
|
namespace content {
|
|
|
|
namespace {
|
|
|
|
class VibrationTest : public ContentBrowserTest,
|
|
public device::mojom::VibrationManager {
|
|
public:
|
|
VibrationTest() {
|
|
OverrideVibrationManagerBinderForTesting(base::BindRepeating(
|
|
&VibrationTest::BindVibrationManager, base::Unretained(this)));
|
|
}
|
|
|
|
~VibrationTest() override {
|
|
OverrideVibrationManagerBinderForTesting(base::NullCallback());
|
|
}
|
|
|
|
void BindVibrationManager(
|
|
mojo::PendingReceiver<device::mojom::VibrationManager> receiver) {
|
|
receiver_.Bind(std::move(receiver));
|
|
}
|
|
|
|
protected:
|
|
bool TriggerVibrate(int duration, base::OnceClosure vibrate_done) {
|
|
vibrate_done_ = std::move(vibrate_done);
|
|
|
|
bool result;
|
|
RenderFrameHost* frame = shell()->web_contents()->GetMainFrame();
|
|
std::string script = "domAutomationController.send(navigator.vibrate(" +
|
|
base::NumberToString(duration) + "))";
|
|
EXPECT_TRUE(ExecuteScriptAndExtractBool(frame, script, &result));
|
|
return result;
|
|
}
|
|
|
|
int64_t vibrate_milliseconds() { return vibrate_milliseconds_; }
|
|
|
|
private:
|
|
// device::mojom::VibrationManager:
|
|
void Vibrate(int64_t milliseconds, VibrateCallback callback) override {
|
|
vibrate_milliseconds_ = milliseconds;
|
|
std::move(callback).Run();
|
|
std::move(vibrate_done_).Run();
|
|
}
|
|
void Cancel(CancelCallback callback) override { std::move(callback).Run(); }
|
|
|
|
int64_t vibrate_milliseconds_ = -1;
|
|
base::OnceClosure vibrate_done_;
|
|
mojo::Receiver<device::mojom::VibrationManager> receiver_{this};
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(VibrationTest);
|
|
};
|
|
|
|
IN_PROC_BROWSER_TEST_F(VibrationTest, Vibrate) {
|
|
ASSERT_EQ(-1, vibrate_milliseconds());
|
|
|
|
ASSERT_TRUE(NavigateToURL(shell(), GetTestUrl(".", "simple_page.html")));
|
|
base::RunLoop run_loop;
|
|
ASSERT_TRUE(TriggerVibrate(1234, run_loop.QuitClosure()));
|
|
run_loop.Run();
|
|
|
|
ASSERT_EQ(1234, vibrate_milliseconds());
|
|
}
|
|
|
|
} // namespace
|
|
|
|
} // namespace content
|