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 |