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

Side by Side Diff: third_party/WebKit/Source/modules/sensor/SensorProxy.h

Issue 2458453002: [sensors] Add Permission guard to the generic sensor apis.
Patch Set: Pass only origin to provider Created 4 years 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef SensorProxy_h 5 #ifndef SensorProxy_h
6 #define SensorProxy_h 6 #define SensorProxy_h
7 7
8 #include "core/dom/ExceptionCode.h" 8 #include "core/dom/ExceptionCode.h"
9 #include "device/generic_sensor/public/cpp/sensor_reading.h" 9 #include "device/generic_sensor/public/cpp/sensor_reading.h"
10 #include "device/generic_sensor/public/interfaces/sensor.mojom-blink.h" 10 #include "device/generic_sensor/public/interfaces/sensor.mojom-blink.h"
11 #include "device/generic_sensor/public/interfaces/sensor_provider.mojom-blink.h" 11 #include "device/generic_sensor/public/interfaces/sensor_provider.mojom-blink.h"
12 #include "mojo/public/cpp/bindings/binding.h" 12 #include "mojo/public/cpp/bindings/binding.h"
13 #include "platform/Supplementable.h" 13 #include "platform/Supplementable.h"
14 #include "platform/heap/Handle.h" 14 #include "platform/heap/Handle.h"
15 #include "public/platform/modules/permissions/permission.mojom-blink.h"
16 #include "public/platform/modules/permissions/permission_status.mojom-blink.h"
15 17
16 namespace blink { 18 namespace blink {
17 19
18 class SensorProviderProxy; 20 class SensorProviderProxy;
19 class SensorReading; 21 class SensorReading;
20 class SensorReadingFactory; 22 class SensorReadingFactory;
23 class SecurityOrigin;
21 24
22 // This class wraps 'Sensor' mojo interface and used by multiple 25 // This class wraps 'Sensor' mojo interface and used by multiple
23 // JS sensor instances of the same type (within a single frame). 26 // JS sensor instances of the same type (within a single frame).
24 class SensorProxy final : public GarbageCollectedFinalized<SensorProxy>, 27 class SensorProxy final : public GarbageCollectedFinalized<SensorProxy>,
25 public device::mojom::blink::SensorClient { 28 public device::mojom::blink::SensorClient {
26 USING_PRE_FINALIZER(SensorProxy, dispose); 29 USING_PRE_FINALIZER(SensorProxy, dispose);
27 WTF_MAKE_NONCOPYABLE(SensorProxy); 30 WTF_MAKE_NONCOPYABLE(SensorProxy);
28 31
29 public: 32 public:
30 class Observer : public GarbageCollectedMixin { 33 class Observer : public GarbageCollectedMixin {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 double maximumFrequency() const { return m_maximumFrequency; } 76 double maximumFrequency() const { return m_maximumFrequency; }
74 77
75 // Updates sensor reading from shared buffer. 78 // Updates sensor reading from shared buffer.
76 void updateSensorReading(); 79 void updateSensorReading();
77 80
78 DECLARE_VIRTUAL_TRACE(); 81 DECLARE_VIRTUAL_TRACE();
79 82
80 private: 83 private:
81 friend class SensorProviderProxy; 84 friend class SensorProviderProxy;
82 SensorProxy(device::mojom::blink::SensorType, 85 SensorProxy(device::mojom::blink::SensorType,
86 mojom::blink::PermissionService*,
87 RefPtr<SecurityOrigin>,
83 SensorProviderProxy*, 88 SensorProviderProxy*,
84 std::unique_ptr<SensorReadingFactory>); 89 std::unique_ptr<SensorReadingFactory>);
85 90
86 // device::mojom::blink::SensorClient overrides. 91 // device::mojom::blink::SensorClient overrides.
87 void RaiseError() override; 92 void RaiseError() override;
88 void SensorReadingChanged() override; 93 void SensorReadingChanged() override;
89 94
90 // Generic handler for a fatal error. 95 // Generic handler for a fatal error.
91 // String parameters are intentionally copied. 96 // String parameters are intentionally copied.
92 void handleSensorError(ExceptionCode = UnknownError, 97 void handleSensorError(ExceptionCode = UnknownError,
93 String sanitizedMessage = String(), 98 String sanitizedMessage = String(),
94 String unsanitizedMessage = String()); 99 String unsanitizedMessage = String());
95 100
96 void onSensorCreated(device::mojom::blink::SensorInitParamsPtr, 101 void onSensorCreated(device::mojom::blink::SensorInitParamsPtr,
97 device::mojom::blink::SensorClientRequest); 102 device::mojom::blink::SensorClientRequest);
98 103
99 bool tryReadFromBuffer(device::SensorReading& result); 104 bool tryReadFromBuffer(device::SensorReading& result);
100 105
106 void onPermissionUpdate(mojom::blink::PermissionStatus);
107
101 device::mojom::blink::SensorType m_type; 108 device::mojom::blink::SensorType m_type;
102 device::mojom::blink::ReportingMode m_mode; 109 device::mojom::blink::ReportingMode m_mode;
103 Member<SensorProviderProxy> m_provider; 110 Member<SensorProviderProxy> m_provider;
104 using ObserversSet = HeapHashSet<WeakMember<Observer>>; 111 using ObserversSet = HeapHashSet<WeakMember<Observer>>;
105 ObserversSet m_observers; 112 ObserversSet m_observers;
106 113
107 device::mojom::blink::SensorPtr m_sensor; 114 device::mojom::blink::SensorPtr m_sensor;
108 device::mojom::blink::SensorConfigurationPtr m_defaultConfig; 115 device::mojom::blink::SensorConfigurationPtr m_defaultConfig;
109 mojo::Binding<device::mojom::blink::SensorClient> m_clientBinding; 116 mojo::Binding<device::mojom::blink::SensorClient> m_clientBinding;
110 117
111 enum State { Uninitialized, Initializing, Initialized }; 118 enum State { Uninitialized, Initializing, Initialized };
112 State m_state; 119 State m_state;
113 mojo::ScopedSharedBufferHandle m_sharedBufferHandle; 120 mojo::ScopedSharedBufferHandle m_sharedBufferHandle;
114 mojo::ScopedSharedBufferMapping m_sharedBuffer; 121 mojo::ScopedSharedBufferMapping m_sharedBuffer;
115 bool m_suspended; 122 bool m_suspended;
116 Member<SensorReading> m_reading; 123 Member<SensorReading> m_reading;
117 std::unique_ptr<SensorReadingFactory> m_readingFactory; 124 std::unique_ptr<SensorReadingFactory> m_readingFactory;
118 double m_maximumFrequency; 125 double m_maximumFrequency;
119 126
120 using ReadingBuffer = device::SensorReadingSharedBuffer; 127 using ReadingBuffer = device::SensorReadingSharedBuffer;
121 static_assert( 128 static_assert(
122 sizeof(ReadingBuffer) == 129 sizeof(ReadingBuffer) ==
123 device::mojom::blink::SensorInitParams::kReadBufferSizeForTests, 130 device::mojom::blink::SensorInitParams::kReadBufferSizeForTests,
124 "Check reading buffer size for tests"); 131 "Check reading buffer size for tests");
132
133 mojom::blink::PermissionStatus m_permissionStatus;
134 mojom::blink::PermissionService* m_permissionService;
135 RefPtr<SecurityOrigin> m_securityOrigin;
125 }; 136 };
126 137
127 } // namespace blink 138 } // namespace blink
128 139
129 #endif // SensorProxy_h 140 #endif // SensorProxy_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698