Bug 16994

Summary: SmartReplace.cpp isn't implemented for platforms without CoreFoundation
Product: WebKit Reporter: Tony Chang <tony>
Component: WebCore Misc.Assignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Mac   
OS: OS X 10.4   
Attachments:
Description Flags
implement WebCore::isCharacterSmartReplaceExempt
darin: review-
take 2
darin: review-
take 3
darin: review+
in a separate file none

Tony Chang
Reported 2008-01-24 12:44:23 PST
The method WebCore::isCharacterSmartReplaceExempt is needed for smart paste to work. It's currently unimplemented unless CoreFoundation is in the build. I have a patch coming up that implements this method using ICU directly.
Attachments
implement WebCore::isCharacterSmartReplaceExempt (3.51 KB, patch)
2008-01-24 12:45 PST, Tony Chang
darin: review-
take 2 (3.54 KB, patch)
2008-01-28 18:02 PST, Tony Chang
darin: review-
take 3 (3.54 KB, patch)
2008-02-01 17:23 PST, Tony Chang
darin: review+
in a separate file (5.07 KB, patch)
2008-02-01 17:24 PST, Tony Chang
no flags
Tony Chang
Comment 1 2008-01-24 12:45:47 PST
Created attachment 18638 [details] implement WebCore::isCharacterSmartReplaceExempt This is mostly translation of the method found in SmartReplaceCF.cpp. No new tests since this behavior is tested by existing layout tests.
Darin Adler
Comment 2 2008-01-26 08:25:25 PST
Comment on attachment 18638 [details] implement WebCore::isCharacterSmartReplaceExempt Code looks fine, but it's not platform-independent since it uses ICU; not all ports of WebCore have ICU, and it's not acceptable to just have ICU code without any ifdefs. It should go into a file named SmartReplaceICU.cpp and be properly ifdef'd. Otherwise, fine. + // Nice to have, added in ICU 3.8. + //uset_freeze(smartSet); This can be ifdef'd based on the ICU headers. It would be better to either include it for real or not. We don't normally include commented out code. The if is "#if USE (ICU_UNICODE)" I believe. You should look for an example.
Tony Chang
Comment 3 2008-01-28 18:02:14 PST
Created attachment 18752 [details] take 2 Same as before with #ifdef USE(ICU_UNICODE) guards.
Eric Seidel (no email)
Comment 4 2008-01-28 23:01:13 PST
Comment on attachment 18752 [details] take 2 This still should be in its own SmartReplaceICU.cpp instead of an #ifdef in SmartReplace.cpp. We're trying to kill all the #ifdefs over time.
Darin Adler
Comment 5 2008-01-29 07:49:03 PST
Comment on attachment 18752 [details] take 2 +#ifdef USE(ICU_UNICODE) That's incorrect. It needs to be: #if USE(ICU_UNICODE) And the ICU version should really be in a different file, as the CF version is. review- because of the ifdef/if issue.
Darin Adler
Comment 6 2008-01-29 07:49:04 PST
Comment on attachment 18752 [details] take 2 +#ifdef USE(ICU_UNICODE) That's incorrect. It needs to be: #if USE(ICU_UNICODE) And the ICU version should really be in a different file, as the CF version is. review- because of the ifdef/if issue.
Tony Chang
Comment 7 2008-02-01 17:23:10 PST
Created attachment 18861 [details] take 3 Fix the preprocessor commands.
Tony Chang
Comment 8 2008-02-01 17:24:14 PST
Created attachment 18862 [details] in a separate file Here's a version with the code in a separate file. I'm not sure which build config files needed to be updated to pick up the new file (as in, I don't know which builds use ICU and which don't).
Darin Adler
Comment 9 2008-02-03 13:22:13 PST
Comment on attachment 18861 [details] take 3 OK. r=me
Mark Rowe (bdash)
Comment 10 2008-02-04 21:50:21 PST
Landed in r29990 with the necessary tweaks to be used in the Gtk and wxWidget ports. Thanks for the patch!
Note You need to log in before you can comment on or make changes to this bug.