OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 #include <utility> | 51 #include <utility> |
52 | 52 |
53 namespace blink { | 53 namespace blink { |
54 | 54 |
55 namespace { | 55 namespace { |
56 const int64 kShortIdleHandlerDelayMs = 1000; | 56 const int64 kShortIdleHandlerDelayMs = 1000; |
57 const int64 kLongIdleHandlerDelayMs = 10*1000; | 57 const int64 kLongIdleHandlerDelayMs = 10*1000; |
58 | 58 |
59 class MicrotaskRunner : public WebThread::TaskObserver { | 59 class MicrotaskRunner : public WebThread::TaskObserver { |
60 public: | 60 public: |
61 virtual void willProcessTask() OVERRIDE { } | 61 virtual void willProcessTask() override { } |
62 virtual void didProcessTask() OVERRIDE | 62 virtual void didProcessTask() override |
63 { | 63 { |
64 Microtask::performCheckpoint(); | 64 Microtask::performCheckpoint(); |
65 } | 65 } |
66 }; | 66 }; |
67 | 67 |
68 } // namespace | 68 } // namespace |
69 | 69 |
70 static Mutex& threadSetMutex() | 70 static Mutex& threadSetMutex() |
71 { | 71 { |
72 AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); | 72 AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); |
73 return mutex; | 73 return mutex; |
74 } | 74 } |
75 | 75 |
76 static HashSet<WorkerThread*>& workerThreads() | 76 static HashSet<WorkerThread*>& workerThreads() |
77 { | 77 { |
78 DEFINE_STATIC_LOCAL(HashSet<WorkerThread*>, threads, ()); | 78 DEFINE_STATIC_LOCAL(HashSet<WorkerThread*>, threads, ()); |
79 return threads; | 79 return threads; |
80 } | 80 } |
81 | 81 |
82 unsigned WorkerThread::workerThreadCount() | 82 unsigned WorkerThread::workerThreadCount() |
83 { | 83 { |
84 MutexLocker lock(threadSetMutex()); | 84 MutexLocker lock(threadSetMutex()); |
85 return workerThreads().size(); | 85 return workerThreads().size(); |
86 } | 86 } |
87 | 87 |
88 class WorkerThreadCancelableTask FINAL : public ExecutionContextTask { | 88 class WorkerThreadCancelableTask final : public ExecutionContextTask { |
89 WTF_MAKE_NONCOPYABLE(WorkerThreadCancelableTask); WTF_MAKE_FAST_ALLOCATED; | 89 WTF_MAKE_NONCOPYABLE(WorkerThreadCancelableTask); WTF_MAKE_FAST_ALLOCATED; |
90 public: | 90 public: |
91 static PassOwnPtr<WorkerThreadCancelableTask> create(const Closure& closure) | 91 static PassOwnPtr<WorkerThreadCancelableTask> create(const Closure& closure) |
92 { | 92 { |
93 return adoptPtr(new WorkerThreadCancelableTask(closure)); | 93 return adoptPtr(new WorkerThreadCancelableTask(closure)); |
94 } | 94 } |
95 | 95 |
96 virtual void performTask(ExecutionContext*) OVERRIDE | 96 virtual void performTask(ExecutionContext*) override |
97 { | 97 { |
98 if (!m_taskCanceled) | 98 if (!m_taskCanceled) |
99 m_closure(); | 99 m_closure(); |
100 } | 100 } |
101 | 101 |
102 void cancelTask() { m_taskCanceled = true; } | 102 void cancelTask() { m_taskCanceled = true; } |
103 | 103 |
104 private: | 104 private: |
105 explicit WorkerThreadCancelableTask(const Closure& closure) | 105 explicit WorkerThreadCancelableTask(const Closure& closure) |
106 : m_closure(closure) | 106 : m_closure(closure) |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
181 class WorkerThreadTask : public blink::WebThread::Task { | 181 class WorkerThreadTask : public blink::WebThread::Task { |
182 WTF_MAKE_NONCOPYABLE(WorkerThreadTask); WTF_MAKE_FAST_ALLOCATED; | 182 WTF_MAKE_NONCOPYABLE(WorkerThreadTask); WTF_MAKE_FAST_ALLOCATED; |
183 public: | 183 public: |
184 static PassOwnPtr<WorkerThreadTask> create(WorkerThread& workerThread, PassO
wnPtr<ExecutionContextTask> task, bool isInstrumented) | 184 static PassOwnPtr<WorkerThreadTask> create(WorkerThread& workerThread, PassO
wnPtr<ExecutionContextTask> task, bool isInstrumented) |
185 { | 185 { |
186 return adoptPtr(new WorkerThreadTask(workerThread, task, isInstrumented)
); | 186 return adoptPtr(new WorkerThreadTask(workerThread, task, isInstrumented)
); |
187 } | 187 } |
188 | 188 |
189 virtual ~WorkerThreadTask() { } | 189 virtual ~WorkerThreadTask() { } |
190 | 190 |
191 virtual void run() OVERRIDE | 191 virtual void run() override |
192 { | 192 { |
193 WorkerGlobalScope* workerGlobalScope = m_workerThread.workerGlobalScope(
); | 193 WorkerGlobalScope* workerGlobalScope = m_workerThread.workerGlobalScope(
); |
194 // Tasks could be put on the message loop after the cleanup task, | 194 // Tasks could be put on the message loop after the cleanup task, |
195 // ensure none of those are ran. | 195 // ensure none of those are ran. |
196 if (!workerGlobalScope) | 196 if (!workerGlobalScope) |
197 return; | 197 return; |
198 | 198 |
199 if (m_isInstrumented) | 199 if (m_isInstrumented) |
200 InspectorInstrumentation::willPerformExecutionContextTask(workerGlob
alScope, m_task.get()); | 200 InspectorInstrumentation::willPerformExecutionContextTask(workerGlob
alScope, m_task.get()); |
201 if ((!workerGlobalScope->isClosing() && !m_workerThread.terminated()) ||
m_task->isCleanupTask()) | 201 if ((!workerGlobalScope->isClosing() && !m_workerThread.terminated()) ||
m_task->isCleanupTask()) |
(...skipping 12 matching lines...) Expand all Loading... |
214 m_isInstrumented = !m_task->taskNameForInstrumentation().isEmpty(); | 214 m_isInstrumented = !m_task->taskNameForInstrumentation().isEmpty(); |
215 if (m_isInstrumented) | 215 if (m_isInstrumented) |
216 InspectorInstrumentation::didPostExecutionContextTask(m_workerThread
.workerGlobalScope(), m_task.get()); | 216 InspectorInstrumentation::didPostExecutionContextTask(m_workerThread
.workerGlobalScope(), m_task.get()); |
217 } | 217 } |
218 | 218 |
219 WorkerThread& m_workerThread; | 219 WorkerThread& m_workerThread; |
220 OwnPtr<ExecutionContextTask> m_task; | 220 OwnPtr<ExecutionContextTask> m_task; |
221 bool m_isInstrumented; | 221 bool m_isInstrumented; |
222 }; | 222 }; |
223 | 223 |
224 class RunDebuggerQueueTask FINAL : public ExecutionContextTask { | 224 class RunDebuggerQueueTask final : public ExecutionContextTask { |
225 public: | 225 public: |
226 static PassOwnPtr<RunDebuggerQueueTask> create(WorkerThread* thread) | 226 static PassOwnPtr<RunDebuggerQueueTask> create(WorkerThread* thread) |
227 { | 227 { |
228 return adoptPtr(new RunDebuggerQueueTask(thread)); | 228 return adoptPtr(new RunDebuggerQueueTask(thread)); |
229 } | 229 } |
230 virtual void performTask(ExecutionContext* context) OVERRIDE | 230 virtual void performTask(ExecutionContext* context) override |
231 { | 231 { |
232 ASSERT(context->isWorkerGlobalScope()); | 232 ASSERT(context->isWorkerGlobalScope()); |
233 m_thread->runDebuggerTask(WorkerThread::DontWaitForMessage); | 233 m_thread->runDebuggerTask(WorkerThread::DontWaitForMessage); |
234 } | 234 } |
235 | 235 |
236 private: | 236 private: |
237 explicit RunDebuggerQueueTask(WorkerThread* thread) : m_thread(thread) { } | 237 explicit RunDebuggerQueueTask(WorkerThread* thread) : m_thread(thread) { } |
238 | 238 |
239 WorkerThread* m_thread; | 239 WorkerThread* m_thread; |
240 }; | 240 }; |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 InspectorInstrumentation::didLeaveNestedRunLoop(m_workerGlobalScope.get()); | 523 InspectorInstrumentation::didLeaveNestedRunLoop(m_workerGlobalScope.get()); |
524 } | 524 } |
525 | 525 |
526 void WorkerThread::setWorkerInspectorController(WorkerInspectorController* worke
rInspectorController) | 526 void WorkerThread::setWorkerInspectorController(WorkerInspectorController* worke
rInspectorController) |
527 { | 527 { |
528 MutexLocker locker(m_workerInspectorControllerMutex); | 528 MutexLocker locker(m_workerInspectorControllerMutex); |
529 m_workerInspectorController = workerInspectorController; | 529 m_workerInspectorController = workerInspectorController; |
530 } | 530 } |
531 | 531 |
532 } // namespace blink | 532 } // namespace blink |
OLD | NEW |