Changeset 72200 in webkit
- Timestamp:
- Nov 17, 2010 5:30:20 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r72191 r72200 1 2010-11-17 Eric Uhrhane <ericu@chromium.org> 2 3 Reviewed by David Levin. 4 5 [Chromium] implementation of async FileWriter for workers 6 https://bugs.webkit.org/show_bug.cgi?id=47681 7 8 Tests are in a separate changelist. 9 10 * platform/CrossThreadCopier.h: Changed CrossThreadCopier[Base] to support PassRefPtrs 11 1 12 2010-11-17 Alejandro G. Castro <alex@igalia.com> 2 13 -
trunk/WebCore/platform/CrossThreadCopier.h
r65021 r72200 72 72 // Custom copy methods. 73 73 template<typename T> struct CrossThreadCopierBase<false, true, T> { 74 typedef typename WTF::RemoveTemplate<T, RefPtr>::Type RefCountedType; 74 typedef typename WTF::RemoveTemplate<T, RefPtr>::Type TypeWithoutRefPtr; 75 typedef typename WTF::RemoveTemplate<TypeWithoutRefPtr, PassRefPtr>::Type RefCountedType; 75 76 typedef PassRefPtr<RefCountedType> Type; 76 77 static Type copy(const T& refPtr) … … 114 115 115 116 template<typename T> struct CrossThreadCopier : public CrossThreadCopierBase<WTF::IsConvertibleToInteger<T>::value, 116 WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, RefPtr>::Type, ThreadSafeShared>::value, 117 WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, RefPtr>::Type, ThreadSafeShared>::value 118 || WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, PassRefPtr>::Type, ThreadSafeShared>::value, 117 119 T> { 118 120 }; -
trunk/WebKit/chromium/ChangeLog
r72196 r72200 1 2010-11-17 Eric Uhrhane <ericu@chromium.org> 2 3 Reviewed by David Levin. 4 5 [Chromium] implementation of async FileWriter for workers 6 https://bugs.webkit.org/show_bug.cgi?id=47681 7 8 Tests are in a separate changelist. 9 10 Added new files. 11 * WebKit.gyp: 12 13 * src/WorkerAsyncFileSystemChromium.cpp: Added WorkerAsyncFileWriterChromium construction. 14 * src/WorkerAsyncFileWriterChromium.cpp: Added. 15 * src/WorkerAsyncFileWriterChromium.h: Added. 16 17 This class bridges between the context and main threads for the WorkerAsyncFileWriterChromium. 18 * src/WorkerFileWriterCallbacksBridge.cpp: Added. 19 * src/WorkerFileWriterCallbacksBridge.h: Added. 20 1 21 2010-11-17 John Mellor <johnme@chromium.org> 2 22 -
trunk/WebKit/chromium/WebKit.gyp
r72112 r72200 548 548 'src/WorkerAsyncFileSystemChromium.cpp', 549 549 'src/WorkerAsyncFileSystemChromium.h', 550 'src/WorkerAsyncFileWriterChromium.cpp', 551 'src/WorkerAsyncFileWriterChromium.h', 550 552 'src/WorkerFileSystemCallbacksBridge.cpp', 551 553 'src/WorkerFileSystemCallbacksBridge.h', 554 'src/WorkerFileWriterCallbacksBridge.cpp', 555 'src/WorkerFileWriterCallbacksBridge.h', 552 556 'src/WrappedResourceRequest.h', 553 557 'src/WrappedResourceResponse.h', -
trunk/WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp
r69485 r72200 35 35 36 36 #include "AsyncFileSystemCallbacks.h" 37 #include "FileMetadata.h" 37 38 #include "FileSystem.h" 38 39 #include "NotImplemented.h" 39 40 #include "WebFileSystem.h" 40 41 #include "WebFileSystemCallbacksImpl.h" 42 #include "WebFileWriter.h" 41 43 #include "WebKit.h" 42 44 #include "WebKitClient.h" 43 45 #include "WebWorkerBase.h" 46 #include "WorkerAsyncFileWriterChromium.h" 44 47 #include "WorkerContext.h" 45 48 #include "WorkerFileSystemCallbacksBridge.h" … … 135 138 } 136 139 137 void WorkerAsyncFileSystemChromium::createWriter(AsyncFileWriterClient*, const String&, PassOwnPtr<AsyncFileSystemCallbacks>) 138 { 139 notImplemented(); 140 class WorkerFileWriterHelperCallbacks : public AsyncFileSystemCallbacks { 141 public: 142 static PassOwnPtr<WorkerFileWriterHelperCallbacks> create(AsyncFileWriterClient* client, const String& path, WebKit::WebFileSystem* webFileSystem, PassOwnPtr<WebCore::AsyncFileSystemCallbacks> callbacks, WorkerContext* workerContext) 143 { 144 return adoptPtr(new WorkerFileWriterHelperCallbacks(client, path, webFileSystem, callbacks, workerContext)); 145 } 146 147 virtual void didSucceed() 148 { 149 ASSERT_NOT_REACHED(); 150 } 151 152 virtual void didReadMetadata(const FileMetadata& metadata) 153 { 154 ASSERT(m_callbacks); 155 if (metadata.type != FileMetadata::TypeFile || metadata.length < 0) 156 m_callbacks->didFail(WebKit::WebFileErrorInvalidState); 157 else { 158 OwnPtr<WorkerAsyncFileWriterChromium> asyncFileWriterChromium = WorkerAsyncFileWriterChromium::create(m_webFileSystem, m_path, m_workerContext, m_client, WorkerAsyncFileWriterChromium::Asynchronous); 159 m_callbacks->didCreateFileWriter(asyncFileWriterChromium.release(), metadata.length); 160 } 161 } 162 163 virtual void didReadDirectoryEntry(const String& name, bool isDirectory) 164 { 165 ASSERT_NOT_REACHED(); 166 } 167 168 virtual void didReadDirectoryEntries(bool hasMore) 169 { 170 ASSERT_NOT_REACHED(); 171 } 172 173 virtual void didOpenFileSystem(const String&, PassOwnPtr<AsyncFileSystem>) 174 { 175 ASSERT_NOT_REACHED(); 176 } 177 178 // Called when an AsyncFileWrter has been created successfully. 179 virtual void didCreateFileWriter(PassOwnPtr<AsyncFileWriter>, long long) 180 { 181 ASSERT_NOT_REACHED(); 182 } 183 184 virtual void didFail(int code) 185 { 186 ASSERT(m_callbacks); 187 m_callbacks->didFail(code); 188 } 189 190 private: 191 WorkerFileWriterHelperCallbacks(AsyncFileWriterClient* client, const String& path, WebKit::WebFileSystem* webFileSystem, PassOwnPtr<WebCore::AsyncFileSystemCallbacks> callbacks, WorkerContext* workerContext) 192 : m_client(client) 193 , m_path(path) 194 , m_webFileSystem(webFileSystem) 195 , m_callbacks(callbacks) 196 , m_workerContext(workerContext) 197 { 198 } 199 200 AsyncFileWriterClient* m_client; 201 String m_path; 202 WebKit::WebFileSystem* m_webFileSystem; 203 OwnPtr<WebCore::AsyncFileSystemCallbacks> m_callbacks; 204 WorkerContext* m_workerContext; 205 }; 206 207 void WorkerAsyncFileSystemChromium::createWriter(AsyncFileWriterClient* client, const String& path, PassOwnPtr<AsyncFileSystemCallbacks> callbacks) 208 { 209 createWorkerFileSystemCallbacksBridge(WorkerFileWriterHelperCallbacks::create(client, path, m_webFileSystem, callbacks, m_workerContext))->postReadMetadataToMainThread(m_webFileSystem, path, m_modeForCurrentOperation); 140 210 } 141 211
Note: See TracChangeset
for help on using the changeset viewer.