| Index: content/renderer/renderer_webkitplatformsupport_impl.cc
|
| diff --git a/content/renderer/renderer_webkitplatformsupport_impl.cc b/content/renderer/renderer_webkitplatformsupport_impl.cc
|
| index 5f9d1761715de67710378faec4ca89b1844749ad..519b71a595d0e7be70958260fe895a85a8799508 100644
|
| --- a/content/renderer/renderer_webkitplatformsupport_impl.cc
|
| +++ b/content/renderer/renderer_webkitplatformsupport_impl.cc
|
| @@ -145,8 +145,8 @@ base::LazyInstance<blink::WebDeviceMotionData>::Leaky
|
| g_test_device_motion_data = LAZY_INSTANCE_INITIALIZER;
|
| base::LazyInstance<blink::WebDeviceOrientationData>::Leaky
|
| g_test_device_orientation_data = LAZY_INSTANCE_INITIALIZER;
|
| -base::LazyInstance<blink::WebScreenOrientationType>::Leaky
|
| - g_test_screen_orientation_value = LAZY_INSTANCE_INITIALIZER;
|
| +static blink::WebScreenOrientationListener*
|
| + g_test_screen_orientation_listener = NULL;
|
|
|
| //------------------------------------------------------------------------------
|
|
|
| @@ -1119,18 +1119,13 @@ void RendererWebKitPlatformSupportImpl::cancelVibration() {
|
|
|
| void RendererWebKitPlatformSupportImpl::setScreenOrientationListener(
|
| blink::WebScreenOrientationListener* listener) {
|
| - if (!(g_test_screen_orientation_value == 0)) {
|
| - if (!listener)
|
| - return;
|
| -
|
| - // When testing, we only pretend that the screen orientation is now set to
|
| - // g_test_screen_orientation_value.
|
| - base::MessageLoopProxy::current()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &blink::WebScreenOrientationListener::didChangeScreenOrientation,
|
| - base::Unretained(listener),
|
| - g_test_screen_orientation_value.Get()));
|
| + if (RenderThreadImpl::current() &&
|
| + RenderThreadImpl::current()->layout_test_mode()) {
|
| + // If we are in test mode, we want to fully disable the screen orientation
|
| + // backend in order to let Blink get tested properly, That means that screen
|
| + // orientation updates have to be done manually instead of from signals sent
|
| + // by the browser process.
|
| + g_test_screen_orientation_listener = listener;
|
| return;
|
| }
|
|
|
| @@ -1144,23 +1139,27 @@ void RendererWebKitPlatformSupportImpl::setScreenOrientationListener(
|
|
|
| void RendererWebKitPlatformSupportImpl::lockOrientation(
|
| blink::WebScreenOrientationLockType orientation) {
|
| - // No-op if we are currently using mock values.
|
| - if (!(g_test_screen_orientation_value == 0))
|
| + if (RenderThreadImpl::current() &&
|
| + RenderThreadImpl::current()->layout_test_mode()) {
|
| return;
|
| + }
|
| RenderThread::Get()->Send(new ScreenOrientationHostMsg_Lock(orientation));
|
| }
|
|
|
| void RendererWebKitPlatformSupportImpl::unlockOrientation() {
|
| - // No-op if we are currently using mock values.
|
| - if (!(g_test_screen_orientation_value == 0))
|
| + if (RenderThreadImpl::current() &&
|
| + RenderThreadImpl::current()->layout_test_mode()) {
|
| return;
|
| + }
|
| RenderThread::Get()->Send(new ScreenOrientationHostMsg_Unlock);
|
| }
|
|
|
| // static
|
| void RendererWebKitPlatformSupportImpl::SetMockScreenOrientationForTesting(
|
| blink::WebScreenOrientationType orientation) {
|
| - g_test_screen_orientation_value.Get() = orientation;
|
| + if (!g_test_screen_orientation_listener)
|
| + return;
|
| + g_test_screen_orientation_listener->didChangeScreenOrientation(orientation);
|
| }
|
|
|
| //------------------------------------------------------------------------------
|
|
|