| Index: third_party/WebKit/Source/modules/sensor/SensorProxy.h
|
| diff --git a/third_party/WebKit/Source/modules/sensor/SensorProxy.h b/third_party/WebKit/Source/modules/sensor/SensorProxy.h
|
| index 3243636775cef146e6edd103933ced25ff4c15ad..1769ab770c770c032e110bfdbd719737ce73fb7b 100644
|
| --- a/third_party/WebKit/Source/modules/sensor/SensorProxy.h
|
| +++ b/third_party/WebKit/Source/modules/sensor/SensorProxy.h
|
| @@ -21,6 +21,7 @@ namespace blink {
|
| class SensorProviderProxy;
|
| class SensorReading;
|
| class SensorReadingFactory;
|
| +class SensorReadingUpdater;
|
|
|
| // This class wraps 'Sensor' mojo interface and used by multiple
|
| // JS sensor instances of the same type (within a single frame).
|
| @@ -38,13 +39,16 @@ class SensorProxy final : public GarbageCollectedFinalized<SensorProxy>,
|
| // methods can be called.
|
| virtual void onSensorInitialized() {}
|
| // Platfrom sensort reading has changed.
|
| - virtual void onSensorReadingChanged() {}
|
| + // |timestamp| Reference timestamp in seconds of the moment when
|
| + // sensor reading was updated from the buffer.
|
| + // Note: |timestamp| values are only used to calculate elapsed time
|
| + // between shared buffer readings. These values *do not* correspond
|
| + // to sensor reading timestamps which are obtained on platform side.
|
| + virtual void onSensorReadingChanged(double timestamp) {}
|
| // An error has occurred.
|
| virtual void onSensorError(ExceptionCode,
|
| const String& sanitizedMessage,
|
| const String& unsanitizedMessage) {}
|
| - // Sensor reading change notification is suspended.
|
| - virtual void onSuspended() {}
|
| };
|
|
|
| ~SensorProxy();
|
| @@ -59,6 +63,10 @@ class SensorProxy final : public GarbageCollectedFinalized<SensorProxy>,
|
| bool isInitializing() const { return m_state == Initializing; }
|
| bool isInitialized() const { return m_state == Initialized; }
|
|
|
| + // Is watching new reading data (initialized, not suspended and has
|
| + // configurations added).
|
| + bool isActive() const;
|
| +
|
| void addConfiguration(device::mojom::blink::SensorConfigurationPtr,
|
| std::unique_ptr<Function<void(bool)>>);
|
|
|
| @@ -79,20 +87,25 @@ class SensorProxy final : public GarbageCollectedFinalized<SensorProxy>,
|
|
|
| double maximumFrequency() const { return m_maximumFrequency; }
|
|
|
| + Document* document() const { return m_document; }
|
| + const WTF::Vector<double>& frequenciesUsed() const {
|
| + return m_frequenciesUsed;
|
| + }
|
| +
|
| DECLARE_VIRTUAL_TRACE();
|
|
|
| private:
|
| friend class SensorProviderProxy;
|
| + friend class SensorReadingUpdaterContinuous;
|
| + friend class SensorReadingUpdaterOnChange;
|
| SensorProxy(device::mojom::blink::SensorType,
|
| SensorProviderProxy*,
|
| - Page*,
|
| + Document*,
|
| std::unique_ptr<SensorReadingFactory>);
|
| - // Returns true if this instance is using polling timer to
|
| - // periodically fetch reading data from shared buffer.
|
| - bool usesPollingTimer() const;
|
|
|
| // Updates sensor reading from shared buffer.
|
| void updateSensorReading();
|
| + void notifySensorChanged(double timestamp);
|
|
|
| // device::mojom::blink::SensorClient overrides.
|
| void RaiseError() override;
|
| @@ -116,8 +129,7 @@ class SensorProxy final : public GarbageCollectedFinalized<SensorProxy>,
|
| void onRemoveConfigurationCompleted(double frequency, bool result);
|
|
|
| bool tryReadFromBuffer(device::SensorReading& result);
|
| - void updatePollingStatus();
|
| - void onTimerFired(TimerBase*);
|
| + void onAnimationFrame(double timestamp);
|
|
|
| device::mojom::blink::SensorType m_type;
|
| device::mojom::blink::ReportingMode m_mode;
|
| @@ -134,13 +146,14 @@ class SensorProxy final : public GarbageCollectedFinalized<SensorProxy>,
|
| mojo::ScopedSharedBufferHandle m_sharedBufferHandle;
|
| mojo::ScopedSharedBufferMapping m_sharedBuffer;
|
| bool m_suspended;
|
| + Member<Document> m_document;
|
| Member<SensorReading> m_reading;
|
| std::unique_ptr<SensorReadingFactory> m_readingFactory;
|
| double m_maximumFrequency;
|
|
|
| - // Used for continious reporting mode.
|
| - Timer<SensorProxy> m_timer;
|
| + Member<SensorReadingUpdater> m_readingUpdater;
|
| WTF::Vector<double> m_frequenciesUsed;
|
| + double m_lastRafTimestamp;
|
|
|
| using ReadingBuffer = device::SensorReadingSharedBuffer;
|
| static_assert(
|
|
|