Bug 117658

Summary: [meta] Merge Nix WebCore bits on WebCore
Product: WebKit Reporter: Hugo Parente Lima <hugo.lima>
Component: WebKit Misc.Assignee: Hugo Parente Lima <hugo.lima>
Status: RESOLVED FIXED    
Severity: Normal CC: ararunprasad, arurajku, benjamin, cmarcelo, commit-queue, david.corvoysier, dbates, dino, d-r, eric.carlson, esprehn+autocc, galpeter, glenn, gns, gyuyoung.kim, japhet, jer.noble, jesus, luciano.wolf, luiz, macpherson, menard, mkwst, mrobinson, nick.diego, noam, ossy, pnormand, rakuco, sergio
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 118326, 118331, 118358, 118367, 118368, 121752    
Bug Blocks: 117657, 117660    
Attachments:
Description Flags
Add WebCore bits of Nix none

Description Hugo Parente Lima 2013-06-14 14:44:33 PDT
To ease the review process the merge was split into 4 parts, WebCore, WebKit2, API tests and LayoutTests

This is the first one, after this patch Nix should build just a static WebCore library and the Platfom library were Nix::Platform API lives.
Comment 1 Hugo Parente Lima 2013-06-25 16:11:40 PDT
Created attachment 205427 [details]
Add WebCore bits of Nix

This patch is a RFC, RFC for the patch contents and for the proper way of doing the upload, split in smaller pieces? what pieces?

The patch is huge, but the major parts are Nix specific stuff and #if's.
Comment 2 WebKit Commit Bot 2013-06-25 16:18:58 PDT
Attachment 205427 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'CMakeLists.txt', u'Source/CMakeLists.txt', u'Source/Platform/CMakeLists.txt', u'Source/Platform/PlatformNix.cmake', u'Source/Platform/nix/public/Platform.h', u'Source/Platform/nix/public/WebAudioBus.h', u'Source/Platform/nix/public/WebAudioDevice.h', u'Source/Platform/nix/public/WebCanvas.h', u'Source/Platform/nix/public/WebColor.h', u'Source/Platform/nix/public/WebCommon.h', u'Source/Platform/nix/public/WebData.h', u'Source/Platform/nix/public/WebFFTFrame.h', u'Source/Platform/nix/public/WebGamepad.h', u'Source/Platform/nix/public/WebGamepads.h', u'Source/Platform/nix/public/WebRect.h', u'Source/Platform/nix/public/WebSize.h', u'Source/Platform/nix/public/WebThemeEngine.h', u'Source/Platform/nix/public/WebVector.h', u'Source/Platform/nix/src/DefaultWebThemeEngine.cpp', u'Source/Platform/nix/src/DefaultWebThemeEngine.h', u'Source/Platform/nix/src/Platform.cpp', u'Source/WTF/wtf/FeatureDefines.h', u'Source/WTF/wtf/Platform.h', u'Source/WTF/wtf/PlatformNix.cmake', u'Source/WTF/wtf/nix/FeatureDefinesNix.h', u'Source/WTF/wtf/nix/PlatformNix.h', u'Source/WebCore/CMakeLists.txt', u'Source/WebCore/PlatformNix.cmake', u'Source/WebCore/bridge/npruntime_internal.h', u'Source/WebCore/css/mediaControlsNix.css', u'Source/WebCore/css/mediaControlsNixFullscreen.css', u'Source/WebCore/loader/FrameLoader.cpp', u'Source/WebCore/page/nix/EventHandlerNix.cpp', u'Source/WebCore/platform/Cursor.h', u'Source/WebCore/platform/DragData.h', u'Source/WebCore/platform/DragImage.h', u'Source/WebCore/platform/FileSystem.h', u'Source/WebCore/platform/PlatformMenuDescription.h', u'Source/WebCore/platform/RunLoop.h', u'Source/WebCore/platform/Widget.h', u'Source/WebCore/platform/audio/FFTFrame.h', u'Source/WebCore/platform/audio/HRTFElevation.cpp', u'Source/WebCore/platform/audio/nix/AudioBusNix.cpp', u'Source/WebCore/platform/audio/nix/AudioDestinationNix.cpp', u'Source/WebCore/platform/audio/nix/AudioDestinationNix.h', u'Source/WebCore/platform/audio/nix/FFTFrameNix.cpp', u'Source/WebCore/platform/cairo/WidgetBackingStore.h', u'Source/WebCore/platform/graphics/ANGLEWebKitBridge.h', u'Source/WebCore/platform/graphics/FontPlatformData.h', u'Source/WebCore/platform/graphics/GraphicsContext3D.cpp', u'Source/WebCore/platform/graphics/GraphicsContext3D.h', u'Source/WebCore/platform/graphics/OpenGLESShims.h', u'Source/WebCore/platform/graphics/OpenGLShims.cpp', u'Source/WebCore/platform/graphics/OpenGLShims.h', u'Source/WebCore/platform/graphics/PlatformLayer.h', u'Source/WebCore/platform/graphics/cairo/GLContext.cpp', u'Source/WebCore/platform/graphics/cairo/GraphicsContext3DPrivate.cpp', u'Source/WebCore/platform/graphics/egl/GLContextFromCurrentEGL.cpp', u'Source/WebCore/platform/graphics/egl/GLContextFromCurrentEGL.h', u'Source/WebCore/platform/graphics/freetype/FontPlatformDataFreeType.cpp', u'Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowNix.cpp', u'Source/WebCore/platform/graphics/nix/IconNix.cpp', u'Source/WebCore/platform/graphics/nix/ImageNix.cpp', u'Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp', u'Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h', u'Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp', u'Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLES.h', u'Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGL.cpp', u'Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp', u'Source/WebCore/platform/graphics/texmap/TextureMapper.h', u'Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h', u'Source/WebCore/platform/nix/CursorNix.cpp', u'Source/WebCore/platform/nix/DragDataNix.cpp', u'Source/WebCore/platform/nix/DragImageNix.cpp', u'Source/WebCore/platform/nix/ErrorsNix.cpp', u'Source/WebCore/platform/nix/ErrorsNix.h', u'Source/WebCore/platform/nix/FileSystemNix.cpp', u'Source/WebCore/platform/nix/GamepadsNix.cpp', u'Source/WebCore/platform/nix/LanguageNix.cpp', u'Source/WebCore/platform/nix/LocalizedStringsNix.cpp', u'Source/WebCore/platform/nix/MIMETypeRegistryNix.cpp', u'Source/WebCore/platform/nix/NixKeyboardUtilities.cpp', u'Source/WebCore/platform/nix/NixKeyboardUtilities.h', u'Source/WebCore/platform/nix/PasteboardNix.cpp', u'Source/WebCore/platform/nix/PlatformKeyboardEventNix.cpp', u'Source/WebCore/platform/nix/PlatformScreenNix.cpp', u'Source/WebCore/platform/nix/RenderThemeNix.cpp', u'Source/WebCore/platform/nix/RenderThemeNix.h', u'Source/WebCore/platform/nix/RunLoopNix.cpp', u'Source/WebCore/platform/nix/ScrollbarThemeNix.cpp', u'Source/WebCore/platform/nix/ScrollbarThemeNix.h', u'Source/WebCore/platform/nix/SharedTimerNix.cpp', u'Source/WebCore/platform/nix/SoundNix.cpp', u'Source/WebCore/platform/nix/TemporaryLinkStubs.cpp', u'Source/WebCore/platform/nix/WidgetNix.cpp', u'Source/WebCore/platform/nix/support/WebAudioBus.cpp', u'Source/WebCore/platform/nix/support/WebData.cpp', u'Source/WebCore/platform/text/nix/TextBreakIteratorInternalICUNix.cpp', u'Source/WebCore/plugins/PluginPackage.cpp', u'Source/WebCore/plugins/PluginView.cpp', u'Source/WebCore/plugins/PluginView.h', u'Source/WebCore/plugins/PluginViewNone.cpp', u'Source/cmake/FindEGL.cmake', u'Source/cmake/FindOpenGLES2.cmake', u'Source/cmake/OptionsCommon.cmake', u'Source/cmake/OptionsNix.cmake', u'Tools/Scripts/build-dumprendertree', u'Tools/Scripts/build-webkit', u'Tools/Scripts/build-webkittestrunner', u'Tools/Scripts/run-javascriptcore-tests', u'Tools/Scripts/run-launcher', u'Tools/Scripts/run-nix-tests', u'Tools/Scripts/run-webkit-tests', u'Tools/Scripts/update-webkit-libs-jhbuild', u'Tools/Scripts/update-webkitnix-libs', u'Tools/Scripts/webkitdirs.pm', u'Tools/Scripts/webkitpy/common/config/ports.py', u'Tools/Scripts/webkitpy/port/factory.py', u'Tools/Scripts/webkitpy/port/nix.py', u'Tools/Scripts/webkitpy/port/nix_unittest.py', u'Tools/jhbuild/jhbuild-wrapper', u'Tools/nix/common.py', u'Tools/nix/jhbuild.modules', u'Tools/nix/jhbuildrc', u'Tools/nix/run-with-jhbuild']" exit_code: 1
Tools/Scripts/webkitpy/common/config/ports.py:73:  whitespace before '}'  [pep8/E202] [5]
Tools/Scripts/webkitpy/common/config/ports.py:235:  expected 2 blank lines, found 1  [pep8/E302] [5]
Source/WebCore/platform/graphics/gstreamer/PlatformVideoWindowNix.cpp:22:  You should add a blank line after implementation file's own header.  [build/include_order] [4]
Source/Platform/nix/public/WebData.h:45:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/Platform/nix/public/WebData.h:76:  The parameter name "size" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/nix/support/WebAudioBus.cpp:48:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/nix/FileSystemNix.cpp:86:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/nix/FileSystemNix.cpp:97:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/nix/FileSystemNix.cpp:110:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/nix/FileSystemNix.cpp:125:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/nix/FileSystemNix.cpp:153:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/platform/nix/FileSystemNix.cpp:167:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/nix/FileSystemNix.cpp:238:  Declaration has space between type name and * in GPatternSpec *pspec  [whitespace/declaration] [3]
Source/WebCore/platform/nix/FileSystemNix.cpp:312:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/nix/FileSystemNix.cpp:321:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/nix/FileSystemNix.cpp:330:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.h:29:  The parameter name "state" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:28:  You should add a blank line after implementation file's own header.  [build/include_order] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:36:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:36:  BG_COLOR1 is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:37:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:37:  BG_COLOR2 is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:38:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:38:  BORDER_COLOR is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:39:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:39:  BORDER_ONHOVER_COLOR is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:40:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:40:  CHECK_COLOR is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:41:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:41:  TEXTFIELD_DARK_BORDER_COLOR is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:42:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:42:  TEXTFIELD_LIGHT_BORDER_COLOR is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:44:  MENULIST_BORDER is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:45:  MENULIST_ARROW_SIZE is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:47:  INNERSPINBUTTON_BORDER is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:48:  INNERSPINBUTTON_ARROW_SIZE is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:50:  TAP_HIGHLIGHT_COLOR is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:215:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:222:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:245:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:248:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:320:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:326:  Missing spaces around /  [whitespace/operators] [3]
Source/Platform/nix/src/DefaultWebThemeEngine.cpp:350:  SLIDER_TRACK_HEIGHT is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/audio/nix/AudioBusNix.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Tools/Scripts/webkitpy/port/nix_unittest.py:40:  whitespace before ']'  [pep8/E202] [5]
Tools/Scripts/webkitpy/port/nix_unittest.py:43:  whitespace before ']'  [pep8/E202] [5]
Source/Platform/PlatformNix.cmake:1:  No space between command "set" and its parentheses, should be "set("  [whitespace/parentheses] [5]
Source/Platform/PlatformNix.cmake:8:  No space between command "set" and its parentheses, should be "set("  [whitespace/parentheses] [5]
Source/Platform/PlatformNix.cmake:24:  No space between command "set" and its parentheses, should be "set("  [whitespace/parentheses] [5]
Source/WebCore/platform/nix/RenderThemeNix.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/nix/RenderThemeNix.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/nix/RenderThemeNix.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/nix/RenderThemeNix.cpp:332:  SLIDER_THUMB_WIDTH is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/nix/RenderThemeNix.cpp:333:  SLIDER_THUMB_HEIGHT is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/audio/nix/FFTFrameNix.cpp:28:  You should add a blank line after implementation file's own header.  [build/include_order] [4]
Source/WebCore/PlatformNix.cmake:220:  Use lowercase command "list"  [command/lowercase] [5]
Source/WebCore/PlatformNix.cmake:223:  Use lowercase command "list"  [command/lowercase] [5]
Source/WebCore/PlatformNix.cmake:228:  Use lowercase command "set"  [command/lowercase] [5]
Source/WebCore/PlatformNix.cmake:229:  Use lowercase command "file"  [command/lowercase] [5]
Source/WebCore/PlatformNix.cmake:230:  Use lowercase command "install"  [command/lowercase] [5]
Source/WebCore/PlatformNix.cmake:231:  Use lowercase command "add_definitions"  [command/lowercase] [5]
Source/WebCore/platform/nix/RenderThemeNix.h:43:  The parameter name "cssValueId" adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.cpp:208:  Missing spaces around |  [whitespace/operators] [3]
Source/Platform/nix/public/WebThemeEngine.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
Source/Platform/nix/public/WebThemeEngine.h:101:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/platform/nix/PlatformScreenNix.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/nix/PlatformScreenNix.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/cmake/FindOpenGLES2.cmake:7:  Use lowercase command "find_package"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:9:  Use lowercase command "pkg_check_modules"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:11:  Use lowercase command "if"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:12:  Use lowercase command "set"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:13:  Use lowercase command "set"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:14:  Use lowercase command "else"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:15:  Use lowercase command "find_path"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:16:  Use lowercase command "endif"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:18:  Use lowercase command "find_library"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:22:  Use lowercase command "include"  [command/lowercase] [5]
Source/cmake/FindOpenGLES2.cmake:25:  Use lowercase command "mark_as_advanced"  [command/lowercase] [5]
Source/Platform/nix/src/Platform.cpp:33:  You should add a blank line after implementation file's own header.  [build/include_order] [4]
Source/Platform/nix/src/Platform.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Source/Platform/nix/public/WebColor.h:33:  One space before end of line comments  [whitespace/comments] [5]
Source/Platform/nix/public/WebColor.h:36:  This { should be at the end of the previous line  [whitespace/braces] [4]
Tools/Scripts/webkitpy/port/nix.py:106:  whitespace after '['  [pep8/E201] [5]
Source/WebCore/platform/nix/SharedTimerNix.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/nix/SharedTimerNix.cpp:46:  timeout_cb is incorrectly named. Don't use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/platform/nix/SharedTimerNix.cpp:65:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/cmake/FindEGL.cmake:39:  Use lowercase command "mark_as_advanced"  [command/lowercase] [5]
Total errors found: 89 in 124 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Noam Rosenthal 2013-06-26 02:08:21 PDT
(In reply to comment #1)
> Created an attachment (id=205427) [details]
> Add WebCore bits of Nix
> 
> This patch is a RFC, RFC for the patch contents and for the proper way of doing the upload, split in smaller pieces? what pieces?
> 
> The patch is huge, but the major parts are Nix specific stuff and #if's.

How about separating it like this:
* CMake changes
* #ifs (e.g. GraphicsContext3D)
* stubs & Nix specific platform files (e.g. FilesystemNix)
* RenderTheme
* WebAudio & Source/Platform stuff
* Nix-specific tools
Comment 4 Hugo Parente Lima 2013-06-26 10:47:59 PDT
(In reply to comment #3)
> (In reply to comment #1)
> > Created an attachment (id=205427) [details] [details]
> > Add WebCore bits of Nix
> > 
> > This patch is a RFC, RFC for the patch contents and for the proper way of doing the upload, split in smaller pieces? what pieces?
> > 
> > The patch is huge, but the major parts are Nix specific stuff and #if's.
> 
> How about separating it like this:
> * CMake changes
> * #ifs (e.g. GraphicsContext3D)
> * stubs & Nix specific platform files (e.g. FilesystemNix)
> * RenderTheme
> * WebAudio & Source/Platform stuff
> * Nix-specific tools

Seems good to me, split WebCoreNix upstream in:

1. #ifs (e.g. GraphicsContext3D)
2. stubs & Nix specific platform files (e.g. FilesystemNix)
3. WebAudio & Source/Platform stuff
4. RenderTheme
5. CMake changes

So this bug will be turned into a meta bug.

And do the same for WK2 parts.

P.S.: This lot os style errors were already fixed :-)
Comment 5 Hugo Parente Lima 2013-11-27 09:53:50 PST
All bits of Nix already merged in WebCore.