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

Side by Side Diff: third_party/WebKit/Source/modules/webdatabase/DatabaseTask.h

Issue 2288983004: Merge TaskSynchronizer into WaitableEvent. (Closed)
Patch Set: fix Created 4 years, 3 months 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 /* 1 /*
2 * Copyright (C) 2007, 2008, 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 15 matching lines...) Expand all
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #ifndef DatabaseTask_h 29 #ifndef DatabaseTask_h
30 #define DatabaseTask_h 30 #define DatabaseTask_h
31 31
32 #include "modules/webdatabase/Database.h" 32 #include "modules/webdatabase/Database.h"
33 #include "modules/webdatabase/DatabaseBasicTypes.h" 33 #include "modules/webdatabase/DatabaseBasicTypes.h"
34 #include "modules/webdatabase/DatabaseError.h" 34 #include "modules/webdatabase/DatabaseError.h"
35 #include "modules/webdatabase/SQLTransactionBackend.h" 35 #include "modules/webdatabase/SQLTransactionBackend.h"
36 #include "platform/TaskSynchronizer.h" 36 #include "platform/WaitableEvent.h"
37 #include "platform/heap/Handle.h" 37 #include "platform/heap/Handle.h"
38 #include "wtf/PtrUtil.h" 38 #include "wtf/PtrUtil.h"
39 #include "wtf/Threading.h" 39 #include "wtf/Threading.h"
40 #include "wtf/Vector.h" 40 #include "wtf/Vector.h"
41 #include "wtf/text/WTFString.h" 41 #include "wtf/text/WTFString.h"
42 #include <memory> 42 #include <memory>
43 43
44 namespace blink { 44 namespace blink {
45 45
46 class DatabaseTask { 46 class DatabaseTask {
47 WTF_MAKE_NONCOPYABLE(DatabaseTask); USING_FAST_MALLOC(DatabaseTask); 47 WTF_MAKE_NONCOPYABLE(DatabaseTask); USING_FAST_MALLOC(DatabaseTask);
48 public: 48 public:
49 virtual ~DatabaseTask(); 49 virtual ~DatabaseTask();
50 50
51 void run(); 51 void run();
52 52
53 Database* database() const { return m_database.get(); } 53 Database* database() const { return m_database.get(); }
54 54
55 protected: 55 protected:
56 DatabaseTask(Database*, TaskSynchronizer*); 56 DatabaseTask(Database*, WaitableEvent* completeEvent);
57 57
58 private: 58 private:
59 virtual void doPerformTask() = 0; 59 virtual void doPerformTask() = 0;
60 virtual void taskCancelled() { } 60 virtual void taskCancelled() { }
61 61
62 CrossThreadPersistent<Database> m_database; 62 CrossThreadPersistent<Database> m_database;
63 TaskSynchronizer* m_synchronizer; 63 WaitableEvent* m_completeEvent;
64 64
65 #if DCHECK_IS_ON() 65 #if DCHECK_IS_ON()
66 virtual const char* debugTaskName() const = 0; 66 virtual const char* debugTaskName() const = 0;
67 bool m_complete; 67 bool m_complete;
68 #endif 68 #endif
69 }; 69 };
70 70
71 class Database::DatabaseOpenTask final : public DatabaseTask { 71 class Database::DatabaseOpenTask final : public DatabaseTask {
72 public: 72 public:
73 static std::unique_ptr<DatabaseOpenTask> create(Database* db, bool setVersio nInNewDatabase, TaskSynchronizer* synchronizer, DatabaseError& error, String& er rorMessage, bool& success) 73 static std::unique_ptr<DatabaseOpenTask> create(Database* db, bool setVersio nInNewDatabase, WaitableEvent* completeEvent, DatabaseError& error, String& erro rMessage, bool& success)
74 { 74 {
75 return wrapUnique(new DatabaseOpenTask(db, setVersionInNewDatabase, sync hronizer, error, errorMessage, success)); 75 return wrapUnique(new DatabaseOpenTask(db, setVersionInNewDatabase, comp leteEvent, error, errorMessage, success));
76 } 76 }
77 77
78 private: 78 private:
79 DatabaseOpenTask(Database*, bool setVersionInNewDatabase, TaskSynchronizer*, DatabaseError&, String& errorMessage, bool& success); 79 DatabaseOpenTask(Database*, bool setVersionInNewDatabase, WaitableEvent*, Da tabaseError&, String& errorMessage, bool& success);
80 80
81 void doPerformTask() override; 81 void doPerformTask() override;
82 #if DCHECK_IS_ON() 82 #if DCHECK_IS_ON()
83 const char* debugTaskName() const override; 83 const char* debugTaskName() const override;
84 #endif 84 #endif
85 85
86 bool m_setVersionInNewDatabase; 86 bool m_setVersionInNewDatabase;
87 DatabaseError& m_error; 87 DatabaseError& m_error;
88 String& m_errorMessage; 88 String& m_errorMessage;
89 bool& m_success; 89 bool& m_success;
90 }; 90 };
91 91
92 class Database::DatabaseCloseTask final : public DatabaseTask { 92 class Database::DatabaseCloseTask final : public DatabaseTask {
93 public: 93 public:
94 static std::unique_ptr<DatabaseCloseTask> create(Database* db, TaskSynchroni zer* synchronizer) 94 static std::unique_ptr<DatabaseCloseTask> create(Database* db, WaitableEvent * synchronizer)
95 { 95 {
96 return wrapUnique(new DatabaseCloseTask(db, synchronizer)); 96 return wrapUnique(new DatabaseCloseTask(db, synchronizer));
97 } 97 }
98 98
99 private: 99 private:
100 DatabaseCloseTask(Database*, TaskSynchronizer*); 100 DatabaseCloseTask(Database*, WaitableEvent*);
101 101
102 void doPerformTask() override; 102 void doPerformTask() override;
103 #if DCHECK_IS_ON() 103 #if DCHECK_IS_ON()
104 const char* debugTaskName() const override; 104 const char* debugTaskName() const override;
105 #endif 105 #endif
106 }; 106 };
107 107
108 class Database::DatabaseTransactionTask final : public DatabaseTask { 108 class Database::DatabaseTransactionTask final : public DatabaseTask {
109 public: 109 public:
110 ~DatabaseTransactionTask() override; 110 ~DatabaseTransactionTask() override;
(...skipping 13 matching lines...) Expand all
124 void taskCancelled() override; 124 void taskCancelled() override;
125 #if DCHECK_IS_ON() 125 #if DCHECK_IS_ON()
126 const char* debugTaskName() const override; 126 const char* debugTaskName() const override;
127 #endif 127 #endif
128 128
129 CrossThreadPersistent<SQLTransactionBackend> m_transaction; 129 CrossThreadPersistent<SQLTransactionBackend> m_transaction;
130 }; 130 };
131 131
132 class Database::DatabaseTableNamesTask final : public DatabaseTask { 132 class Database::DatabaseTableNamesTask final : public DatabaseTask {
133 public: 133 public:
134 static std::unique_ptr<DatabaseTableNamesTask> create(Database* db, TaskSync hronizer* synchronizer, Vector<String>& names) 134 static std::unique_ptr<DatabaseTableNamesTask> create(Database* db, Waitable Event* synchronizer, Vector<String>& names)
135 { 135 {
136 return wrapUnique(new DatabaseTableNamesTask(db, synchronizer, names)); 136 return wrapUnique(new DatabaseTableNamesTask(db, synchronizer, names));
137 } 137 }
138 138
139 private: 139 private:
140 DatabaseTableNamesTask(Database*, TaskSynchronizer*, Vector<String>& names); 140 DatabaseTableNamesTask(Database*, WaitableEvent*, Vector<String>& names);
141 141
142 void doPerformTask() override; 142 void doPerformTask() override;
143 #if DCHECK_IS_ON() 143 #if DCHECK_IS_ON()
144 const char* debugTaskName() const override; 144 const char* debugTaskName() const override;
145 #endif 145 #endif
146 146
147 Vector<String>& m_tableNames; 147 Vector<String>& m_tableNames;
148 }; 148 };
149 149
150 } // namespace blink 150 } // namespace blink
151 151
152 #endif // DatabaseTask_h 152 #endif // DatabaseTask_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698