RESOLVED FIXED 88569
Chromium Mac: don’t #include things in subframeworks of ApplicationServices.framework
https://bugs.webkit.org/show_bug.cgi?id=88569
Summary Chromium Mac: don’t #include things in subframeworks of ApplicationServices.f...
Mark Mentovai
Reported 2012-06-07 12:32:34 PDT
Subframeworks move around from SDK to SDK and OS release to OS release, but just using the top-level umbrella framework guarantees forward compatibility. Because of an error in the Chromium build files that leaked into WebKit, some code was reaching into ApplicationServices.framework to #include things in subframeworks. In order to fix the build file leak in Chromium and stop doing this, the offenders in WebKit need to be fixed.
Attachments
Don’t reach into subframeworks, just #include <ApplicationServices/ApplicationServices.h> (4.25 KB, patch)
2012-06-07 12:40 PDT, Mark Mentovai
no flags
Updated to current trunk (r119733) (4.22 KB, patch)
2012-06-07 12:45 PDT, Mark Mentovai
no flags
Don’t use SKIA_ON_MAC_CHROMIUM (5.63 KB, patch)
2012-06-12 09:22 PDT, Mark Mentovai
senorblanco: review-
Patch rooted above Source (5.76 KB, patch)
2012-06-12 12:25 PDT, Mark Mentovai
no flags
Fix new violation in platform/graphics/harfbuzz/ng/HarfBuzzFaceCoreText.cpp (1.36 KB, patch)
2012-06-13 09:09 PDT, Mark Mentovai
no flags
Style-conformant patch for HarfBuzzFaceCoreText.cpp (1.40 KB, patch)
2012-06-13 09:28 PDT, Mark Mentovai
no flags
Mark Mentovai
Comment 1 2012-06-07 12:40:01 PDT
Created attachment 146362 [details] Don’t reach into subframeworks, just #include <ApplicationServices/ApplicationServices.h>
Mark Mentovai
Comment 2 2012-06-07 12:45:09 PDT
Created attachment 146363 [details] Updated to current trunk (r119733)
Stephen White
Comment 3 2012-06-12 08:39:24 PDT
Comment on attachment 146363 [details] Updated to current trunk (r119733) View in context: https://bugs.webkit.org/attachment.cgi?id=146363&action=review > WebCore/platform/graphics/GlyphBuffer.h:42 > +#if (PLATFORM(WX) && OS(DARWIN)) || USE(SKIA_ON_MAC_CHROMIUM) Not your fault, but I think SKIA_ON_MAC_CHROMIUM is always on by default now, so this could be something like #if (OS(DARWIN) && (PLATFORM(WX) || PLATFORM(CHROMIUM))) Cary, could you verify? Should we keep these around or just nuke them?
Cary Clark
Comment 4 2012-06-12 08:45:26 PDT
Comment on attachment 146363 [details] Updated to current trunk (r119733) For files that are shared with Apple (e.g., WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm) this would make things less stable, not more so, since edits to the Apple side of the #include list would not be reflected in the Chromium build. Is it permissible to replace the Apple side as well?
Mark Mentovai
Comment 5 2012-06-12 08:53:32 PDT
I don’t know what you mean by “replace the Apple side.” I was trying to scope my patch to be a minimal-change one that only touched Chromium. In the general sense, #include <ApplicationServices/ApplicationServices.h> is never a problem, although in newer SDKs, CoreGraphics.framework has been promoted to be a top-level framework instead of being a subframework under ApplicationServices.framework. I’m not sure what Apple’s requirements for SDK use are, but they (and other WebKit ports on the Mac) may have reasons to prefer including things of the form <CoreGraphics/xxx.h>. In Chromium’s case, we still need to operate with the old 10.5 SDK, and will soon switch to the 10.6 SDK, in which CoreGraphics.framework is still a subframework, and we’re supposed to disallow subframework includes of this form. I don’t know exactly when Chrome’s compiler flag leak into WebKit was introduced, but it probably happened when we switched to using Skia, which means that this change merely restores the old (correct) state of affairs, where Chrome code (including WebKit built for Chrome) couldn’t reach into subframeworks of ApplicationServices.framework.
Cary Clark
Comment 6 2012-06-12 09:01:55 PDT
Comment on attachment 146363 [details] Updated to current trunk (r119733) What I mean by 'the Apple side' is #if USE(CG). Sorry for the confusion. What I was attempting to say that if, in the future, the USE(CG) bracketed code in GlyphBuffer.h line 38 or the code following the #else in ComplexTextControllerCoreText.mm line 38 is edited in a way that changes the behavior of the rest of the file, the Chromium port won't benefit from that change. If this is not a concern, then feel free to ignore. To address Stephen's question, yes, USE(SKIA_ON_MAC_CHROMIUM) should be deprecated and replaced with PLATFORM(CHROMIUM) && OS(DARWIN). The code base with CG+Chromium doesn't compile and isn't maintained.
Mark Mentovai
Comment 7 2012-06-12 09:22:18 PDT
Created attachment 147097 [details] Don’t use SKIA_ON_MAC_CHROMIUM I don’t think that the divergent paths for #includes are worth worrying about. <ApplicationServices/ApplicationServices.h> brings in both <CoreGraphics/CGGeometry.h> and <CoreText/CoreText.h>, and more. I’m not sure if that change is desirable for the Apple CG port, which appears content (on the basis of the existing code) to reach into subframeworks in this manner, and both CoreGraphics and CoreText have been promoted to top-level frameworks in SDKs newer than what Chrome can build with. This version of the patch assumes that OS(DARWIN) && PLATFORM(CHROMIUM) is always Skia, and doesn’t use SKIA_ON_MAC_CHROMIUM at all.
Cary Clark
Comment 8 2012-06-12 09:24:56 PDT
Comment on attachment 147097 [details] Don’t use SKIA_ON_MAC_CHROMIUM lgtm
Stephen White
Comment 9 2012-06-12 10:35:36 PDT
Comment on attachment 147097 [details] Don’t use SKIA_ON_MAC_CHROMIUM The patch is not applying because it's diffed at Source, rather than at the webkit checkout root. Please rebuild the patch and re-upload so we can get some EWS coverage.
Mark Mentovai
Comment 10 2012-06-12 12:25:53 PDT
Created attachment 147134 [details] Patch rooted above Source
Mark Mentovai
Comment 11 2012-06-12 12:30:25 PDT
Comment on attachment 147134 [details] Patch rooted above Source Thanks, this one seems to apply on the EWS.
Stephen White
Comment 12 2012-06-12 12:54:38 PDT
Comment on attachment 147134 [details] Patch rooted above Source Looks good, assuming the bots are OK with it. r=me
Mark Mentovai
Comment 13 2012-06-12 13:59:27 PDT
Comment on attachment 147134 [details] Patch rooted above Source The bots are OK with it. Let’s do it.
WebKit Review Bot
Comment 14 2012-06-12 14:39:31 PDT
Comment on attachment 147134 [details] Patch rooted above Source Clearing flags on attachment: 147134 Committed r120122: <http://trac.webkit.org/changeset/120122>
WebKit Review Bot
Comment 15 2012-06-12 14:39:35 PDT
All reviewed patches have been landed. Closing bug.
Mark Mentovai
Comment 16 2012-06-13 09:09:11 PDT
One more cropped up yesterday. It was added by a Chromium contributor. This wouldn’t have happened if I was able to land https://chromiumcodereview.appspot.com/10535059/ first, but I was waiting for the WebKit roll. Patch coming…
Mark Mentovai
Comment 17 2012-06-13 09:09:42 PDT
Created attachment 147333 [details] Fix new violation in platform/graphics/harfbuzz/ng/HarfBuzzFaceCoreText.cpp
WebKit Review Bot
Comment 18 2012-06-13 09:13:00 PDT
Attachment 147333 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/WebCore/ChangeLog', u'Source/WebCor..." exit_code: 1 Source/WebCore/platform/graphics/harfbuzz/ng/HarfBuzzFaceCoreText.cpp:34: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 1 in 2 files If any of these errors are false positives, please file a bug against check-webkit-style.
Mark Mentovai
Comment 19 2012-06-13 09:28:59 PDT
Created attachment 147337 [details] Style-conformant patch for HarfBuzzFaceCoreText.cpp
Stephen White
Comment 20 2012-06-13 11:17:57 PDT
Comment on attachment 147337 [details] Style-conformant patch for HarfBuzzFaceCoreText.cpp OK. r=me
WebKit Review Bot
Comment 21 2012-06-13 12:21:34 PDT
Comment on attachment 147337 [details] Style-conformant patch for HarfBuzzFaceCoreText.cpp Clearing flags on attachment: 147337 Committed r120234: <http://trac.webkit.org/changeset/120234>
WebKit Review Bot
Comment 22 2012-06-13 12:21:40 PDT
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.