OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 | 98 |
99 template <typename CB, typename CBArg> | 99 template <typename CB, typename CBArg> |
100 void scheduleCallback(PassOwnPtr<CB> callback, const CBArg& callbackArg) | 100 void scheduleCallback(PassOwnPtr<CB> callback, const CBArg& callbackArg) |
101 { | 101 { |
102 scheduleCallback(executionContext(), callback, callbackArg); | 102 scheduleCallback(executionContext(), callback, callbackArg); |
103 } | 103 } |
104 | 104 |
105 private: | 105 private: |
106 DOMFileSystem(ExecutionContext*, const String& name, FileSystemType, const K
URL& rootURL); | 106 DOMFileSystem(ExecutionContext*, const String& name, FileSystemType, const K
URL& rootURL); |
107 | 107 |
108 class DispatchCallbackTaskBase : public ExecutionContextTask { | |
109 public: | |
110 DispatchCallbackTaskBase() | |
111 : m_taskName("FileSystem") | |
112 { | |
113 } | |
114 | |
115 virtual const String& taskNameForInstrumentation() const OVERRIDE | |
116 { | |
117 return m_taskName; | |
118 } | |
119 | |
120 private: | |
121 const String m_taskName; | |
122 }; | |
123 | |
124 // A helper template to schedule a callback task. | 108 // A helper template to schedule a callback task. |
125 template <typename CB, typename CBArg> | 109 template <typename CB, typename CBArg> |
126 class DispatchCallbackRefPtrArgTask FINAL : public DispatchCallbackTaskBase
{ | 110 class DispatchCallbackRefPtrArgTask FINAL : public ExecutionContextTask { |
127 public: | 111 public: |
128 DispatchCallbackRefPtrArgTask(PassOwnPtr<CB> callback, PassRefPtrWillBeR
awPtr<CBArg> arg) | 112 DispatchCallbackRefPtrArgTask(PassOwnPtr<CB> callback, PassRefPtrWillBeR
awPtr<CBArg> arg) |
129 : m_callback(callback) | 113 : m_callback(callback) |
130 , m_callbackArg(arg) | 114 , m_callbackArg(arg) |
131 { | 115 { |
132 } | 116 } |
133 | 117 |
134 virtual void performTask(ExecutionContext*) OVERRIDE | 118 virtual void performTask(ExecutionContext*) OVERRIDE |
135 { | 119 { |
136 m_callback->handleEvent(m_callbackArg.get()); | 120 m_callback->handleEvent(m_callbackArg.get()); |
137 } | 121 } |
138 | 122 |
139 private: | 123 private: |
140 OwnPtr<CB> m_callback; | 124 OwnPtr<CB> m_callback; |
141 RefPtrWillBePersistent<CBArg> m_callbackArg; | 125 RefPtrWillBePersistent<CBArg> m_callbackArg; |
142 }; | 126 }; |
143 | 127 |
144 template <typename CB, typename CBArg> | 128 template <typename CB, typename CBArg> |
145 class DispatchCallbackPtrArgTask FINAL : public DispatchCallbackTaskBase { | 129 class DispatchCallbackPtrArgTask FINAL : public ExecutionContextTask { |
146 public: | 130 public: |
147 DispatchCallbackPtrArgTask(PassOwnPtr<CB> callback, CBArg* arg) | 131 DispatchCallbackPtrArgTask(PassOwnPtr<CB> callback, CBArg* arg) |
148 : m_callback(callback) | 132 : m_callback(callback) |
149 , m_callbackArg(arg) | 133 , m_callbackArg(arg) |
150 { | 134 { |
151 } | 135 } |
152 | 136 |
153 virtual void performTask(ExecutionContext*) OVERRIDE | 137 virtual void performTask(ExecutionContext*) OVERRIDE |
154 { | 138 { |
155 m_callback->handleEvent(m_callbackArg.get()); | 139 m_callback->handleEvent(m_callbackArg.get()); |
156 } | 140 } |
157 | 141 |
158 private: | 142 private: |
159 OwnPtr<CB> m_callback; | 143 OwnPtr<CB> m_callback; |
160 Persistent<CBArg> m_callbackArg; | 144 Persistent<CBArg> m_callbackArg; |
161 }; | 145 }; |
162 | 146 |
163 template <typename CB, typename CBArg> | 147 template <typename CB, typename CBArg> |
164 class DispatchCallbackNonPtrArgTask FINAL : public DispatchCallbackTaskBase
{ | 148 class DispatchCallbackNonPtrArgTask FINAL : public ExecutionContextTask { |
165 public: | 149 public: |
166 DispatchCallbackNonPtrArgTask(PassOwnPtr<CB> callback, const CBArg& arg) | 150 DispatchCallbackNonPtrArgTask(PassOwnPtr<CB> callback, const CBArg& arg) |
167 : m_callback(callback) | 151 : m_callback(callback) |
168 , m_callbackArg(arg) | 152 , m_callbackArg(arg) |
169 { | 153 { |
170 } | 154 } |
171 | 155 |
172 virtual void performTask(ExecutionContext*) OVERRIDE | 156 virtual void performTask(ExecutionContext*) OVERRIDE |
173 { | 157 { |
174 m_callback->handleEvent(m_callbackArg); | 158 m_callback->handleEvent(m_callbackArg); |
175 } | 159 } |
176 | 160 |
177 private: | 161 private: |
178 OwnPtr<CB> m_callback; | 162 OwnPtr<CB> m_callback; |
179 CBArg m_callbackArg; | 163 CBArg m_callbackArg; |
180 }; | 164 }; |
181 | 165 |
182 template <typename CB> | 166 template <typename CB> |
183 class DispatchCallbackNoArgTask FINAL : public DispatchCallbackTaskBase { | 167 class DispatchCallbackNoArgTask FINAL : public ExecutionContextTask { |
184 public: | 168 public: |
185 DispatchCallbackNoArgTask(PassOwnPtr<CB> callback) | 169 DispatchCallbackNoArgTask(PassOwnPtr<CB> callback) |
186 : m_callback(callback) | 170 : m_callback(callback) |
187 { | 171 { |
188 } | 172 } |
189 | 173 |
190 virtual void performTask(ExecutionContext*) OVERRIDE | 174 virtual void performTask(ExecutionContext*) OVERRIDE |
191 { | 175 { |
192 m_callback->handleEvent(); | 176 m_callback->handleEvent(); |
193 } | 177 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 void DOMFileSystem::scheduleCallback(ExecutionContext* executionContext, PassOwn
Ptr<CB> callback) | 219 void DOMFileSystem::scheduleCallback(ExecutionContext* executionContext, PassOwn
Ptr<CB> callback) |
236 { | 220 { |
237 ASSERT(executionContext->isContextThread()); | 221 ASSERT(executionContext->isContextThread()); |
238 if (callback) | 222 if (callback) |
239 executionContext->postTask(adoptPtr(new DispatchCallbackNoArgTask<CB>(ca
llback))); | 223 executionContext->postTask(adoptPtr(new DispatchCallbackNoArgTask<CB>(ca
llback))); |
240 } | 224 } |
241 | 225 |
242 } // namespace | 226 } // namespace |
243 | 227 |
244 #endif // DOMFileSystem_h | 228 #endif // DOMFileSystem_h |
OLD | NEW |