| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2010, 2012 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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 } | 139 } |
| 140 | 140 |
| 141 RefPtr<WorkerFileSystemCallbacksBridge> m_bridge; | 141 RefPtr<WorkerFileSystemCallbacksBridge> m_bridge; |
| 142 const String m_mode; | 142 const String m_mode; |
| 143 }; | 143 }; |
| 144 | 144 |
| 145 // Observes the worker context. By keeping this separate, it is easier to verify | 145 // Observes the worker context. By keeping this separate, it is easier to verify |
| 146 // that it only gets deleted on the worker context thread which is verified by ~
Observer. | 146 // that it only gets deleted on the worker context thread which is verified by ~
Observer. |
| 147 class WorkerFileSystemContextObserver : public WebCore::WorkerContext::Observer
{ | 147 class WorkerFileSystemContextObserver : public WebCore::WorkerContext::Observer
{ |
| 148 public: | 148 public: |
| 149 static PassOwnPtr<WorkerFileSystemContextObserver> create(WorkerContext* con
text, WorkerFileSystemCallbacksBridge* bridge) | 149 static PassOwnPtr<WorkerFileSystemContextObserver> create(WorkerContext* con
text, PassRefPtr<WorkerFileSystemCallbacksBridge> bridge) |
| 150 { | 150 { |
| 151 return adoptPtr(new WorkerFileSystemContextObserver(context, bridge)); | 151 return adoptPtr(new WorkerFileSystemContextObserver(context, bridge)); |
| 152 } | 152 } |
| 153 | 153 |
| 154 // WorkerContext::Observer method. | 154 // WorkerContext::Observer method. |
| 155 virtual void notifyStop() | 155 virtual void notifyStop() |
| 156 { | 156 { |
| 157 m_bridge->stop(); | 157 m_bridge->stop(); |
| 158 } | 158 } |
| 159 | 159 |
| 160 private: | 160 private: |
| 161 WorkerFileSystemContextObserver(WorkerContext* context, WorkerFileSystemCall
backsBridge* bridge) | 161 WorkerFileSystemContextObserver(WorkerContext* context, PassRefPtr<WorkerFil
eSystemCallbacksBridge> bridge) |
| 162 : WebCore::WorkerContext::Observer(context) | 162 : WebCore::WorkerContext::Observer(context) |
| 163 , m_bridge(bridge) | 163 , m_bridge(bridge) |
| 164 { | 164 { |
| 165 } | 165 } |
| 166 | 166 |
| 167 // Since WorkerFileSystemCallbacksBridge manages the lifetime of this class, | 167 RefPtr<WorkerFileSystemCallbacksBridge> m_bridge; |
| 168 // m_bridge will be valid throughout its lifetime. | |
| 169 WorkerFileSystemCallbacksBridge* m_bridge; | |
| 170 }; | 168 }; |
| 171 | 169 |
| 172 void WorkerFileSystemCallbacksBridge::stop() | 170 void WorkerFileSystemCallbacksBridge::stop() |
| 173 { | 171 { |
| 174 ASSERT(m_workerContext->isContextThread()); | 172 ASSERT(m_workerContext->isContextThread()); |
| 175 { | 173 { |
| 176 MutexLocker locker(m_loaderProxyMutex); | 174 MutexLocker locker(m_loaderProxyMutex); |
| 177 m_workerLoaderProxy = 0; | 175 m_workerLoaderProxy = 0; |
| 178 } | 176 } |
| 179 | 177 |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 ASSERT(isMainThread()); | 460 ASSERT(isMainThread()); |
| 463 | 461 |
| 464 MutexLocker locker(m_loaderProxyMutex); | 462 MutexLocker locker(m_loaderProxyMutex); |
| 465 if (m_workerLoaderProxy) | 463 if (m_workerLoaderProxy) |
| 466 m_workerLoaderProxy->postTaskForModeToWorkerContext(createCallbackTask(&
runTaskOnWorkerThread, this, task), mode); | 464 m_workerLoaderProxy->postTaskForModeToWorkerContext(createCallbackTask(&
runTaskOnWorkerThread, this, task), mode); |
| 467 } | 465 } |
| 468 | 466 |
| 469 } // namespace WebCore | 467 } // namespace WebCore |
| 470 | 468 |
| 471 #endif // ENABLE(FILE_SYSTEM) | 469 #endif // ENABLE(FILE_SYSTEM) |
| OLD | NEW |