[webkit-reviews] review denied: [Bug 45808] Add Worker support for FileSystem API : [Attachment 67862] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Sep 17 15:20:25 PDT 2010


David Levin <levin at chromium.org> has denied Kinuko Yasuda
<kinuko at chromium.org>'s request for review:
Bug 45808: Add Worker support for FileSystem API
https://bugs.webkit.org/show_bug.cgi?id=45808

Attachment 67862: Patch
https://bugs.webkit.org/attachment.cgi?id=67862&action=review

------- Additional Comments from David Levin <levin at chromium.org>
View in context:
https://bugs.webkit.org/attachment.cgi?id=67862&action=prettypatch

> WebCore/ChangeLog:10
> +	   Also changed how to get the base path for Web file systems (in
non-chromium ports) so that it works for workers too.  This patch assumes each
port calls LocalFileSystem::initializeLocalFileSystem() in its initialization
phase.

In general lines are wrapped some in the ChangeLog (unlike everywhere else in
WebKit.

> WebCore/ChangeLog:35
> +	   * workers/WorkerContext.idl:

Ideally you would write something (brief) that describes why you did a change
in this file (or function).

See Darin Adler's ChangeLogs for a good example of what I mean.

> WebCore/ChangeLog:1454
> +	   Added NoStaticTables and changed modulename from storage to fileapi:


This change seems very misplaced.

> WebCore/fileapi/LocalFileSystem.cpp:62
> +    staticLocalFileSystem = new LocalFileSystem(basePath);

Is this function called from multiple threads (because it isn't threadsafe)?

You can either assert that this is on the main thread or use the macro which
takes a mutex to do this in a threadsafe manner. 

Also here is another plain new. Use OwnPtr... as I mention in another place
(below).

> WebCore/fileapi/LocalFileSystem.cpp:67
> +    if (!staticLocalFileSystem)

same comment as the other method which does something like this.

> WebCore/workers/WorkerContext.h:127
> +	   // They are placed here and in all capital letters to enforce
compile-time enum checking.

Alexey had a question about this comment that seems unanswered (and I have the
same question).

It may be best to answer the question by fixing the comment since at least two
people looking at this code have had the same reaction.

> WebKit/chromium/src/WebWorkerBase.cpp:128
> +	   ASSERT(new OpenFileSystemMainThreadBridge(worker, commonClient,
mode, type, size, callbacks));

This isn't going to work in !debug.

Also, why ASSERT this at all?

Lastly, use OwnPtr().leakPtr() here. WebKit is moving away from having an
"new"s that don't use OwnPtr.

> WebKit/chromium/src/WebWorkerBase.cpp:150
> +	       commonClient->openFileSystem(type, size, new
MainThreadFileSystemCallbacks(bridge));

Another instance of new.
Consider making the constructor for MainThreadFileSystemCallbacks private and
adding a create method which returns a PassOwnPtr.

> WebKit/chromium/src/WebWorkerBase.cpp:164
> +		   didFail(WebFileErrorAbort);

This call to "didFail" is incorrect.
This is the destructor and "didFail" will "delete this" (again).

> WebKit/chromium/src/WebWorkerBase.cpp:170
> +	       m_bridge.leakPtr()->didOpenFileSystemOnMainThread(name, path);

Why are these calls doing leak ptr? (A comment may be in order.)

I didn't parse/grok the whole patch yet but I felt there were enough things
here that it may be good to give this feedback now.


More information about the webkit-reviews mailing list