Index: third_party/WebKit/Source/modules/indexeddb/IDBObserver.h |
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBObserver.h b/third_party/WebKit/Source/modules/indexeddb/IDBObserver.h |
index c85005677b75b4d05a78f5a7a8a103eb79d55a47..c8ef7daf516a55ccfef0c3b78f2726e60d78cf03 100644 |
--- a/third_party/WebKit/Source/modules/indexeddb/IDBObserver.h |
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBObserver.h |
@@ -8,7 +8,9 @@ |
#include "bindings/core/v8/ScriptWrappable.h" |
#include "modules/ModulesExport.h" |
#include "platform/heap/Handle.h" |
-#include <set> |
+#include "public/platform/WebVector.h" |
+#include "public/platform/modules/indexeddb/WebIDBTypes.h" |
+#include <bitset> |
namespace blink { |
@@ -17,6 +19,7 @@ class IDBDatabase; |
class IDBObserverCallback; |
class IDBObserverInit; |
class IDBTransaction; |
+struct WebIDBObservation; |
class MODULES_EXPORT IDBObserver final : public GarbageCollectedFinalized<IDBObserver>, public ScriptWrappable { |
DEFINE_WRAPPERTYPEINFO(); |
@@ -25,10 +28,18 @@ public: |
static IDBObserver* create(IDBObserverCallback&, const IDBObserverInit&); |
~IDBObserver(); |
- // API methods |
+ |
+ void removeObserver(int32_t id); |
+ void onChange(int32_t id, const WebVector<WebIDBObservation>&, const WebVector<int32_t>& observationIndex); |
+ |
+ bool transaction() const { return m_transaction; } |
+ bool noRecords() const { return m_noRecords; } |
+ bool values() const { return m_values; } |
+ const std::bitset<WebIDBOperationTypeCount>& operationTypes() const { return m_operationTypes; } |
+ |
+ // Implement the IDBObserver IDL. |
void observe(IDBDatabase*, IDBTransaction*, ExceptionState&); |
void unobserve(IDBDatabase*, ExceptionState&); |
- void removeObserver(int32_t id); |
DECLARE_TRACE(); |
@@ -39,7 +50,9 @@ private: |
bool m_transaction; |
bool m_values; |
bool m_noRecords; |
- std::set<int32_t> m_observerIds; |
+ // Operation type bits are set corresponding to WebIDBOperationType. |
+ std::bitset<WebIDBOperationTypeCount> m_operationTypes; |
+ HeapHashMap<int32_t, WeakMember<IDBDatabase>> m_observerIds; |
}; |
} // namespace blink |