Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(68)

Side by Side Diff: content/renderer/renderer_blink_platform_impl.cc

Issue 685703002: Reland "Replace Chrome IPC with Mojo IPC for querying BatteryStatus service" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address Tim's comments. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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;
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
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) {
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
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(status);
1178 } 1192 }
1179 1193
1180 } // namespace content 1194 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/battery_status/battery_status_dispatcher.cc ('k') | content/renderer/shared_memory_seqlock_reader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698