WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
31154
Simplify Icon interface
https://bugs.webkit.org/show_bug.cgi?id=31154
Summary
Simplify Icon interface
Kent Tamura
Reported
2009-11-04 21:53:53 PST
In WebCore/platform/graphics/Icon.h The roles of Icon::createIconForFile() and createIconForFiles() are not well-defined. For example, it's not sure whether a caller can use createIconForFiles() for a single file or not. So I'd like to propose removing createIconForFile() and using createIconForFiles() for any cases.
Attachments
Proposed patch
(33.80 KB, patch)
2009-11-04 22:09 PST
,
Kent Tamura
darin
: review-
Details
Formatted Diff
Diff
Proposed patch (rev.2)
(16.07 KB, patch)
2009-11-05 19:40 PST
,
Kent Tamura
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Kent Tamura
Comment 1
2009-11-04 22:09:06 PST
Created
attachment 42547
[details]
Proposed patch
Darin Adler
Comment 2
2009-11-05 10:50:29 PST
Comment on
attachment 42547
[details]
Proposed patch It's best not to combine refactoring with a bug fix in a single patch. A first patch that refactors and then a second that fixes the bug would be a superior approach. Or vice versa.
> +#ifndef BUILDING_ON_TIGER > + if (filenames.size() == 1) > +#endif // FIXME: find a better image for multiple files to use on Tiger. > + { > + // Don't pass relative filenames -- we don't want a result that depends on the current directory. > + // Need 0U here to disambiguate String::operator[] from operator(NSString*, int)[] > + if (filenames[0].isEmpty() || filenames[0][0U] != '/') > + return 0; > + > + NSImage* image = [[NSWorkspace sharedWorkspace] iconForFile:filenames[0]]; > + if (!image) > + return 0; > + > + return adoptRef(new Icon(image)); > + }
It's better to not have a conditional if like this -- too hard to read. Instead, a boolean could be used to keep it simpler although a few more lines of code. bool useIconFromFirstFile; #ifdef BUILDING_ON_TIGER useIconFromFirstFile = true; #else useIconFromFirstFile = filenames.size() == 1; #endif if (useIconFromFirstFile) { // body here }
> + FileList* list = input->files(); > + Vector<String> filenames; > + for (unsigned i = 0; list && i < list->length(); ++i) > + filenames.append(list->item(i)->path()); > + m_fileChooser = FileChooser::create(this, filenames);
It's inelegant to check list for 0 every time through the loop and also to call the length function every time. Both can be solved by having a local variable. unsigned length = list ? list->length() : 0; I'm going to say review- so you can make the style changes I suggest and also consider whether you can separate the refactoring from the behavior change. Perhaps I was mistaken and there is no behavior change. In that case, it would be best to land the test first separately, then land the code change.
Kent Tamura
Comment 3
2009-11-05 19:40:45 PST
Created
attachment 42621
[details]
Proposed patch (rev.2) Darin, thank you for the comments. I removed the bug fix part, and applied your comments.
WebKit Commit Bot
Comment 4
2009-11-08 17:28:27 PST
Comment on
attachment 42621
[details]
Proposed patch (rev.2) Clearing flags on attachment: 42621 Committed
r50632
: <
http://trac.webkit.org/changeset/50632
>
WebKit Commit Bot
Comment 5
2009-11-08 17:28:31 PST
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug