Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / webdatabase / SQLTransactionCoordinator.h
index 93ba4cd..3dfb9a0 100644 (file)
 #ifndef SQLTransactionCoordinator_h
 #define SQLTransactionCoordinator_h
 
+#include "platform/heap/Handle.h"
 #include "wtf/Deque.h"
 #include "wtf/HashMap.h"
 #include "wtf/HashSet.h"
 #include "wtf/RefPtr.h"
 #include "wtf/text/StringHash.h"
 
-namespace WebCore {
+namespace blink {
 
 class SQLTransactionBackend;
 
-class SQLTransactionCoordinator {
-    WTF_MAKE_NONCOPYABLE(SQLTransactionCoordinator); WTF_MAKE_FAST_ALLOCATED;
+class SQLTransactionCoordinator : public NoBaseWillBeGarbageCollected<SQLTransactionCoordinator> {
+    WTF_MAKE_NONCOPYABLE(SQLTransactionCoordinator);
+    WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
 public:
     SQLTransactionCoordinator();
+    void trace(Visitor*);
     void acquireLock(SQLTransactionBackend*);
     void releaseLock(SQLTransactionBackend*);
     void shutdown();
 private:
-    typedef Deque<RefPtr<SQLTransactionBackend> > TransactionsQueue;
+    typedef Deque<RefPtrWillBeMember<SQLTransactionBackend> > TransactionsQueue;
     struct CoordinationInfo {
         TransactionsQueue pendingTransactions;
-        HashSet<RefPtr<SQLTransactionBackend> > activeReadTransactions;
-        RefPtr<SQLTransactionBackend> activeWriteTransaction;
+        WillBeHeapHashSet<RefPtrWillBeMember<SQLTransactionBackend> > activeReadTransactions;
+        RefPtrWillBeMember<SQLTransactionBackend> activeWriteTransaction;
+
+        void trace(Visitor* visitor)
+        {
+#if ENABLE(OILPAN)
+            visitor->trace(pendingTransactions);
+            visitor->trace(activeReadTransactions);
+            visitor->trace(activeWriteTransaction);
+#endif
+        }
+        ALLOW_ONLY_INLINE_ALLOCATION();
     };
     // Maps database names to information about pending transactions
-    typedef HashMap<String, CoordinationInfo> CoordinationInfoMap;
-    CoordinationInfoMap m_coordinationInfoMap;
+    typedef WillBeHeapHashMap<String, CoordinationInfo> CoordinationInfoHeapMap;
+    CoordinationInfoHeapMap m_coordinationInfoMap;
     bool m_isShuttingDown;
 
     void processPendingTransactions(CoordinationInfo&);
 };
 
-} // namespace WebCore
+} // namespace blink
 
 #endif // SQLTransactionCoordinator_h