Index: third_party/WebKit/Source/modules/sensor/Sensor.h |
diff --git a/third_party/WebKit/Source/modules/sensor/Sensor.h b/third_party/WebKit/Source/modules/sensor/Sensor.h |
index 5e37b2d3455d5056c4e45d7c08bf3297ca33b843..a0fab4e560099e29e6e80d8029aaaf66a579439e 100644 |
--- a/third_party/WebKit/Source/modules/sensor/Sensor.h |
+++ b/third_party/WebKit/Source/modules/sensor/Sensor.h |
@@ -10,10 +10,11 @@ |
#include "core/dom/ActiveDOMObject.h" |
#include "core/dom/ContextLifecycleObserver.h" |
#include "core/frame/PlatformEventController.h" |
+#include "core/page/PageVisibilityObserver.h" |
#include "modules/EventTargetModules.h" |
#include "modules/ModulesExport.h" |
#include "modules/sensor/SensorOptions.h" |
-#include "modules/sensor/SensorState.h" |
+#include "modules/sensor/SensorProxy.h" |
#include "platform/heap/Handle.h" |
namespace blink { |
@@ -21,23 +22,32 @@ namespace blink { |
class ExceptionState; |
class ScriptState; |
class SensorReading; |
+class SensorPollingStrategy; |
class MODULES_EXPORT Sensor |
: public EventTargetWithInlineData |
, public ActiveScriptWrappable |
, public ActiveDOMObject |
- , public PlatformEventController { |
timvolodine
2016/08/25 17:52:32
can we actually re-use the PlatformEventController
Mikhail
2016/08/26 16:42:41
PageVisibilityObserver is more convenient as we ha
timvolodine
2016/09/01 19:02:05
in the PlatformEventController we have a special m
Mikhail
2016/09/02 08:23:43
Yes. According to the spec (https://w3c.github.io/
|
+ , public PageVisibilityObserver |
+ , public SensorProxy::Observer { |
+ USING_PRE_FINALIZER(Sensor, dispose); |
USING_GARBAGE_COLLECTED_MIXIN(Sensor); |
DEFINE_WRAPPERTYPEINFO(); |
public: |
- ~Sensor() override; |
+ enum class SensorState { |
+ IDLE, |
+ ACTIVATING, |
+ ACTIVE, |
+ ERRORED |
+ }; |
+ |
+ void dispose(); |
void start(ScriptState*, ExceptionState&); |
void stop(ScriptState*, ExceptionState&); |
- void updateState(SensorState); |
- // EventTarget implementation. |
+ // EventTarget overrides. |
const AtomicString& interfaceName() const override { return EventTargetNames::Sensor; } |
ExecutionContext* getExecutionContext() const override { return ContextLifecycleObserver::getExecutionContext(); } |
@@ -50,23 +60,55 @@ public: |
DEFINE_ATTRIBUTE_EVENT_LISTENER(change); |
DEFINE_ATTRIBUTE_EVENT_LISTENER(statechange); |
- // ActiveDOMObject implementation. |
- void suspend() override; |
- void resume() override; |
- void stop() override; |
+ DECLARE_VIRTUAL_TRACE(); |
- // ScriptWrappable implementation. |
+ // ActiveScriptWrappable overrides. |
bool hasPendingActivity() const override; |
- DECLARE_VIRTUAL_TRACE(); |
- |
protected: |
- Sensor(ExecutionContext*, const SensorOptions&); |
- void notifyStateChange(); |
+ Sensor(ExecutionContext*, const SensorOptions&, device::mojom::blink::SensorType); |
+ virtual SensorReading* createSensorReading(ExecutionContext*) = 0; |
+ virtual device::mojom::blink::SensorConfigurationPtr createSensorOptions(const SensorOptions&) = 0; |
+ |
+private: |
+ void initSensorProxyIfNeeded(); |
+ |
+ // EventTargetWithInlineData overrides. |
+ void addedEventListener(const AtomicString& eventType, RegisteredEventListener&) override; |
+ void removedEventListener(const AtomicString& eventType, const RegisteredEventListener&) override; |
+ |
+ // ActiveDOMObject overrides. |
+ void stop() override; |
+ |
+ // SensorController::Observer overrides. |
+ void onSensorInitialized() override; |
+ void onSensorReadingChanged() override; |
+ void onSensorError() override; |
+ |
+ void onStartRequestCompleted(bool); |
+ void onStopRequestCompleted(bool); |
+ |
+ // PageVisibilityObserver overrides. |
+ void pageVisibilityChanged() override; |
+ |
+ void startListening(); |
+ void stopListening(); |
+ |
+ // Makes sensor reading refresh its values from the shared buffer. |
+ void pollForData(); |
+ |
+ void updateState(SensorState newState); |
+ void reportError(); |
+ |
+ void updatePollingStatus(); |
- SensorState m_sensorState; |
+private: |
Member<SensorReading> m_sensorReading; |
SensorOptions m_sensorOptions; |
+ device::mojom::blink::SensorType m_type; |
+ SensorState m_state; |
+ WeakMember<SensorProxy> m_sensorProxy; |
+ Member<SensorPollingStrategy> m_polling; |
}; |
} // namespace blink |