Chromium Code Reviews| Index: content/renderer/renderer_blink_platform_impl.cc |
| diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc |
| index 242a5950a3c6cca3b1b844a75efd806d3955dfcf..875abb0288e7b42ed7701aeebbf6745b43ddd7bd 100644 |
| --- a/content/renderer/renderer_blink_platform_impl.cc |
| +++ b/content/renderer/renderer_blink_platform_impl.cc |
| @@ -151,6 +151,9 @@ 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; |
| +// Set in startListening() when running layout tests, unset in stopListening(), |
| +// not owned by us. |
| +blink::WebBatteryStatusListener* g_test_battery_status_listener = nullptr; |
|
timvolodine
2014/10/28 18:59:28
i think this is approximately how it used to be im
ppi
2014/10/28 19:24:34
Acknowledged.
|
| } // namespace |
| @@ -1045,39 +1048,34 @@ RendererBlinkPlatformImpl::CreatePlatformEventObserverFromType( |
| // hardware changes. In order to make that happen, they will receive a null |
| // thread. |
| if (thread && RenderThreadImpl::current()->layout_test_mode()) |
| - thread = 0; |
| + thread = NULL; |
| switch (type) { |
| - case blink::WebPlatformEventDeviceMotion: { |
| - return new DeviceMotionEventPump(thread); |
| - } |
| - case blink::WebPlatformEventDeviceOrientation: { |
| - return new DeviceOrientationEventPump(thread); |
| - } |
| - case blink::WebPlatformEventDeviceLight: { |
| - return new DeviceLightEventPump(thread); |
| - } |
| - case blink::WebPlatformEventBattery: { |
| - return new BatteryStatusDispatcher(thread); |
| - } |
| - case blink::WebPlatformEventGamepad: |
| - return new GamepadSharedMemoryReader(thread); |
| - break; |
| - case blink::WebPlatformEventScreenOrientation: |
| - return new ScreenOrientationObserver(); |
| - default: |
| - // A default statement is required to prevent compilation errors when Blink |
| - // adds a new type. |
| - VLOG(1) << "RendererBlinkPlatformImpl::startListening() with " |
| - "unknown type."; |
| + case blink::WebPlatformEventDeviceMotion: |
| + return new DeviceMotionEventPump(thread); |
| + case blink::WebPlatformEventDeviceOrientation: |
| + return new DeviceOrientationEventPump(thread); |
| + case blink::WebPlatformEventDeviceLight: |
| + return new DeviceLightEventPump(thread); |
| + case blink::WebPlatformEventGamepad: |
| + return new GamepadSharedMemoryReader(thread); |
| + case blink::WebPlatformEventScreenOrientation: |
| + return new ScreenOrientationObserver(); |
| + default: |
| + // A default statement is required to prevent compilation errors when |
| + // Blink adds a new type. |
| + VLOG(1) << "RendererBlinkPlatformImpl::startListening() with " |
| + "unknown type."; |
| } |
| - return 0; |
| + return NULL; |
| } |
| void RendererBlinkPlatformImpl::SetPlatformEventObserverForTesting( |
| blink::WebPlatformEventType type, |
| scoped_ptr<PlatformEventObserverBase> observer) { |
| + DCHECK(type != blink::WebPlatformEventBattery); |
| + |
| if (platform_event_observers_.Lookup(type)) |
| platform_event_observers_.Remove(type); |
| platform_event_observers_.AddWithID(observer.release(), type); |
| @@ -1086,6 +1084,18 @@ void RendererBlinkPlatformImpl::SetPlatformEventObserverForTesting( |
| void RendererBlinkPlatformImpl::startListening( |
| blink::WebPlatformEventType type, |
| blink::WebPlatformEventListener* listener) { |
| + if (type == blink::WebPlatformEventBattery) { |
|
timvolodine
2014/10/28 18:59:28
this doesn't look like it will generalize very wel
ppi
2014/10/28 19:24:34
Ack. Let's figure something more general out once
|
| + if (RenderThreadImpl::current() && |
| + RenderThreadImpl::current()->layout_test_mode()) { |
| + g_test_battery_status_listener = |
| + static_cast<blink::WebBatteryStatusListener*>(listener); |
| + } else { |
| + battery_status_dispatcher_.reset(new BatteryStatusDispatcher( |
| + static_cast<blink::WebBatteryStatusListener*>(listener))); |
| + } |
| + return; |
| + } |
| + |
| PlatformEventObserverBase* observer = platform_event_observers_.Lookup(type); |
| if (!observer) { |
| observer = CreatePlatformEventObserverFromType(type); |
| @@ -1144,6 +1154,12 @@ void RendererBlinkPlatformImpl::SendFakeDeviceEventDataForTesting( |
| void RendererBlinkPlatformImpl::stopListening( |
| blink::WebPlatformEventType type) { |
| + if (type == blink::WebPlatformEventBattery) { |
| + g_test_battery_status_listener = nullptr; |
| + battery_status_dispatcher_.reset(); |
| + return; |
| + } |
| + |
| PlatformEventObserverBase* observer = platform_event_observers_.Lookup(type); |
| if (!observer) |
| return; |
| @@ -1170,11 +1186,10 @@ void RendererBlinkPlatformImpl::queryStorageUsageAndQuota( |
| void RendererBlinkPlatformImpl::MockBatteryStatusChangedForTesting( |
| const blink::WebBatteryStatus& status) { |
| - PlatformEventObserverBase* observer = |
| - platform_event_observers_.Lookup(blink::WebPlatformEventBattery); |
| - if (!observer) |
| + if (!g_test_battery_status_listener) |
| return; |
| - observer->SendFakeDataForTesting((void*)&status); |
| + g_test_battery_status_listener->updateBatteryStatus( |
| + *static_cast<const blink::WebBatteryStatus*>(&status)); |
|
timvolodine
2014/10/28 18:59:28
do you really need a static_cast here?
ppi
2014/10/28 19:24:34
Done.
|
| } |
| } // namespace content |