Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/renderer_blink_platform_impl.h" | 5 #include "content/renderer/renderer_blink_platform_impl.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 144 namespace content { | 144 namespace content { |
| 145 | 145 |
| 146 namespace { | 146 namespace { |
| 147 | 147 |
| 148 bool g_sandbox_enabled = true; | 148 bool g_sandbox_enabled = true; |
| 149 double g_test_device_light_data = -1; | 149 double g_test_device_light_data = -1; |
| 150 base::LazyInstance<blink::WebDeviceMotionData>::Leaky | 150 base::LazyInstance<blink::WebDeviceMotionData>::Leaky |
| 151 g_test_device_motion_data = LAZY_INSTANCE_INITIALIZER; | 151 g_test_device_motion_data = LAZY_INSTANCE_INITIALIZER; |
| 152 base::LazyInstance<blink::WebDeviceOrientationData>::Leaky | 152 base::LazyInstance<blink::WebDeviceOrientationData>::Leaky |
| 153 g_test_device_orientation_data = LAZY_INSTANCE_INITIALIZER; | 153 g_test_device_orientation_data = LAZY_INSTANCE_INITIALIZER; |
| 154 // Set in startListening() when running layout tests, unset in stopListening(), | |
| 155 // not owned by us. | |
| 156 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.
| |
| 154 | 157 |
| 155 } // namespace | 158 } // namespace |
| 156 | 159 |
| 157 //------------------------------------------------------------------------------ | 160 //------------------------------------------------------------------------------ |
| 158 | 161 |
| 159 class RendererBlinkPlatformImpl::MimeRegistry | 162 class RendererBlinkPlatformImpl::MimeRegistry |
| 160 : public SimpleWebMimeRegistryImpl { | 163 : public SimpleWebMimeRegistryImpl { |
| 161 public: | 164 public: |
| 162 virtual blink::WebMimeRegistry::SupportsType supportsMediaMIMEType( | 165 virtual blink::WebMimeRegistry::SupportsType supportsMediaMIMEType( |
| 163 const blink::WebString& mime_type, | 166 const blink::WebString& mime_type, |
| (...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1038 // static | 1041 // static |
| 1039 PlatformEventObserverBase* | 1042 PlatformEventObserverBase* |
| 1040 RendererBlinkPlatformImpl::CreatePlatformEventObserverFromType( | 1043 RendererBlinkPlatformImpl::CreatePlatformEventObserverFromType( |
| 1041 blink::WebPlatformEventType type) { | 1044 blink::WebPlatformEventType type) { |
| 1042 RenderThread* thread = RenderThreadImpl::current(); | 1045 RenderThread* thread = RenderThreadImpl::current(); |
| 1043 | 1046 |
| 1044 // When running layout tests, those observers should not listen to the actual | 1047 // When running layout tests, those observers should not listen to the actual |
| 1045 // hardware changes. In order to make that happen, they will receive a null | 1048 // hardware changes. In order to make that happen, they will receive a null |
| 1046 // thread. | 1049 // thread. |
| 1047 if (thread && RenderThreadImpl::current()->layout_test_mode()) | 1050 if (thread && RenderThreadImpl::current()->layout_test_mode()) |
| 1048 thread = 0; | 1051 thread = NULL; |
| 1049 | 1052 |
| 1050 switch (type) { | 1053 switch (type) { |
| 1051 case blink::WebPlatformEventDeviceMotion: { | 1054 case blink::WebPlatformEventDeviceMotion: |
| 1052 return new DeviceMotionEventPump(thread); | 1055 return new DeviceMotionEventPump(thread); |
| 1053 } | 1056 case blink::WebPlatformEventDeviceOrientation: |
| 1054 case blink::WebPlatformEventDeviceOrientation: { | 1057 return new DeviceOrientationEventPump(thread); |
| 1055 return new DeviceOrientationEventPump(thread); | 1058 case blink::WebPlatformEventDeviceLight: |
| 1056 } | 1059 return new DeviceLightEventPump(thread); |
| 1057 case blink::WebPlatformEventDeviceLight: { | 1060 case blink::WebPlatformEventGamepad: |
| 1058 return new DeviceLightEventPump(thread); | 1061 return new GamepadSharedMemoryReader(thread); |
| 1059 } | 1062 case blink::WebPlatformEventScreenOrientation: |
| 1060 case blink::WebPlatformEventBattery: { | 1063 return new ScreenOrientationObserver(); |
| 1061 return new BatteryStatusDispatcher(thread); | 1064 default: |
| 1062 } | 1065 // A default statement is required to prevent compilation errors when |
| 1063 case blink::WebPlatformEventGamepad: | 1066 // Blink adds a new type. |
| 1064 return new GamepadSharedMemoryReader(thread); | 1067 VLOG(1) << "RendererBlinkPlatformImpl::startListening() with " |
| 1065 break; | 1068 "unknown type."; |
| 1066 case blink::WebPlatformEventScreenOrientation: | |
| 1067 return new ScreenOrientationObserver(); | |
| 1068 default: | |
| 1069 // A default statement is required to prevent compilation errors when Blink | |
| 1070 // adds a new type. | |
| 1071 VLOG(1) << "RendererBlinkPlatformImpl::startListening() with " | |
| 1072 "unknown type."; | |
| 1073 } | 1069 } |
| 1074 | 1070 |
| 1075 return 0; | 1071 return NULL; |
| 1076 } | 1072 } |
| 1077 | 1073 |
| 1078 void RendererBlinkPlatformImpl::SetPlatformEventObserverForTesting( | 1074 void RendererBlinkPlatformImpl::SetPlatformEventObserverForTesting( |
| 1079 blink::WebPlatformEventType type, | 1075 blink::WebPlatformEventType type, |
| 1080 scoped_ptr<PlatformEventObserverBase> observer) { | 1076 scoped_ptr<PlatformEventObserverBase> observer) { |
| 1077 DCHECK(type != blink::WebPlatformEventBattery); | |
| 1078 | |
| 1081 if (platform_event_observers_.Lookup(type)) | 1079 if (platform_event_observers_.Lookup(type)) |
| 1082 platform_event_observers_.Remove(type); | 1080 platform_event_observers_.Remove(type); |
| 1083 platform_event_observers_.AddWithID(observer.release(), type); | 1081 platform_event_observers_.AddWithID(observer.release(), type); |
| 1084 } | 1082 } |
| 1085 | 1083 |
| 1086 void RendererBlinkPlatformImpl::startListening( | 1084 void RendererBlinkPlatformImpl::startListening( |
| 1087 blink::WebPlatformEventType type, | 1085 blink::WebPlatformEventType type, |
| 1088 blink::WebPlatformEventListener* listener) { | 1086 blink::WebPlatformEventListener* listener) { |
| 1087 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
| |
| 1088 if (RenderThreadImpl::current() && | |
| 1089 RenderThreadImpl::current()->layout_test_mode()) { | |
| 1090 g_test_battery_status_listener = | |
| 1091 static_cast<blink::WebBatteryStatusListener*>(listener); | |
| 1092 } else { | |
| 1093 battery_status_dispatcher_.reset(new BatteryStatusDispatcher( | |
| 1094 static_cast<blink::WebBatteryStatusListener*>(listener))); | |
| 1095 } | |
| 1096 return; | |
| 1097 } | |
| 1098 | |
| 1089 PlatformEventObserverBase* observer = platform_event_observers_.Lookup(type); | 1099 PlatformEventObserverBase* observer = platform_event_observers_.Lookup(type); |
| 1090 if (!observer) { | 1100 if (!observer) { |
| 1091 observer = CreatePlatformEventObserverFromType(type); | 1101 observer = CreatePlatformEventObserverFromType(type); |
| 1092 if (!observer) | 1102 if (!observer) |
| 1093 return; | 1103 return; |
| 1094 platform_event_observers_.AddWithID(observer, static_cast<int32>(type)); | 1104 platform_event_observers_.AddWithID(observer, static_cast<int32>(type)); |
| 1095 } | 1105 } |
| 1096 observer->Start(listener); | 1106 observer->Start(listener); |
| 1097 | 1107 |
| 1098 // Device events (motion, orientation and light) expect to get an event fired | 1108 // Device events (motion, orientation and light) expect to get an event fired |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1137 return; | 1147 return; |
| 1138 | 1148 |
| 1139 base::MessageLoopProxy::current()->PostTask( | 1149 base::MessageLoopProxy::current()->PostTask( |
| 1140 FROM_HERE, | 1150 FROM_HERE, |
| 1141 base::Bind(&PlatformEventObserverBase::SendFakeDataForTesting, | 1151 base::Bind(&PlatformEventObserverBase::SendFakeDataForTesting, |
| 1142 base::Unretained(observer), data)); | 1152 base::Unretained(observer), data)); |
| 1143 } | 1153 } |
| 1144 | 1154 |
| 1145 void RendererBlinkPlatformImpl::stopListening( | 1155 void RendererBlinkPlatformImpl::stopListening( |
| 1146 blink::WebPlatformEventType type) { | 1156 blink::WebPlatformEventType type) { |
| 1157 if (type == blink::WebPlatformEventBattery) { | |
| 1158 g_test_battery_status_listener = nullptr; | |
| 1159 battery_status_dispatcher_.reset(); | |
| 1160 return; | |
| 1161 } | |
| 1162 | |
| 1147 PlatformEventObserverBase* observer = platform_event_observers_.Lookup(type); | 1163 PlatformEventObserverBase* observer = platform_event_observers_.Lookup(type); |
| 1148 if (!observer) | 1164 if (!observer) |
| 1149 return; | 1165 return; |
| 1150 observer->Stop(); | 1166 observer->Stop(); |
| 1151 } | 1167 } |
| 1152 | 1168 |
| 1153 //------------------------------------------------------------------------------ | 1169 //------------------------------------------------------------------------------ |
| 1154 | 1170 |
| 1155 void RendererBlinkPlatformImpl::queryStorageUsageAndQuota( | 1171 void RendererBlinkPlatformImpl::queryStorageUsageAndQuota( |
| 1156 const blink::WebURL& storage_partition, | 1172 const blink::WebURL& storage_partition, |
| 1157 blink::WebStorageQuotaType type, | 1173 blink::WebStorageQuotaType type, |
| 1158 blink::WebStorageQuotaCallbacks callbacks) { | 1174 blink::WebStorageQuotaCallbacks callbacks) { |
| 1159 if (!thread_safe_sender_.get() || !quota_message_filter_.get()) | 1175 if (!thread_safe_sender_.get() || !quota_message_filter_.get()) |
| 1160 return; | 1176 return; |
| 1161 QuotaDispatcher::ThreadSpecificInstance(thread_safe_sender_.get(), | 1177 QuotaDispatcher::ThreadSpecificInstance(thread_safe_sender_.get(), |
| 1162 quota_message_filter_.get()) | 1178 quota_message_filter_.get()) |
| 1163 ->QueryStorageUsageAndQuota( | 1179 ->QueryStorageUsageAndQuota( |
| 1164 storage_partition, | 1180 storage_partition, |
| 1165 static_cast<storage::StorageType>(type), | 1181 static_cast<storage::StorageType>(type), |
| 1166 QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(callbacks)); | 1182 QuotaDispatcher::CreateWebStorageQuotaCallbacksWrapper(callbacks)); |
| 1167 } | 1183 } |
| 1168 | 1184 |
| 1169 //------------------------------------------------------------------------------ | 1185 //------------------------------------------------------------------------------ |
| 1170 | 1186 |
| 1171 void RendererBlinkPlatformImpl::MockBatteryStatusChangedForTesting( | 1187 void RendererBlinkPlatformImpl::MockBatteryStatusChangedForTesting( |
| 1172 const blink::WebBatteryStatus& status) { | 1188 const blink::WebBatteryStatus& status) { |
| 1173 PlatformEventObserverBase* observer = | 1189 if (!g_test_battery_status_listener) |
| 1174 platform_event_observers_.Lookup(blink::WebPlatformEventBattery); | |
| 1175 if (!observer) | |
| 1176 return; | 1190 return; |
| 1177 observer->SendFakeDataForTesting((void*)&status); | 1191 g_test_battery_status_listener->updateBatteryStatus( |
| 1192 *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.
| |
| 1178 } | 1193 } |
| 1179 | 1194 |
| 1180 } // namespace content | 1195 } // namespace content |
| OLD | NEW |