RESOLVED FIXED Bug 84935
[Chromium/Windows] Add LocalizedDateWin
https://bugs.webkit.org/show_bug.cgi?id=84935
Summary [Chromium/Windows] Add LocalizedDateWin
Kent Tamura
Reported 2012-04-26 01:47:43 PDT
[Chromium/Windows] Add LocalizedDateWin
Attachments
Patch (24.45 KB, patch)
2012-04-26 03:52 PDT, Kent Tamura
no flags
Patch 2 (41.47 KB, patch)
2012-04-26 23:11 PDT, Kent Tamura
no flags
Patch 3 (44.67 KB, patch)
2012-04-30 22:20 PDT, Kent Tamura
haraken: review+
Kent Tamura
Comment 1 2012-04-26 03:52:00 PDT
Kent Tamura
Comment 2 2012-04-26 03:53:17 PDT
Morita-san, Haraken-san, This patch is for Windows, but the majority of the code is string manipulation. So I hope you can review this.
Kentaro Hara
Comment 3 2012-04-26 10:22:44 PDT
Comment on attachment 138968 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=138968&action=review > Source/WebCore/ChangeLog:17 > + No new tests. The behavior depends on system settings. Landing this patch without tests seems a bit dangerous. Isn't there any way to make it testable? > Source/WebCore/platform/text/LocalizedDateWin.cpp:67 > + buffer.shrink(bufferSizeWithNUL - 1); Is this needed? > Source/WebCore/platform/text/LocalizedDateWin.cpp:87 > + OwnPtr<Vector<String> > labels = adoptPtr(new Vector<String>); Shall we put labels->reserveCapacity(WTF_ARRAY_LENGTH(types))? > Source/WebCore/platform/text/LocalizedDateWin.cpp:91 > + labels->shrink(0); Nit: I would prefer labels->clear() for such cases. > Source/WebCore/platform/text/LocalizedDateWin.cpp:103 > + static Vector<String>* labels = createShortMonthLabels().leakPtr(); - Please use DEFINE_STATIC_LOCAL() for a static variable declaration. - I know this code is correct, but using adoptPtr() => release() => leakPtr() seems a bit dirty. How about writing like this? static const Vector<String>& shortMonthLabels() { DEFINE_STATIC_LOCAL(Vector<String>, labels, ()); if (!labels.isEmpty()) return labels; ...; /* The code in createShortMonthLabels() */ } > Source/WebCore/platform/text/LocalizedDateWin.cpp:152 > +static unsigned countContinuousLetters(const String& format, unsigned i) Nit: 'i' => 'index', for clarification? You are using 'index' in parseNumberXXX(). > Source/WebCore/platform/text/LocalizedDateWin.cpp:184 > + if (format[i - 1] == '\'') Maybe I am missing something, why do we need to handle '' specially? In other words, why do we need a different logic for '' and 'foo'? > Source/WebCore/platform/text/LocalizedDateWin.cpp:193 > + if (i > 0 && format[i-1] == '\'') When can this happen? > Source/WebCore/platform/text/LocalizedDateWin.cpp:227 > + // HTML5 date supports only A.D. Nit: It would be interesting if HTML5 supported B.C.:) > Source/WebCore/platform/text/LocalizedDateWin.cpp:261 > + if (input.substring(index, shortLabels[i].length()) == shortLabels[i]) { What happens if input="Mayyyyyy" and shortLabels[i]="May". This will return 4, but is it expected? > Source/WebCore/platform/text/LocalizedDateWin.cpp:268 > + if (input.substring(index, labels[i].length()) == labels[i]) { Ditto. > Source/WebCore/platform/text/LocalizedDateWin.cpp:293 > + if (day < 1 || day > 31) Just an out-of-curiosity question: Where is the difference of the number of monthly dates treated? e.g. There are only 30 days in April. > Source/WebCore/platform/text/LocalizedDateWin.cpp:355 > +static void appendTwoDigitNumber(int value, StringBuilder& buffer) appendTwoDigit*s*Number()? Dunno. > Source/WebCore/platform/text/LocalizedDateWin.cpp:362 > +static void appendFourDigitNumber(int value, StringBuilder& buffer) appendFourDigit*s*Number? > Source/WebCore/platform/text/LocalizedDateWin.cpp:405 > + appendFourDigitNumber(year, buffer); Maybe I am missing something, but isn't it 'else { appendFourDigitNumber(year, buffer); }'? > Source/WebCore/platform/text/LocalizedDateWin.cpp:413 > + appendFourDigitNumber(year, buffer); Ditto. > Source/WebCore/platform/text/LocalizedDateWin.cpp:508 > + OwnPtr<Vector<String> > labels = adoptPtr(new Vector<String>); You can put labels->reserveCapacity(WTF_ARRAY_LENGTH(types)); > Source/WebCore/platform/text/LocalizedDateWin.cpp:512 > + labels->shrink(0); labels->clear() is better? > Source/WebCore/platform/text/LocalizedDateWin.cpp:525 > + labels->append("January"); > + labels->append("February"); > + labels->append("March"); > + labels->append("April"); > + labels->append("May"); > + labels->append("June"); > + labels->append("July"); > + labels->append("August"); > + labels->append("September"); > + labels->append("October"); > + labels->append("November"); > + labels->append("December"); Why didn't you use WTF::monthName[i]? > Source/WebCore/platform/text/LocalizedDateWin.cpp:534 > + static Vector<String>* labels = createMonthLabels().leakPtr(); The same comment for shortMonthLabels(). > Source/WebCore/platform/text/LocalizedDateWin.cpp:549 > + OwnPtr<Vector<String> > labels = adoptPtr(new Vector<String>); You can put labels.reserveCapacity(WTF_ARRAY_LENGTH(types)); > Source/WebCore/platform/text/LocalizedDateWin.cpp:553 > + labels->shrink(0); labels->clear() is better? > Source/WebCore/platform/text/LocalizedDateWin.cpp:567 > + static Vector<String>* labels = createWeekDayShortLabels().leakPtr(); The same comment for shortMonthLabels(). > Source/WebCore/platform/text/LocalizedDateWin.cpp:582 > + static unsigned firstDayOfWeek = createFirstDayOfWeek(); Please use DEFINE_STATIC_LOCAL().
Kent Tamura
Comment 4 2012-04-26 22:30:55 PDT
Comment on attachment 138968 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=138968&action=review >> Source/WebCore/platform/text/LocalizedDateWin.cpp:67 >> + buffer.shrink(bufferSizeWithNUL - 1); > > Is this needed? Yes. GetLocaleInfo adds a terminating '\0'. We don't need it. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:87 >> + OwnPtr<Vector<String> > labels = adoptPtr(new Vector<String>); > > Shall we put labels->reserveCapacity(WTF_ARRAY_LENGTH(types))? done >> Source/WebCore/platform/text/LocalizedDateWin.cpp:91 >> + labels->shrink(0); > > Nit: I would prefer labels->clear() for such cases. clear() is inefficient in this case because it shrink the capacity. We'd like to keep the capacity. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:152 >> +static unsigned countContinuousLetters(const String& format, unsigned i) > > Nit: 'i' => 'index', for clarification? You are using 'index' in parseNumberXXX(). done. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:184 >> + if (format[i - 1] == '\'') > > Maybe I am missing something, why do we need to handle '' specially? In other words, why do we need a different logic for '' and 'foo'? According to MSDN, '' produces one single quote though 'foo' produces foo. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:193 >> + if (i > 0 && format[i-1] == '\'') > > When can this happen? According to MSDn, 'foo''bar' produces foo'bar That is to say, '' always produces one single quote regardless of inQuote. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:261 >> + if (input.substring(index, shortLabels[i].length()) == shortLabels[i]) { > > What happens if input="Mayyyyyy" and shortLabels[i]="May". This will return 4, but is it expected? Yes, parsing the month succeeds, then probably remaining "yyyy" causes an error. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:293 >> + if (day < 1 || day > 31) > > Just an out-of-curiosity question: Where is the difference of the number of monthly dates treated? e.g. There are only 30 days in April. April 31 will be recognized as May 1 by dateToDaysFrom1970(). I don't have strong preference to this behavior. It's easy to implement. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:355 >> +static void appendTwoDigitNumber(int value, StringBuilder& buffer) > > appendTwoDigit*s*Number()? Dunno. done >> Source/WebCore/platform/text/LocalizedDateWin.cpp:405 >> + appendFourDigitNumber(year, buffer); > > Maybe I am missing something, but isn't it 'else { appendFourDigitNumber(year, buffer); }'? You're right! >> Source/WebCore/platform/text/LocalizedDateWin.cpp:508 >> + OwnPtr<Vector<String> > labels = adoptPtr(new Vector<String>); > > You can put labels->reserveCapacity(WTF_ARRAY_LENGTH(types)); done >> Source/WebCore/platform/text/LocalizedDateWin.cpp:525 >> + labels->append("December"); > > Why didn't you use WTF::monthName[i]? WTF::monthName is a set of short names such as "Jan". We need full names. >> Source/WebCore/platform/text/LocalizedDateWin.cpp:549 >> + OwnPtr<Vector<String> > labels = adoptPtr(new Vector<String>); > > You can put labels.reserveCapacity(WTF_ARRAY_LENGTH(types)); done.
Kent Tamura
Comment 5 2012-04-26 23:11:27 PDT
Created attachment 139136 [details] Patch 2 Add tests
Kentaro Hara
Comment 6 2012-04-27 10:54:05 PDT
Comment on attachment 139136 [details] Patch 2 View in context: https://bugs.webkit.org/attachment.cgi?id=139136&action=review > Source/WebCore/platform/text/LocaleWin.cpp:55 > + : m_lcid(lcid) Shall we initialize m_shortMonthLabels etc? WebKit requires to initialize all member variables unless there is a performance concern. See http://www.webkit.org/coding/coding-style.html (Other punctuations - 1.) > Source/WebCore/platform/text/LocaleWin.cpp:81 > +PassOwnPtr<LocaleWin> LocaleWin::create(LCID lcid) > +{ > + return adoptPtr(new LocaleWin(lcid)); > +} > + > +LocaleWin* LocaleWin::currentLocale() > +{ > + // Ideally we should make LCID from defaultLanguage(). But > + // ::LocaleNameToLCID() is available since Windows Vista. > + static LocaleWin* currentLocale = LocaleWin::create(LOCALE_USER_DEFAULT).leakPtr(); > + return currentLocale; > +} Shall we eliminate adoptPtr() and leakPtr(), in the same way as initializeShortMonthLabels()? > Source/WebCore/platform/text/LocaleWin.cpp:98 > +void LocaleWin::initializeShortMonthLabels() ensureShortMonthLabels() might be a better name? > Source/WebCore/platform/text/LocaleWin.cpp:101 > + if (m_shortMonthLabels.size()) > + return; Do we need to call .size()? 'if (m_shortMonthLabels)' is not enough? I like the approach of using m_shortMonthLabels, but how many LocalWin objects will be generated? If it can be many, using static variables would be a better approach. > Source/WebCore/platform/text/LocaleWin.cpp:194 > + UChar ch = format[i]; Let's add ASSERT(i < format.length()). > Source/WebCore/platform/text/LocaleWin.cpp:277 > + if (equalIgnoringCase(input.substring(index, m_monthLabels[i].length()), m_monthLabels[i])) { > + index += m_monthLabels[i].length(); Please use 'unsigned length = m_monthLabels[i].length();' in order to avoid accessing .length() twice. > Source/WebCore/platform/text/LocaleWin.cpp:283 > + if (equalIgnoringCase(input.substring(index, m_shortMonthLabels[i].length()), m_shortMonthLabels[i])) { > + index += m_shortMonthLabels[i].length(); Ditto. > Source/WebCore/platform/text/LocaleWin.cpp:313 > + if (input.substring(inputIndex, data.length()) == data) > + inputIndex += data.length(); Ditto. > Source/WebCore/platform/text/LocaleWin.cpp:465 > +void LocaleWin::initializeShortDateTokens() ensureShortDateTokens() would be a better name? > Source/WebCore/platform/text/LocaleWin.cpp:468 > + if (m_shortDateTokens.size()) > + return; Same comment for m_shortMonthLabels. > Source/WebCore/platform/text/LocaleWin.cpp:482 > + buffer.append(dayText.isEmpty() ? "Day" : dayText); Let's write String dayTextString = dayText.isEmpty() ? "Day" : dayText; outside of the for loop, and then use dayTextString here. (I hope the complier will do the optimization though.) > Source/WebCore/platform/text/LocaleWin.cpp:488 > + buffer.append(monthText.isEmpty() ? "Month" : monthText); Ditto. > Source/WebCore/platform/text/LocaleWin.cpp:493 > + buffer.append(yearText.isEmpty() ? "Year" : yearText); Ditto. > Source/WebCore/platform/text/LocaleWin.cpp:511 > +void LocaleWin::initializeMonthLabels() ensureMonthLabels() would be a better name? > Source/WebCore/platform/text/LocaleWin.cpp:514 > + if (m_monthLabels.size()) > + return; Same comment for m_monthShortLabels. > Source/WebCore/platform/text/LocaleWin.cpp:546 > + m_monthLabels.reserveCapacity(12); > + m_monthLabels.append("January"); > + m_monthLabels.append("February"); > + m_monthLabels.append("March"); > + m_monthLabels.append("April"); > + m_monthLabels.append("May"); > + m_monthLabels.append("June"); > + m_monthLabels.append("July"); > + m_monthLabels.append("August"); > + m_monthLabels.append("September"); > + m_monthLabels.append("October"); > + m_monthLabels.append("November"); > + m_monthLabels.append("December"); It is OK, but it might be better to implement WTF::monthFullName[] and use it here. > Source/WebCore/platform/text/LocaleWin.cpp:552 > +void LocaleWin::initializeWeekDayShortLabels() ensureWeekDayShortLabels()? > Source/WebCore/platform/text/LocaleWin.cpp:555 > + if (m_weekDayShortLabels.size()) > + return; Same comment for m_monthShortLabels. > Source/WebCore/platform/text/LocaleWin.h:63 > + LocaleWin(LCID); 'explicit' please. > Source/WebCore/platform/text/LocaleWin.h:79 > + Vector<String> m_monthLabels; Shouldn't this be in #if ENABLE(CALENDAR_PICKER)? I am not sure why only m_weekDayShortLabels and m_firstDayOfWeek are in the enable flag. > Source/WebKit/chromium/tests/LocaleWinTest.cpp:58 > + EXPECT_STREQ("year/month/day", LocaleWin::dateFormatText("yyyy/MMMM/dddd", "year", "month", "day").utf8().data()); + EXPECT_STREQ("year/month/day/year/month/day", LocaleWin::dateFormatText("yyyy/MMMM/dddd/yyyy/MMMM/dddd", "year", "month", "day").utf8().data()); + EXPECT_STREQ("YY/mm/DD", LocaleWin::dateFormatText("YY/mm/DD", "year", "month", "day").utf8().data()); > Source/WebKit/chromium/tests/LocaleWinTest.cpp:71 > + EXPECT_STREQ("4/7/8", locale->formatDate("M/d/y", 2012, 2008, April, 7).utf8().data()); Please add tests for the "both-side" of edge cases. + EXPECT_STREQ("4/7/2007", locale->formatDate("M/d/y", 2012, 2007, April, 7).utf8().data()); > Source/WebKit/chromium/tests/LocaleWinTest.cpp:72 > + EXPECT_STREQ("4/7/7", locale->formatDate("M/d/y", 2012, 2017, April, 7).utf8().data()); + EXPECT_STREQ("4/7/2018", locale->formatDate("M/d/y", 2012, 2018, April, 7).utf8().data()); > Source/WebKit/chromium/tests/LocaleWinTest.cpp:78 > + EXPECT_STREQ("04/07/63", locale->formatDate("MM/dd/yy", 2012, 1963, April, 7).utf8().data()); + EXPECT_STREQ("04/07/1962", locale->formatDate("MM/dd/yy", 2012, 1962, April, 7).utf8().data()); > Source/WebKit/chromium/tests/LocaleWinTest.cpp:87 > + EXPECT_STREQ("Jan/7/2012", locale->formatDate("MMM/d/yyyy", 2012, 2012, January, 7).utf8().data()); > + EXPECT_STREQ("Feb/7/2008", locale->formatDate("MMM/d/yyyy", 2012, 2008, February, 7).utf8().data()); > + EXPECT_STREQ("Mar/7/2017", locale->formatDate("MMM/d/yyyy", 2012, 2017, March, 7).utf8().data()); > + EXPECT_STREQ("Dec/31/2062", locale->formatDate("MMM/d/yyyy", 2012, 2062, December, 31).utf8().data()); > + EXPECT_STREQ("May/7/0002", locale->formatDate("MMM/d/yyyy", 2012, 2, May, 7).utf8().data()); Let's add test cases for other months. > Source/WebKit/chromium/tests/LocaleWinTest.cpp:93 > + EXPECT_STREQ("June-7-22012", locale->formatDate("MMMM-d-yyyy", 2012, 22012, June, 7).utf8().data()); > + EXPECT_STREQ("July-7-12008", locale->formatDate("MMMM-d-yyyy", 2012, 12008, July, 7).utf8().data()); > + EXPECT_STREQ("August-7-2017", locale->formatDate("MMMM-d-yyyy", 2012, 2017, August, 7).utf8().data()); > + EXPECT_STREQ("September-31-2062", locale->formatDate("MMMM-d-yyyy", 2012, 2062, September, 31).utf8().data()); > + EXPECT_STREQ("October-7-0002", locale->formatDate("MMMM-d-yyyy", 2012, 2, October, 7).utf8().data()); Let's add test cases for other months. > Source/WebKit/chromium/tests/LocaleWinTest.cpp:94 > +} Please add test cases for invalid baseyear, year, month and date. baseyear=-1, year=-1, month=12, date=32 etc. > Source/WebKit/chromium/tests/LocaleWinTest.cpp:122 > +} Please add test cases for invalid baseyear, year, month and date. e.g. "Mayyyy/4/2012", "May/0/2012", "May/32/2012", "May/4/-1" etc Please add test cases that include spaces. e.g. " May / 4 / 2012 " etc.
Kent Tamura
Comment 7 2012-04-30 21:54:45 PDT
Comment on attachment 139136 [details] Patch 2 View in context: https://bugs.webkit.org/attachment.cgi?id=139136&action=review >> Source/WebCore/platform/text/LocaleWin.cpp:55 >> + : m_lcid(lcid) > > Shall we initialize m_shortMonthLabels etc? WebKit requires to initialize all member variables unless there is a performance concern. > See http://www.webkit.org/coding/coding-style.html (Other punctuations - 1.) We don't need to initialize m_shortMonthLabels, etc. because they are Vector<> and initialized automatically. BTW, you can refer to a specific style rule by a URL; e.g. http://www.webkit.org/coding/coding-style.html#punctuation-member-init >> Source/WebCore/platform/text/LocaleWin.cpp:81 >> +} > > Shall we eliminate adoptPtr() and leakPtr(), in the same way as initializeShortMonthLabels()? We shouldn't. We have "PassOwnPtr<LocaleWin> create()", and always use it. >> Source/WebCore/platform/text/LocaleWin.cpp:98 >> +void LocaleWin::initializeShortMonthLabels() > > ensureShortMonthLabels() might be a better name? Renamed. >> Source/WebCore/platform/text/LocaleWin.cpp:101 >> + return; > > Do we need to call .size()? 'if (m_shortMonthLabels)' is not enough? > > I like the approach of using m_shortMonthLabels, but how many LocalWin objects will be generated? If it can be many, using static variables would be a better approach. AFAIK, Vector->bool conversion is not defined. It is possible to have multiple LocaleWin objects for various locales at the same time in the future. So we should make this a data member. >> Source/WebCore/platform/text/LocaleWin.cpp:194 >> + UChar ch = format[i]; > > Let's add ASSERT(i < format.length()). I don't think it is helpful. The above 'for' ensures it. >> Source/WebCore/platform/text/LocaleWin.cpp:277 >> + index += m_monthLabels[i].length(); > > Please use 'unsigned length = m_monthLabels[i].length();' in order to avoid accessing .length() twice. done. >> Source/WebCore/platform/text/LocaleWin.cpp:482 >> + buffer.append(dayText.isEmpty() ? "Day" : dayText); > > Let's write > > String dayTextString = dayText.isEmpty() ? "Day" : dayText; > > outside of the for loop, and then use dayTextString here. (I hope the complier will do the optimization though.) done. >> Source/WebCore/platform/text/LocaleWin.cpp:546 >> + m_monthLabels.append("December"); > > It is OK, but it might be better to implement WTF::monthFullName[] and use it here. done. >> Source/WebCore/platform/text/LocaleWin.h:63 >> + LocaleWin(LCID); > > 'explicit' please. done. >> Source/WebCore/platform/text/LocaleWin.h:79 >> + Vector<String> m_monthLabels; > > Shouldn't this be in #if ENABLE(CALENDAR_PICKER)? I am not sure why only m_weekDayShortLabels and m_firstDayOfWeek are in the enable flag. m_monthLabels is used by parseDate() and monthLabels(). parseDate() is used even if CALENDAR_PICKER is disabled. monthLabels() is called only if CALENDAR_PICKER is enabled. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:58 >> + EXPECT_STREQ("year/month/day", LocaleWin::dateFormatText("yyyy/MMMM/dddd", "year", "month", "day").utf8().data()); > > + EXPECT_STREQ("year/month/day/year/month/day", LocaleWin::dateFormatText("yyyy/MMMM/dddd/yyyy/MMMM/dddd", "year", "month", "day").utf8().data()); > + EXPECT_STREQ("YY/mm/DD", LocaleWin::dateFormatText("YY/mm/DD", "year", "month", "day").utf8().data()); done. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:71 >> + EXPECT_STREQ("4/7/8", locale->formatDate("M/d/y", 2012, 2008, April, 7).utf8().data()); > > Please add tests for the "both-side" of edge cases. > + EXPECT_STREQ("4/7/2007", locale->formatDate("M/d/y", 2012, 2007, April, 7).utf8().data()); done. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:72 >> + EXPECT_STREQ("4/7/7", locale->formatDate("M/d/y", 2012, 2017, April, 7).utf8().data()); > > + EXPECT_STREQ("4/7/2018", locale->formatDate("M/d/y", 2012, 2018, April, 7).utf8().data()); done. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:78 >> + EXPECT_STREQ("04/07/63", locale->formatDate("MM/dd/yy", 2012, 1963, April, 7).utf8().data()); > > + EXPECT_STREQ("04/07/1962", locale->formatDate("MM/dd/yy", 2012, 1962, April, 7).utf8().data()); done. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:87 >> + EXPECT_STREQ("May/7/0002", locale->formatDate("MMM/d/yyyy", 2012, 2, May, 7).utf8().data()); > > Let's add test cases for other months. done. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:93 >> + EXPECT_STREQ("October-7-0002", locale->formatDate("MMMM-d-yyyy", 2012, 2, October, 7).utf8().data()); > > Let's add test cases for other months. done. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:94 >> +} > > Please add test cases for invalid baseyear, year, month and date. baseyear=-1, year=-1, month=12, date=32 etc. done. >> Source/WebKit/chromium/tests/LocaleWinTest.cpp:122 >> +} > > Please add test cases for invalid baseyear, year, month and date. e.g. "Mayyyy/4/2012", "May/0/2012", "May/32/2012", "May/4/-1" etc > > Please add test cases that include spaces. e.g. " May / 4 / 2012 " etc. done.
Kent Tamura
Comment 8 2012-04-30 22:20:51 PDT
Kentaro Hara
Comment 9 2012-05-01 00:20:52 PDT
Comment on attachment 139583 [details] Patch 3 View in context: https://bugs.webkit.org/attachment.cgi?id=139583&action=review Looks good to me > Source/WebCore/ChangeLog:72 > + Added. The follwoing functions simply delegate to LocaleWin::currentLocale(). Nit: follwoing => following > Source/WebCore/platform/text/LocaleWin.cpp:79 > + static LocaleWin *currentLocale = LocaleWin::create(LOCALE_USER_DEFAULT).leakPtr(); Can't we use DEFINE_STATIC_LOCAL()?
Kent Tamura
Comment 10 2012-05-01 00:50:29 PDT
Comment on attachment 139583 [details] Patch 3 View in context: https://bugs.webkit.org/attachment.cgi?id=139583&action=review Thank you for the review! >> Source/WebCore/ChangeLog:72 >> + Added. The follwoing functions simply delegate to LocaleWin::currentLocale(). > > Nit: follwoing => following will fix. >> Source/WebCore/platform/text/LocaleWin.cpp:79 >> + static LocaleWin *currentLocale = LocaleWin::create(LOCALE_USER_DEFAULT).leakPtr(); > > Can't we use DEFINE_STATIC_LOCAL()? We can't. DEFINE_STATIC_LOCAL always uses "new" in it.
Kent Tamura
Comment 11 2012-05-01 00:53:43 PDT
Note You need to log in before you can comment on or make changes to this bug.