diff options
90 files changed, 3144 insertions, 7851 deletions
@@ -12,7 +12,7 @@ deps = { "http://googletest.googlecode.com/svn/trunk@63", "src/third_party/WebKit": - "/trunk/deps/third_party/WebKit@4091", + "/trunk/deps/third_party/WebKit@4220", "src/third_party/icu38": "/trunk/deps/third_party/icu38@4040", @@ -21,7 +21,7 @@ deps = { "http://v8.googlecode.com/svn/trunk@660", "src/webkit/data/layout_tests/LayoutTests": - "http://svn.webkit.org/repository/webkit/trunk/LayoutTests@36102", + "http://svn.webkit.org/repository/webkit/trunk/LayoutTests@37604", } diff --git a/webkit/SConscript b/webkit/SConscript index a622930..b1ae05a 100644 --- a/webkit/SConscript +++ b/webkit/SConscript @@ -166,6 +166,7 @@ env.Append( CPPPATH = [ '$WEBCORE_DIR/rendering', '$WEBCORE_DIR/rendering/style', + '$WEBCORE_DIR/inspector', ], CPPDEFINES = [ diff --git a/webkit/SConscript.port b/webkit/SConscript.port index 262960c..c93f33e 100644 --- a/webkit/SConscript.port +++ b/webkit/SConscript.port @@ -57,7 +57,6 @@ input_files = [ '$PORT_DIR/platform/chromium/PlatformScrollBarChromium.cpp', '$PORT_DIR/platform/chromium/PopupMenuChromium.cpp', '$PORT_DIR/platform/chromium/SSLKeyGeneratorChromium.cpp', - '$PORT_DIR/platform/chromium/ScrollViewChromium.cpp', '$PORT_DIR/platform/chromium/SearchPopupMenuChromium.cpp', '$PORT_DIR/platform/chromium/SharedTimerChromium.cpp', '$PORT_DIR/platform/chromium/SystemTimeChromium.cpp', @@ -138,9 +137,7 @@ if env['PLATFORM'] == 'darwin': '$PORT_DIR/page/chromium/EventHandlerChromium.cpp', '$PORT_DIR/platform/chromium/CursorChromium.cpp', '$PORT_DIR/platform/chromium/DragDataChromium.cpp', - '$PORT_DIR/platform/chromium/PlatformScrollBarChromium.cpp', '$PORT_DIR/platform/chromium/PopupMenuChromium.cpp', - '$PORT_DIR/platform/chromium/ScrollViewChromium.cpp', '$PORT_DIR/platform/chromium/WidgetChromium.cpp', '$PORT_DIR/platform/graphics/FontCustomPlatformData.cpp', '$PORT_DIR/platform/graphics/ImageSkia.cpp', @@ -157,7 +154,7 @@ if env['PLATFORM'] == 'win32': '$PORT_DIR/platform/win/ClipboardWin.cpp', '$PORT_DIR/platform/win/EditorWin.cpp', '$PORT_DIR/platform/win/PasteboardWin.cpp', - '$PORT_DIR/platform/win/ScreenWin.cpp', + '$PORT_DIR/platform/win/PlatformScreenWin.cpp', '$PORT_DIR/platform/win/SoundWin.cpp', '$PORT_DIR/platform/UniscribeStateTextRun.cpp', '$PORT_DIR/platform/win/WCDataObject.cpp', diff --git a/webkit/build/KJSBindings/KJSBindings.vcproj b/webkit/build/KJSBindings/KJSBindings.vcproj index aaf3ccfd..9483d81 100644 --- a/webkit/build/KJSBindings/KJSBindings.vcproj +++ b/webkit/build/KJSBindings/KJSBindings.vcproj @@ -1029,10 +1029,6 @@ > </File> <File - RelativePath="$(IntDir)\DerivedSources\JSKeyboardEvent.cpp" - > - </File> - <File RelativePath="$(IntDir)\DerivedSources\JSKeyboardEvent.h" > </File> @@ -2569,10 +2565,6 @@ Name="page" > <File - RelativePath="..\..\..\third_party\WebKit\WebCore\page\InspectorController.cpp" - > - </File> - <File RelativePath="..\..\..\third_party\WebKit\WebCore\page\JavaScriptProfile.cpp" > </File> diff --git a/webkit/build/V8Bindings/SConscript b/webkit/build/V8Bindings/SConscript index 84a2271..06c16a0 100644 --- a/webkit/build/V8Bindings/SConscript +++ b/webkit/build/V8Bindings/SConscript @@ -140,7 +140,6 @@ inputs = [ '$DERIVED_DIR/V8HTMLQuoteElement.cpp', '$DERIVED_DIR/V8HTMLScriptElement.cpp', '$DERIVED_DIR/V8HTMLSelectElement.cpp', - '$DERIVED_DIR/V8HTMLSelectionInputElement.cpp', '$DERIVED_DIR/V8HTMLStyleElement.cpp', '$DERIVED_DIR/V8HTMLTableCaptionElement.cpp', '$DERIVED_DIR/V8HTMLTableCellElement.cpp', @@ -168,7 +167,6 @@ inputs = [ '$DERIVED_DIR/V8NodeIterator.cpp', '$DERIVED_DIR/V8NodeList.cpp', '$DERIVED_DIR/V8Notation.cpp', - '$DERIVED_DIR/V8NSResolver.cpp', '$DERIVED_DIR/V8OverflowEvent.cpp', '$DERIVED_DIR/V8Plugin.cpp', '$DERIVED_DIR/V8PluginArray.cpp', @@ -313,7 +311,6 @@ inputs = [ '$DERIVED_DIR/V8XPathResult.cpp', '$DERIVED_DIR/V8XSLTProcessor.cpp', - '$PORT_DIR/bindings/v8/JSNSResolver.cpp', '$PORT_DIR/bindings/v8/JSXPathNSResolver.cpp', '$PORT_DIR/bindings/v8/np_v8object.cpp', '$PORT_DIR/bindings/v8/npruntime.cpp', diff --git a/webkit/build/V8Bindings/V8Bindings.vcproj b/webkit/build/V8Bindings/V8Bindings.vcproj index c8e2f45..da3775c 100644 --- a/webkit/build/V8Bindings/V8Bindings.vcproj +++ b/webkit/build/V8Bindings/V8Bindings.vcproj @@ -920,14 +920,6 @@ > </File> <File - RelativePath="$(IntDir)\DerivedSources\V8HTMLSelectionInputElement.cpp" - > - </File> - <File - RelativePath="$(IntDir)\DerivedSources\V8HTMLSelectionInputElement.h" - > - </File> - <File RelativePath="$(IntDir)\DerivedSources\V8HTMLStyleElement.cpp" > </File> @@ -1048,6 +1040,14 @@ > </File> <File + RelativePath="$(IntDir)\DerivedSources\V8MessageChannel.cpp" + > + </File> + <File + RelativePath="$(IntDir)\DerivedSources\V8MessageChannel.h" + > + </File> + <File RelativePath="$(IntDir)\DerivedSources\V8MessageEvent.cpp" > </File> @@ -1056,6 +1056,14 @@ > </File> <File + RelativePath="$(IntDir)\DerivedSources\V8MessagePort.cpp" + > + </File> + <File + RelativePath="$(IntDir)\DerivedSources\V8MessagePort.h" + > + </File> + <File RelativePath="$(IntDir)\DerivedSources\V8MimeType.cpp" > </File> @@ -1144,14 +1152,6 @@ > </File> <File - RelativePath="$(IntDir)\DerivedSources\V8NSResolver.h" - > - </File> - <File - RelativePath="$(IntDir)\DerivedSources\V8NSResolver.cpp" - > - </File> - <File RelativePath="$(IntDir)\DerivedSources\V8OverflowEvent.cpp" > </File> @@ -2393,14 +2393,6 @@ > </File> <File - RelativePath="..\..\port\bindings\v8\JSNSResolver.cpp" - > - </File> - <File - RelativePath="..\..\port\bindings\v8\JSNSResolver.h" - > - </File> - <File RelativePath="..\..\port\bindings\v8\JSXPathNSResolver.cpp" > </File> @@ -2413,6 +2405,10 @@ > </File> <File + RelativePath="..\..\port\bindings\v8\V8MessagePortCustom.cpp" + > + </File> + <File RelativePath=".\precompiled_v8bindings.cpp" > <FileConfiguration diff --git a/webkit/build/WebCore/SConscript b/webkit/build/WebCore/SConscript index 9b93740..e592c47 100644 --- a/webkit/build/WebCore/SConscript +++ b/webkit/build/WebCore/SConscript @@ -57,6 +57,7 @@ input_files = [ '$WEBCORE_DIR/css/CSSInitialValue.cpp', '$WEBCORE_DIR/css/CSSMediaRule.cpp', '$WEBCORE_DIR/css/CSSMutableStyleDeclaration.cpp', + '$WEBCORE_DIR/css/CSSNthSelector.cpp', '$WEBCORE_DIR/css/CSSPageRule.cpp', '$WEBCORE_DIR/css/CSSParser.cpp', '$WEBCORE_DIR/css/CSSParserValues.cpp', @@ -127,7 +128,9 @@ input_files = [ '$WEBCORE_DIR/dom/ExceptionCode.cpp', '$WEBCORE_DIR/dom/KeyboardEvent.cpp', '$WEBCORE_DIR/dom/MappedAttribute.cpp', + '$WEBCORE_DIR/dom/MessageChannel.cpp', '$WEBCORE_DIR/dom/MessageEvent.cpp', + '$WEBCORE_DIR/dom/MessagePort.cpp', '$WEBCORE_DIR/dom/MouseEvent.cpp', '$WEBCORE_DIR/dom/MouseRelatedEvent.cpp', '$WEBCORE_DIR/dom/MutationEvent.cpp', @@ -163,6 +166,7 @@ input_files = [ '$WEBCORE_DIR/dom/WebKitTransitionEvent.cpp', '$WEBCORE_DIR/dom/WheelEvent.cpp', '$WEBCORE_DIR/dom/XMLTokenizer.cpp', + '$WEBCORE_DIR/dom/XMLTokenizerLibxml2.cpp', '$WEBCORE_DIR/editing/AppendNodeCommand.cpp', '$WEBCORE_DIR/editing/ApplyStyleCommand.cpp', @@ -311,6 +315,7 @@ input_files = [ '$WEBCORE_DIR/loader/CachedFont.cpp', '$WEBCORE_DIR/loader/CachedImage.cpp', '$WEBCORE_DIR/loader/CachedResource.cpp', + '$WEBCORE_DIR/loader/CachedResourceHandle.cpp', '$WEBCORE_DIR/loader/CachedResourceClientWalker.cpp', '$WEBCORE_DIR/loader/CachedScript.cpp', '$WEBCORE_DIR/loader/CachedXBLDocument.cpp', @@ -322,6 +327,7 @@ input_files = [ '$WEBCORE_DIR/loader/FTPDirectoryDocument.cpp', '$WEBCORE_DIR/loader/FTPDirectoryParser.cpp', '$WEBCORE_DIR/loader/ImageDocument.cpp', + '$WEBCORE_DIR/loader/ImageLoader.cpp', '$WEBCORE_DIR/loader/loader.cpp', '$WEBCORE_DIR/loader/MainResourceLoader.cpp', '$WEBCORE_DIR/loader/NavigationAction.cpp', @@ -367,6 +373,7 @@ input_files = [ '$WEBCORE_DIR/page/Page.cpp', '$WEBCORE_DIR/page/PageGroup.cpp', '$WEBCORE_DIR/page/Screen.cpp', + '$WEBCORE_DIR/page/SecurityOrigin.cpp', '$WEBCORE_DIR/page/Settings.cpp', '$WEBCORE_DIR/page/WindowFeatures.cpp', @@ -386,8 +393,9 @@ input_files = [ '$WEBCORE_DIR/platform/KURL.cpp', '$WEBCORE_DIR/platform/Logging.cpp', '$PORT_DIR/platform/MIMETypeRegistry.cpp', - '$WEBCORE_DIR/platform/ScrollBar.cpp', - '$WEBCORE_DIR/platform/SecurityOrigin.cpp', + '$WEBCORE_DIR/platform/Scrollbar.cpp', + '$WEBCORE_DIR/platform/ScrollbarThemeComposite.cpp', + '$WEBCORE_DIR/platform/ScrollView.cpp', '$WEBCORE_DIR/platform/SharedBuffer.cpp', '$WEBCORE_DIR/platform/Timer.cpp', '$WEBCORE_DIR/platform/Widget.cpp', @@ -421,6 +429,7 @@ input_files = [ '$WEBCORE_DIR/platform/graphics/SegmentedFontData.cpp', '$WEBCORE_DIR/platform/graphics/SimpleFontData.cpp', '$WEBCORE_DIR/platform/graphics/StringTruncator.cpp', + '$WEBCORE_DIR/platform/graphics/WidthIterator.cpp', '$WEBCORE_DIR/platform/network/AuthenticationChallengeBase.cpp', '$WEBCORE_DIR/platform/network/Credential.cpp', @@ -507,6 +516,9 @@ input_files = [ '$WEBCORE_DIR/rendering/RenderPath.cpp', '$WEBCORE_DIR/rendering/RenderReplaced.cpp', '$WEBCORE_DIR/rendering/RenderReplica.cpp', + '$WEBCORE_DIR/rendering/RenderScrollbar.cpp', + '$WEBCORE_DIR/rendering/RenderScrollbarPart.cpp', + '$WEBCORE_DIR/rendering/RenderScrollbarTheme.cpp', '$WEBCORE_DIR/rendering/RenderSlider.cpp', '$WEBCORE_DIR/rendering/RenderSVGBlock.cpp', '$WEBCORE_DIR/rendering/RenderSVGContainer.cpp', @@ -539,17 +551,43 @@ input_files = [ '$WEBCORE_DIR/rendering/SVGCharacterLayoutInfo.cpp', '$WEBCORE_DIR/rendering/SVGInlineFlowBox.cpp', '$WEBCORE_DIR/rendering/SVGInlineTextBox.cpp', - '$WEBCORE_DIR/rendering/SVGRenderStyle.cpp', - '$WEBCORE_DIR/rendering/SVGRenderStyleDefs.cpp', '$WEBCORE_DIR/rendering/SVGRenderSupport.cpp', '$WEBCORE_DIR/rendering/SVGRenderTreeAsText.cpp', '$WEBCORE_DIR/rendering/SVGRootInlineBox.cpp', '$WEBCORE_DIR/rendering/TextControlInnerElements.cpp', + + '$WEBCORE_DIR/rendering/style/Animation.cpp', + '$WEBCORE_DIR/rendering/style/AnimationList.cpp', + '$WEBCORE_DIR/rendering/style/BindingURI.cpp', + '$WEBCORE_DIR/rendering/style/ContentData.cpp', + '$WEBCORE_DIR/rendering/style/CounterDirectives.cpp', + '$WEBCORE_DIR/rendering/style/FillLayer.cpp', + '$WEBCORE_DIR/rendering/style/KeyframeList.cpp', + '$WEBCORE_DIR/rendering/style/MatrixTransformOperation.cpp', '$WEBCORE_DIR/rendering/style/NinePieceImage.cpp', '$WEBCORE_DIR/rendering/style/RenderStyle.cpp', + '$WEBCORE_DIR/rendering/style/RotateTransformOperation.cpp', + '$WEBCORE_DIR/rendering/style/ScaleTransformOperation.cpp', + '$WEBCORE_DIR/rendering/style/ShadowData.cpp', + '$WEBCORE_DIR/rendering/style/SkewTransformOperation.cpp', + '$WEBCORE_DIR/rendering/style/StyleBackgroundData.cpp', + '$WEBCORE_DIR/rendering/style/StyleBoxData.cpp', '$WEBCORE_DIR/rendering/style/StyleCachedImage.cpp', + '$WEBCORE_DIR/rendering/style/StyleFlexibleBoxData.cpp', '$WEBCORE_DIR/rendering/style/StyleGeneratedImage.cpp', + '$WEBCORE_DIR/rendering/style/StyleInheritedData.cpp', + '$WEBCORE_DIR/rendering/style/StyleMarqueeData.cpp', + '$WEBCORE_DIR/rendering/style/StyleMultiColData.cpp', + '$WEBCORE_DIR/rendering/style/StyleRareInheritedData.cpp', + '$WEBCORE_DIR/rendering/style/StyleRareNonInheritedData.cpp', + '$WEBCORE_DIR/rendering/style/StyleSurroundData.cpp', + '$WEBCORE_DIR/rendering/style/StyleTransformData.cpp', + '$WEBCORE_DIR/rendering/style/StyleVisualData.cpp', + '$WEBCORE_DIR/rendering/style/SVGRenderStyle.cpp', + '$WEBCORE_DIR/rendering/style/SVGRenderStyleDefs.cpp', + '$WEBCORE_DIR/rendering/style/TransformOperations.cpp', + '$WEBCORE_DIR/rendering/style/TranslateTransformOperation.cpp', '$WEBCORE_DIR/svg/ColorDistance.cpp', '$WEBCORE_DIR/svg/Filter.cpp', diff --git a/webkit/build/WebCore/WebCore.vcproj b/webkit/build/WebCore/WebCore.vcproj index 2a5b89f..1512dc7 100644 --- a/webkit/build/WebCore/WebCore.vcproj +++ b/webkit/build/WebCore/WebCore.vcproj @@ -142,6 +142,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\page\AccessibilityList.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\page\AccessibilityList.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\page\AccessibilityListBox.cpp" > </File> @@ -242,11 +250,11 @@ > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\page\Console.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\page\Console.cpp" > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\page\Console.cpp" + RelativePath="..\..\..\third_party\WebKit\WebCore\page\Console.h" > </File> <File @@ -354,14 +362,6 @@ > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\page\InspectorClient.h" - > - </File> - <File - RelativePath="..\..\..\third_party\WebKit\WebCore\page\InspectorController.h" - > - </File> - <File RelativePath="..\..\..\third_party\WebKit\WebCore\page\Location.h" > </File> @@ -410,6 +410,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\page\SecurityOrigin.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\page\SecurityOrigin.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\page\Settings.cpp" > </File> @@ -526,6 +534,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\loader\CachedResourceHandle.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\loader\CachedResourceHandle.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\loader\CachedScript.cpp" > </File> @@ -622,6 +638,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\loader\ImageLoader.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\loader\ImageLoader.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\loader\loader.cpp" > </File> @@ -754,10 +778,6 @@ Name="platform" > <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\Arena.cpp" - > - </File> - <File RelativePath="..\..\..\third_party\WebKit\WebCore\platform\Arena.h" > </File> @@ -818,10 +838,6 @@ > </File> <File - RelativePath="..\..\pending\DNS.h" - > - </File> - <File RelativePath="..\..\..\third_party\WebKit\WebCore\platform\DragData.cpp" > </File> @@ -910,6 +926,10 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\HostWindow.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\platform\KURL.cpp" > </File> @@ -954,7 +974,7 @@ > </File> <File - RelativePath="..\..\pending\PlatformKeyboardEvent.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\PlatformKeyboardEvent.h" > </File> <File @@ -982,6 +1002,10 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\PopupMenuStyle.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollBar.cpp" > </File> @@ -990,23 +1014,35 @@ > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollTypes.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollbarClient.h" > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollView.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollbarTheme.h" > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\SearchPopupMenu.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollbarThemeComposite.cpp" > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\SecurityOrigin.cpp" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollbarThemeComposite.h" > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\SecurityOrigin.h" + RelativePath="...\..\..\third_party\WebKit\WebCore\platform\ScrollTypes.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollView.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\ScrollView.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\SearchPopupMenu.h" > </File> <File @@ -1030,7 +1066,7 @@ > </File> <File - RelativePath="..\..\pending\StaticConstructors.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\StaticConstructors.h" > </File> <File @@ -1065,10 +1101,6 @@ RelativePath="..\..\..\third_party\WebKit\WebCore\platform\Widget.h" > </File> - <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\WidgetClient.h" - > - </File> <Filter Name="graphics" > @@ -1293,7 +1325,7 @@ > </File> <File - RelativePath="..\..\pending\DNS.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\network\DNS.h" > </File> <File @@ -1373,7 +1405,7 @@ Name="win" > <File - RelativePath="..\..\..\third_party\WebKit\WebCore\platform\win\FileSystemWin.cpp" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\Arena.cpp" > </File> </Filter> @@ -1580,6 +1612,14 @@ RelativePath="..\..\..\third_party\WebKit\WebCore\platform\text\UnicodeRange.h" > </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\graphics\WidthIterator.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\graphics\WidthIterator.h" + > + </File> </Filter> </Filter> <Filter @@ -1758,6 +1798,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\css\CSSNthSelector.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\css\CSSNthSelector.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\css\CSSPageRule.cpp" > </File> @@ -2206,6 +2254,10 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\Length.cpp" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\Length.h" > </File> @@ -2490,6 +2542,30 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\RenderScrollbar.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\RenderScrollbar.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\RenderScrollbarPart.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\RenderScrollbarPart.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\RenderScrollbarTheme.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\RenderScrollbarTheme.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\RenderSlider.cpp" > </File> @@ -2742,22 +2818,6 @@ > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\SVGRenderStyle.cpp" - > - </File> - <File - RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\SVGRenderStyle.h" - > - </File> - <File - RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\SVGRenderStyleDefs.cpp" - > - </File> - <File - RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\SVGRenderStyleDefs.h" - > - </File> - <File RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\SVGRenderSupport.cpp" > </File> @@ -2797,6 +2857,102 @@ Name="style" > <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\Animation.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\Animation.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\AnimationList.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\AnimationList.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\BindingURI.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\BindingURI.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\BorderData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\BorderValue.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\CollapsedBorderValue.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\ContentData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\ContentData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\CounterContent.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\CounterDirectives.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\CounterDirectives.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\CursorData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\CursorList.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\DataRef.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\FillLayer.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\FillLayer.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\IdentityTransformOperation.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\KeyframeList.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\KeyframeList.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\MatrixTransformOperation.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\MatrixTransformOperation.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\NinePieceImage.cpp" > </File> @@ -2805,6 +2961,10 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\OutlineValue.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\RenderStyle.cpp" > </File> @@ -2813,6 +2973,58 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\RenderStyleConstants.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\RotateTransformOperation.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\RotateTransformOperation.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\ScaleTransformOperation.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\ScaleTransformOperation.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\ShadowData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\ShadowData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\SkewTransformOperation.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\SkewTransformOperation.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleBackgroundData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleBackgroundData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleBoxData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleBoxData.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleCachedImage.cpp" > </File> @@ -2821,6 +3033,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleFlexibleBoxData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleFlexibleBoxData.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleGeneratedImage.cpp" > </File> @@ -2832,6 +3052,114 @@ RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleImage.h" > </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleInheritedData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleInheritedData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleMarqueeData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleMarqueeData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleMultiColData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleMultiColData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleRareInheritedData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleRareInheritedData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleRareNonInheritedData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleRareNonInheritedData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleReflection.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleSurroundData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleSurroundData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleTransformData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleTransformData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleVisualData.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\StyleVisualData.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\SVGRenderStyle.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\SVGRenderStyle.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\SVGRenderStyleDefs.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\SVGRenderStyleDefs.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\TimingFunction.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\TransformOperation.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\TransformOperations.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\TransformOperations.h" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\TranslateTransformOperation.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\rendering\style\TranslateTransformOperation.h" + > + </File> </Filter> </Filter> <Filter @@ -2890,7 +3218,7 @@ > </File> <File - RelativePath="..\xml\XPathException.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\xml\XPathException.h" > </File> <File @@ -3314,7 +3642,7 @@ > </File> <File - RelativePath="..\..\pending\KeyboardEvent.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\KeyboardEvent.h" > </File> <File @@ -3330,6 +3658,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\dom\MessageChannel.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\dom\MessageChannel.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\dom\MessageEvent.cpp" > </File> @@ -3338,6 +3674,14 @@ > </File> <File + RelativePath="..\..\..\third_party\WebKit\WebCore\dom\MessagePort.cpp" + > + </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\dom\MessagePort.h" + > + </File> + <File RelativePath="..\..\..\third_party\WebKit\WebCore\dom\MouseEvent.cpp" > </File> @@ -3430,10 +3774,6 @@ > </File> <File - RelativePath="..\..\..\third_party\WebKit\WebCore\dom\NSResolver.h" - > - </File> - <File RelativePath="..\..\..\third_party\WebKit\WebCore\dom\OverflowEvent.cpp" > </File> @@ -3633,6 +3973,10 @@ RelativePath="..\..\..\third_party\WebKit\WebCore\dom\XMLTokenizer.h" > </File> + <File + RelativePath="..\..\..\third_party\WebKit\WebCore\dom\XMLTokenizerLibxml2.cpp" + > + </File> </Filter> <Filter Name="bridge" @@ -5864,7 +6208,7 @@ > </File> <File - RelativePath="..\..\pending\SVGPaintServer.h" + RelativePath="..\..\..\third_party\WebKit\WebCore\platform\SVGPaintServer.h" > </File> <File diff --git a/webkit/build/port/SConscript b/webkit/build/port/SConscript index 53d3741..7010b0f 100644 --- a/webkit/build/port/SConscript +++ b/webkit/build/port/SConscript @@ -196,6 +196,7 @@ idl_files = [ 'dom/EventTargetNode.idl', 'dom/KeyboardEvent.idl', 'dom/MessageEvent.idl', + 'dom/MessagePort.idl', 'dom/MouseEvent.idl', 'dom/MutationEvent.idl', 'dom/NamedNodeMap.idl', @@ -204,7 +205,6 @@ idl_files = [ 'dom/NodeIterator.idl', 'dom/NodeList.idl', 'dom/Notation.idl', - 'dom/NSResolver.idl', 'dom/OverflowEvent.idl', 'dom/ProcessingInstruction.idl', 'dom/ProgressEvent.idl', diff --git a/webkit/build/port/port.vcproj b/webkit/build/port/port.vcproj index 752088a..a4d9f3c 100644 --- a/webkit/build/port/port.vcproj +++ b/webkit/build/port/port.vcproj @@ -719,7 +719,7 @@ > </File> <File - RelativePath="..\..\port\platform\win\ScreenWin.cpp" + RelativePath="..\..\port\platform\win\PlatformScreenWin.cpp" > </File> <File @@ -763,6 +763,14 @@ > </File> <File + RelativePath="..\..\port\platform\chromium\FileSystemChromium.cpp" + > + </File> + <File + RelativePath="..\..\port\platform\chromium\FileSystemChromiumWin.cpp" + > + </File> + <File RelativePath="..\..\port\platform\chromium\FramelessScrollView.cpp" > </File> @@ -783,19 +791,15 @@ > </File> <File - RelativePath="..\..\port\platform\chromium\PlatformScrollBar.h" - > - </File> - <File - RelativePath="..\..\port\platform\chromium\PlatformScrollBarChromium.cpp" + RelativePath="..\..\port\platform\chromium\PopupMenuChromium.cpp" > </File> <File - RelativePath="..\..\port\platform\chromium\PopupMenuChromium.cpp" + RelativePath="..\..\port\platform\chromium\ScrollbarThemeChromiumWin.cpp" > </File> <File - RelativePath="..\..\port\platform\chromium\ScrollViewChromium.cpp" + RelativePath="..\..\port\platform\chromium\ScrollbarThemeChromiumWin.h" > </File> <File diff --git a/webkit/build/webkit_common_includes.vsprops b/webkit/build/webkit_common_includes.vsprops index 8bd0b17..7d0b1ba 100644 --- a/webkit/build/webkit_common_includes.vsprops +++ b/webkit/build/webkit_common_includes.vsprops @@ -6,6 +6,6 @@ > <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories=""$(OutDir)\obj\WebCore";"$(OutDir)\obj\WebCore\JavaScriptHeaders";"$(OutDir)\obj\WebCore\JavaScriptHeaders\JavaScriptCore";..\..\pending\;..\..\pending\kjs;..\..\pending\wtf;..\..\port\bridge;..\..\port\css;..\..\port\dom;..\..\port\history;..\..\port\loader;..\..\port\page;..\..\port\page\chromium;..\..\port\page\win;..\..\port\platform;..\..\port\platform\chromium;..\..\port\platform\win;..\..\port\platform\network\chromium;..\..\port\platform\image-decoders;..\..\port\platform\image-decoders\bmp;..\..\port\platform\image-decoders\gif;..\..\port\platform\image-decoders\ico;..\..\port\platform\image-decoders\jpeg;..\..\port\platform\image-decoders\png;..\..\port\platform\image-decoders\xbm;..\..\port\platform\network;..\..\port\plugins;..\..\port\rendering;..\..\;"$(ProjectDir)";..\..\..\third_party\WebKit\WebCore\;..\..\..\third_party\WebKit\WebCore\bridge;..\..\..\third_party\WebKit\WebCore\bridge\c;..\..\..\third_party\WebKit\WebCore\css;..\..\..\third_party\WebKit\WebCore\dom;..\..\..\third_party\WebKit\WebCore\editing;..\..\..\third_party\WebKit\WebCore\history;..\..\..\third_party\WebKit\WebCore\html;..\..\..\third_party\WebKit\WebCore\loader;..\..\..\third_party\WebKit\WebCore\loader\appcache;..\..\..\third_party\WebKit\WebCore\loader\archive;..\..\..\third_party\WebKit\WebCore\loader\icon;..\..\..\third_party\WebKit\WebCore\page;..\..\..\third_party\WebKit\WebCore\platform;..\..\..\third_party\WebKit\WebCore\page\animation;..\..\..\third_party\WebKit\WebCore\platform\text;..\..\..\third_party\WebKit\WebCore\platform\graphics;..\..\port\platform\graphics;..\..\port\platform\graphics\chromium;..\..\..\third_party\WebKit\WebCore\svg\graphics;..\..\..\third_party\WebKit\WebCore\platform\network;..\..\..\third_party\WebKit\WebCore\platform\sql;..\..\..\third_party\WebKit\WebCore\rendering;..\..\..\third_party\WebKit\WebCore\rendering\style;..\..\..\third_party\WebKit\WebCore\storage;..\..\..\third_party\WebKit\WebCore\xml;..\..\..\third_party\WebKit\WebCore;"..\..\..\third_party\WebKit\WebCore\os-win32";..\..\..\third_party\WebKit\WebCore\wtf;..\..\..\third_party\WebKit\JavaScriptCore;..\..\..\third_party\WebKit\JavaScriptCore\wtf;"..\..\..\third_party\WebKit\JavaScriptCore\os-win32";..\..\build;"$(SDKIncludes)";"$(IntDir)\..\WebCore\DerivedSources";..\..\..\third_party\WebKit\WebCore\svg;..\..\..\third_party\WebKit\WebCore\svg\animation;..\..\..\third_party\WebKit\WebCore\svg\graphics\filters;..\..\..\third_party\WebKit\WebCore\plugins" + AdditionalIncludeDirectories=""$(OutDir)\obj\WebCore";"$(OutDir)\obj\WebCore\JavaScriptHeaders";"$(OutDir)\obj\WebCore\JavaScriptHeaders\JavaScriptCore";..\..\pending\;..\..\pending\kjs;..\..\pending\wtf;..\..\port\bridge;..\..\port\css;..\..\port\dom;..\..\port\history;..\..\port\loader;..\..\port\page;..\..\port\page\chromium;..\..\port\page\win;..\..\port\platform;..\..\port\platform\chromium;..\..\port\platform\win;..\..\port\platform\network\chromium;..\..\port\platform\image-decoders;..\..\port\platform\image-decoders\bmp;..\..\port\platform\image-decoders\gif;..\..\port\platform\image-decoders\ico;..\..\port\platform\image-decoders\jpeg;..\..\port\platform\image-decoders\png;..\..\port\platform\image-decoders\xbm;..\..\port\platform\network;..\..\port\plugins;..\..\port\rendering;..\..\;"$(ProjectDir)";..\..\..\third_party\WebKit\WebCore\;..\..\..\third_party\WebKit\WebCore\bridge;..\..\..\third_party\WebKit\WebCore\bridge\c;..\..\..\third_party\WebKit\WebCore\css;..\..\..\third_party\WebKit\WebCore\dom;..\..\..\third_party\WebKit\WebCore\editing;..\..\..\third_party\WebKit\WebCore\history;..\..\..\third_party\WebKit\WebCore\html;..\..\..\third_party\WebKit\WebCore\loader;..\..\..\third_party\WebKit\WebCore\loader\appcache;..\..\..\third_party\WebKit\WebCore\loader\archive;..\..\..\third_party\WebKit\WebCore\loader\icon;..\..\..\third_party\WebKit\WebCore\page;..\..\..\third_party\WebKit\WebCore\platform;..\..\..\third_party\WebKit\WebCore\page\animation;..\..\..\third_party\WebKit\WebCore\platform\text;..\..\..\third_party\WebKit\WebCore\platform\graphics;..\..\port\platform\graphics;..\..\port\platform\graphics\chromium;..\..\..\third_party\WebKit\WebCore\svg\graphics;..\..\..\third_party\WebKit\WebCore\platform\network;..\..\..\third_party\WebKit\WebCore\platform\sql;..\..\..\third_party\WebKit\WebCore\rendering;..\..\..\third_party\WebKit\WebCore\rendering\style;..\..\..\third_party\WebKit\WebCore\storage;..\..\..\third_party\WebKit\WebCore\xml;..\..\..\third_party\WebKit\WebCore;"..\..\..\third_party\WebKit\WebCore\os-win32";..\..\..\third_party\WebKit\WebCore\wtf;..\..\..\third_party\WebKit\JavaScriptCore;..\..\..\third_party\WebKit\JavaScriptCore\wtf;"..\..\..\third_party\WebKit\JavaScriptCore\os-win32";..\..\build;"$(SDKIncludes)";"$(IntDir)\..\WebCore\DerivedSources";..\..\..\third_party\WebKit\WebCore\svg;..\..\..\third_party\WebKit\WebCore\svg\animation;..\..\..\third_party\WebKit\WebCore\svg\graphics\filters;..\..\..\third_party\WebKit\WebCore\plugins;..\..\..\third_party\WebKit\WebCore\inspector" /> </VisualStudioPropertySheet> diff --git a/webkit/glue/chrome_client_impl.cc b/webkit/glue/chrome_client_impl.cc index d2bbbb4..24cbb7c 100644 --- a/webkit/glue/chrome_client_impl.cc +++ b/webkit/glue/chrome_client_impl.cc @@ -7,6 +7,7 @@ #include "base/compiler_specific.h" MSVC_PUSH_WARNING_LEVEL(0); +#include "Cursor.h" #include "FloatRect.h" #include "FileChooser.h" #include "FrameLoadRequest.h" @@ -29,6 +30,7 @@ MSVC_POP_WARNING(); #include "webkit/glue/webkit_glue.h" #include "webkit/glue/webview_delegate.h" #include "webkit/glue/webview_impl.h" +#include "webkit/glue/webwidget_impl.h" struct IWebURLResponse; @@ -356,23 +358,52 @@ WebCore::IntRect ChromeClientImpl::windowResizerRect() const { return rv; } -void ChromeClientImpl::addToDirtyRegion(const WebCore::IntRect& damaged_rect) { - ASSERT_NOT_REACHED(); +void ChromeClientImpl::repaint( + const WebCore::IntRect& paint_rect, bool content_changed, bool immediate, + bool repaint_content_only) { + WebViewDelegate* d = webview_->delegate(); + if (d) + d->DidInvalidateRect(webview_, webkit_glue::FromIntRect(paint_rect)); +} + +void ChromeClientImpl::scroll( + const WebCore::IntSize& scroll_delta, const WebCore::IntRect& scroll_rect, + const WebCore::IntRect& clip_rect) { + WebViewDelegate* d = webview_->delegate(); + if (d) { + int dx = scroll_delta.width(); + int dy = scroll_delta.height(); + d->DidScrollRect(webview_, dx, dy, webkit_glue::FromIntRect(clip_rect)); + } } -void ChromeClientImpl::scrollBackingStore(int dx, int dy, - const WebCore::IntRect& scroll_rect, - const WebCore::IntRect& clip_rect) { - ASSERT_NOT_REACHED(); +WebCore::IntPoint ChromeClientImpl::screenToWindow( + const WebCore::IntPoint&) const { + NOTIMPLEMENTED(); + return WebCore::IntPoint(); } -void ChromeClientImpl::updateBackingStore() { - ASSERT_NOT_REACHED(); +WebCore::IntRect ChromeClientImpl::windowToScreen( + const WebCore::IntRect& rect) const { + WebCore::IntRect screen_rect(rect); + + WebViewDelegate* d = webview_->delegate(); + if (d) { + gfx::Rect window_rect; + d->GetWindowRect(webview_, &window_rect); + screen_rect.move(window_rect.x(), window_rect.y()); + } + + return screen_rect; } -void ChromeClientImpl::mouseDidMoveOverElement(const WebCore::HitTestResult& result, - unsigned modifierFlags) { +PlatformWidget ChromeClientImpl::platformWindow() const { + // We have no native widget. + return NULL; +} +void ChromeClientImpl::mouseDidMoveOverElement( + const WebCore::HitTestResult& result, unsigned modifierFlags) { // Find out if the mouse is over a link, and if so, let our UI know... somehow WebViewDelegate* d = webview_->delegate(); if (d) { @@ -392,6 +423,18 @@ void ChromeClientImpl::setToolTip(const WebCore::String& tooltip_text) { } } +void ChromeClientImpl::print(WebCore::Frame* frame) { + WebViewDelegate* d = webview_->delegate(); + if (d) { + d->ScriptedPrint(WebFrameImpl::FromFrame(frame)); + } +} + +void ChromeClientImpl::exceededDatabaseQuota(WebCore::Frame* frame, + const WebCore::String& databaseName) { + // TODO(tc): If we enable the storage API, we need to implement this function. +} + void ChromeClientImpl::runFileChooser(const WebCore::String& default_path, PassRefPtr<WebCore::FileChooser> fileChooser) { WebViewDelegate* delegate = webview_->delegate(); @@ -403,28 +446,21 @@ void ChromeClientImpl::runFileChooser(const WebCore::String& default_path, delegate->RunFileChooser(suggestion, chooser); } -WebCore::IntRect ChromeClientImpl::windowToScreen(const WebCore::IntRect& rect) { - WebCore::IntRect screen_rect(rect); - +void ChromeClientImpl::popupOpened( + WebCore::FramelessScrollView* popup_view, const WebCore::IntRect& bounds) { WebViewDelegate* d = webview_->delegate(); if (d) { - gfx::Rect window_rect; - d->GetWindowRect(webview_, &window_rect); - screen_rect.move(window_rect.x(), window_rect.y()); + WebWidgetImpl* webwidget = + static_cast<WebWidgetImpl*>(d->CreatePopupWidget(webview_)); + webwidget->Init(popup_view, webkit_glue::FromIntRect(bounds)); } - - return screen_rect; } -void ChromeClientImpl::print(WebCore::Frame* frame) { +void ChromeClientImpl::setCursor(const WebCore::Cursor& cursor) { +#if defined(OS_WIN) + // TODO(pinkerton): figure out the cursor delegate methods WebViewDelegate* d = webview_->delegate(); - if (d) { - d->ScriptedPrint(WebFrameImpl::FromFrame(frame)); - } -} - -void ChromeClientImpl::exceededDatabaseQuota(WebCore::Frame* frame, - const WebCore::String& databaseName) { - // TODO(tc): If we enable the storage API, we need to implement this function. + if (d) + d->SetCursor(webview_, cursor.impl()); +#endif } - diff --git a/webkit/glue/chrome_client_impl.h b/webkit/glue/chrome_client_impl.h index a070fd1..acecb44 100644 --- a/webkit/glue/chrome_client_impl.h +++ b/webkit/glue/chrome_client_impl.h @@ -72,7 +72,10 @@ public: virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&); virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&); - virtual bool runJavaScriptPrompt(WebCore::Frame*, const WebCore::String& message, const WebCore::String& defaultValue, WebCore::String& result); + virtual bool runJavaScriptPrompt(WebCore::Frame*, + const WebCore::String& message, + const WebCore::String& defaultValue, + WebCore::String& result); virtual void setStatusbarText(const WebCore::String&); virtual bool shouldInterruptJavaScript(); @@ -85,23 +88,32 @@ public: virtual bool tabsToLinks() const; virtual WebCore::IntRect windowResizerRect() const; - virtual void addToDirtyRegion(const WebCore::IntRect&); - virtual void scrollBackingStore(int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect); - virtual void updateBackingStore(); - - virtual void mouseDidMoveOverElement(const WebCore::HitTestResult& result, unsigned modifierFlags); + + virtual void repaint(const WebCore::IntRect&, bool contentChanged, + bool immediate = false, bool repaintContentOnly = false); + virtual void scroll(const WebCore::IntSize& scrollDelta, + const WebCore::IntRect& rectToScroll, + const WebCore::IntRect& clipRect); + virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const; + virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const; + virtual PlatformWidget platformWindow() const; + + virtual void mouseDidMoveOverElement(const WebCore::HitTestResult& result, + unsigned modifierFlags); virtual void setToolTip(const WebCore::String& tooltip_text); - virtual void runFileChooser(const WebCore::String&, - PassRefPtr<WebCore::FileChooser>); - virtual WebCore::IntRect windowToScreen(const WebCore::IntRect& rect); - virtual void print(WebCore::Frame*); virtual void exceededDatabaseQuota(WebCore::Frame*, const WebCore::String& databaseName); + virtual void runFileChooser(const WebCore::String&, + PassRefPtr<WebCore::FileChooser>); + virtual void popupOpened(WebCore::FramelessScrollView* popup_view, + const WebCore::IntRect& bounds); + virtual void setCursor(const WebCore::Cursor&); + private: WebViewImpl* webview_; // weak pointer bool toolbars_visible_; diff --git a/webkit/glue/event_conversion.cc b/webkit/glue/event_conversion.cc index d5b2f44..517b870 100644 --- a/webkit/glue/event_conversion.cc +++ b/webkit/glue/event_conversion.cc @@ -115,18 +115,12 @@ MakePlatformWheelEvent::MakePlatformWheelEvent(Widget* widget, m_globalPosition = IntPoint(e.global_x, e.global_y); m_deltaX = static_cast<float>(e.delta_x); m_deltaY = static_cast<float>(e.delta_y); - m_charsToScrollPerDelta = 1; - m_linesToScrollPerDelta = 1; - m_pageXScrollMode = false; - m_pageYScrollMode = false; m_isAccepted = false; + m_granularity = ScrollByLineWheelEvent; m_shiftKey = (e.modifiers & WebInputEvent::SHIFT_KEY) != 0; m_ctrlKey = (e.modifiers & WebInputEvent::CTRL_KEY) != 0; m_altKey = (e.modifiers & WebInputEvent::ALT_KEY) != 0; m_metaKey = (e.modifiers & WebInputEvent::META_KEY) != 0; - m_isContinuous = false; - m_continuousDeltaX = 0; - m_continuousDeltaY = 0; } // MakePlatformKeyboardEvent -------------------------------------------------- diff --git a/webkit/glue/glue_util.cc b/webkit/glue/glue_util.cc index 7b609e04..5bbae41 100644 --- a/webkit/glue/glue_util.cc +++ b/webkit/glue/glue_util.cc @@ -101,7 +101,8 @@ GURL StringToGURL(const WebCore::String& spec) { // Rect conversions ------------------------------------------------------------ gfx::Rect FromIntRect(const WebCore::IntRect& r) { - return gfx::Rect(r.x(), r.y(), r.width(), r.height()); + return gfx::Rect(r.x(), r.y(), r.width() < 0 ? 0 : r.width(), + r.height() < 0 ? 0 : r.height()); } WebCore::IntRect ToIntRect(const gfx::Rect& r) { diff --git a/webkit/glue/inspector_client_impl.cc b/webkit/glue/inspector_client_impl.cc index b87afbb..dfc89fb 100644 --- a/webkit/glue/inspector_client_impl.cc +++ b/webkit/glue/inspector_client_impl.cc @@ -7,6 +7,7 @@ #include "base/compiler_specific.h" MSVC_PUSH_WARNING_LEVEL(0); +#include "DOMWindow.h" #include "FloatRect.h" #include "InspectorController.h" #include "Page.h" diff --git a/webkit/glue/localized_strings.cc b/webkit/glue/localized_strings.cc index 5bb66a5..cc3053f 100644 --- a/webkit/glue/localized_strings.cc +++ b/webkit/glue/localized_strings.cc @@ -98,6 +98,14 @@ String WebCore::AXImageMapText() { String WebCore::AXHeadingText() { return GetLocalizedString(IDS_AX_ROLE_HEADING); } +String WebCore::AXDefinitionListTermText() { + NOTIMPLEMENTED(); + return String("term"); +} +String WebCore::AXDefinitionListDefinitionText() { + NOTIMPLEMENTED(); + return String("definition"); +} String WebCore::AXButtonActionVerb() { return GetLocalizedString(IDS_AX_BUTTON_ACTION_VERB); } diff --git a/webkit/glue/searchable_form_data.cc b/webkit/glue/searchable_form_data.cc index cd0a88f..420c19a 100644 --- a/webkit/glue/searchable_form_data.cc +++ b/webkit/glue/searchable_form_data.cc @@ -268,24 +268,24 @@ WebCore::HTMLInputElement* GetTextElement( text_element = static_cast<WebCore::HTMLInputElement*>(form_element); } for (int j = 0, max = static_cast<int>(lst.list().size()); j < max; ++j) { - const WebCore::FormDataListItem& item = lst.list()[j]; + const WebCore::FormDataList::Item& item = lst.list()[j]; // handle ISINDEX / <input name=isindex> special // but only if its the first entry - if (enc_string->isEmpty() && item.m_data == "isindex") { + if (enc_string->isEmpty() && item.data() == "isindex") { if (form_element == text_element) appendString(*enc_string, "{searchTerms}"); else - appendEncodedString(*enc_string, (lst.list()[j + 1].m_data)); + appendEncodedString(*enc_string, (lst.list()[j + 1].data())); ++j; } else { if (!enc_string->isEmpty()) enc_string->append('&'); - appendEncodedString(*enc_string, item.m_data); + appendEncodedString(*enc_string, item.data()); enc_string->append('='); if (form_element == text_element) appendString(*enc_string, "{searchTerms}"); else - appendEncodedString(*enc_string, lst.list()[j + 1].m_data); + appendEncodedString(*enc_string, lst.list()[j + 1].data()); ++j; } } diff --git a/webkit/glue/webframe_impl.cc b/webkit/glue/webframe_impl.cc index f9e9c5f..8875057 100644 --- a/webkit/glue/webframe_impl.cc +++ b/webkit/glue/webframe_impl.cc @@ -107,20 +107,19 @@ MSVC_PUSH_WARNING_LEVEL(0); #include "HistoryItem.h" #include "markup.h" #include "Page.h" -#include "PlatformScrollBar.h" #include "RenderFrame.h" #include "RenderWidget.h" #include "ReplaceSelectionCommand.h" #include "ResourceHandle.h" #include "ResourceRequest.h" #include "ScriptController.h" +#include "ScrollbarTheme.h" #include "SelectionController.h" #include "Settings.h" #include "SkiaUtils.h" #include "SubstituteData.h" #include "TextIterator.h" #include "TextAffinity.h" -#include "WidgetClientChromium.h" #include "XPathResult.h" MSVC_POP_WARNING(); @@ -174,7 +173,6 @@ using WebCore::HTMLFrameElementBase; using WebCore::IntRect; using WebCore::KURL; using WebCore::Node; -using WebCore::PlatformScrollbar; using WebCore::Range; using WebCore::ReloadIgnoringCacheData; using WebCore::RenderObject; @@ -187,9 +185,13 @@ using WebCore::String; using WebCore::SubstituteData; using WebCore::TextIterator; using WebCore::VisiblePosition; -using WebCore::WidgetClientChromium; using WebCore::XPathResult; +// TODO(darin): This used to be defined on WidgetClientChromium, but that +// interface no longer exists. We'll need to come up with something better +// once we figure out how to make tickmark support work again! +static const size_t kNoTickmark = size_t(-1); + static const wchar_t* const kWebFrameActiveCount = L"WebFrameActiveCount"; static const char* const kOSDType = "application/opensearchdescription+xml"; @@ -286,7 +288,7 @@ MSVC_POP_WARNING() margin_height_(-1), inspected_node_(NULL), active_tickmark_frame_(NULL), - active_tickmark_(WidgetClientChromium::kNoTickmark), + active_tickmark_(kNoTickmark), locating_active_rect_(false), last_active_range_(NULL), last_match_count_(-1), @@ -536,7 +538,7 @@ void WebFrameImpl::LoadDocumentData(const KURL& base_url, StopLoading(); // Reset any pre-existing scroll offset - frameview()->setContentsPos(0, 0); + frameview()->setScrollPosition(WebCore::IntPoint()); // Make sure the correct document type is constructed. frame_->loader()->setResponseMIMEType(mime_type); @@ -754,23 +756,21 @@ void WebFrameImpl::InvalidateArea(AreaToInvalidate area) { FrameView* view = frame()->view(); if ((area & INVALIDATE_ALL) == INVALIDATE_ALL) { - view->addToDirtyRegion(view->frameGeometry()); + view->invalidateRect(view->frameRect()); } else { if ((area & INVALIDATE_CONTENT_AREA) == INVALIDATE_CONTENT_AREA) { - IntRect content_area(view->x(), - view->y(), - view->visibleWidth(), - view->visibleHeight()); - view->addToDirtyRegion(content_area); + IntRect content_area( + view->x(), view->y(), view->visibleWidth(), view->visibleHeight()); + view->invalidateRect(content_area); } if ((area & INVALIDATE_SCROLLBAR) == INVALIDATE_SCROLLBAR) { // Invalidate the vertical scroll bar region for the view. - IntRect scroll_bar_vert(view->x() + view->visibleWidth(), - view->y(), - PlatformScrollbar::verticalScrollbarWidth(), - view->visibleHeight()); - view->addToDirtyRegion(scroll_bar_vert); + IntRect scroll_bar_vert( + view->x() + view->visibleWidth(), view->y(), + WebCore::ScrollbarTheme::nativeTheme()->scrollbarThickness(), + view->visibleHeight()); + view->invalidateRect(scroll_bar_vert); } } #endif @@ -783,8 +783,8 @@ void WebFrameImpl::InvalidateTickmark(RefPtr<WebCore::Range> tickmark) { FrameView* view = frame()->view(); IntRect pos = tickmark->boundingBox(); - pos.move(-view->contentsX(), -view->contentsY()); - view->addToDirtyRegion(pos); + pos.move(-view->scrollX(), -view->scrollY()); + view->invalidateRect(pos); #endif } @@ -913,7 +913,7 @@ bool WebFrameImpl::FindNext(const FindInPageRequest& request, WebFrameImpl* const active_frame = main_frame_impl->active_tickmark_frame_; RefPtr<WebCore::Range> old_tickmark = NULL; if (active_frame && - (active_frame->active_tickmark_ != WidgetClientChromium::kNoTickmark)) { + (active_frame->active_tickmark_ != kNoTickmark)) { // When we get a reference to |old_tickmark| we can be in a state where // the |active_tickmark_| points outside the tickmark vector, possibly // during teardown of the frame. This doesn't reproduce normally, so if you @@ -929,7 +929,7 @@ bool WebFrameImpl::FindNext(const FindInPageRequest& request, // See if we have another match to select, and select it. if (request.forward) { const bool at_end = (active_tickmark_ == (tickmarks_.size() - 1)); - if ((active_tickmark_ == WidgetClientChromium::kNoTickmark) || + if ((active_tickmark_ == kNoTickmark) || (at_end && wrap_within_frame)) { // Wrapping within a frame is only done for single frame pages. So when we // reach the end we go back to the beginning (or back to the end if @@ -943,7 +943,7 @@ bool WebFrameImpl::FindNext(const FindInPageRequest& request, } } else { const bool at_end = (active_tickmark_ == 0); - if ((active_tickmark_ == WidgetClientChromium::kNoTickmark) || + if ((active_tickmark_ == kNoTickmark) || (at_end && wrap_within_frame)) { // Wrapping within a frame is not done for multi-frame pages, but if no // tickmark is active we still need to set the index to the end so that @@ -960,7 +960,7 @@ bool WebFrameImpl::FindNext(const FindInPageRequest& request, if (active_frame != this) { // If we are jumping between frames, reset the active tickmark in the old // frame and invalidate the area. - active_frame->active_tickmark_ = WidgetClientChromium::kNoTickmark; + active_frame->active_tickmark_ = kNoTickmark; active_frame->InvalidateArea(INVALIDATE_CONTENT_AREA); main_frame_impl->active_tickmark_frame_ = this; } else { @@ -1250,7 +1250,7 @@ void WebFrameImpl::ScopeStringMatches(FindInPageRequest request, void WebFrameImpl::CancelPendingScopingEffort() { scope_matches_factory_.RevokeAll(); - active_tickmark_ = WidgetClientChromium::kNoTickmark; + active_tickmark_ = kNoTickmark; } void WebFrameImpl::SetFindEndstateFocusAndSelection() { @@ -1258,7 +1258,7 @@ void WebFrameImpl::SetFindEndstateFocusAndSelection() { static_cast<WebFrameImpl*>(GetView()->GetMainFrame()); if (this == main_frame_impl->active_tickmark_frame() && - active_tickmark_ != WidgetClientChromium::kNoTickmark) { + active_tickmark_ != kNoTickmark) { RefPtr<Range> range = tickmarks_[active_tickmark_]; // Set the selection to what the active match is. @@ -1424,54 +1424,39 @@ void WebFrameImpl::CreateFrameView() { DCHECK(page->mainFrame() != NULL); -#if defined(OS_WIN) - // TODO(pinkerton): figure out view show/hide like win - // Detach the current view. This ensures that UI widgets like plugins, - // etc are detached(hidden) - if (frame_->view()) - frame_->view()->detachFromWindow(); -#endif + bool is_main_frame = frame_ == page->mainFrame(); + if (is_main_frame && frame_->view()) + frame_->view()->setParentVisible(false); frame_->setView(0); - WebCore::FrameView* view = new FrameView(frame_.get()); + WebCore::FrameView* view; + if (is_main_frame) { + IntSize initial_size( + webview_impl_->size().width(), webview_impl_->size().height()); + view = new FrameView(frame_.get(), initial_size); + } else { + view = new FrameView(frame_.get()); + } frame_->setView(view); -#if defined(OS_WIN) - // Attaching the view ensures that UI widgets like plugins, display/hide - // correctly. - frame_->view()->attachToWindow(); -#endif - - if (margin_width_ >= 0) - view->setMarginWidth(margin_width_); - if (margin_height_ >= 0) - view->setMarginHeight(margin_height_); - if (!allows_scrolling_) - view->setScrollbarsMode(WebCore::ScrollbarAlwaysOff); - // TODO(darin): The Mac code has a comment about this possibly being // unnecessary. See installInFrame in WebCoreFrameBridge.mm if (frame_->ownerRenderer()) frame_->ownerRenderer()->setWidget(view); - view->initScrollbars(); + if (HTMLFrameOwnerElement* owner = frame_->ownerElement()) { + view->setCanHaveScrollbars( + owner->scrollingMode() != WebCore::ScrollbarAlwaysOff); + } + + if (is_main_frame) + view->setParentVisible(true); // FrameViews are created with a refcount of 1 so it needs releasing after we // assign it to a RefPtr. view->deref(); - - WebFrameImpl* parent = static_cast<WebFrameImpl*>(GetParent()); - if (parent) { - parent->frameview()->addChild(view); - } else { - view->setClient(webview_impl_); - - IntRect geom(0, 0, webview_impl_->size().width(), - webview_impl_->size().height()); - view->setFrameGeometry(geom); - } } // static @@ -1799,10 +1784,7 @@ gfx::Size WebFrameImpl::ScrollOffset() const { void WebFrameImpl::SetAllowsScrolling(bool flag) { allows_scrolling_ = flag; -#if defined(OS_WIN) - // TODO(pinkerton): fix when we figure out scrolling apis - frame_->view()->setAllowsScrolling(flag); -#endif + frame_->view()->setCanHaveScrollbars(flag); } bool WebFrameImpl::SetPrintingMode(bool printing, @@ -1817,9 +1799,11 @@ bool WebFrameImpl::SetPrintingMode(bool printing, } printing_ = printing; if (printing) { - view->setScrollbarsMode(WebCore::ScrollbarAlwaysOff); + view->setScrollbarModes(WebCore::ScrollbarAlwaysOff, + WebCore::ScrollbarAlwaysOff); } else { - view->setScrollbarsMode(WebCore::ScrollbarAuto); + view->setScrollbarModes(WebCore::ScrollbarAuto, + WebCore::ScrollbarAuto); } DCHECK_EQ(frame()->isFrameSet(), false); @@ -1862,7 +1846,7 @@ void WebFrameImpl::GetPageRect(int page, gfx::Rect* page_size) const { } bool WebFrameImpl::SpoolPage(int page, - PlatformContextSkia* context) { + PlatformContextSkia* context) { // Ensure correct state. if (!context || !printing_ || @@ -1881,7 +1865,7 @@ bool WebFrameImpl::SpoolPage(int page, DCHECK(pages_[page].x() == 0); // Offset to get the right square. spool.translate(0, -static_cast<float>(pages_[page].y())); - frame()->paint(&spool, pages_[page]); + frame()->view()->paint(&spool, pages_[page]); return true; } diff --git a/webkit/glue/webplugin_impl.cc b/webkit/glue/webplugin_impl.cc index 36d7fc6..0251409 100644 --- a/webkit/glue/webplugin_impl.cc +++ b/webkit/glue/webplugin_impl.cc @@ -118,10 +118,6 @@ NPObject* WebPluginContainer::GetPluginScriptableObject() { return impl_->GetPluginScriptableObject(); } -WebCore::IntRect WebPluginContainer::windowClipRect() const { - return impl_->windowClipRect(); -} - #if USE(JSC) bool WebPluginContainer::isPluginView() const { return true; @@ -129,13 +125,9 @@ bool WebPluginContainer::isPluginView() const { #endif -void WebPluginContainer::geometryChanged() const { - impl_->geometryChanged(); -} - -void WebPluginContainer::setFrameGeometry(const WebCore::IntRect& rect) { - WebCore::Widget::setFrameGeometry(rect); - impl_->setFrameGeometry(rect); +void WebPluginContainer::setFrameRect(const WebCore::IntRect& rect) { + WebCore::Widget::setFrameRect(rect); + impl_->setFrameRect(rect); } void WebPluginContainer::paint(WebCore::GraphicsContext* gc, @@ -146,6 +138,18 @@ void WebPluginContainer::paint(WebCore::GraphicsContext* gc, impl_->paint(gc, damage_rect); } +void WebPluginContainer::invalidateRect(const WebCore::IntRect& rect) { + if (parent()) { + WebCore::IntRect damageRect = convertToContainingWindow(rect); + + // Get our clip rect and intersect with it to ensure we don't invalidate too much. + WebCore::IntRect clipRect = parent()->windowClipRect(); + damageRect.intersect(clipRect); + + parent()->hostWindow()->repaint(damageRect, true); + } +} + void WebPluginContainer::setFocus() { WebCore::Widget::setFocus(); impl_->setFocus(); @@ -164,7 +168,7 @@ void WebPluginContainer::show() { WebCore::Widget::show(); // This is to force an updategeometry call to the plugin process // where the plugin window can be hidden or shown. - geometryChanged(); + frameRectsChanged(); } } @@ -176,7 +180,7 @@ void WebPluginContainer::hide() { WebCore::Widget::hide(); // This is to force an updategeometry call to the plugin process // where the plugin window can be hidden or shown. - geometryChanged(); + frameRectsChanged(); } } @@ -184,16 +188,6 @@ void WebPluginContainer::handleEvent(WebCore::Event* event) { impl_->handleEvent(event); } -void WebPluginContainer::attachToWindow() { - Widget::attachToWindow(); - show(); -} - -void WebPluginContainer::detachFromWindow() { - Widget::detachFromWindow(); - hide(); -} - void WebPluginContainer::windowCutoutRects(const WebCore::IntRect& bounds, WTF::Vector<WebCore::IntRect>* cutouts) const { @@ -602,11 +596,11 @@ void WebPluginImpl::geometryChanged() const { // This is a hack to tickle re-positioning of the plugin in the case where // our parent view was scrolled. - const_cast<WebPluginImpl*>(this)->widget_->setFrameGeometry( - widget_->frameGeometry()); + const_cast<WebPluginImpl*>(this)->widget_->setFrameRect( + widget_->frameRect()); } -void WebPluginImpl::setFrameGeometry(const WebCore::IntRect& rect) { +void WebPluginImpl::setFrameRect(const WebCore::IntRect& rect) { // Compute a new position and clip rect for ourselves relative to the // containing window. We ask our delegate to reposition us accordingly. @@ -679,7 +673,7 @@ void WebPluginImpl::paint(WebCore::GraphicsContext* gc, return; // Don't paint anything if the plugin doesn't intersect the damage rect. - if (!widget_->frameGeometry().intersects(damage_rect)) + if (!widget_->frameRect().intersects(damage_rect)) return; // A windowed plugin starts out by being invisible regardless of the style @@ -697,7 +691,7 @@ void WebPluginImpl::paint(WebCore::GraphicsContext* gc, WebCore::IntRect clip_rect; std::vector<gfx::Rect> cutout_rects; - CalculateBounds(widget_->frameGeometry(), &window_rect, &clip_rect, + CalculateBounds(widget_->frameRect(), &window_rect, &clip_rect, &cutout_rects); delegate_->UpdateGeometry(webkit_glue::FromIntRect(window_rect), @@ -1111,7 +1105,7 @@ void WebPluginImpl::CalculateBounds(const WebCore::IntRect& frame_rect, WebCore::IntRect(view->contentsToWindow(frame_rect.location()), frame_rect.size()); // Calculate a clip-rect so that we don't overlap the scrollbars, etc. - *clip_rect = widget_->windowClipRect(); + *clip_rect = windowClipRect(); clip_rect->move(-window_rect->x(), -window_rect->y()); cutout_rects->clear(); diff --git a/webkit/glue/webplugin_impl.h b/webkit/glue/webplugin_impl.h index b5473c5..77e0100 100644 --- a/webkit/glue/webplugin_impl.h +++ b/webkit/glue/webplugin_impl.h @@ -55,16 +55,16 @@ class WebPluginContainer : public WebCore::Widget { WebPluginContainer(WebPluginImpl* impl); virtual ~WebPluginContainer(); NPObject* GetPluginScriptableObject(); - virtual WebCore::IntRect windowClipRect() const; - virtual void geometryChanged() const; - virtual void setFrameGeometry(const WebCore::IntRect& rect); + + // Widget methods: + virtual void setFrameRect(const WebCore::IntRect& rect); virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect& rect); + virtual void invalidateRect(const WebCore::IntRect&); virtual void setFocus(); virtual void show(); virtual void hide(); virtual void handleEvent(WebCore::Event* event); - virtual void attachToWindow(); - virtual void detachFromWindow(); + virtual void frameRectsChanged() const {} #if USE(JSC) virtual bool isPluginView() const; @@ -203,7 +203,7 @@ class WebPluginImpl : public WebPlugin, // Override for when our window changes size or position. // Used to notify the plugin when the size or position changes. - virtual void setFrameGeometry(const WebCore::IntRect& rect); + virtual void setFrameRect(const WebCore::IntRect& rect); // Overrides paint so we can notify the underlying widget to repaint. virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect& rect); diff --git a/webkit/glue/webview_impl.cc b/webkit/glue/webview_impl.cc index 8dfb3f5..7c5ecac 100644 --- a/webkit/glue/webview_impl.cc +++ b/webkit/glue/webview_impl.cc @@ -686,13 +686,13 @@ void WebViewImpl::Layout() { // they need to be told that we are updating the screen. The problem is // that the native widgets need to recalculate their clip region and not // overlap any of our non-native widgets. To force the resizing, call - // setFrameGeometry(). This will be a quick operation for most frames, but + // setFrameRect(). This will be a quick operation for most frames, but // the NativeWindowWidgets will update a proper clipping region. FrameView* frameview = main_frame_->frameview(); if (frameview) - frameview->setFrameGeometry(frameview->frameGeometry()); + frameview->setFrameRect(frameview->frameRect()); - // setFrameGeometry may have the side-effect of causing existing page + // setFrameRect may have the side-effect of causing existing page // layout to be invalidated, so layout needs to be called last. main_frame_->Layout(); @@ -1126,6 +1126,9 @@ void WebViewImpl::SetPreferences(const WebPreferences& preferences) { settings->setFontRenderingMode(NormalRenderingMode); settings->setJavaEnabled(preferences.java_enabled); + // Turn this on to cause WebCore to paint the resize corner for us. + settings->setShouldPaintCustomScrollbars(true); + #if defined(OS_WIN) // RenderTheme is a singleton that needs to know the default font size to // draw some form controls. We let it know each time the size changes. @@ -1372,54 +1375,12 @@ void WebViewImpl::ImageResourceDownloadDone(ImageResourceFetcher* fetcher, //----------------------------------------------------------------------------- // WebCore::WidgetClientWin +// TODO(darin): Figure out what to do with these methods. +#if 0 gfx::ViewHandle WebViewImpl::containingWindow() { return delegate_ ? delegate_->GetContainingWindow(this) : NULL; } -void WebViewImpl::invalidateRect(const IntRect& damaged_rect) { - if (delegate_) - delegate_->DidInvalidateRect(this, gfx::Rect(damaged_rect.x(), - damaged_rect.y(), - damaged_rect.width(), - damaged_rect.height())); -} - -void WebViewImpl::scrollRect(int dx, int dy, const IntRect& clip_rect) { - if (delegate_) - delegate_->DidScrollRect(this, dx, dy, gfx::Rect(clip_rect.x(), - clip_rect.y(), - clip_rect.width(), - clip_rect.height())); -} - -void WebViewImpl::popupOpened(WebCore::Widget* widget, - const WebCore::IntRect& bounds) { - if (!delegate_) - return; - - WebWidgetImpl* webwidget = - static_cast<WebWidgetImpl*>(delegate_->CreatePopupWidget(this)); - webwidget->Init(widget, gfx::Rect(bounds.x(), bounds.y(), - bounds.width(), bounds.height())); -} - -void WebViewImpl::popupClosed(WebCore::Widget* widget) { - NOTREACHED() << "popupClosed called on a non-popup"; -} - -void WebViewImpl::setCursor(const WebCore::Cursor& cursor) { -#if defined(OS_WIN) - // TODO(pinkerton): figure out the cursor delegate methods - if (delegate_) - delegate_->SetCursor(this, cursor.impl()); -#endif -} - -void WebViewImpl::setFocus() { - if (delegate_) - delegate_->Focus(this); -} - const SkBitmap* WebViewImpl::getPreloadedResourceBitmap(int resource_id) { if (!delegate_) return NULL; @@ -1462,6 +1423,7 @@ bool WebViewImpl::isHidden() { return delegate_->IsHidden(); } +#endif //----------------------------------------------------------------------------- // WebCore::BackForwardListClient diff --git a/webkit/glue/webview_impl.h b/webkit/glue/webview_impl.h index 0e09bf9..e4ec4b4 100644 --- a/webkit/glue/webview_impl.h +++ b/webkit/glue/webview_impl.h @@ -18,8 +18,7 @@ #include "webkit/glue/webview.h" MSVC_PUSH_WARNING_LEVEL(0); -#include "webkit/port/history/BackForwardList.h" -#include "webkit/port/platform/chromium/WidgetClientChromium.h" +#include "BackForwardList.h" MSVC_POP_WARNING(); namespace WebCore { @@ -41,9 +40,7 @@ class WebMouseEvent; class WebMouseWheelEvent; class WebViewDelegate; -class WebViewImpl : public WebView, - public WebCore::WidgetClientChromium, - public WebCore::BackForwardListClient { +class WebViewImpl : public WebView, public WebCore::BackForwardListClient { public: // WebView virtual bool ShouldClose(); @@ -189,21 +186,17 @@ class WebViewImpl : public WebView, WebCore::Frame* frame, const WebCore::PlatformKeyboardEvent& e); + // TODO(darin): Figure out what happens to these methods. +#if 0 // WebCore::WidgetClientWin virtual gfx::ViewHandle containingWindow(); - virtual void invalidateRect(const WebCore::IntRect& damaged_rect); - virtual void scrollRect(int dx, int dy, const WebCore::IntRect& clip_rect); - virtual void popupOpened(WebCore::Widget* widget, - const WebCore::IntRect& bounds); - virtual void popupClosed(WebCore::Widget* widget); - virtual void setCursor(const WebCore::Cursor& cursor); - virtual void setFocus(); virtual const SkBitmap* getPreloadedResourceBitmap(int resource_id); virtual void onScrollPositionChanged(WebCore::Widget* widget); virtual const WTF::Vector<RefPtr<WebCore::Range> >* getTickmarks( WebCore::Frame* frame); virtual size_t getActiveTickmarkIndex(WebCore::Frame* frame); virtual bool isHidden(); +#endif // WebCore::BackForwardListClient virtual void didAddHistoryItem(WebCore::HistoryItem* item); diff --git a/webkit/glue/webwidget_impl.cc b/webkit/glue/webwidget_impl.cc index 381c4b8..c04bedb 100644 --- a/webkit/glue/webwidget_impl.cc +++ b/webkit/glue/webwidget_impl.cc @@ -22,6 +22,7 @@ MSVC_POP_WARNING(); #include "base/gfx/rect.h" #include "base/logging.h" #include "webkit/glue/event_conversion.h" +#include "webkit/glue/glue_util.h" #include "webkit/glue/webinputevent.h" #include "webkit/glue/webwidget_delegate.h" #include "webkit/glue/webwidget_impl.h" @@ -45,15 +46,13 @@ WebWidgetImpl::WebWidgetImpl(WebWidgetDelegate* delegate) } WebWidgetImpl::~WebWidgetImpl() { - if (widget_) { + if (widget_) widget_->setClient(NULL); - } } -void WebWidgetImpl::Init(WebCore::Widget* widget, const gfx::Rect& bounds) { - DCHECK(widget->isFrameView()); - widget_ = static_cast<FramelessScrollView*>(widget); - +void WebWidgetImpl::Init(WebCore::FramelessScrollView* widget, + const gfx::Rect& bounds) { + widget_ = widget; widget_->setClient(this); if (delegate_) { @@ -109,7 +108,7 @@ void WebWidgetImpl::Resize(const gfx::Size& new_size) { if (widget_) { IntRect new_geometry(0, 0, size_.width(), size_.height()); - widget_->setFrameGeometry(new_geometry); + widget_->setFrameRect(new_geometry); } if (delegate_) { @@ -197,51 +196,47 @@ bool WebWidgetImpl::ImeUpdateStatus(bool* enable_ime, const void** id, return false; } -const SkBitmap* WebWidgetImpl::getPreloadedResourceBitmap(int resource_id) { - return NULL; -} - -const WTF::Vector<RefPtr<WebCore::Range> >* WebWidgetImpl::getTickmarks( - WebCore::Frame* frame) { - return NULL; -} +//----------------------------------------------------------------------------- +// WebCore::HostWindow -size_t WebWidgetImpl::getActiveTickmarkIndex(WebCore::Frame* frame) { - return kNoTickmark; +void WebWidgetImpl::repaint(const WebCore::IntRect& paint_rect, + bool content_changed, + bool immediate, + bool repaint_content_only) { + if (delegate_) + delegate_->DidInvalidateRect(this, webkit_glue::FromIntRect(paint_rect)); } -void WebWidgetImpl::onScrollPositionChanged(Widget* widget) { +void WebWidgetImpl::scroll(const WebCore::IntSize& scroll_delta, + const WebCore::IntRect& scroll_rect, + const WebCore::IntRect& clip_rect) { + if (delegate_) { + int dx = scroll_delta.width(); + int dy = scroll_delta.height(); + delegate_->DidScrollRect(this, dx, dy, webkit_glue::FromIntRect(clip_rect)); + } } -//----------------------------------------------------------------------------- -// WebCore::WidgetClientWin - -gfx::ViewHandle WebWidgetImpl::containingWindow() { - return delegate_ ? delegate_->GetContainingWindow(this) : NULL; +WebCore::IntPoint WebWidgetImpl::screenToWindow( + const WebCore::IntPoint& point) const { + NOTIMPLEMENTED(); + return WebCore::IntPoint(); } -void WebWidgetImpl::invalidateRect(const IntRect& damaged_rect) { - if (delegate_) - delegate_->DidInvalidateRect(this, gfx::Rect(damaged_rect.x(), - damaged_rect.y(), - damaged_rect.width(), - damaged_rect.height())); +WebCore::IntRect WebWidgetImpl::windowToScreen( + const WebCore::IntRect& rect) const { + NOTIMPLEMENTED(); + return WebCore::IntRect(); } -void WebWidgetImpl::scrollRect(int dx, int dy, const IntRect& clip_rect) { - if (delegate_) - delegate_->DidScrollRect(this, dx, dy, gfx::Rect(clip_rect.x(), - clip_rect.y(), - clip_rect.width(), - clip_rect.height())); +PlatformWidget WebWidgetImpl::platformWindow() const { + return NULL; } -void WebWidgetImpl::popupOpened(WebCore::Widget* widget, - const WebCore::IntRect& bounds) { - NOTREACHED() << "popupOpened called on a popup"; -} +//----------------------------------------------------------------------------- +// WebCore::FramelessScrollViewClient -void WebWidgetImpl::popupClosed(WebCore::Widget* widget) { +void WebWidgetImpl::popupClosed(WebCore::FramelessScrollView* widget) { DCHECK(widget == widget_); if (widget_) { widget_->setClient(NULL); @@ -250,16 +245,29 @@ void WebWidgetImpl::popupClosed(WebCore::Widget* widget) { delegate_->CloseWidgetSoon(this); } -void WebWidgetImpl::setCursor(const WebCore::Cursor& cursor) { -#if defined(OS_WIN) - // TODO(pinkerton): re-enable when WebCursor is ported - if (delegate_) - delegate_->SetCursor(this, cursor.impl()); -#endif +//----------------------------------------------------------------------------- +// WebCore::WidgetClientWin + +// TODO(darin): Figure out what happens to these methods. +#if 0 +gfx::ViewHandle WebWidgetImpl::containingWindow() { + return delegate_ ? delegate_->GetContainingWindow(this) : NULL; } -void WebWidgetImpl::setFocus() { - delegate_->Focus(this); +const SkBitmap* WebWidgetImpl::getPreloadedResourceBitmap(int resource_id) { + return NULL; +} + +void WebWidgetImpl::onScrollPositionChanged(Widget* widget) { +} + +const WTF::Vector<RefPtr<WebCore::Range> >* WebWidgetImpl::getTickmarks( + WebCore::Frame* frame) { + return NULL; +} + +size_t WebWidgetImpl::getActiveTickmarkIndex(WebCore::Frame* frame) { + return kNoTickmark; } bool WebWidgetImpl::isHidden() { @@ -268,3 +276,4 @@ bool WebWidgetImpl::isHidden() { return delegate_->IsHidden(); } +#endif diff --git a/webkit/glue/webwidget_impl.h b/webkit/glue/webwidget_impl.h index 32bcbde..288485f 100644 --- a/webkit/glue/webwidget_impl.h +++ b/webkit/glue/webwidget_impl.h @@ -12,9 +12,7 @@ #include "base/gfx/size.h" #include "webkit/glue/webwidget.h" -MSVC_PUSH_WARNING_LEVEL(0); -#include "WidgetClientChromium.h" -MSVC_POP_WARNING(); +#include "FramelessScrollViewClient.h" namespace WebCore { class Frame; @@ -31,7 +29,8 @@ class WebMouseEvent; class WebMouseWheelEvent; class WebWidgetDelegate; -class WebWidgetImpl : public WebWidget, public WebCore::WidgetClientChromium { +class WebWidgetImpl : public WebWidget, + public WebCore::FramelessScrollViewClient { public: // WebWidget virtual void Close(); @@ -50,7 +49,7 @@ class WebWidgetImpl : public WebWidget, public WebCore::WidgetClientChromium { int* x, int* y); // WebWidgetImpl - void Init(WebCore::Widget* widget, const gfx::Rect& bounds); + void Init(WebCore::FramelessScrollView* widget, const gfx::Rect& bounds); const gfx::Size& size() const { return size_; } @@ -72,21 +71,32 @@ class WebWidgetImpl : public WebWidget, public WebCore::WidgetClientChromium { WebWidgetImpl(WebWidgetDelegate* delegate); ~WebWidgetImpl(); + // WebCore::HostWindow methods: + virtual void repaint(const WebCore::IntRect&, + bool content_changed, + bool immediate = false, + bool repaint_content_only = false); + virtual void scroll(const WebCore::IntSize& scroll_delta, + const WebCore::IntRect& scroll_rect, + const WebCore::IntRect& clip_rect); + virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const; + virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const; + virtual PlatformWidget platformWindow() const; + + // WebCore::FramelessScrollViewClient methods: + virtual void popupClosed(WebCore::FramelessScrollView* popup_view); + + // TODO(darin): Figure out what happens to these methods. +#if 0 // WebCore::WidgetClientWin virtual gfx::ViewHandle containingWindow(); - virtual void invalidateRect(const WebCore::IntRect& damaged_rect); - virtual void scrollRect(int dx, int dy, const WebCore::IntRect& clip_rect); - virtual void popupOpened(WebCore::Widget* widget, - const WebCore::IntRect& bounds); - virtual void popupClosed(WebCore::Widget* widget); - virtual void setCursor(const WebCore::Cursor& cursor); - virtual void setFocus(); virtual const SkBitmap* getPreloadedResourceBitmap(int resource_id); virtual void onScrollPositionChanged(WebCore::Widget* widget); virtual const WTF::Vector<RefPtr<WebCore::Range> >* getTickmarks( WebCore::Frame* frame); virtual size_t getActiveTickmarkIndex(WebCore::Frame* frame); virtual bool isHidden(); +#endif WebWidgetDelegate* delegate_; gfx::Size size_; diff --git a/webkit/pending/AccessibleBase.cpp b/webkit/pending/AccessibleBase.cpp index 9f4c320..e123ae3 100644 --- a/webkit/pending/AccessibleBase.cpp +++ b/webkit/pending/AccessibleBase.cpp @@ -33,6 +33,7 @@ #include "Element.h" #include "EventHandler.h" #include "FrameView.h" +#include "HostWindow.h" #include "HTMLNames.h" #include "HTMLFrameElementBase.h" #include "HTMLInputElement.h" @@ -114,7 +115,7 @@ HRESULT STDMETHODCALLTYPE AccessibleBase::get_accParent(IDispatch** parent) if (!procPtr) return E_FAIL; - return procPtr(m_object->topDocumentFrameView()->containingWindow(), OBJID_WINDOW, __uuidof(IAccessible), reinterpret_cast<void**>(parent)); + return procPtr(m_object->topDocumentFrameView()->hostWindow()->platformWindow(), OBJID_WINDOW, __uuidof(IAccessible), reinterpret_cast<void**>(parent)); } HRESULT STDMETHODCALLTYPE AccessibleBase::get_accChildCount(long* count) diff --git a/webkit/pending/DeleteButtonController.cpp b/webkit/pending/DeleteButtonController.cpp deleted file mode 100644 index d00220d..0000000 --- a/webkit/pending/DeleteButtonController.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright (C) 2006, 2008 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" -#include "DeleteButtonController.h" - -#include "CachedImage.h" -#include "CSSMutableStyleDeclaration.h" -#include "CSSPrimitiveValue.h" -#include "CSSPropertyNames.h" -#include "CSSValueKeywords.h" -#include "DeleteButton.h" -#include "Document.h" -#include "Editor.h" -#include "Frame.h" -#include "htmlediting.h" -#include "HTMLDivElement.h" -#include "HTMLNames.h" -#include "Image.h" -#include "Node.h" -#include "Range.h" -#include "RemoveNodeCommand.h" -#include "RenderObject.h" -#include "SelectionController.h" - -namespace WebCore { - -using namespace HTMLNames; - -const char* const DeleteButtonController::containerElementIdentifier = "WebKit-Editing-Delete-Container"; -const char* const DeleteButtonController::buttonElementIdentifier = "WebKit-Editing-Delete-Button"; -const char* const DeleteButtonController::outlineElementIdentifier = "WebKit-Editing-Delete-Outline"; - -DeleteButtonController::DeleteButtonController(Frame* frame) - : m_frame(frame) - , m_wasStaticPositioned(false) - , m_wasAutoZIndex(false) - , m_disableStack(0) -{ -} - -static bool isDeletableElement(const Node* node) -{ - if (!node || !node->isHTMLElement() || !node->inDocument() || !node->isContentEditable()) - return false; - - const int minimumWidth = 25; - const int minimumHeight = 25; - const unsigned minimumVisibleBorders = 3; - - RenderObject* renderer = node->renderer(); - if (!renderer || renderer->width() < minimumWidth || renderer->height() < minimumHeight) - return false; - - if (renderer->isTable()) - return true; - - if (node->hasTagName(ulTag) || node->hasTagName(olTag)) - return true; - - if (renderer->isPositioned()) - return true; - - // allow block elements (excluding table cells) that have some non-transparent borders - if (renderer->isRenderBlock() && !renderer->isTableCell()) { - RenderStyle* style = renderer->style(); - if (style && style->hasBorder()) { - unsigned visibleBorders = style->borderTop().isVisible() + style->borderBottom().isVisible() + style->borderLeft().isVisible() + style->borderRight().isVisible(); - if (visibleBorders >= minimumVisibleBorders) - return true; - } - } - - return false; -} - -static HTMLElement* enclosingDeletableElement(const Selection& selection) -{ - if (!selection.isContentEditable()) - return 0; - - RefPtr<Range> range = selection.toRange(); - if (!range) - return 0; - - ExceptionCode ec = 0; - Node* container = range->commonAncestorContainer(ec); - ASSERT(container); - ASSERT(ec == 0); - - // The enclosingNodeOfType function only works on nodes that are editable - // (which is strange, given its name). - if (!container->isContentEditable()) - return 0; - - Node* element = enclosingNodeOfType(Position(container, 0), &isDeletableElement); - if (!element) - return 0; - - ASSERT(element->isHTMLElement()); - return static_cast<HTMLElement*>(element); -} - -void DeleteButtonController::respondToChangedSelection(const Selection& oldSelection) -{ - if (!enabled()) - return; - - HTMLElement* oldElement = enclosingDeletableElement(oldSelection); - HTMLElement* newElement = enclosingDeletableElement(m_frame->selection()->selection()); - if (oldElement == newElement) - return; - - // If the base is inside a deletable element, give the element a delete widget. - if (newElement) - show(newElement); - else - hide(); -} - -void DeleteButtonController::createDeletionUI() -{ - RefPtr<HTMLDivElement> container = new HTMLDivElement(m_target->document()); - container->setId(containerElementIdentifier); - - CSSMutableStyleDeclaration* style = container->getInlineStyleDecl(); - style->setProperty(CSSPropertyWebkitUserDrag, CSSValueNone); - style->setProperty(CSSPropertyWebkitUserSelect, CSSValueNone); - style->setProperty(CSSPropertyWebkitUserModify, CSSValueNone); - - RefPtr<HTMLDivElement> outline = new HTMLDivElement(m_target->document()); - outline->setId(outlineElementIdentifier); - - const int borderWidth = 4; - const int borderRadius = 6; - - style = outline->getInlineStyleDecl(); - style->setProperty(CSSPropertyPosition, CSSValueAbsolute); - style->setProperty(CSSPropertyCursor, CSSValueDefault); - style->setProperty(CSSPropertyWebkitUserDrag, CSSValueNone); - style->setProperty(CSSPropertyWebkitUserSelect, CSSValueNone); - style->setProperty(CSSPropertyWebkitUserModify, CSSValueNone); - style->setProperty(CSSPropertyZIndex, String::number(-1000000)); - style->setProperty(CSSPropertyTop, String::number(-borderWidth - m_target->renderer()->borderTop()) + "px"); - style->setProperty(CSSPropertyRight, String::number(-borderWidth - m_target->renderer()->borderRight()) + "px"); - style->setProperty(CSSPropertyBottom, String::number(-borderWidth - m_target->renderer()->borderBottom()) + "px"); - style->setProperty(CSSPropertyLeft, String::number(-borderWidth - m_target->renderer()->borderLeft()) + "px"); - style->setProperty(CSSPropertyBorder, String::number(borderWidth) + "px solid rgba(0, 0, 0, 0.6)"); - style->setProperty(CSSPropertyWebkitBorderRadius, String::number(borderRadius) + "px"); - - ExceptionCode ec = 0; - container->appendChild(outline.get(), ec); - ASSERT(ec == 0); - if (ec) - return; - - RefPtr<DeleteButton> button = new DeleteButton(m_target->document()); - button->setId(buttonElementIdentifier); - - const int buttonWidth = 30; - const int buttonHeight = 30; - const int buttonBottomShadowOffset = 2; - - style = button->getInlineStyleDecl(); - style->setProperty(CSSPropertyPosition, CSSValueAbsolute); - style->setProperty(CSSPropertyCursor, CSSValueDefault); - style->setProperty(CSSPropertyWebkitUserDrag, CSSValueNone); - style->setProperty(CSSPropertyWebkitUserSelect, CSSValueNone); - style->setProperty(CSSPropertyWebkitUserModify, CSSValueNone); - style->setProperty(CSSPropertyZIndex, String::number(1000000)); - style->setProperty(CSSPropertyTop, String::number((-buttonHeight / 2) - m_target->renderer()->borderTop() - (borderWidth / 2) + buttonBottomShadowOffset) + "px"); - style->setProperty(CSSPropertyLeft, String::number((-buttonWidth / 2) - m_target->renderer()->borderLeft() - (borderWidth / 2)) + "px"); - style->setProperty(CSSPropertyWidth, String::number(buttonWidth) + "px"); - style->setProperty(CSSPropertyHeight, String::number(buttonHeight) + "px"); - - RefPtr<Image> buttonImage = Image::loadPlatformResource("deleteButton"); - if (buttonImage->isNull()) - return; - - button->setCachedImage(new CachedImage(buttonImage.get())); - - container->appendChild(button.get(), ec); - ASSERT(ec == 0); - if (ec) - return; - - m_containerElement = container.release(); - m_outlineElement = outline.release(); - m_buttonElement = button.release(); -} - -void DeleteButtonController::show(HTMLElement* element) -{ - hide(); - - if (!enabled() || !element || !element->inDocument() || !isDeletableElement(element)) - return; - - if (!m_frame->editor()->shouldShowDeleteInterface(static_cast<HTMLElement*>(element))) - return; - - // we rely on the renderer having current information, so we should update the layout if needed - m_frame->document()->updateLayoutIgnorePendingStylesheets(); - - m_target = element; - - if (!m_containerElement) { - createDeletionUI(); - if (!m_containerElement) { - hide(); - return; - } - } - - ExceptionCode ec = 0; - m_target->appendChild(m_containerElement.get(), ec); - ASSERT(ec == 0); - if (ec) { - hide(); - return; - } - - if (m_target->renderer()->style()->position() == StaticPosition) { - m_target->getInlineStyleDecl()->setProperty(CSSPropertyPosition, CSSValueRelative); - m_wasStaticPositioned = true; - } - - if (m_target->renderer()->style()->hasAutoZIndex()) { - m_target->getInlineStyleDecl()->setProperty(CSSPropertyZIndex, "0"); - m_wasAutoZIndex = true; - } -} - -void DeleteButtonController::hide() -{ - m_outlineElement = 0; - m_buttonElement = 0; - - ExceptionCode ec = 0; - if (m_containerElement && m_containerElement->parentNode()) - m_containerElement->parentNode()->removeChild(m_containerElement.get(), ec); - - if (m_target) { - if (m_wasStaticPositioned) - m_target->getInlineStyleDecl()->setProperty(CSSPropertyPosition, CSSValueStatic); - if (m_wasAutoZIndex) - m_target->getInlineStyleDecl()->setProperty(CSSPropertyZIndex, CSSValueAuto); - } - - m_wasStaticPositioned = false; - m_wasAutoZIndex = false; -} - -void DeleteButtonController::enable() -{ - ASSERT(m_disableStack > 0); - if (m_disableStack > 0) - m_disableStack--; - if (enabled()) - show(enclosingDeletableElement(m_frame->selection()->selection())); -} - -void DeleteButtonController::disable() -{ - if (enabled()) - hide(); - m_disableStack++; -} - -void DeleteButtonController::deleteTarget() -{ - if (!enabled() || !m_target) - return; - - RefPtr<Node> element = m_target; - hide(); - - // Because the deletion UI only appears when the selection is entirely - // within the target, we unconditionally update the selection to be - // a caret where the target had been. - Position pos = positionBeforeNode(element.get()); - applyCommand(RemoveNodeCommand::create(element.release())); - m_frame->selection()->setSelection(VisiblePosition(pos)); -} - -} // namespace WebCore diff --git a/webkit/pending/RenderMenuList.cpp b/webkit/pending/RenderMenuList.cpp deleted file mode 100644 index 69bc104e..0000000 --- a/webkit/pending/RenderMenuList.cpp +++ /dev/null @@ -1,423 +0,0 @@ -/** - * This file is part of the select element renderer in WebCore. - * - * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#include "config.h" -#include "RenderMenuList.h" - -#include "CSSStyleSelector.h" -#include "Document.h" -#include "FontSelector.h" -#include "FrameView.h" -#include "GraphicsContext.h" -#include "HTMLNames.h" -#include "HTMLOptionElement.h" -#include "HTMLOptGroupElement.h" -#include "HTMLSelectElement.h" -#include "PopupMenu.h" -#include "RenderBR.h" -#include "RenderText.h" -#include "RenderTheme.h" -#include <math.h> - -using namespace std; - -namespace WebCore { - -using namespace HTMLNames; - -RenderMenuList::RenderMenuList(HTMLSelectElement* element) - : RenderFlexibleBox(element) - , m_buttonText(0) - , m_innerBlock(0) - , m_optionsChanged(true) - , m_optionsWidth(0) - , m_popup(0) - , m_popupIsVisible(false) -{ -} - -RenderMenuList::~RenderMenuList() -{ - if (m_popup) - m_popup->disconnectClient(); - m_popup = 0; -} - -// this static cast is safe because RenderMenuLists are only created for HTMLSelectElements -HTMLSelectElement* RenderMenuList::selectElement() -{ - return static_cast<HTMLSelectElement*>(node()); -} - -void RenderMenuList::createInnerBlock() -{ - if (m_innerBlock) { - ASSERT(firstChild() == m_innerBlock); - ASSERT(!m_innerBlock->nextSibling()); - return; - } - - // Create an anonymous block. - ASSERT(!firstChild()); - m_innerBlock = createAnonymousBlock(); - adjustInnerStyle(); - RenderFlexibleBox::addChild(m_innerBlock); -} - -void RenderMenuList::adjustInnerStyle() -{ - m_innerBlock->style()->setBoxFlex(1.0f); - - m_innerBlock->style()->setPaddingLeft(Length(theme()->popupInternalPaddingLeft(style()), Fixed)); - m_innerBlock->style()->setPaddingRight(Length(theme()->popupInternalPaddingRight(style()), Fixed)); - m_innerBlock->style()->setPaddingTop(Length(theme()->popupInternalPaddingTop(style()), Fixed)); - m_innerBlock->style()->setPaddingBottom(Length(theme()->popupInternalPaddingBottom(style()), Fixed)); - - if (PopupMenu::itemWritingDirectionIsNatural()) { - // Items in the popup will not respect the CSS text-align and direction properties, - // so we must adjust our own style to match. - m_innerBlock->style()->setTextAlign(LEFT); - TextDirection direction = (m_buttonText && m_buttonText->text()->defaultWritingDirection() == WTF::Unicode::RightToLeft) ? RTL : LTR; - m_innerBlock->style()->setDirection(direction); - } -} - -void RenderMenuList::addChild(RenderObject* newChild, RenderObject* beforeChild) -{ - createInnerBlock(); - m_innerBlock->addChild(newChild, beforeChild); -} - -void RenderMenuList::removeChild(RenderObject* oldChild) -{ - if (oldChild == m_innerBlock || !m_innerBlock) { - RenderFlexibleBox::removeChild(oldChild); - m_innerBlock = 0; - } else - m_innerBlock->removeChild(oldChild); -} - -void RenderMenuList::setStyle(RenderStyle* newStyle) -{ - bool fontChanged = !style() || style()->font() != newStyle->font(); - - // Don't allow overflow on menu lists. - newStyle->setOverflowX(OVISIBLE); - newStyle->setOverflowY(OVISIBLE); - - RenderBlock::setStyle(newStyle); - - if (m_buttonText) - m_buttonText->setStyle(newStyle); - if (m_innerBlock) // RenderBlock handled updating the anonymous block's style. - adjustInnerStyle(); - setReplaced(isInline()); - if (fontChanged) - updateOptionsWidth(); -} - -void RenderMenuList::updateOptionsWidth() -{ - float maxOptionWidth = 0; - const Vector<HTMLElement*>& listItems = static_cast<HTMLSelectElement*>(node())->listItems(); - int size = listItems.size(); - for (int i = 0; i < size; ++i) { - HTMLElement* element = listItems[i]; - if (element->hasTagName(optionTag)) { - String text = static_cast<HTMLOptionElement*>(element)->optionText(); - if (!text.isEmpty()) - maxOptionWidth = max(maxOptionWidth, style()->font().floatWidth(text)); - } - } - - int width = static_cast<int>(ceilf(maxOptionWidth)); - if (m_optionsWidth == width) - return; - - m_optionsWidth = width; - setNeedsLayoutAndPrefWidthsRecalc(); -} - -void RenderMenuList::updateFromElement() -{ - if (m_optionsChanged) { - updateOptionsWidth(); - m_optionsChanged = false; - } - - if (m_popupIsVisible) - m_popup->updateFromElement(); - else - setTextFromOption(static_cast<HTMLSelectElement*>(node())->selectedIndex()); -} - -void RenderMenuList::setTextFromOption(int optionIndex) -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - const Vector<HTMLElement*>& listItems = select->listItems(); - int size = listItems.size(); - - int i = select->optionToListIndex(optionIndex); - String text = ""; - if (i >= 0 && i < size) { - HTMLElement* element = listItems[i]; - if (element->hasTagName(optionTag)) - text = static_cast<HTMLOptionElement*>(listItems[i])->optionText(); - } - setText(text.stripWhiteSpace()); -} - -void RenderMenuList::setText(const String& s) -{ - if (s.isEmpty()) { - if (!m_buttonText || !m_buttonText->isBR()) { - if (m_buttonText) - m_buttonText->destroy(); - m_buttonText = new (renderArena()) RenderBR(document()); - m_buttonText->setStyle(style()); - addChild(m_buttonText); - } - } else { - if (m_buttonText && !m_buttonText->isBR()) - m_buttonText->setText(s.impl()); - else { - if (m_buttonText) - m_buttonText->destroy(); - m_buttonText = new (renderArena()) RenderText(document(), s.impl()); - m_buttonText->setStyle(style()); - addChild(m_buttonText); - } - adjustInnerStyle(); - } -} - -String RenderMenuList::text() const -{ - return m_buttonText ? m_buttonText->text() : 0; -} - -IntRect RenderMenuList::controlClipRect(int tx, int ty) const -{ - // Clip to the intersection of the content box and the content box for the inner box - // This will leave room for the arrows which sit in the inner box padding, - // and if the inner box ever spills out of the outer box, that will get clipped too. - IntRect outerBox(tx + borderLeft() + paddingLeft(), - ty + borderTop() + paddingTop(), - contentWidth(), - contentHeight()); - - IntRect innerBox(tx + m_innerBlock->xPos() + m_innerBlock->paddingLeft(), - ty + m_innerBlock->yPos() + m_innerBlock->paddingTop(), - m_innerBlock->contentWidth(), - m_innerBlock->contentHeight()); - - return intersection(outerBox, innerBox); -} - -void RenderMenuList::calcPrefWidths() -{ - m_minPrefWidth = 0; - m_maxPrefWidth = 0; - - if (style()->width().isFixed() && style()->width().value() > 0) - m_minPrefWidth = m_maxPrefWidth = calcContentBoxWidth(style()->width().value()); - else - m_maxPrefWidth = max(m_optionsWidth, theme()->minimumMenuListSize(style())) + m_innerBlock->paddingLeft() + m_innerBlock->paddingRight(); - - if (style()->minWidth().isFixed() && style()->minWidth().value() > 0) { - m_maxPrefWidth = max(m_maxPrefWidth, calcContentBoxWidth(style()->minWidth().value())); - m_minPrefWidth = max(m_minPrefWidth, calcContentBoxWidth(style()->minWidth().value())); - } else if (style()->width().isPercent() || (style()->width().isAuto() && style()->height().isPercent())) - m_minPrefWidth = 0; - else - m_minPrefWidth = m_maxPrefWidth; - - if (style()->maxWidth().isFixed() && style()->maxWidth().value() != undefinedLength) { - m_maxPrefWidth = min(m_maxPrefWidth, calcContentBoxWidth(style()->maxWidth().value())); - m_minPrefWidth = min(m_minPrefWidth, calcContentBoxWidth(style()->maxWidth().value())); - } - - int toAdd = paddingLeft() + paddingRight() + borderLeft() + borderRight(); - m_minPrefWidth += toAdd; - m_maxPrefWidth += toAdd; - - setPrefWidthsDirty(false); -} - -void RenderMenuList::showPopup() -{ - if (m_popupIsVisible) - return; - - // Create m_innerBlock here so it ends up as the first child. - // This is important because otherwise we might try to create m_innerBlock - // inside the showPopup call and it would fail. - createInnerBlock(); - if (!m_popup) - m_popup = PopupMenu::create(this); - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - m_popupIsVisible = true; - m_popup->show(absoluteBoundingBoxRect(), document()->view(), - select->optionToListIndex(select->selectedIndex())); -} - -void RenderMenuList::hidePopup() -{ - if (m_popup) - m_popup->hide(); - m_popupIsVisible = false; -} - -void RenderMenuList::valueChanged(unsigned listIndex, bool fireOnChange) -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - select->setSelectedIndex(select->listToOptionIndex(listIndex), true, fireOnChange); -} - -String RenderMenuList::itemText(unsigned listIndex) const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - HTMLElement* element = select->listItems()[listIndex]; - if (element->hasTagName(optgroupTag)) - return static_cast<HTMLOptGroupElement*>(element)->groupLabelText(); - else if (element->hasTagName(optionTag)) - return static_cast<HTMLOptionElement*>(element)->optionText(); - return String(); -} - -bool RenderMenuList::itemIsEnabled(unsigned listIndex) const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - HTMLElement* element = select->listItems()[listIndex]; - if (!element->hasTagName(optionTag)) - return false; - bool groupEnabled = true; - if (element->parentNode() && element->parentNode()->hasTagName(optgroupTag)) - groupEnabled = element->parentNode()->isEnabled(); - return element->isEnabled() && groupEnabled; -} - -RenderStyle* RenderMenuList::itemStyle(unsigned listIndex) const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - HTMLElement* element = select->listItems()[listIndex]; - - RenderStyle* style = element->renderStyle() ? element->renderStyle() : element->computedStyle(); - return style ? style : clientStyle(); -} - -Color RenderMenuList::itemBackgroundColor(unsigned listIndex) const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - HTMLElement* element = select->listItems()[listIndex]; - - Color backgroundColor; - if (element->renderStyle()) - backgroundColor = element->renderStyle()->backgroundColor(); - // If the item has an opaque background color, return that. - if (!backgroundColor.hasAlpha()) - return backgroundColor; - - // Otherwise, the item's background is overlayed on top of the menu background. - backgroundColor = style()->backgroundColor().blend(backgroundColor); - if (!backgroundColor.hasAlpha()) - return backgroundColor; - - // If the menu background is not opaque, then add an opaque white background behind. - return Color(Color::white).blend(backgroundColor); -} - -RenderStyle* RenderMenuList::clientStyle() const -{ - return m_innerBlock ? m_innerBlock->style() : style(); -} - -Document* RenderMenuList::clientDocument() const -{ - return document(); -} - -int RenderMenuList::clientInsetLeft() const -{ - return 0; -} - -int RenderMenuList::clientInsetRight() const -{ - return 0; -} - -int RenderMenuList::clientPaddingLeft() const -{ - return paddingLeft(); -} - -int RenderMenuList::clientPaddingRight() const -{ - return paddingRight(); -} - -int RenderMenuList::listSize() const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - return select->listItems().size(); -} - -int RenderMenuList::selectedIndex() const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - return select->optionToListIndex(select->selectedIndex()); -} - -bool RenderMenuList::itemIsSeparator(unsigned listIndex) const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - HTMLElement* element = select->listItems()[listIndex]; - return element->hasTagName(hrTag); -} - -bool RenderMenuList::itemIsLabel(unsigned listIndex) const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - HTMLElement* element = select->listItems()[listIndex]; - return element->hasTagName(optgroupTag); -} - -bool RenderMenuList::itemIsSelected(unsigned listIndex) const -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - HTMLElement* element = select->listItems()[listIndex]; - return element->hasTagName(optionTag)&& static_cast<HTMLOptionElement*>(element)->selected(); -} - -void RenderMenuList::setTextFromItem(unsigned listIndex) -{ - HTMLSelectElement* select = static_cast<HTMLSelectElement*>(node()); - setTextFromOption(select->listToOptionIndex(listIndex)); -} - -FontSelector* RenderMenuList::fontSelector() const -{ - return document()->styleSelector()->fontSelector(); -} - -} diff --git a/webkit/pending/RenderMenuList.h b/webkit/pending/RenderMenuList.h deleted file mode 100644 index 286931b..0000000 --- a/webkit/pending/RenderMenuList.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * This file is part of the select element renderer in WebCore. - * - * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#ifndef RenderMenuList_h -#define RenderMenuList_h - -#include "RenderFlexibleBox.h" -#include "PopupMenuClient.h" - -#if PLATFORM(MAC) -#define POPUP_MENU_PULLS_DOWN 0 -#else -#define POPUP_MENU_PULLS_DOWN 1 -#endif - -namespace WebCore { - -class HTMLSelectElement; -class PopupMenu; - -class RenderMenuList : public RenderFlexibleBox, private PopupMenuClient { -public: - RenderMenuList(HTMLSelectElement*); - ~RenderMenuList(); - - - HTMLSelectElement* selectElement(); - - virtual bool isMenuList() const { return true; } - - virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0); - virtual void removeChild(RenderObject*); - virtual bool createsAnonymousWrapper() const { return true; } - virtual bool canHaveChildren() const { return false; } - - virtual void setStyle(RenderStyle*); - virtual void updateFromElement(); - - virtual bool hasControlClip() const { return true; } - virtual IntRect controlClipRect(int tx, int ty) const; - - virtual const char* renderName() const { return "RenderMenuList"; } - - virtual void calcPrefWidths(); - - bool popupIsVisible() const { return m_popupIsVisible; } - void showPopup(); - void hidePopup(); - - void setOptionsChanged(bool changed) { m_optionsChanged = changed; } - - String text() const; - -private: - // PopupMenuClient methods - virtual String itemText(unsigned listIndex) const; - virtual bool itemIsEnabled(unsigned listIndex) const; - virtual Color itemBackgroundColor(unsigned listIndex) const; - virtual RenderStyle* itemStyle(unsigned listIndex) const; - virtual RenderStyle* clientStyle() const; - virtual Document* clientDocument() const; - virtual int clientInsetLeft() const; - virtual int clientInsetRight() const; - virtual int clientPaddingLeft() const; - virtual int clientPaddingRight() const; - virtual int listSize() const; - virtual int selectedIndex() const; - virtual bool itemIsSeparator(unsigned listIndex) const; - virtual bool itemIsLabel(unsigned listIndex) const; - virtual bool itemIsSelected(unsigned listIndex) const; - virtual void setTextFromItem(unsigned listIndex); - virtual bool valueShouldChangeOnHotTrack() const { return true; } - virtual bool shouldPopOver() const { return !POPUP_MENU_PULLS_DOWN; } - virtual void valueChanged(unsigned listIndex, bool fireOnChange = true); - virtual FontSelector* fontSelector() const; - - virtual bool hasLineIfEmpty() const { return true; } - - void createInnerBlock(); - void adjustInnerStyle(); - void setText(const String&); - void setTextFromOption(int optionIndex); - void updateOptionsWidth(); - - RenderText* m_buttonText; - RenderBlock* m_innerBlock; - - bool m_optionsChanged; - int m_optionsWidth; - - RefPtr<PopupMenu> m_popup; - bool m_popupIsVisible; -}; - -} - -#endif diff --git a/webkit/pending/RenderStyle.h b/webkit/pending/RenderStyle.h deleted file mode 100644 index 5afa9f4..0000000 --- a/webkit/pending/RenderStyle.h +++ /dev/null @@ -1,2487 +0,0 @@ -/* - * Copyright (C) 2000 Lars Knoll (knoll@kde.org) - * (C) 2000 Antti Koivisto (koivisto@kde.org) - * (C) 2000 Dirk Mueller (mueller@kde.org) - * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. - * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#ifndef RenderStyle_h -#define RenderStyle_h - -/* - * WARNING: - * -------- - * - * The order of the values in the enums have to agree with the order specified - * in CSSValueKeywords.in, otherwise some optimizations in the parser will fail, - * and produce invalid results. - */ - -#include "AffineTransform.h" -#include "CSSHelper.h" -#include "CSSImageGeneratorValue.h" -#include "CSSPrimitiveValue.h" -#include "CSSReflectionDirection.h" -#include "CSSValueList.h" -#include "Color.h" -#include "DataRef.h" -#include "FloatPoint.h" -#include "Font.h" -#include "GraphicsTypes.h" -#include "IntRect.h" -#include "Length.h" -#include "NinePieceImage.h" -#include "Pair.h" -#include "TextDirection.h" -#include <wtf/HashMap.h> -#include <wtf/OwnPtr.h> -#include <wtf/RefCounted.h> -#include <wtf/Vector.h> - -#if ENABLE(SVG) -#include "SVGRenderStyle.h" -#endif - -template<typename T, typename U> inline bool compareEqual(const T& t, const U& u) { return t == static_cast<T>(u); } - -#define SET_VAR(group, variable, value) \ - if (!compareEqual(group->variable, value)) \ - group.access()->variable = value; - -namespace WebCore { - -using std::max; - -class CSSStyleSelector; -class CSSValueList; -class CachedImage; -class CachedResource; -class CursorList; -class KeyframeList; -class Pair; -class RenderArena; -class ShadowValue; -class StringImpl; -class StyleImage; - -struct CursorData; - -enum PseudoState { PseudoUnknown, PseudoNone, PseudoAnyLink, PseudoLink, PseudoVisited}; - -//------------------------------------------------ - -//------------------------------------------------ -// Box model attributes. Not inherited. - -enum EPosition { - StaticPosition, RelativePosition, AbsolutePosition, FixedPosition -}; - -enum EFloat { - FNONE = 0, FLEFT, FRIGHT -}; - -//------------------------------------------------ -// Border attributes. Not inherited. - -// These have been defined in the order of their precedence for border-collapsing. Do -// not change this order! -enum EBorderStyle { - BNONE, BHIDDEN, INSET, GROOVE, RIDGE, OUTSET, DOTTED, DASHED, SOLID, DOUBLE -}; - -class BorderValue { -public: - BorderValue() { - width = 3; // medium is default value - m_style = BNONE; - } - - Color color; - unsigned width : 12; - unsigned m_style : 4; // EBorderStyle - - EBorderStyle style() const { return static_cast<EBorderStyle>(m_style); } - - bool nonZero(bool checkStyle = true) const { - return width != 0 && (!checkStyle || m_style != BNONE); - } - - bool isTransparent() const { - return color.isValid() && color.alpha() == 0; - } - - bool isVisible(bool checkStyle = true) const { - return nonZero(checkStyle) && !isTransparent() && (!checkStyle || m_style != BHIDDEN); - } - - bool operator==(const BorderValue& o) const - { - return width == o.width && m_style == o.m_style && color == o.color; - } - - bool operator!=(const BorderValue& o) const - { - return !(*this == o); - } -}; - -class OutlineValue : public BorderValue { -public: - OutlineValue() - { - _offset = 0; - _auto = false; - } - - bool operator==(const OutlineValue& o) const - { - return width == o.width && m_style == o.m_style && color == o.color && _offset == o._offset && _auto == o._auto; - } - - bool operator!=(const OutlineValue& o) const - { - return !(*this == o); - } - - int _offset; - bool _auto; -}; - -enum EBorderPrecedence { BOFF, BTABLE, BCOLGROUP, BCOL, BROWGROUP, BROW, BCELL }; - -struct CollapsedBorderValue { - CollapsedBorderValue() : border(0), precedence(BOFF) {} - CollapsedBorderValue(const BorderValue* b, EBorderPrecedence p) :border(b), precedence(p) {} - - int width() const { return border && border->nonZero() ? border->width : 0; } - EBorderStyle style() const { return border ? border->style() : BHIDDEN; } - bool exists() const { return border; } - Color color() const { return border ? border->color : Color(); } - bool isTransparent() const { return border ? border->isTransparent() : true; } - - bool operator==(const CollapsedBorderValue& o) const - { - if (!border) return !o.border; - if (!o.border) return false; - return *border == *o.border && precedence == o.precedence; - } - - const BorderValue* border; - EBorderPrecedence precedence; -}; - -class BorderData { -public: - BorderValue left; - BorderValue right; - BorderValue top; - BorderValue bottom; - - NinePieceImage image; - - IntSize topLeft; - IntSize topRight; - IntSize bottomLeft; - IntSize bottomRight; - - bool hasBorder() const - { - bool haveImage = image.hasImage(); - return left.nonZero(!haveImage) || right.nonZero(!haveImage) || top.nonZero(!haveImage) || bottom.nonZero(!haveImage); - } - - bool hasBorderRadius() const { - if (topLeft.width() > 0) - return true; - if (topRight.width() > 0) - return true; - if (bottomLeft.width() > 0) - return true; - if (bottomRight.width() > 0) - return true; - return false; - } - - unsigned short borderLeftWidth() const { - if (!image.hasImage() && (left.style() == BNONE || left.style() == BHIDDEN)) - return 0; - return left.width; - } - - unsigned short borderRightWidth() const { - if (!image.hasImage() && (right.style() == BNONE || right.style() == BHIDDEN)) - return 0; - return right.width; - } - - unsigned short borderTopWidth() const { - if (!image.hasImage() && (top.style() == BNONE || top.style() == BHIDDEN)) - return 0; - return top.width; - } - - unsigned short borderBottomWidth() const { - if (!image.hasImage() && (bottom.style() == BNONE || bottom.style() == BHIDDEN)) - return 0; - return bottom.width; - } - - bool operator==(const BorderData& o) const - { - return left == o.left && right == o.right && top == o.top && bottom == o.bottom && image == o.image && - topLeft == o.topLeft && topRight == o.topRight && bottomLeft == o.bottomLeft && bottomRight == o.bottomRight; - } - - bool operator!=(const BorderData& o) const { - return !(*this == o); - } -}; - -enum EMarginCollapse { MCOLLAPSE, MSEPARATE, MDISCARD }; - -class StyleSurroundData : public RefCounted<StyleSurroundData> { -public: - static PassRefPtr<StyleSurroundData> create() { return adoptRef(new StyleSurroundData); } - PassRefPtr<StyleSurroundData> copy() const { return adoptRef(new StyleSurroundData(*this)); } - - bool operator==(const StyleSurroundData& o) const; - bool operator!=(const StyleSurroundData& o) const { - return !(*this == o); - } - - LengthBox offset; - LengthBox margin; - LengthBox padding; - BorderData border; - -private: - StyleSurroundData(); - StyleSurroundData(const StyleSurroundData&); -}; - - -//------------------------------------------------ -// Box attributes. Not inherited. - -enum EBoxSizing { CONTENT_BOX, BORDER_BOX }; - -class StyleBoxData : public RefCounted<StyleBoxData> { -public: - static PassRefPtr<StyleBoxData> create() { return adoptRef(new StyleBoxData); } - PassRefPtr<StyleBoxData> copy() const { return adoptRef(new StyleBoxData(*this)); } - - bool operator==(const StyleBoxData& o) const; - bool operator!=(const StyleBoxData& o) const { - return !(*this == o); - } - - Length width; - Length height; - - Length min_width; - Length max_width; - - Length min_height; - Length max_height; - - Length vertical_align; - - int z_index; - bool z_auto : 1; - unsigned boxSizing : 1; // EBoxSizing - -private: - StyleBoxData(); - StyleBoxData(const StyleBoxData&); -}; - -#if ENABLE(DASHBOARD_SUPPORT) -//------------------------------------------------ -// Dashboard region attributes. Not inherited. - -struct StyleDashboardRegion { - String label; - LengthBox offset; - int type; - - enum { - None, - Circle, - Rectangle - }; - - bool operator==(const StyleDashboardRegion& o) const - { - return type == o.type && offset == o.offset && label == o.label; - } - - bool operator!=(const StyleDashboardRegion& o) const - { - return !(*this == o); - } -}; -#endif - -//------------------------------------------------ -// Random visual rendering model attributes. Not inherited. - -enum EOverflow { - OVISIBLE, OHIDDEN, OSCROLL, OAUTO, OOVERLAY, OMARQUEE -}; - -enum EVerticalAlign { - BASELINE, MIDDLE, SUB, SUPER, TEXT_TOP, - TEXT_BOTTOM, TOP, BOTTOM, BASELINE_MIDDLE, LENGTH -}; - -enum EClear{ - CNONE = 0, CLEFT = 1, CRIGHT = 2, CBOTH = 3 -}; - -enum ETableLayout { - TAUTO, TFIXED -}; - -enum EUnicodeBidi { - UBNormal, Embed, Override -}; - -class StyleVisualData : public RefCounted<StyleVisualData> { -public: - static PassRefPtr<StyleVisualData> create() { return adoptRef(new StyleVisualData); } - PassRefPtr<StyleVisualData> copy() const { return adoptRef(new StyleVisualData(*this)); } - ~StyleVisualData(); - - bool operator==(const StyleVisualData& o) const { - return ( clip == o.clip && - hasClip == o.hasClip && - counterIncrement == o.counterIncrement && - counterReset == o.counterReset && - textDecoration == o.textDecoration && - m_zoom == o.m_zoom); - } - bool operator!=(const StyleVisualData& o) const { return !(*this == o); } - - LengthBox clip; - bool hasClip : 1; - unsigned textDecoration : 4; // Text decorations defined *only* by this element. - - short counterIncrement; // ok, so these are not visual mode specific - short counterReset; // can't go to inherited, since these are not inherited - - float m_zoom; - -private: - StyleVisualData(); - StyleVisualData(const StyleVisualData&); -}; - -//------------------------------------------------ -enum EFillBox { - BorderFillBox, PaddingFillBox, ContentFillBox, TextFillBox -}; - -enum EFillRepeat { - RepeatFill, RepeatXFill, RepeatYFill, NoRepeatFill -}; - -enum EFillLayerType { - BackgroundFillLayer, MaskFillLayer -}; - -struct FillLayer { -public: - FillLayer(EFillLayerType); - ~FillLayer(); - - StyleImage* image() const { return m_image.get(); } - Length xPosition() const { return m_xPosition; } - Length yPosition() const { return m_yPosition; } - bool attachment() const { return m_attachment; } - EFillBox clip() const { return static_cast<EFillBox>(m_clip); } - EFillBox origin() const { return static_cast<EFillBox>(m_origin); } - EFillRepeat repeat() const { return static_cast<EFillRepeat>(m_repeat); } - CompositeOperator composite() const { return static_cast<CompositeOperator>(m_composite); } - LengthSize size() const { return m_size; } - - const FillLayer* next() const { return m_next; } - FillLayer* next() { return m_next; } - - bool isImageSet() const { return m_imageSet; } - bool isXPositionSet() const { return m_xPosSet; } - bool isYPositionSet() const { return m_yPosSet; } - bool isAttachmentSet() const { return m_attachmentSet; } - bool isClipSet() const { return m_clipSet; } - bool isOriginSet() const { return m_originSet; } - bool isRepeatSet() const { return m_repeatSet; } - bool isCompositeSet() const { return m_compositeSet; } - bool isSizeSet() const { return m_sizeSet; } - - void setImage(StyleImage* i) { m_image = i; m_imageSet = true; } - void setXPosition(const Length& l) { m_xPosition = l; m_xPosSet = true; } - void setYPosition(const Length& l) { m_yPosition = l; m_yPosSet = true; } - void setAttachment(bool b) { m_attachment = b; m_attachmentSet = true; } - void setClip(EFillBox b) { m_clip = b; m_clipSet = true; } - void setOrigin(EFillBox b) { m_origin = b; m_originSet = true; } - void setRepeat(EFillRepeat r) { m_repeat = r; m_repeatSet = true; } - void setComposite(CompositeOperator c) { m_composite = c; m_compositeSet = true; } - void setSize(const LengthSize& b) { m_size = b; m_sizeSet = true; } - - void clearImage() { m_imageSet = false; } - void clearXPosition() { m_xPosSet = false; } - void clearYPosition() { m_yPosSet = false; } - void clearAttachment() { m_attachmentSet = false; } - void clearClip() { m_clipSet = false; } - void clearOrigin() { m_originSet = false; } - void clearRepeat() { m_repeatSet = false; } - void clearComposite() { m_compositeSet = false; } - void clearSize() { m_sizeSet = false; } - - void setNext(FillLayer* n) { if (m_next != n) { delete m_next; m_next = n; } } - - FillLayer& operator=(const FillLayer& o); - FillLayer(const FillLayer& o); - - bool operator==(const FillLayer& o) const; - bool operator!=(const FillLayer& o) const { - return !(*this == o); - } - - bool containsImage(StyleImage*) const; - - bool hasImage() const { - if (m_image) - return true; - return m_next ? m_next->hasImage() : false; - } - bool hasFixedImage() const { - if (m_image && !m_attachment) - return true; - return m_next ? m_next->hasFixedImage() : false; - } - - EFillLayerType type() const { return static_cast<EFillLayerType>(m_type); } - - void fillUnsetProperties(); - void cullEmptyLayers(); - - static bool initialFillAttachment(EFillLayerType) { return true; } - static EFillBox initialFillClip(EFillLayerType) { return BorderFillBox; } - static EFillBox initialFillOrigin(EFillLayerType type) { return type == BackgroundFillLayer ? PaddingFillBox : BorderFillBox; } - static EFillRepeat initialFillRepeat(EFillLayerType) { return RepeatFill; } - static CompositeOperator initialFillComposite(EFillLayerType) { return CompositeSourceOver; } - static LengthSize initialFillSize(EFillLayerType) { return LengthSize(); } - static Length initialFillXPosition(EFillLayerType type) { return Length(0.0, Percent); } - static Length initialFillYPosition(EFillLayerType type) { return Length(0.0, Percent); } - static StyleImage* initialFillImage(EFillLayerType) { return 0; } - -private: - FillLayer() { } - -public: - RefPtr<StyleImage> m_image; - - Length m_xPosition; - Length m_yPosition; - - bool m_attachment : 1; - unsigned m_clip : 2; // EFillBox - unsigned m_origin : 2; // EFillBox - unsigned m_repeat : 2; // EFillRepeat - unsigned m_composite : 4; // CompositeOperator - - LengthSize m_size; - - bool m_imageSet : 1; - bool m_attachmentSet : 1; - bool m_clipSet : 1; - bool m_originSet : 1; - bool m_repeatSet : 1; - bool m_xPosSet : 1; - bool m_yPosSet : 1; - bool m_compositeSet : 1; - bool m_sizeSet : 1; - - unsigned m_type : 1; // EFillLayerType - - FillLayer* m_next; -}; - -class StyleBackgroundData : public RefCounted<StyleBackgroundData> { -public: - static PassRefPtr<StyleBackgroundData> create() { return adoptRef(new StyleBackgroundData); } - PassRefPtr<StyleBackgroundData> copy() const { return adoptRef(new StyleBackgroundData(*this)); } - ~StyleBackgroundData() {} - - bool operator==(const StyleBackgroundData& o) const; - bool operator!=(const StyleBackgroundData &o) const { - return !(*this == o); - } - - FillLayer m_background; - Color m_color; - OutlineValue m_outline; - -private: - StyleBackgroundData(); - StyleBackgroundData(const StyleBackgroundData& o ); -}; - -//------------------------------------------------ -// CSS3 Marquee Properties - -enum EMarqueeBehavior { MNONE, MSCROLL, MSLIDE, MALTERNATE }; -enum EMarqueeDirection { MAUTO = 0, MLEFT = 1, MRIGHT = -1, MUP = 2, MDOWN = -2, MFORWARD = 3, MBACKWARD = -3 }; - -class StyleMarqueeData : public RefCounted<StyleMarqueeData> { -public: - static PassRefPtr<StyleMarqueeData> create() { return adoptRef(new StyleMarqueeData); } - PassRefPtr<StyleMarqueeData> copy() const { return adoptRef(new StyleMarqueeData(*this)); } - - bool operator==(const StyleMarqueeData& o) const; - bool operator!=(const StyleMarqueeData& o) const { - return !(*this == o); - } - - Length increment; - int speed; - - int loops; // -1 means infinite. - - unsigned behavior : 2; // EMarqueeBehavior - EMarqueeDirection direction : 3; // not unsigned because EMarqueeDirection has negative values - -private: - StyleMarqueeData(); - StyleMarqueeData(const StyleMarqueeData&); -}; - -// CSS3 Multi Column Layout - -class StyleMultiColData : public RefCounted<StyleMultiColData> { -public: - static PassRefPtr<StyleMultiColData> create() { return adoptRef(new StyleMultiColData); } - PassRefPtr<StyleMultiColData> copy() const { return adoptRef(new StyleMultiColData(*this)); } - - bool operator==(const StyleMultiColData& o) const; - bool operator!=(const StyleMultiColData &o) const { - return !(*this == o); - } - - unsigned short ruleWidth() const { - if (m_rule.style() == BNONE || m_rule.style() == BHIDDEN) - return 0; - return m_rule.width; - } - - float m_width; - unsigned short m_count; - float m_gap; - BorderValue m_rule; - - bool m_autoWidth : 1; - bool m_autoCount : 1; - bool m_normalGap : 1; - unsigned m_breakBefore : 2; // EPageBreak - unsigned m_breakAfter : 2; // EPageBreak - unsigned m_breakInside : 2; // EPageBreak - -private: - StyleMultiColData(); - StyleMultiColData(const StyleMultiColData&); -}; - -// CSS Transforms (may become part of CSS3) - -class TransformOperation : public RefCounted<TransformOperation> { -public: - virtual ~TransformOperation() { } - - virtual bool operator==(const TransformOperation&) const = 0; - bool operator!=(const TransformOperation& o) const { return !(*this == o); } - - virtual void apply(AffineTransform&, const IntSize& borderBoxSize) = 0; - - virtual PassRefPtr<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false) = 0; - - virtual bool isScaleOperation() const { return false; } - virtual bool isRotateOperation() const { return false; } - virtual bool isSkewOperation() const { return false; } - virtual bool isTranslateOperation() const { return false; } - virtual bool isMatrixOperation() const { return false; } -}; - -class ScaleTransformOperation : public TransformOperation { -public: - static PassRefPtr<ScaleTransformOperation> create(double sx, double sy) - { - return adoptRef(new ScaleTransformOperation(sx, sy)); - } - - virtual bool isScaleOperation() const { return true; } - - virtual bool operator==(const TransformOperation& o) const - { - if (o.isScaleOperation()) { - const ScaleTransformOperation* s = static_cast<const ScaleTransformOperation*>(&o); - return m_x == s->m_x && m_y == s->m_y; - } - return false; - } - - virtual void apply(AffineTransform& transform, const IntSize& borderBoxSize) - { - transform.scale(m_x, m_y); - } - - virtual PassRefPtr<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false); - -private: - ScaleTransformOperation(double sx, double sy) - : m_x(sx), m_y(sy) - { - } - - double m_x; - double m_y; -}; - -class RotateTransformOperation : public TransformOperation { -public: - static PassRefPtr<RotateTransformOperation> create(double angle) - { - return adoptRef(new RotateTransformOperation(angle)); - } - - virtual bool isRotateOperation() const { return true; } - - virtual bool operator==(const TransformOperation& o) const - { - if (o.isRotateOperation()) { - const RotateTransformOperation* r = static_cast<const RotateTransformOperation*>(&o); - return m_angle == r->m_angle; - } - return false; - } - - virtual void apply(AffineTransform& transform, const IntSize& borderBoxSize) - { - transform.rotate(m_angle); - } - - virtual PassRefPtr<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false); - -private: - RotateTransformOperation(double angle) - : m_angle(angle) - { - } - - double m_angle; -}; - -class SkewTransformOperation : public TransformOperation { -public: - static PassRefPtr<SkewTransformOperation> create(double angleX, double angleY) - { - return adoptRef(new SkewTransformOperation(angleX, angleY)); - } - - virtual bool isSkewOperation() const { return true; } - - virtual bool operator==(const TransformOperation& o) const - { - if (!o.isSkewOperation()) - return false; - const SkewTransformOperation* s = static_cast<const SkewTransformOperation*>(&o); - return m_angleX == s->m_angleX && m_angleY == s->m_angleY; - } - - virtual void apply(AffineTransform& transform, const IntSize& borderBoxSize) - { - transform.skew(m_angleX, m_angleY); - } - - virtual PassRefPtr<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false); - -private: - SkewTransformOperation(double angleX, double angleY) - : m_angleX(angleX), m_angleY(angleY) - { - } - - double m_angleX; - double m_angleY; -}; - -class TranslateTransformOperation : public TransformOperation { -public: - static PassRefPtr<TranslateTransformOperation> create(const Length& tx, const Length& ty) - { - return adoptRef(new TranslateTransformOperation(tx, ty)); - } - - virtual bool isTranslateOperation() const { return true; } - - virtual bool operator==(const TransformOperation& o) const - { - if (!o.isTranslateOperation()) - return false; - const TranslateTransformOperation* t = static_cast<const TranslateTransformOperation*>(&o); - return m_x == t->m_x && m_y == t->m_y; - } - - virtual void apply(AffineTransform& transform, const IntSize& borderBoxSize) - { - transform.translate(m_x.calcFloatValue(borderBoxSize.width()), m_y.calcFloatValue(borderBoxSize.height())); - } - - virtual PassRefPtr<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false); - -private: - TranslateTransformOperation(const Length& tx, const Length& ty) - : m_x(tx), m_y(ty) - { - } - - Length m_x; - Length m_y; -}; - -class MatrixTransformOperation : public TransformOperation { -public: - static PassRefPtr<MatrixTransformOperation> create(double a, double b, double c, double d, double e, double f) - { - return adoptRef(new MatrixTransformOperation(a, b, c, d, e, f)); - } - - virtual bool isMatrixOperation() const { return true; } - - virtual bool operator==(const TransformOperation& o) const - { - if (o.isMatrixOperation()) { - const MatrixTransformOperation* m = static_cast<const MatrixTransformOperation*>(&o); - return m_a == m->m_a && m_b == m->m_b && m_c == m->m_c && m_d == m->m_d && m_e == m->m_e && m_f == m->m_f; - } - return false; - } - - virtual void apply(AffineTransform& transform, const IntSize& borderBoxSize) - { - AffineTransform matrix(m_a, m_b, m_c, m_d, m_e, m_f); - transform = matrix * transform; - } - - virtual PassRefPtr<TransformOperation> blend(const TransformOperation* from, double progress, bool blendToIdentity = false); - -private: - MatrixTransformOperation(double a, double b, double c, double d, double e, double f) - : m_a(a), m_b(b), m_c(c), m_d(d), m_e(e), m_f(f) - { - } - - double m_a; - double m_b; - double m_c; - double m_d; - double m_e; - double m_f; -}; - -class TransformOperations { -public: - bool operator==(const TransformOperations&) const; - bool operator!=(const TransformOperations& o) const { - return !(*this == o); - } - - bool isEmpty() const { return m_operations.isEmpty(); } - size_t size() const { return m_operations.size(); } - const RefPtr<TransformOperation>& operator[](size_t i) const { return m_operations.at(i); } - - void append(const RefPtr<TransformOperation>& op) { return m_operations.append(op); } - -private: - Vector<RefPtr<TransformOperation> > m_operations; -}; - -class StyleTransformData : public RefCounted<StyleTransformData> { -public: - static PassRefPtr<StyleTransformData> create() { return adoptRef(new StyleTransformData); } - PassRefPtr<StyleTransformData> copy() const { return adoptRef(new StyleTransformData(*this)); } - - bool operator==(const StyleTransformData&) const; - bool operator!=(const StyleTransformData& o) const { - return !(*this == o); - } - - TransformOperations m_operations; - Length m_x; - Length m_y; - -private: - StyleTransformData(); - StyleTransformData(const StyleTransformData&); -}; - -//------------------------------------------------ -// CSS3 Flexible Box Properties - -enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE }; -enum EBoxOrient { HORIZONTAL, VERTICAL }; -enum EBoxLines { SINGLE, MULTIPLE }; -enum EBoxDirection { BNORMAL, BREVERSE }; - -class StyleFlexibleBoxData : public RefCounted<StyleFlexibleBoxData> { -public: - static PassRefPtr<StyleFlexibleBoxData> create() { return adoptRef(new StyleFlexibleBoxData); } - PassRefPtr<StyleFlexibleBoxData> copy() const { return adoptRef(new StyleFlexibleBoxData(*this)); } - - bool operator==(const StyleFlexibleBoxData& o) const; - bool operator!=(const StyleFlexibleBoxData &o) const { - return !(*this == o); - } - - float flex; - unsigned int flex_group; - unsigned int ordinal_group; - - unsigned align : 3; // EBoxAlignment - unsigned pack: 3; // EBoxAlignment - unsigned orient: 1; // EBoxOrient - unsigned lines : 1; // EBoxLines - -private: - StyleFlexibleBoxData(); - StyleFlexibleBoxData(const StyleFlexibleBoxData&); -}; - -// This struct holds information about shadows for the text-shadow and box-shadow properties. -struct ShadowData { - ShadowData(int _x, int _y, int _blur, const Color& _color) - :x(_x), y(_y), blur(_blur), color(_color), next(0) {} - ShadowData(const ShadowData& o); - - ~ShadowData() { delete next; } - - bool operator==(const ShadowData& o) const; - bool operator!=(const ShadowData &o) const { - return !(*this == o); - } - - int x; - int y; - int blur; - Color color; - ShadowData* next; -}; - -#if ENABLE(XBL) -struct BindingURI { - BindingURI(StringImpl*); - ~BindingURI(); - - BindingURI* copy(); - - bool operator==(const BindingURI& o) const; - bool operator!=(const BindingURI& o) const { - return !(*this == o); - } - - BindingURI* next() { return m_next; } - void setNext(BindingURI* n) { m_next = n; } - - StringImpl* uri() { return m_uri; } - - BindingURI* m_next; - StringImpl* m_uri; -}; -#endif - -//------------------------------------------------ - -enum ETextSecurity { - TSNONE, TSDISC, TSCIRCLE, TSSQUARE -}; - -// CSS3 User Modify Properties - -enum EUserModify { - READ_ONLY, READ_WRITE, READ_WRITE_PLAINTEXT_ONLY -}; - -// CSS3 User Drag Values - -enum EUserDrag { - DRAG_AUTO, DRAG_NONE, DRAG_ELEMENT -}; - -// CSS3 User Select Values - -enum EUserSelect { - SELECT_NONE, SELECT_TEXT -}; - -// Word Break Values. Matches WinIE, rather than CSS3 - -enum EWordBreak { - NormalWordBreak, BreakAllWordBreak, BreakWordBreak -}; - -enum EWordWrap { - NormalWordWrap, BreakWordWrap -}; - -enum ENBSPMode { - NBNORMAL, SPACE -}; - -enum EKHTMLLineBreak { - LBNORMAL, AFTER_WHITE_SPACE -}; - -enum EMatchNearestMailBlockquoteColor { - BCNORMAL, MATCH -}; - -enum EResize { - RESIZE_NONE, RESIZE_BOTH, RESIZE_HORIZONTAL, RESIZE_VERTICAL -}; - -enum EAppearance { - NoAppearance, CheckboxAppearance, RadioAppearance, PushButtonAppearance, SquareButtonAppearance, ButtonAppearance, - ButtonBevelAppearance, DefaultButtonAppearance, ListboxAppearance, ListItemAppearance, - MediaFullscreenButtonAppearance, MediaMuteButtonAppearance, MediaPlayButtonAppearance, - MediaSeekBackButtonAppearance, MediaSeekForwardButtonAppearance, MediaSliderAppearance, MediaSliderThumbAppearance, - MenulistAppearance, MenulistButtonAppearance, MenulistTextAppearance, MenulistTextFieldAppearance, - ScrollbarButtonUpAppearance, ScrollbarButtonDownAppearance, - ScrollbarButtonLeftAppearance, ScrollbarButtonRightAppearance, - ScrollbarTrackHorizontalAppearance, ScrollbarTrackVerticalAppearance, - ScrollbarThumbHorizontalAppearance, ScrollbarThumbVerticalAppearance, - ScrollbarGripperHorizontalAppearance, ScrollbarGripperVerticalAppearance, - SliderHorizontalAppearance, SliderVerticalAppearance, SliderThumbHorizontalAppearance, - SliderThumbVerticalAppearance, CaretAppearance, SearchFieldAppearance, SearchFieldDecorationAppearance, - SearchFieldResultsDecorationAppearance, SearchFieldResultsButtonAppearance, - SearchFieldCancelButtonAppearance, TextFieldAppearance, TextAreaAppearance -}; - -enum EListStyleType { - DISC, CIRCLE, SQUARE, LDECIMAL, DECIMAL_LEADING_ZERO, - LOWER_ROMAN, UPPER_ROMAN, LOWER_GREEK, - LOWER_ALPHA, LOWER_LATIN, UPPER_ALPHA, UPPER_LATIN, - HEBREW, ARMENIAN, GEORGIAN, CJK_IDEOGRAPHIC, - HIRAGANA, KATAKANA, HIRAGANA_IROHA, KATAKANA_IROHA, LNONE -}; - -struct CounterDirectives { - CounterDirectives() : m_reset(false), m_increment(false) { } - - bool m_reset; - int m_resetValue; - bool m_increment; - int m_incrementValue; -}; - -bool operator==(const CounterDirectives&, const CounterDirectives&); -inline bool operator!=(const CounterDirectives& a, const CounterDirectives& b) { return !(a == b); } - -typedef HashMap<RefPtr<AtomicStringImpl>, CounterDirectives> CounterDirectiveMap; - -class CounterContent { -public: - CounterContent(const AtomicString& identifier, EListStyleType style, const AtomicString& separator) - : m_identifier(identifier), m_listStyle(style), m_separator(separator) - { - } - - const AtomicString& identifier() const { return m_identifier; } - EListStyleType listStyle() const { return m_listStyle; } - const AtomicString& separator() const { return m_separator; } - -private: - AtomicString m_identifier; - EListStyleType m_listStyle; - AtomicString m_separator; -}; - -enum ContentType { - CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER -}; - -struct ContentData : Noncopyable { - ContentData() : m_type(CONTENT_NONE), m_next(0) { } - ~ContentData() { clear(); } - - void clear(); - - ContentType m_type; - union { - StyleImage* m_image; - StringImpl* m_text; - CounterContent* m_counter; - } m_content; - ContentData* m_next; -}; - -enum EBorderFit { BorderFitBorder, BorderFitLines }; - -enum ETimingFunctionType { LinearTimingFunction, CubicBezierTimingFunction }; - -struct TimingFunction -{ - TimingFunction() - : m_type(CubicBezierTimingFunction) - , m_x1(0.25) - , m_y1(0.1) - , m_x2(0.25) - , m_y2(1.0) - {} - - TimingFunction(ETimingFunctionType timingFunction, double x1 = 0.0, double y1 = 0.0, double x2 = 1.0, double y2 = 1.0) - : m_type(timingFunction) - , m_x1(x1) - , m_y1(y1) - , m_x2(x2) - , m_y2(y2) - { - } - - bool operator==(const TimingFunction& o) const { return m_type == o.m_type && m_x1 == o.m_x1 && m_y1 == o.m_y1 && m_x2 == o.m_x2 && m_y2 == o.m_y2; } - - double x1() const { return m_x1; } - double y1() const { return m_y1; } - double x2() const { return m_x2; } - double y2() const { return m_y2; } - - ETimingFunctionType type() const { return m_type; } - -private: - ETimingFunctionType m_type; - - double m_x1; - double m_y1; - double m_x2; - double m_y2; -}; - -enum EAnimPlayState { - AnimPlayStatePlaying = 0x0, - AnimPlayStatePaused = 0x1 -}; - -class Animation : public RefCounted<Animation> { -public: - - static PassRefPtr<Animation> create() { return adoptRef(new Animation); }; - - bool isDelaySet() const { return m_delaySet; } - bool isDirectionSet() const { return m_directionSet; } - bool isDurationSet() const { return m_durationSet; } - bool isIterationCountSet() const { return m_iterationCountSet; } - bool isNameSet() const { return m_nameSet; } - bool isPlayStateSet() const { return m_playStateSet; } - bool isPropertySet() const { return m_propertySet; } - bool isTimingFunctionSet() const { return m_timingFunctionSet; } - - // Flags this to be the special "none" animation (animation-name: none) - bool isNoneAnimation() const { return m_isNone; } - // We can make placeholder Animation objects to keep the comma-separated lists - // of properties in sync. isValidAnimation means this is not a placeholder. - bool isValidAnimation() const { return !m_isNone && !m_name.isEmpty(); } - - bool isEmpty() const - { - return (!m_directionSet && !m_durationSet && !m_nameSet && !m_playStateSet && - !m_iterationCountSet && !m_delaySet && !m_timingFunctionSet && !m_propertySet); - } - - bool isEmptyOrZeroDuration() const - { - return isEmpty() || (m_duration == 0 && m_delay <= 0); - } - - void clearDelay() { m_delaySet = false; } - void clearDirection() { m_directionSet = false; } - void clearDuration() { m_durationSet = false; } - void clearIterationCount() { m_iterationCountSet = false; } - void clearName() { m_nameSet = false; } - void clearPlayState() { m_playStateSet = AnimPlayStatePlaying; } - void clearProperty() { m_propertySet = false; } - void clearTimingFunction() { m_timingFunctionSet = false; } - - double delay() const { return m_delay; } - bool direction() const { return m_direction; } - double duration() const { return m_duration; } - int iterationCount() const { return m_iterationCount; } - const String& name() const { return m_name; } - unsigned playState() const { return m_playState; } - int property() const { return m_property; } - const TimingFunction& timingFunction() const { return m_timingFunction; } - - const RefPtr<KeyframeList>& keyframeList() const { return m_keyframeList; } - - void setDelay(double c) { m_delay = c; m_delaySet = true; } - void setDirection(bool d) { m_direction = d; m_directionSet = true; } - void setDuration(double d) { ASSERT(d >= 0); m_duration = d; m_durationSet = true; } - void setIterationCount(int c) { m_iterationCount = c; m_iterationCountSet = true; } - void setName(const String& n) { m_name = n; m_nameSet = true; } - void setPlayState(unsigned d) { m_playState = d; m_playStateSet = true; } - void setProperty(int t) { m_property = t; m_propertySet = true; } - void setTimingFunction(const TimingFunction& f) { m_timingFunction = f; m_timingFunctionSet = true; } - - void setIsNoneAnimation(bool n) { m_isNone = n; } - - void setAnimationKeyframe(const RefPtr<KeyframeList> keyframe) { m_keyframeList = keyframe; } - - Animation& operator=(const Animation& o); - - // return true if all members of this class match (excluding m_next) - bool animationsMatch(const Animation* t, bool matchPlayStates=true) const; - - // return true every Animation in the chain (defined by m_next) match - bool operator==(const Animation& o) const { return animationsMatch(&o); } - bool operator!=(const Animation& o) const { return !(*this == o); } - -private: - Animation(); - Animation(const Animation& o); - - double m_delay; - bool m_direction; - double m_duration; - int m_iterationCount; - String m_name; - int m_property; - TimingFunction m_timingFunction; - - RefPtr<KeyframeList> m_keyframeList; - - unsigned m_playState : 2; - - bool m_delaySet : 1; - bool m_directionSet : 1; - bool m_durationSet : 1; - bool m_iterationCountSet : 1; - bool m_nameSet : 1; - bool m_playStateSet : 1; - bool m_propertySet : 1; - bool m_timingFunctionSet : 1; - - bool m_isNone : 1; -}; - -class AnimationList : public Vector<RefPtr<Animation> > -{ -public: - void fillUnsetProperties(); - bool operator==(const AnimationList& o) const; -}; - - -class StyleReflection : public RefCounted<StyleReflection> { -public: - static PassRefPtr<StyleReflection> create() - { - return adoptRef(new StyleReflection); - } - - bool operator==(const StyleReflection& o) const - { - return m_direction == o.m_direction && m_offset == o.m_offset && m_mask == o.m_mask; - } - bool operator!=(const StyleReflection& o) const { return !(*this == o); } - - CSSReflectionDirection direction() const { return m_direction; } - Length offset() const { return m_offset; } - const NinePieceImage& mask() const { return m_mask; } - - void setDirection(CSSReflectionDirection dir) { m_direction = dir; } - void setOffset(const Length& l) { m_offset = l; } - void setMask(const NinePieceImage& image) { m_mask = image; } - -private: - StyleReflection() - : m_direction(ReflectionBelow) - , m_offset(0, Fixed) - { - } - - CSSReflectionDirection m_direction; - Length m_offset; - NinePieceImage m_mask; -}; - -// This struct is for rarely used non-inherited CSS3, CSS2, and WebKit-specific properties. -// By grouping them together, we save space, and only allocate this object when someone -// actually uses one of these properties. -class StyleRareNonInheritedData : public RefCounted<StyleRareNonInheritedData> { -public: - static PassRefPtr<StyleRareNonInheritedData> create() { return adoptRef(new StyleRareNonInheritedData); } - PassRefPtr<StyleRareNonInheritedData> copy() const { return adoptRef(new StyleRareNonInheritedData(*this)); } - ~StyleRareNonInheritedData(); - -#if ENABLE(XBL) - bool bindingsEquivalent(const StyleRareNonInheritedData&) const; -#endif - - bool operator==(const StyleRareNonInheritedData&) const; - bool operator!=(const StyleRareNonInheritedData& o) const { return !(*this == o); } - - bool shadowDataEquivalent(const StyleRareNonInheritedData& o) const; - bool reflectionDataEquivalent(const StyleRareNonInheritedData& o) const; - bool animationDataEquivalent(const StyleRareNonInheritedData&) const; - bool transitionDataEquivalent(const StyleRareNonInheritedData&) const; - void updateKeyframes(const CSSStyleSelector* styleSelector); - - int lineClamp; // An Apple extension. -#if ENABLE(DASHBOARD_SUPPORT) - Vector<StyleDashboardRegion> m_dashboardRegions; -#endif - float opacity; // Whether or not we're transparent. - - DataRef<StyleFlexibleBoxData> flexibleBox; // Flexible box properties - DataRef<StyleMarqueeData> marquee; // Marquee properties - DataRef<StyleMultiColData> m_multiCol; // CSS3 multicol properties - DataRef<StyleTransformData> m_transform; // Transform properties (rotate, scale, skew, etc.) - - OwnPtr<ContentData> m_content; - OwnPtr<CounterDirectiveMap> m_counterDirectives; - - unsigned userDrag : 2; // EUserDrag - bool textOverflow : 1; // Whether or not lines that spill out should be truncated with "..." - unsigned marginTopCollapse : 2; // EMarginCollapse - unsigned marginBottomCollapse : 2; // EMarginCollapse - unsigned matchNearestMailBlockquoteColor : 1; // EMatchNearestMailBlockquoteColor, FIXME: This property needs to be eliminated. It should never have been added. - unsigned m_appearance : 6; // EAppearance - unsigned m_borderFit : 1; // EBorderFit - OwnPtr<ShadowData> m_boxShadow; // For box-shadow decorations. - - RefPtr<StyleReflection> m_boxReflect; - - OwnPtr<AnimationList> m_animations; - OwnPtr<AnimationList> m_transitions; - - FillLayer m_mask; - NinePieceImage m_maskBoxImage; - -#if ENABLE(XBL) - OwnPtr<BindingURI> bindingURI; // The XBL binding URI list. -#endif - -private: - StyleRareNonInheritedData(); - StyleRareNonInheritedData(const StyleRareNonInheritedData&); -}; - -// This struct is for rarely used inherited CSS3, CSS2, and WebKit-specific properties. -// By grouping them together, we save space, and only allocate this object when someone -// actually uses one of these properties. -class StyleRareInheritedData : public RefCounted<StyleRareInheritedData> { -public: - static PassRefPtr<StyleRareInheritedData> create() { return adoptRef(new StyleRareInheritedData); } - PassRefPtr<StyleRareInheritedData> copy() const { return adoptRef(new StyleRareInheritedData(*this)); } - ~StyleRareInheritedData(); - - bool operator==(const StyleRareInheritedData& o) const; - bool operator!=(const StyleRareInheritedData &o) const { - return !(*this == o); - } - bool shadowDataEquivalent(const StyleRareInheritedData&) const; - - Color textStrokeColor; - float textStrokeWidth; - Color textFillColor; - - ShadowData* textShadow; // Our text shadow information for shadowed text drawing. - AtomicString highlight; // Apple-specific extension for custom highlight rendering. - unsigned textSecurity : 2; // ETextSecurity - unsigned userModify : 2; // EUserModify (editing) - unsigned wordBreak : 2; // EWordBreak - unsigned wordWrap : 1; // EWordWrap - unsigned nbspMode : 1; // ENBSPMode - unsigned khtmlLineBreak : 1; // EKHTMLLineBreak - bool textSizeAdjust : 1; // An Apple extension. - unsigned resize : 2; // EResize - unsigned userSelect : 1; // EUserSelect - -private: - StyleRareInheritedData(); - StyleRareInheritedData(const StyleRareInheritedData&); -}; - -//------------------------------------------------ -// Inherited attributes. -// - -enum EWhiteSpace { - NORMAL, PRE, PRE_WRAP, PRE_LINE, NOWRAP, KHTML_NOWRAP -}; - -enum ETextAlign { - TAAUTO, LEFT, RIGHT, CENTER, JUSTIFY, WEBKIT_LEFT, WEBKIT_RIGHT, WEBKIT_CENTER -}; - -enum ETextTransform { - CAPITALIZE, UPPERCASE, LOWERCASE, TTNONE -}; - -enum ETextDecoration { - TDNONE = 0x0 , UNDERLINE = 0x1, OVERLINE = 0x2, LINE_THROUGH= 0x4, BLINK = 0x8 -}; - -enum EPageBreak { - PBAUTO, PBALWAYS, PBAVOID -}; - -class StyleInheritedData : public RefCounted<StyleInheritedData> { -public: - static PassRefPtr<StyleInheritedData> create() { return adoptRef(new StyleInheritedData); } - PassRefPtr<StyleInheritedData> copy() const { return adoptRef(new StyleInheritedData(*this)); } - ~StyleInheritedData(); - - bool operator==(const StyleInheritedData& o) const; - bool operator != ( const StyleInheritedData &o ) const { - return !(*this == o); - } - - Length indent; - // could be packed in a short but doesn't - // make a difference currently because of padding - Length line_height; - - RefPtr<StyleImage> list_style_image; - RefPtr<CursorList> cursorData; - - Font font; - Color color; - - float m_effectiveZoom; - - short horizontal_border_spacing; - short vertical_border_spacing; - - // Paged media properties. - short widows; - short orphans; - unsigned page_break_inside : 2; // EPageBreak - -private: - StyleInheritedData(); - StyleInheritedData(const StyleInheritedData&); -}; - - -enum EEmptyCell { - SHOW, HIDE -}; - -enum ECaptionSide { - CAPTOP, CAPBOTTOM, CAPLEFT, CAPRIGHT -}; - -enum EListStylePosition { OUTSIDE, INSIDE }; - -enum EVisibility { VISIBLE, HIDDEN, COLLAPSE }; - -enum ECursor { - CURSOR_AUTO, CURSOR_CROSS, CURSOR_DEFAULT, CURSOR_POINTER, CURSOR_MOVE, CURSOR_VERTICAL_TEXT, CURSOR_CELL, CURSOR_CONTEXT_MENU, - CURSOR_ALIAS, CURSOR_PROGRESS, CURSOR_NO_DROP, CURSOR_NOT_ALLOWED, CURSOR_WEBKIT_ZOOM_IN, CURSOR_WEBKIT_ZOOM_OUT, - CURSOR_E_RESIZE, CURSOR_NE_RESIZE, CURSOR_NW_RESIZE, CURSOR_N_RESIZE, CURSOR_SE_RESIZE, CURSOR_SW_RESIZE, - CURSOR_S_RESIZE, CURSOR_W_RESIZE, CURSOR_EW_RESIZE, CURSOR_NS_RESIZE, CURSOR_NESW_RESIZE, CURSOR_NWSE_RESIZE, - CURSOR_COL_RESIZE, CURSOR_ROW_RESIZE, CURSOR_TEXT, CURSOR_WAIT, CURSOR_HELP, CURSOR_ALL_SCROLL, - CURSOR_COPY, CURSOR_NONE -}; - -struct CursorData { - CursorData() - : cursorImage(0) - {} - - bool operator==(const CursorData& o) const { - return hotSpot == o.hotSpot && cursorImage == o.cursorImage; - } - bool operator!=(const CursorData& o) const { return !(*this == o); } - - IntPoint hotSpot; // for CSS3 support - CachedImage* cursorImage; // weak pointer, the CSSValueImage takes care of deleting cursorImage -}; - -class CursorList : public RefCounted<CursorList> { -public: - static PassRefPtr<CursorList> create() - { - return adoptRef(new CursorList); - } - - const CursorData& operator[](int i) const { - return m_vector[i]; - } - - bool operator==(const CursorList& o) const { return m_vector == o.m_vector; } - bool operator!=(const CursorList& o) const { return m_vector != o.m_vector; } - - size_t size() const { return m_vector.size(); } - void append(const CursorData& cursorData) { m_vector.append(cursorData); } - -private: - CursorList() { } - - Vector<CursorData> m_vector; -}; - -//------------------------------------------------ - -enum EDisplay { - INLINE, BLOCK, LIST_ITEM, RUN_IN, COMPACT, INLINE_BLOCK, - TABLE, INLINE_TABLE, TABLE_ROW_GROUP, - TABLE_HEADER_GROUP, TABLE_FOOTER_GROUP, TABLE_ROW, - TABLE_COLUMN_GROUP, TABLE_COLUMN, TABLE_CELL, - TABLE_CAPTION, BOX, INLINE_BOX, NONE -}; - -class RenderStyle { - friend class CSSStyleSelector; - -public: - // static pseudo styles. Dynamic ones are produced on the fly. - enum PseudoId { NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, FILE_UPLOAD_BUTTON, SLIDER_THUMB, - SEARCH_CANCEL_BUTTON, SEARCH_DECORATION, SEARCH_RESULTS_DECORATION, SEARCH_RESULTS_BUTTON, MEDIA_CONTROLS_PANEL, - MEDIA_CONTROLS_PLAY_BUTTON, MEDIA_CONTROLS_MUTE_BUTTON, MEDIA_CONTROLS_TIMELINE, MEDIA_CONTROLS_TIME_DISPLAY, - MEDIA_CONTROLS_SEEK_BACK_BUTTON, MEDIA_CONTROLS_SEEK_FORWARD_BUTTON , MEDIA_CONTROLS_FULLSCREEN_BUTTON }; - static const int FIRST_INTERNAL_PSEUDOID = FILE_UPLOAD_BUTTON; - - void ref() { m_ref++; } - void deref(RenderArena* arena) { - if (m_ref) m_ref--; - if (!m_ref) - arenaDelete(arena); - } - bool hasOneRef() { return m_ref==1; } - int refCount() const { return m_ref; } - - // Overloaded new operator. Derived classes must override operator new - // in order to allocate out of the RenderArena. - void* operator new(size_t sz, RenderArena* renderArena) throw(); - - // Overridden to prevent the normal delete from being called. - void operator delete(void* ptr, size_t sz); - -private: - void arenaDelete(RenderArena *arena); - -protected: - -// !START SYNC!: Keep this in sync with the copy constructor in RenderStyle.cpp - - // inherit - struct InheritedFlags { - bool operator==( const InheritedFlags &other ) const { - return (_empty_cells == other._empty_cells) && - (_caption_side == other._caption_side) && - (_list_style_type == other._list_style_type) && - (_list_style_position == other._list_style_position) && - (_visibility == other._visibility) && - (_text_align == other._text_align) && - (_text_transform == other._text_transform) && - (_text_decorations == other._text_decorations) && - (_text_transform == other._text_transform) && - (_cursor_style == other._cursor_style) && - (_direction == other._direction) && - (_border_collapse == other._border_collapse) && - (_white_space == other._white_space) && - (_box_direction == other._box_direction) && - (_visuallyOrdered == other._visuallyOrdered) && - (_htmlHacks == other._htmlHacks) && - (_force_backgrounds_to_white == other._force_backgrounds_to_white); - } - - bool operator!=( const InheritedFlags &other ) const { - return !(*this == other); - } - - unsigned _empty_cells : 1; // EEmptyCell - unsigned _caption_side : 2; // ECaptionSide - unsigned _list_style_type : 5 ; // EListStyleType - unsigned _list_style_position : 1; // EListStylePosition - unsigned _visibility : 2; // EVisibility - unsigned _text_align : 3; // ETextAlign - unsigned _text_transform : 2; // ETextTransform - unsigned _text_decorations : 4; - unsigned _cursor_style : 6; // ECursor - unsigned _direction : 1; // TextDirection - bool _border_collapse : 1 ; - unsigned _white_space : 3; // EWhiteSpace - unsigned _box_direction : 1; // EBoxDirection (CSS3 box_direction property, flexible box layout module) - - // non CSS2 inherited - bool _visuallyOrdered : 1; - bool _htmlHacks :1; - bool _force_backgrounds_to_white : 1; - } inherited_flags; - -// don't inherit - struct NonInheritedFlags { - bool operator==( const NonInheritedFlags &other ) const { - return (_effectiveDisplay == other._effectiveDisplay) && - (_originalDisplay == other._originalDisplay) && - (_overflowX == other._overflowX) && - (_overflowY == other._overflowY) && - (_vertical_align == other._vertical_align) && - (_clear == other._clear) && - (_position == other._position) && - (_floating == other._floating) && - (_table_layout == other._table_layout) && - (_page_break_before == other._page_break_before) && - (_page_break_after == other._page_break_after) && - (_styleType == other._styleType) && - (_affectedByHover == other._affectedByHover) && - (_affectedByActive == other._affectedByActive) && - (_affectedByDrag == other._affectedByDrag) && - (_pseudoBits == other._pseudoBits) && - (_unicodeBidi == other._unicodeBidi); - } - - bool operator!=( const NonInheritedFlags &other ) const { - return !(*this == other); - } - - unsigned _effectiveDisplay : 5; // EDisplay - unsigned _originalDisplay : 5; // EDisplay - unsigned _overflowX : 3; // EOverflow - unsigned _overflowY : 3; // EOverflow - unsigned _vertical_align : 4; // EVerticalAlign - unsigned _clear : 2; // EClear - unsigned _position : 2; // EPosition - unsigned _floating : 2; // EFloat - unsigned _table_layout : 1; // ETableLayout - - unsigned _page_break_before : 2; // EPageBreak - unsigned _page_break_after : 2; // EPageBreak - - unsigned _styleType : 5; // PseudoId - bool _affectedByHover : 1; - bool _affectedByActive : 1; - bool _affectedByDrag : 1; - unsigned _pseudoBits : 6; - unsigned _unicodeBidi : 2; // EUnicodeBidi - } noninherited_flags; - -// non-inherited attributes - DataRef<StyleBoxData> box; - DataRef<StyleVisualData> visual; - DataRef<StyleBackgroundData> background; - DataRef<StyleSurroundData> surround; - DataRef<StyleRareNonInheritedData> rareNonInheritedData; - -// inherited attributes - DataRef<StyleRareInheritedData> rareInheritedData; - DataRef<StyleInheritedData> inherited; - -// list of associated pseudo styles - RenderStyle* pseudoStyle; - - unsigned m_pseudoState : 3; // PseudoState - bool m_affectedByAttributeSelectors : 1; - bool m_unique : 1; - - // Bits for dynamic child matching. - bool m_affectedByEmpty : 1; - bool m_emptyState : 1; - - // We optimize for :first-child and :last-child. The other positional child selectors like nth-child or - // *-child-of-type, we will just give up and re-evaluate whenever children change at all. - bool m_childrenAffectedByFirstChildRules : 1; - bool m_childrenAffectedByLastChildRules : 1; - bool m_childrenAffectedByDirectAdjacentRules : 1; - bool m_childrenAffectedByForwardPositionalRules : 1; - bool m_childrenAffectedByBackwardPositionalRules : 1; - bool m_firstChildState : 1; - bool m_lastChildState : 1; - unsigned m_childIndex : 18; // Plenty of bits to cache an index. - - int m_ref; - -#if ENABLE(SVG) - DataRef<SVGRenderStyle> m_svgStyle; -#endif - -// !END SYNC! - -protected: - void setBitDefaults() - { - inherited_flags._empty_cells = initialEmptyCells(); - inherited_flags._caption_side = initialCaptionSide(); - inherited_flags._list_style_type = initialListStyleType(); - inherited_flags._list_style_position = initialListStylePosition(); - inherited_flags._visibility = initialVisibility(); - inherited_flags._text_align = initialTextAlign(); - inherited_flags._text_transform = initialTextTransform(); - inherited_flags._text_decorations = initialTextDecoration(); - inherited_flags._cursor_style = initialCursor(); - inherited_flags._direction = initialDirection(); - inherited_flags._border_collapse = initialBorderCollapse(); - inherited_flags._white_space = initialWhiteSpace(); - inherited_flags._visuallyOrdered = initialVisuallyOrdered(); - inherited_flags._htmlHacks=false; - inherited_flags._box_direction = initialBoxDirection(); - inherited_flags._force_backgrounds_to_white = false; - - noninherited_flags._effectiveDisplay = noninherited_flags._originalDisplay = initialDisplay(); - noninherited_flags._overflowX = initialOverflowX(); - noninherited_flags._overflowY = initialOverflowY(); - noninherited_flags._vertical_align = initialVerticalAlign(); - noninherited_flags._clear = initialClear(); - noninherited_flags._position = initialPosition(); - noninherited_flags._floating = initialFloating(); - noninherited_flags._table_layout = initialTableLayout(); - noninherited_flags._page_break_before = initialPageBreak(); - noninherited_flags._page_break_after = initialPageBreak(); - noninherited_flags._styleType = NOPSEUDO; - noninherited_flags._affectedByHover = false; - noninherited_flags._affectedByActive = false; - noninherited_flags._affectedByDrag = false; - noninherited_flags._pseudoBits = 0; - noninherited_flags._unicodeBidi = initialUnicodeBidi(); - } - -public: - - RenderStyle(); - // used to create the default style. - RenderStyle(bool); - RenderStyle(const RenderStyle&); - - ~RenderStyle(); - - void inheritFrom(const RenderStyle* inheritParent); - - PseudoId styleType() { return static_cast<PseudoId>(noninherited_flags._styleType); } - void setStyleType(PseudoId styleType) { noninherited_flags._styleType = styleType; } - - RenderStyle* getPseudoStyle(PseudoId pi); - void addPseudoStyle(RenderStyle* pseudo); - - bool affectedByHoverRules() const { return noninherited_flags._affectedByHover; } - bool affectedByActiveRules() const { return noninherited_flags._affectedByActive; } - bool affectedByDragRules() const { return noninherited_flags._affectedByDrag; } - - void setAffectedByHoverRules(bool b) { noninherited_flags._affectedByHover = b; } - void setAffectedByActiveRules(bool b) { noninherited_flags._affectedByActive = b; } - void setAffectedByDragRules(bool b) { noninherited_flags._affectedByDrag = b; } - - bool operator==(const RenderStyle& other) const; - bool isFloating() const { return !(noninherited_flags._floating == FNONE); } - bool hasMargin() const { return surround->margin.nonZero(); } - bool hasBorder() const { return surround->border.hasBorder(); } - bool hasPadding() const { return surround->padding.nonZero(); } - bool hasOffset() const { return surround->offset.nonZero(); } - - bool hasBackground() const { if (backgroundColor().isValid() && backgroundColor().alpha() > 0) - return true; - return background->m_background.hasImage(); } - bool hasFixedBackgroundImage() const { return background->m_background.hasFixedImage(); } - bool hasAppearance() const { return appearance() != NoAppearance; } - - bool visuallyOrdered() const { return inherited_flags._visuallyOrdered; } - void setVisuallyOrdered(bool b) { inherited_flags._visuallyOrdered = b; } - - bool isStyleAvailable() const; - - bool hasPseudoStyle(PseudoId pseudo) const; - void setHasPseudoStyle(PseudoId pseudo); - -// attribute getter methods - - EDisplay display() const { return static_cast<EDisplay>(noninherited_flags._effectiveDisplay); } - EDisplay originalDisplay() const { return static_cast<EDisplay>(noninherited_flags._originalDisplay); } - - Length left() const { return surround->offset.left; } - Length right() const { return surround->offset.right; } - Length top() const { return surround->offset.top; } - Length bottom() const { return surround->offset.bottom; } - - EPosition position() const { return static_cast<EPosition>(noninherited_flags._position); } - EFloat floating() const { return static_cast<EFloat>(noninherited_flags._floating); } - - Length width() const { return box->width; } - Length height() const { return box->height; } - Length minWidth() const { return box->min_width; } - Length maxWidth() const { return box->max_width; } - Length minHeight() const { return box->min_height; } - Length maxHeight() const { return box->max_height; } - - const BorderData& border() const { return surround->border; } - const BorderValue& borderLeft() const { return surround->border.left; } - const BorderValue& borderRight() const { return surround->border.right; } - const BorderValue& borderTop() const { return surround->border.top; } - const BorderValue& borderBottom() const { return surround->border.bottom; } - - const NinePieceImage& borderImage() const { return surround->border.image; } - - const IntSize& borderTopLeftRadius() const { return surround->border.topLeft; } - const IntSize& borderTopRightRadius() const { return surround->border.topRight; } - const IntSize& borderBottomLeftRadius() const { return surround->border.bottomLeft; } - const IntSize& borderBottomRightRadius() const { return surround->border.bottomRight; } - bool hasBorderRadius() const { return surround->border.hasBorderRadius(); } - - unsigned short borderLeftWidth() const { return surround->border.borderLeftWidth(); } - EBorderStyle borderLeftStyle() const { return surround->border.left.style(); } - const Color& borderLeftColor() const { return surround->border.left.color; } - bool borderLeftIsTransparent() const { return surround->border.left.isTransparent(); } - unsigned short borderRightWidth() const { return surround->border.borderRightWidth(); } - EBorderStyle borderRightStyle() const { return surround->border.right.style(); } - const Color& borderRightColor() const { return surround->border.right.color; } - bool borderRightIsTransparent() const { return surround->border.right.isTransparent(); } - unsigned short borderTopWidth() const { return surround->border.borderTopWidth(); } - EBorderStyle borderTopStyle() const { return surround->border.top.style(); } - const Color& borderTopColor() const { return surround->border.top.color; } - bool borderTopIsTransparent() const { return surround->border.top.isTransparent(); } - unsigned short borderBottomWidth() const { return surround->border.borderBottomWidth(); } - EBorderStyle borderBottomStyle() const { return surround->border.bottom.style(); } - const Color& borderBottomColor() const { return surround->border.bottom.color; } - bool borderBottomIsTransparent() const { return surround->border.bottom.isTransparent(); } - - unsigned short outlineSize() const { return max(0, outlineWidth() + outlineOffset()); } - unsigned short outlineWidth() const { - if (background->m_outline.style() == BNONE) - return 0; - return background->m_outline.width; - } - bool hasOutline() const { return outlineWidth() > 0 && outlineStyle() > BHIDDEN; } - EBorderStyle outlineStyle() const { return background->m_outline.style(); } - bool outlineStyleIsAuto() const { return background->m_outline._auto; } - const Color & outlineColor() const { return background->m_outline.color; } - - EOverflow overflowX() const { return static_cast<EOverflow>(noninherited_flags._overflowX); } - EOverflow overflowY() const { return static_cast<EOverflow>(noninherited_flags._overflowY); } - - EVisibility visibility() const { return static_cast<EVisibility>(inherited_flags._visibility); } - EVerticalAlign verticalAlign() const { return static_cast<EVerticalAlign>(noninherited_flags._vertical_align); } - Length verticalAlignLength() const { return box->vertical_align; } - - Length clipLeft() const { return visual->clip.left; } - Length clipRight() const { return visual->clip.right; } - Length clipTop() const { return visual->clip.top; } - Length clipBottom() const { return visual->clip.bottom; } - LengthBox clip() const { return visual->clip; } - bool hasClip() const { return visual->hasClip; } - - EUnicodeBidi unicodeBidi() const { return static_cast<EUnicodeBidi>(noninherited_flags._unicodeBidi); } - - EClear clear() const { return static_cast<EClear>(noninherited_flags._clear); } - ETableLayout tableLayout() const { return static_cast<ETableLayout>(noninherited_flags._table_layout); } - - const Font& font() { return inherited->font; } - const FontDescription& fontDescription() { return inherited->font.fontDescription(); } - int fontSize() const { return inherited->font.pixelSize(); } - - const Color & color() const { return inherited->color; } - Length textIndent() const { return inherited->indent; } - ETextAlign textAlign() const { return static_cast<ETextAlign>(inherited_flags._text_align); } - ETextTransform textTransform() const { return static_cast<ETextTransform>(inherited_flags._text_transform); } - int textDecorationsInEffect() const { return inherited_flags._text_decorations; } - int textDecoration() const { return visual->textDecoration; } - int wordSpacing() const { return inherited->font.wordSpacing(); } - int letterSpacing() const { return inherited->font.letterSpacing(); } - - float zoom() const { return visual->m_zoom; } - float effectiveZoom() const { return inherited->m_effectiveZoom; } - - TextDirection direction() const { return static_cast<TextDirection>(inherited_flags._direction); } - Length lineHeight() const { return inherited->line_height; } - - EWhiteSpace whiteSpace() const { return static_cast<EWhiteSpace>(inherited_flags._white_space); } - static bool autoWrap(EWhiteSpace ws) { - // Nowrap and pre don't automatically wrap. - return ws != NOWRAP && ws != PRE; - } - bool autoWrap() const { - return autoWrap(whiteSpace()); - } - static bool preserveNewline(EWhiteSpace ws) { - // Normal and nowrap do not preserve newlines. - return ws != NORMAL && ws != NOWRAP; - } - bool preserveNewline() const { - return preserveNewline(whiteSpace()); - } - static bool collapseWhiteSpace(EWhiteSpace ws) { - // Pre and prewrap do not collapse whitespace. - return ws != PRE && ws != PRE_WRAP; - } - bool collapseWhiteSpace() const { - return collapseWhiteSpace(whiteSpace()); - } - bool isCollapsibleWhiteSpace(UChar c) const { - switch (c) { - case ' ': - case '\t': - return collapseWhiteSpace(); - case '\n': - return !preserveNewline(); - } - return false; - } - bool breakOnlyAfterWhiteSpace() const { - return whiteSpace() == PRE_WRAP || khtmlLineBreak() == AFTER_WHITE_SPACE; - } - bool breakWords() const { - return wordBreak() == BreakWordBreak || wordWrap() == BreakWordWrap; - } - - const Color & backgroundColor() const { return background->m_color; } - StyleImage* backgroundImage() const { return background->m_background.m_image.get(); } - EFillRepeat backgroundRepeat() const { return static_cast<EFillRepeat>(background->m_background.m_repeat); } - CompositeOperator backgroundComposite() const { return static_cast<CompositeOperator>(background->m_background.m_composite); } - bool backgroundAttachment() const { return background->m_background.m_attachment; } - EFillBox backgroundClip() const { return static_cast<EFillBox>(background->m_background.m_clip); } - EFillBox backgroundOrigin() const { return static_cast<EFillBox>(background->m_background.m_origin); } - Length backgroundXPosition() const { return background->m_background.m_xPosition; } - Length backgroundYPosition() const { return background->m_background.m_yPosition; } - LengthSize backgroundSize() const { return background->m_background.m_size; } - FillLayer* accessBackgroundLayers() { return &(background.access()->m_background); } - const FillLayer* backgroundLayers() const { return &(background->m_background); } - - StyleImage* maskImage() const { return rareNonInheritedData->m_mask.m_image.get(); } - EFillRepeat maskRepeat() const { return static_cast<EFillRepeat>(rareNonInheritedData->m_mask.m_repeat); } - CompositeOperator maskComposite() const { return static_cast<CompositeOperator>(rareNonInheritedData->m_mask.m_composite); } - bool maskAttachment() const { return rareNonInheritedData->m_mask.m_attachment; } - EFillBox maskClip() const { return static_cast<EFillBox>(rareNonInheritedData->m_mask.m_clip); } - EFillBox maskOrigin() const { return static_cast<EFillBox>(rareNonInheritedData->m_mask.m_origin); } - Length maskXPosition() const { return rareNonInheritedData->m_mask.m_xPosition; } - Length maskYPosition() const { return rareNonInheritedData->m_mask.m_yPosition; } - LengthSize maskSize() const { return rareNonInheritedData->m_mask.m_size; } - FillLayer* accessMaskLayers() { return &(rareNonInheritedData.access()->m_mask); } - const FillLayer* maskLayers() const { return &(rareNonInheritedData->m_mask); } - const NinePieceImage& maskBoxImage() const { return rareNonInheritedData->m_maskBoxImage; } - - // returns true for collapsing borders, false for separate borders - bool borderCollapse() const { return inherited_flags._border_collapse; } - short horizontalBorderSpacing() const { return inherited->horizontal_border_spacing; } - short verticalBorderSpacing() const { return inherited->vertical_border_spacing; } - EEmptyCell emptyCells() const { return static_cast<EEmptyCell>(inherited_flags._empty_cells); } - ECaptionSide captionSide() const { return static_cast<ECaptionSide>(inherited_flags._caption_side); } - - short counterIncrement() const { return visual->counterIncrement; } - short counterReset() const { return visual->counterReset; } - - EListStyleType listStyleType() const { return static_cast<EListStyleType>(inherited_flags._list_style_type); } - StyleImage* listStyleImage() const { return inherited->list_style_image.get(); } - EListStylePosition listStylePosition() const { return static_cast<EListStylePosition>(inherited_flags._list_style_position); } - - Length marginTop() const { return surround->margin.top; } - Length marginBottom() const { return surround->margin.bottom; } - Length marginLeft() const { return surround->margin.left; } - Length marginRight() const { return surround->margin.right; } - - Length paddingTop() const { return surround->padding.top; } - Length paddingBottom() const { return surround->padding.bottom; } - Length paddingLeft() const { return surround->padding.left; } - Length paddingRight() const { return surround->padding.right; } - - ECursor cursor() const { return static_cast<ECursor>(inherited_flags._cursor_style); } - - CursorList* cursors() const { return inherited->cursorData.get(); } - - short widows() const { return inherited->widows; } - short orphans() const { return inherited->orphans; } - EPageBreak pageBreakInside() const { return static_cast<EPageBreak>(inherited->page_break_inside); } - EPageBreak pageBreakBefore() const { return static_cast<EPageBreak>(noninherited_flags._page_break_before); } - EPageBreak pageBreakAfter() const { return static_cast<EPageBreak>(noninherited_flags._page_break_after); } - - // CSS3 Getter Methods -#if ENABLE(XBL) - BindingURI* bindingURIs() const { return rareNonInheritedData->bindingURI; } -#endif - int outlineOffset() const { - if (background->m_outline.style() == BNONE) - return 0; - return background->m_outline._offset; - } - ShadowData* textShadow() const { return rareInheritedData->textShadow; } - const Color& textStrokeColor() const { return rareInheritedData->textStrokeColor; } - float textStrokeWidth() const { return rareInheritedData->textStrokeWidth; } - const Color& textFillColor() const { return rareInheritedData->textFillColor; } - float opacity() const { return rareNonInheritedData->opacity; } - EAppearance appearance() const { return static_cast<EAppearance>(rareNonInheritedData->m_appearance); } - EBoxAlignment boxAlign() const { return static_cast<EBoxAlignment>(rareNonInheritedData->flexibleBox->align); } - EBoxDirection boxDirection() const { return static_cast<EBoxDirection>(inherited_flags._box_direction); } - float boxFlex() { return rareNonInheritedData->flexibleBox->flex; } - unsigned int boxFlexGroup() const { return rareNonInheritedData->flexibleBox->flex_group; } - EBoxLines boxLines() { return static_cast<EBoxLines>(rareNonInheritedData->flexibleBox->lines); } - unsigned int boxOrdinalGroup() const { return rareNonInheritedData->flexibleBox->ordinal_group; } - EBoxOrient boxOrient() const { return static_cast<EBoxOrient>(rareNonInheritedData->flexibleBox->orient); } - EBoxAlignment boxPack() const { return static_cast<EBoxAlignment>(rareNonInheritedData->flexibleBox->pack); } - ShadowData* boxShadow() const { return rareNonInheritedData->m_boxShadow.get(); } - StyleReflection* boxReflect() const { return rareNonInheritedData->m_boxReflect.get(); } - EBoxSizing boxSizing() const { return static_cast<EBoxSizing>(box->boxSizing); } - Length marqueeIncrement() const { return rareNonInheritedData->marquee->increment; } - int marqueeSpeed() const { return rareNonInheritedData->marquee->speed; } - int marqueeLoopCount() const { return rareNonInheritedData->marquee->loops; } - EMarqueeBehavior marqueeBehavior() const { return static_cast<EMarqueeBehavior>(rareNonInheritedData->marquee->behavior); } - EMarqueeDirection marqueeDirection() const { return static_cast<EMarqueeDirection>(rareNonInheritedData->marquee->direction); } - EUserModify userModify() const { return static_cast<EUserModify>(rareInheritedData->userModify); } - EUserDrag userDrag() const { return static_cast<EUserDrag>(rareNonInheritedData->userDrag); } - EUserSelect userSelect() const { return static_cast<EUserSelect>(rareInheritedData->userSelect); } - bool textOverflow() const { return rareNonInheritedData->textOverflow; } - EMarginCollapse marginTopCollapse() const { return static_cast<EMarginCollapse>(rareNonInheritedData->marginTopCollapse); } - EMarginCollapse marginBottomCollapse() const { return static_cast<EMarginCollapse>(rareNonInheritedData->marginBottomCollapse); } - EWordBreak wordBreak() const { return static_cast<EWordBreak>(rareInheritedData->wordBreak); } - EWordWrap wordWrap() const { return static_cast<EWordWrap>(rareInheritedData->wordWrap); } - ENBSPMode nbspMode() const { return static_cast<ENBSPMode>(rareInheritedData->nbspMode); } - EKHTMLLineBreak khtmlLineBreak() const { return static_cast<EKHTMLLineBreak>(rareInheritedData->khtmlLineBreak); } - EMatchNearestMailBlockquoteColor matchNearestMailBlockquoteColor() const { return static_cast<EMatchNearestMailBlockquoteColor>(rareNonInheritedData->matchNearestMailBlockquoteColor); } - const AtomicString& highlight() const { return rareInheritedData->highlight; } - EBorderFit borderFit() const { return static_cast<EBorderFit>(rareNonInheritedData->m_borderFit); } - EResize resize() const { return static_cast<EResize>(rareInheritedData->resize); } - float columnWidth() const { return rareNonInheritedData->m_multiCol->m_width; } - bool hasAutoColumnWidth() const { return rareNonInheritedData->m_multiCol->m_autoWidth; } - unsigned short columnCount() const { return rareNonInheritedData->m_multiCol->m_count; } - bool hasAutoColumnCount() const { return rareNonInheritedData->m_multiCol->m_autoCount; } - float columnGap() const { return rareNonInheritedData->m_multiCol->m_gap; } - bool hasNormalColumnGap() const { return rareNonInheritedData->m_multiCol->m_normalGap; } - const Color& columnRuleColor() const { return rareNonInheritedData->m_multiCol->m_rule.color; } - EBorderStyle columnRuleStyle() const { return rareNonInheritedData->m_multiCol->m_rule.style(); } - unsigned short columnRuleWidth() const { return rareNonInheritedData->m_multiCol->ruleWidth(); } - bool columnRuleIsTransparent() const { return rareNonInheritedData->m_multiCol->m_rule.isTransparent(); } - EPageBreak columnBreakBefore() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakBefore); } - EPageBreak columnBreakInside() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakInside); } - EPageBreak columnBreakAfter() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakAfter); } - const TransformOperations& transform() const { return rareNonInheritedData->m_transform->m_operations; } - Length transformOriginX() const { return rareNonInheritedData->m_transform->m_x; } - Length transformOriginY() const { return rareNonInheritedData->m_transform->m_y; } - bool hasTransform() const { return !rareNonInheritedData->m_transform->m_operations.isEmpty(); } - void applyTransform(AffineTransform&, const IntSize& borderBoxSize, bool includeTransformOrigin = true) const; - bool hasMask() const { return rareNonInheritedData->m_mask.hasImage() || rareNonInheritedData->m_maskBoxImage.hasImage(); } - // End CSS3 Getters - - // Apple-specific property getter methods - const AnimationList* animations() const { return rareNonInheritedData->m_animations.get(); } - const AnimationList* transitions() const { return rareNonInheritedData->m_transitions.get(); } - - AnimationList* accessAnimations(); - AnimationList* accessTransitions(); - - bool hasAnimations() const { return rareNonInheritedData->m_animations && rareNonInheritedData->m_animations->size() > 0; } - bool hasTransitions() const { return rareNonInheritedData->m_transitions && rareNonInheritedData->m_transitions->size() > 0; } - - // return the first found Animation (including 'all' transitions) - const Animation* transitionForProperty(int property); - - int lineClamp() const { return rareNonInheritedData->lineClamp; } - bool textSizeAdjust() const { return rareInheritedData->textSizeAdjust; } - ETextSecurity textSecurity() const { return static_cast<ETextSecurity>(rareInheritedData->textSecurity); } - -// attribute setter methods - - void setDisplay(EDisplay v) { noninherited_flags._effectiveDisplay = v; } - void setOriginalDisplay(EDisplay v) { noninherited_flags._originalDisplay = v; } - void setPosition(EPosition v) { noninherited_flags._position = v; } - void setFloating(EFloat v) { noninherited_flags._floating = v; } - - void setLeft(Length v) { SET_VAR(surround,offset.left,v) } - void setRight(Length v) { SET_VAR(surround,offset.right,v) } - void setTop(Length v) { SET_VAR(surround,offset.top,v) } - void setBottom(Length v){ SET_VAR(surround,offset.bottom,v) } - - void setWidth(Length v) { SET_VAR(box,width,v) } - void setHeight(Length v) { SET_VAR(box,height,v) } - - void setMinWidth(Length v) { SET_VAR(box,min_width,v) } - void setMaxWidth(Length v) { SET_VAR(box,max_width,v) } - void setMinHeight(Length v) { SET_VAR(box,min_height,v) } - void setMaxHeight(Length v) { SET_VAR(box,max_height,v) } - -#if ENABLE(DASHBOARD_SUPPORT) - Vector<StyleDashboardRegion> dashboardRegions() const { return rareNonInheritedData->m_dashboardRegions; } - void setDashboardRegions(Vector<StyleDashboardRegion> regions) { SET_VAR(rareNonInheritedData,m_dashboardRegions,regions); } - void setDashboardRegion(int type, const String& label, Length t, Length r, Length b, Length l, bool append) { - StyleDashboardRegion region; - region.label = label; - region.offset.top = t; - region.offset.right = r; - region.offset.bottom = b; - region.offset.left = l; - region.type = type; - if (!append) - rareNonInheritedData.access()->m_dashboardRegions.clear(); - rareNonInheritedData.access()->m_dashboardRegions.append(region); - } -#endif - - void resetBorder() { resetBorderImage(); resetBorderTop(); resetBorderRight(); resetBorderBottom(); resetBorderLeft(); resetBorderRadius(); } - void resetBorderTop() { SET_VAR(surround, border.top, BorderValue()) } - void resetBorderRight() { SET_VAR(surround, border.right, BorderValue()) } - void resetBorderBottom() { SET_VAR(surround, border.bottom, BorderValue()) } - void resetBorderLeft() { SET_VAR(surround, border.left, BorderValue()) } - void resetBorderImage() { SET_VAR(surround, border.image, NinePieceImage()) } - void resetBorderRadius() { resetBorderTopLeftRadius(); resetBorderTopRightRadius(); resetBorderBottomLeftRadius(); resetBorderBottomRightRadius(); } - void resetBorderTopLeftRadius() { SET_VAR(surround, border.topLeft, initialBorderRadius()) } - void resetBorderTopRightRadius() { SET_VAR(surround, border.topRight, initialBorderRadius()) } - void resetBorderBottomLeftRadius() { SET_VAR(surround, border.bottomLeft, initialBorderRadius()) } - void resetBorderBottomRightRadius() { SET_VAR(surround, border.bottomRight, initialBorderRadius()) } - - void resetOutline() { SET_VAR(background, m_outline, OutlineValue()) } - - void setBackgroundColor(const Color& v) { SET_VAR(background, m_color, v) } - - void setBorderImage(const NinePieceImage& b) { SET_VAR(surround, border.image, b) } - - void setBorderTopLeftRadius(const IntSize& s) { SET_VAR(surround, border.topLeft, s) } - void setBorderTopRightRadius(const IntSize& s) { SET_VAR(surround, border.topRight, s) } - void setBorderBottomLeftRadius(const IntSize& s) { SET_VAR(surround, border.bottomLeft, s) } - void setBorderBottomRightRadius(const IntSize& s) { SET_VAR(surround, border.bottomRight, s) } - void setBorderRadius(const IntSize& s) { - setBorderTopLeftRadius(s); setBorderTopRightRadius(s); setBorderBottomLeftRadius(s); setBorderBottomRightRadius(s); - } - - void setBorderLeftWidth(unsigned short v) { SET_VAR(surround, border.left.width, v) } - void setBorderLeftStyle(EBorderStyle v) { SET_VAR(surround, border.left.m_style, v) } - void setBorderLeftColor(const Color & v) { SET_VAR(surround, border.left.color, v) } - void setBorderRightWidth(unsigned short v) { SET_VAR(surround, border.right.width, v) } - void setBorderRightStyle(EBorderStyle v) { SET_VAR(surround, border.right.m_style, v) } - void setBorderRightColor(const Color & v) { SET_VAR(surround, border.right.color, v) } - void setBorderTopWidth(unsigned short v) { SET_VAR(surround, border.top.width, v) } - void setBorderTopStyle(EBorderStyle v) { SET_VAR(surround, border.top.m_style, v) } - void setBorderTopColor(const Color & v) { SET_VAR(surround, border.top.color, v) } - void setBorderBottomWidth(unsigned short v) { SET_VAR(surround, border.bottom.width, v) } - void setBorderBottomStyle(EBorderStyle v) { SET_VAR(surround, border.bottom.m_style, v) } - void setBorderBottomColor(const Color & v) { SET_VAR(surround, border.bottom.color, v) } - void setOutlineWidth(unsigned short v) { SET_VAR(background, m_outline.width, v) } - void setOutlineStyle(EBorderStyle v, bool isAuto = false) - { - SET_VAR(background, m_outline.m_style, v) - SET_VAR(background, m_outline._auto, isAuto) - } - void setOutlineColor(const Color & v) { SET_VAR(background,m_outline.color,v) } - - void setOverflowX(EOverflow v) { noninherited_flags._overflowX = v; } - void setOverflowY(EOverflow v) { noninherited_flags._overflowY = v; } - void setVisibility(EVisibility v) { inherited_flags._visibility = v; } - void setVerticalAlign(EVerticalAlign v) { noninherited_flags._vertical_align = v; } - void setVerticalAlignLength(Length l) { SET_VAR(box, vertical_align, l ) } - - void setHasClip(bool b = true) { SET_VAR(visual,hasClip,b) } - void setClipLeft(Length v) { SET_VAR(visual,clip.left,v) } - void setClipRight(Length v) { SET_VAR(visual,clip.right,v) } - void setClipTop(Length v) { SET_VAR(visual,clip.top,v) } - void setClipBottom(Length v) { SET_VAR(visual,clip.bottom,v) } - void setClip( Length top, Length right, Length bottom, Length left ); - - void setUnicodeBidi( EUnicodeBidi b ) { noninherited_flags._unicodeBidi = b; } - - void setClear(EClear v) { noninherited_flags._clear = v; } - void setTableLayout(ETableLayout v) { noninherited_flags._table_layout = v; } - - bool setFontDescription(const FontDescription& v) { - if (inherited->font.fontDescription() != v) { - inherited.access()->font = Font(v, inherited->font.letterSpacing(), inherited->font.wordSpacing()); - return true; - } - return false; - } - - // Only used for blending font sizes when animating. - void setBlendedFontSize(int); - - void setColor(const Color & v) { SET_VAR(inherited,color,v) } - void setTextIndent(Length v) { SET_VAR(inherited,indent,v) } - void setTextAlign(ETextAlign v) { inherited_flags._text_align = v; } - void setTextTransform(ETextTransform v) { inherited_flags._text_transform = v; } - void addToTextDecorationsInEffect(int v) { inherited_flags._text_decorations |= v; } - void setTextDecorationsInEffect(int v) { inherited_flags._text_decorations = v; } - void setTextDecoration(int v) { SET_VAR(visual, textDecoration, v); } - void setDirection(TextDirection v) { inherited_flags._direction = v; } - void setLineHeight(Length v) { SET_VAR(inherited,line_height,v) } - void setZoom(float f) { SET_VAR(visual, m_zoom, f); setEffectiveZoom(effectiveZoom() * zoom()); } - void setEffectiveZoom(float f) { SET_VAR(inherited, m_effectiveZoom, f) } - - void setWhiteSpace(EWhiteSpace v) { inherited_flags._white_space = v; } - - void setWordSpacing(int v) { inherited.access()->font.setWordSpacing(v); } - void setLetterSpacing(int v) { inherited.access()->font.setLetterSpacing(v); } - - void clearBackgroundLayers() { background.access()->m_background = FillLayer(BackgroundFillLayer); } - void inheritBackgroundLayers(const FillLayer& parent) { background.access()->m_background = parent; } - void adjustBackgroundLayers() { - if (backgroundLayers()->next()) { - accessBackgroundLayers()->cullEmptyLayers(); - accessBackgroundLayers()->fillUnsetProperties(); - } - } - - void clearMaskLayers() { rareNonInheritedData.access()->m_mask = FillLayer(MaskFillLayer); } - void inheritMaskLayers(const FillLayer& parent) { rareNonInheritedData.access()->m_mask = parent; } - void adjustMaskLayers() { - if (maskLayers()->next()) { - accessMaskLayers()->cullEmptyLayers(); - accessMaskLayers()->fillUnsetProperties(); - } - } - void setMaskBoxImage(const NinePieceImage& b) { SET_VAR(rareNonInheritedData, m_maskBoxImage, b) } - - void setBorderCollapse(bool collapse) { inherited_flags._border_collapse = collapse; } - void setHorizontalBorderSpacing(short v) { SET_VAR(inherited,horizontal_border_spacing,v) } - void setVerticalBorderSpacing(short v) { SET_VAR(inherited,vertical_border_spacing,v) } - void setEmptyCells(EEmptyCell v) { inherited_flags._empty_cells = v; } - void setCaptionSide(ECaptionSide v) { inherited_flags._caption_side = v; } - - void setCounterIncrement(short v) { SET_VAR(visual,counterIncrement,v) } - void setCounterReset(short v) { SET_VAR(visual,counterReset,v) } - - void setListStyleType(EListStyleType v) { inherited_flags._list_style_type = v; } - void setListStyleImage(StyleImage* v) { if (inherited->list_style_image != v) inherited.access()->list_style_image = v; } - void setListStylePosition(EListStylePosition v) { inherited_flags._list_style_position = v; } - - void resetMargin() { SET_VAR(surround, margin, LengthBox(Fixed)) } - void setMarginTop(Length v) { SET_VAR(surround,margin.top,v) } - void setMarginBottom(Length v) { SET_VAR(surround,margin.bottom,v) } - void setMarginLeft(Length v) { SET_VAR(surround,margin.left,v) } - void setMarginRight(Length v) { SET_VAR(surround,margin.right,v) } - - void resetPadding() { SET_VAR(surround, padding, LengthBox(Auto)) } - void setPaddingTop(Length v) { SET_VAR(surround,padding.top,v) } - void setPaddingBottom(Length v) { SET_VAR(surround,padding.bottom,v) } - void setPaddingLeft(Length v) { SET_VAR(surround,padding.left,v) } - void setPaddingRight(Length v) { SET_VAR(surround,padding.right,v) } - - void setCursor( ECursor c ) { inherited_flags._cursor_style = c; } - void addCursor(CachedImage*, const IntPoint& = IntPoint()); - void setCursorList(PassRefPtr<CursorList>); - void clearCursorList(); - - bool forceBackgroundsToWhite() const { return inherited_flags._force_backgrounds_to_white; } - void setForceBackgroundsToWhite(bool b=true) { inherited_flags._force_backgrounds_to_white = b; } - - bool htmlHacks() const { return inherited_flags._htmlHacks; } - void setHtmlHacks(bool b=true) { inherited_flags._htmlHacks = b; } - - bool hasAutoZIndex() { return box->z_auto; } - void setHasAutoZIndex() { SET_VAR(box, z_auto, true); SET_VAR(box, z_index, 0) } - int zIndex() const { return box->z_index; } - void setZIndex(int v) { SET_VAR(box, z_auto, false); SET_VAR(box, z_index, v) } - - void setWidows(short w) { SET_VAR(inherited, widows, w); } - void setOrphans(short o) { SET_VAR(inherited, orphans, o); } - void setPageBreakInside(EPageBreak b) { SET_VAR(inherited, page_break_inside, b); } - void setPageBreakBefore(EPageBreak b) { noninherited_flags._page_break_before = b; } - void setPageBreakAfter(EPageBreak b) { noninherited_flags._page_break_after = b; } - - // CSS3 Setters -#if ENABLE(XBL) - void deleteBindingURIs() { - SET_VAR(rareNonInheritedData, bindingURI, (BindingURI*) 0); - } - void inheritBindingURIs(BindingURI* other) { - SET_VAR(rareNonInheritedData, bindingURI, other->copy()); - } - void addBindingURI(StringImpl* uri); -#endif - void setOutlineOffset(int v) { SET_VAR(background, m_outline._offset, v) } - void setTextShadow(ShadowData* val, bool add=false); - void setTextStrokeColor(const Color& c) { SET_VAR(rareInheritedData, textStrokeColor, c) } - void setTextStrokeWidth(float w) { SET_VAR(rareInheritedData, textStrokeWidth, w) } - void setTextFillColor(const Color& c) { SET_VAR(rareInheritedData, textFillColor, c) } - void setOpacity(float f) { SET_VAR(rareNonInheritedData, opacity, f); } - void setAppearance(EAppearance a) { SET_VAR(rareNonInheritedData, m_appearance, a); } - void setBoxAlign(EBoxAlignment a) { SET_VAR(rareNonInheritedData.access()->flexibleBox, align, a); } - void setBoxDirection(EBoxDirection d) { inherited_flags._box_direction = d; } - void setBoxFlex(float f) { SET_VAR(rareNonInheritedData.access()->flexibleBox, flex, f); } - void setBoxFlexGroup(unsigned int fg) { SET_VAR(rareNonInheritedData.access()->flexibleBox, flex_group, fg); } - void setBoxLines(EBoxLines l) { SET_VAR(rareNonInheritedData.access()->flexibleBox, lines, l); } - void setBoxOrdinalGroup(unsigned int og) { SET_VAR(rareNonInheritedData.access()->flexibleBox, ordinal_group, og); } - void setBoxOrient(EBoxOrient o) { SET_VAR(rareNonInheritedData.access()->flexibleBox, orient, o); } - void setBoxPack(EBoxAlignment p) { SET_VAR(rareNonInheritedData.access()->flexibleBox, pack, p); } - void setBoxShadow(ShadowData* val, bool add=false); - void setBoxReflect(const PassRefPtr<StyleReflection>& reflect) { if (rareNonInheritedData->m_boxReflect != reflect) rareNonInheritedData.access()->m_boxReflect = reflect; } - void setBoxSizing(EBoxSizing s) { SET_VAR(box, boxSizing, s); } - void setMarqueeIncrement(const Length& f) { SET_VAR(rareNonInheritedData.access()->marquee, increment, f); } - void setMarqueeSpeed(int f) { SET_VAR(rareNonInheritedData.access()->marquee, speed, f); } - void setMarqueeDirection(EMarqueeDirection d) { SET_VAR(rareNonInheritedData.access()->marquee, direction, d); } - void setMarqueeBehavior(EMarqueeBehavior b) { SET_VAR(rareNonInheritedData.access()->marquee, behavior, b); } - void setMarqueeLoopCount(int i) { SET_VAR(rareNonInheritedData.access()->marquee, loops, i); } - void setUserModify(EUserModify u) { SET_VAR(rareInheritedData, userModify, u); } - void setUserDrag(EUserDrag d) { SET_VAR(rareNonInheritedData, userDrag, d); } - void setUserSelect(EUserSelect s) { SET_VAR(rareInheritedData, userSelect, s); } - void setTextOverflow(bool b) { SET_VAR(rareNonInheritedData, textOverflow, b); } - void setMarginTopCollapse(EMarginCollapse c) { SET_VAR(rareNonInheritedData, marginTopCollapse, c); } - void setMarginBottomCollapse(EMarginCollapse c) { SET_VAR(rareNonInheritedData, marginBottomCollapse, c); } - void setWordBreak(EWordBreak b) { SET_VAR(rareInheritedData, wordBreak, b); } - void setWordWrap(EWordWrap b) { SET_VAR(rareInheritedData, wordWrap, b); } - void setNBSPMode(ENBSPMode b) { SET_VAR(rareInheritedData, nbspMode, b); } - void setKHTMLLineBreak(EKHTMLLineBreak b) { SET_VAR(rareInheritedData, khtmlLineBreak, b); } - void setMatchNearestMailBlockquoteColor(EMatchNearestMailBlockquoteColor c) { SET_VAR(rareNonInheritedData, matchNearestMailBlockquoteColor, c); } - void setHighlight(const AtomicString& h) { SET_VAR(rareInheritedData, highlight, h); } - void setBorderFit(EBorderFit b) { SET_VAR(rareNonInheritedData, m_borderFit, b); } - void setResize(EResize r) { SET_VAR(rareInheritedData, resize, r); } - void setColumnWidth(float f) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoWidth, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_width, f); } - void setHasAutoColumnWidth() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoWidth, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_width, 0); } - void setColumnCount(unsigned short c) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoCount, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_count, c); } - void setHasAutoColumnCount() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoCount, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_count, 0); } - void setColumnGap(float f) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_normalGap, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_gap, f); } - void setHasNormalColumnGap() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_normalGap, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_gap, 0); } - void setColumnRuleColor(const Color& c) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.color, c); } - void setColumnRuleStyle(EBorderStyle b) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.m_style, b); } - void setColumnRuleWidth(unsigned short w) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.width, w); } - void resetColumnRule() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule, BorderValue()) } - void setColumnBreakBefore(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakBefore, p); } - void setColumnBreakInside(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakInside, p); } - void setColumnBreakAfter(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakAfter, p); } - void setTransform(const TransformOperations& ops) { SET_VAR(rareNonInheritedData.access()->m_transform, m_operations, ops); } - void setTransformOriginX(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_x, l); } - void setTransformOriginY(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_y, l); } - // End CSS3 Setters - - // Apple-specific property setters - void clearAnimations() - { - rareNonInheritedData.access()->m_animations.clear(); - } - void clearTransitions() - { - rareNonInheritedData.access()->m_transitions.clear(); - } - - void inheritAnimations(const AnimationList* parent) { rareNonInheritedData.access()->m_animations.set(parent ? new AnimationList(*parent) : 0); } - void inheritTransitions(const AnimationList* parent) { rareNonInheritedData.access()->m_transitions.set(parent ? new AnimationList(*parent) : 0); } - void adjustAnimations(); - void adjustTransitions(); - void updateKeyframes(const CSSStyleSelector* styleSelector) { if (rareNonInheritedData.get()) rareNonInheritedData.access()->updateKeyframes(styleSelector); } - - void setLineClamp(int c) { SET_VAR(rareNonInheritedData, lineClamp, c); } - void setTextSizeAdjust(bool b) { SET_VAR(rareInheritedData, textSizeAdjust, b); } - void setTextSecurity(ETextSecurity aTextSecurity) { SET_VAR(rareInheritedData, textSecurity, aTextSecurity); } - -#if ENABLE(SVG) - const SVGRenderStyle* svgStyle() const { return m_svgStyle.get(); } - SVGRenderStyle* accessSVGStyle() { return m_svgStyle.access(); } -#endif - - const ContentData* contentData() const { return rareNonInheritedData->m_content.get(); } - bool contentDataEquivalent(const RenderStyle* otherStyle) const; - void clearContent(); - void setContent(StringImpl*, bool add = false); - void setContent(PassRefPtr<StyleImage>, bool add = false); - void setContent(CounterContent*, bool add = false); - - const CounterDirectiveMap* counterDirectives() const; - CounterDirectiveMap& accessCounterDirectives(); - - bool inheritedNotEqual(RenderStyle* other) const; - - // The difference between two styles. The following values are used: - // (1) Equal - The two styles are identical - // (2) Repaint - The object just needs to be repainted. - // (3) RepaintLayer - The layer and its descendant layers needs to be repainted. - // (4) Layout - A layout is required. - enum Diff { Equal, Repaint, RepaintLayer, LayoutPositionedMovementOnly, Layout }; - Diff diff( const RenderStyle *other ) const; - - bool isDisplayReplacedType() { - return display() == INLINE_BLOCK || display() == INLINE_BOX || display() == INLINE_TABLE; - } - bool isDisplayInlineType() { - return display() == INLINE || isDisplayReplacedType(); - } - bool isOriginalDisplayInlineType() { - return originalDisplay() == INLINE || originalDisplay() == INLINE_BLOCK || - originalDisplay() == INLINE_BOX || originalDisplay() == INLINE_TABLE; - } - - // To obtain at any time the pseudo state for a given link. - PseudoState pseudoState() const { return static_cast<PseudoState>(m_pseudoState); } - void setPseudoState(PseudoState s) { m_pseudoState = s; } - - // To tell if this style matched attribute selectors. This makes it impossible to share. - bool affectedByAttributeSelectors() const { return m_affectedByAttributeSelectors; } - void setAffectedByAttributeSelectors() { m_affectedByAttributeSelectors = true; } - - bool unique() const { return m_unique; } - void setUnique() { m_unique = true; } - - // Methods for indicating the style is affected by dynamic updates (e.g., children changing, our position changing in our sibling list, etc.) - bool affectedByEmpty() const { return m_affectedByEmpty; } - bool emptyState() const { return m_emptyState; } - void setEmptyState(bool b) { m_affectedByEmpty = true; m_unique = true; m_emptyState = b; } - bool childrenAffectedByPositionalRules() const { return childrenAffectedByForwardPositionalRules() || childrenAffectedByBackwardPositionalRules(); } - bool childrenAffectedByFirstChildRules() const { return m_childrenAffectedByFirstChildRules; } - void setChildrenAffectedByFirstChildRules() { m_childrenAffectedByFirstChildRules = true; } - bool childrenAffectedByLastChildRules() const { return m_childrenAffectedByLastChildRules; } - void setChildrenAffectedByLastChildRules() { m_childrenAffectedByLastChildRules = true; } - bool childrenAffectedByDirectAdjacentRules() const { return m_childrenAffectedByDirectAdjacentRules; } - void setChildrenAffectedByDirectAdjacentRules() { m_childrenAffectedByDirectAdjacentRules = true; } - bool childrenAffectedByForwardPositionalRules() const { return m_childrenAffectedByForwardPositionalRules; } - void setChildrenAffectedByForwardPositionalRules() { m_childrenAffectedByForwardPositionalRules = true; } - bool childrenAffectedByBackwardPositionalRules() const { return m_childrenAffectedByBackwardPositionalRules; } - void setChildrenAffectedByBackwardPositionalRules() { m_childrenAffectedByBackwardPositionalRules = true; } - bool firstChildState() const { return m_firstChildState; } - void setFirstChildState() { m_firstChildState = true; } - bool lastChildState() const { return m_lastChildState; } - void setLastChildState() { m_lastChildState = true; } - unsigned childIndex() const { return m_childIndex; } - void setChildIndex(unsigned index) { m_childIndex = index; } - - // Initial values for all the properties - static bool initialBorderCollapse() { return false; } - static EBorderStyle initialBorderStyle() { return BNONE; } - static NinePieceImage initialNinePieceImage() { return NinePieceImage(); } - static IntSize initialBorderRadius() { return IntSize(0,0); } - static ECaptionSide initialCaptionSide() { return CAPTOP; } - static EClear initialClear() { return CNONE; } - static TextDirection initialDirection() { return LTR; } - static EDisplay initialDisplay() { return INLINE; } - static EEmptyCell initialEmptyCells() { return SHOW; } - static EFloat initialFloating() { return FNONE; } - static EListStylePosition initialListStylePosition() { return OUTSIDE; } - static EListStyleType initialListStyleType() { return DISC; } - static EOverflow initialOverflowX() { return OVISIBLE; } - static EOverflow initialOverflowY() { return OVISIBLE; } - static EPageBreak initialPageBreak() { return PBAUTO; } - static EPosition initialPosition() { return StaticPosition; } - static ETableLayout initialTableLayout() { return TAUTO; } - static EUnicodeBidi initialUnicodeBidi() { return UBNormal; } - static ETextTransform initialTextTransform() { return TTNONE; } - static EVisibility initialVisibility() { return VISIBLE; } - static EWhiteSpace initialWhiteSpace() { return NORMAL; } - static short initialHorizontalBorderSpacing() { return 0; } - static short initialVerticalBorderSpacing() { return 0; } - static ECursor initialCursor() { return CURSOR_AUTO; } - static Color initialColor() { return Color::black; } - static StyleImage* initialListStyleImage() { return 0; } - static unsigned short initialBorderWidth() { return 3; } - static int initialLetterWordSpacing() { return 0; } - static Length initialSize() { return Length(); } - static Length initialMinSize() { return Length(0, Fixed); } - static Length initialMaxSize() { return Length(undefinedLength, Fixed); } - static Length initialOffset() { return Length(); } - static Length initialMargin() { return Length(Fixed); } - static Length initialPadding() { return Length(Fixed); } - static Length initialTextIndent() { return Length(Fixed); } - static EVerticalAlign initialVerticalAlign() { return BASELINE; } - static int initialWidows() { return 2; } - static int initialOrphans() { return 2; } - static Length initialLineHeight() { return Length(-100.0, Percent); } - static ETextAlign initialTextAlign() { return TAAUTO; } - static ETextDecoration initialTextDecoration() { return TDNONE; } - static float initialZoom() { return 1.0f; } - static int initialOutlineOffset() { return 0; } - static float initialOpacity() { return 1.0f; } - static EBoxAlignment initialBoxAlign() { return BSTRETCH; } - static EBoxDirection initialBoxDirection() { return BNORMAL; } - static EBoxLines initialBoxLines() { return SINGLE; } - static EBoxOrient initialBoxOrient() { return HORIZONTAL; } - static EBoxAlignment initialBoxPack() { return BSTART; } - static float initialBoxFlex() { return 0.0f; } - static int initialBoxFlexGroup() { return 1; } - static int initialBoxOrdinalGroup() { return 1; } - static EBoxSizing initialBoxSizing() { return CONTENT_BOX; } - static StyleReflection* initialBoxReflect() { return 0; } - static int initialMarqueeLoopCount() { return -1; } - static int initialMarqueeSpeed() { return 85; } - static Length initialMarqueeIncrement() { return Length(6, Fixed); } - static EMarqueeBehavior initialMarqueeBehavior() { return MSCROLL; } - static EMarqueeDirection initialMarqueeDirection() { return MAUTO; } - static EUserModify initialUserModify() { return READ_ONLY; } - static EUserDrag initialUserDrag() { return DRAG_AUTO; } - static EUserSelect initialUserSelect() { return SELECT_TEXT; } - static bool initialTextOverflow() { return false; } - static EMarginCollapse initialMarginTopCollapse() { return MCOLLAPSE; } - static EMarginCollapse initialMarginBottomCollapse() { return MCOLLAPSE; } - static EWordBreak initialWordBreak() { return NormalWordBreak; } - static EWordWrap initialWordWrap() { return NormalWordWrap; } - static ENBSPMode initialNBSPMode() { return NBNORMAL; } - static EKHTMLLineBreak initialKHTMLLineBreak() { return LBNORMAL; } - static EMatchNearestMailBlockquoteColor initialMatchNearestMailBlockquoteColor() { return BCNORMAL; } - static const AtomicString& initialHighlight() { return nullAtom; } - static EBorderFit initialBorderFit() { return BorderFitBorder; } - static EResize initialResize() { return RESIZE_NONE; } - static EAppearance initialAppearance() { return NoAppearance; } - static bool initialVisuallyOrdered() { return false; } - static float initialTextStrokeWidth() { return 0; } - static unsigned short initialColumnCount() { return 1; } - static const TransformOperations& initialTransform() { static TransformOperations ops; return ops; } - static Length initialTransformOriginX() { return Length(50.0, Percent); } - static Length initialTransformOriginY() { return Length(50.0, Percent); } - - // Keep these at the end. - static float initialAnimationDelay() { return 0; } - static bool initialAnimationDirection() { return false; } - static double initialAnimationDuration() { return 0; } - static int initialAnimationIterationCount() { return 1; } - static String initialAnimationName() { return String(); } - static unsigned initialAnimationPlayState() { return AnimPlayStatePlaying; } - static int initialAnimationProperty() { return cAnimateAll; } - static TimingFunction initialAnimationTimingFunction() { return TimingFunction(); } - static int initialLineClamp() { return -1; } - static bool initialTextSizeAdjust() { return true; } - static ETextSecurity initialTextSecurity() { return TSNONE; } -#if ENABLE(DASHBOARD_SUPPORT) - static const Vector<StyleDashboardRegion>& initialDashboardRegions(); - static const Vector<StyleDashboardRegion>& noneDashboardRegions(); -#endif -}; - -class KeyframeValue { -public: - KeyframeValue() : key(-1) { } - float key; - RenderStyle style; -}; - -class KeyframeList : public RefCounted<KeyframeList> { -public: - static PassRefPtr<KeyframeList> create(const AtomicString& inAnimName) { return adoptRef(new KeyframeList(inAnimName)); } - - bool operator==(const KeyframeList& o) const; - bool operator!=(const KeyframeList& o) const { return !(*this == o); } - - const AtomicString& animationName() const { return m_animationName; } - - void insert(float inKey, const RenderStyle& inStyle); - - void addProperty(int prop) { m_properties.add(prop); } - bool containsProperty(int prop) const { return m_properties.contains(prop); } - HashSet<int>::const_iterator beginProperties() { return m_properties.begin(); } - HashSet<int>::const_iterator endProperties() { return m_properties.end(); } - - void clear() { m_keyframes.clear(); m_properties.clear(); } - bool isEmpty() const { return m_keyframes.isEmpty(); } - Vector<KeyframeValue>::const_iterator beginKeyframes() const { return m_keyframes.begin(); } - Vector<KeyframeValue>::const_iterator endKeyframes() const { return m_keyframes.end(); } - -private: - KeyframeList(const AtomicString& inAnimName) - : m_animationName(inAnimName) - { - insert(0, RenderStyle()); - insert(1, RenderStyle()); - } - -protected: - AtomicString m_animationName; - Vector<KeyframeValue> m_keyframes; - HashSet<int> m_properties; // the properties being animated -}; - -} // namespace WebCore - -#endif diff --git a/webkit/pending/RenderTheme.h b/webkit/pending/RenderTheme.h deleted file mode 100644 index 8620600..0000000 --- a/webkit/pending/RenderTheme.h +++ /dev/null @@ -1,224 +0,0 @@ -/* - * This file is part of the theme implementation for form controls in WebCore. - * - * Copyright (C) 2005, 2006, 2007, 2008 Apple Computer, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#ifndef RenderTheme_h -#define RenderTheme_h - -#include "RenderObject.h" - -namespace WebCore { - -class Element; -class PopupMenu; -class RenderMenuList; -class CSSStyleSheet; - -enum ControlState { - HoverState, - PressedState, - FocusState, - EnabledState, - CheckedState, - ReadOnlyState, - DefaultState -}; - -class RenderTheme { -public: - RenderTheme() { } - virtual ~RenderTheme() { } - - // This method is called whenever style has been computed for an element and the appearance - // property has been set to a value other than "none". The theme should map in all of the appropriate - // metrics and defaults given the contents of the style. This includes sophisticated operations like - // selection of control size based off the font, the disabling of appearance when certain other properties like - // "border" are set, or if the appearance is not supported by the theme. - void adjustStyle(CSSStyleSelector*, RenderStyle*, Element*, bool UAHasAppearance, - const BorderData&, const FillLayer&, const Color& backgroundColor); - - // This method is called once, from CSSStyleSelector::loadDefaultStyle(), to let each platform adjust - // the default CSS rules in html4.css. - static void adjustDefaultStyleSheet(CSSStyleSheet*); - - // This method is called to paint the widget as a background of the RenderObject. A widget's foreground, e.g., the - // text of a button, is always rendered by the engine itself. The boolean return value indicates - // whether the CSS border/background should also be painted. - bool paint(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); - bool paintBorderOnly(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); - bool paintDecorations(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); - - // The remaining methods should be implemented by the platform-specific portion of the theme, e.g., - // RenderThemeMac.cpp for Mac OS X. - - // A method to obtain the baseline position for a "leaf" control. This will only be used if a baseline - // position cannot be determined by examining child content. Checkboxes and radio buttons are examples of - // controls that need to do this. - virtual int baselinePosition(const RenderObject*) const; - - // A method for asking if a control is a container or not. Leaf controls have to have some special behavior (like - // the baseline position API above). - virtual bool isControlContainer(EAppearance) const; - - // A method asking if the control changes its tint when the window has focus or not. - virtual bool controlSupportsTints(const RenderObject*) const { return false; } - - // Whether or not the control has been styled enough by the author to disable the native appearance. - virtual bool isControlStyled(const RenderStyle*, const BorderData&, const FillLayer&, const Color& backgroundColor) const; - - // A general method asking if any control tinting is supported at all. - virtual bool supportsControlTints() const { return false; } - - // Some controls may spill out of their containers (e.g., the check on an OS X checkbox). When these controls repaint, - // the theme needs to communicate this inflated rect to the engine so that it can invalidate the whole control. - virtual void adjustRepaintRect(const RenderObject*, IntRect&) { } - - // This method is called whenever a relevant state changes on a particular themed object, e.g., the mouse becomes pressed - // or a control becomes disabled. - virtual bool stateChanged(RenderObject*, ControlState) const; - - // This method is called whenever the theme changes on the system in order to flush cached resources from the - // old theme. - virtual void themeChanged() { } - - // A method asking if the theme is able to draw the focus ring. - virtual bool supportsFocusRing(const RenderStyle*) const; - - // A method asking if the theme's controls actually care about redrawing when hovered. - virtual bool supportsHover(const RenderStyle*) const { return false; } - - // The selection color. - Color activeSelectionBackgroundColor() const; - Color inactiveSelectionBackgroundColor() const; - - virtual Color platformTextSearchHighlightColor() const; - - // The platform selection color. - virtual Color platformActiveSelectionBackgroundColor() const; - virtual Color platformInactiveSelectionBackgroundColor() const; - virtual Color platformActiveSelectionForegroundColor() const; - virtual Color platformInactiveSelectionForegroundColor() const; - - // List Box selection color - virtual Color activeListBoxSelectionBackgroundColor() const; - virtual Color activeListBoxSelectionForegroundColor() const; - virtual Color inactiveListBoxSelectionBackgroundColor() const; - virtual Color inactiveListBoxSelectionForegroundColor() const; - - virtual void platformColorsDidChange(); - - virtual double caretBlinkFrequency() const { return 0.5; } - - // System fonts and colors for CSS. - virtual void systemFont(int cssValueId, Document*, FontDescription&) const = 0; - virtual Color systemColor(int cssValueId) const; - - virtual int minimumMenuListSize(RenderStyle*) const { return 0; } - - virtual void adjustButtonInnerStyle(RenderStyle* style) const { } - virtual void adjustSliderThumbSize(RenderObject*) const; - - // Methods for state querying - bool isActive(const RenderObject*) const; - bool isChecked(const RenderObject*) const; - bool isIndeterminate(const RenderObject*) const; - bool isEnabled(const RenderObject*) const; - bool isFocused(const RenderObject*) const; - bool isPressed(const RenderObject*) const; - bool isHovered(const RenderObject*) const; - bool isReadOnlyControl(const RenderObject*) const; - bool isDefault(const RenderObject*) const; - - virtual int popupInternalPaddingLeft(RenderStyle*) const { return 0; } - virtual int popupInternalPaddingRight(RenderStyle*) const { return 0; } - virtual int popupInternalPaddingTop(RenderStyle*) const { return 0; } - virtual int popupInternalPaddingBottom(RenderStyle*) const { return 0; } - - // Method for painting the caps lock indicator - virtual bool paintCapsLockIndicator(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return 0; }; - -protected: - // Methods for each appearance value. - virtual void adjustCheckboxStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintCheckbox(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual void setCheckboxSize(RenderStyle*) const { } - - virtual void adjustRadioStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintRadio(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual void setRadioSize(RenderStyle*) const { } - - virtual void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual void setButtonSize(RenderStyle*) const { } - - virtual void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintTextField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustTextAreaStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintTextArea(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintMenuList(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustMenuListButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintMenuListButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustSearchFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintSearchField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustSearchFieldCancelButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintSearchFieldCancelButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustSearchFieldDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintSearchFieldDecoration(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustSearchFieldResultsDecorationStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintSearchFieldResultsDecoration(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual void adjustSearchFieldResultsButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - virtual bool paintSearchFieldResultsButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - - virtual bool paintMediaFullscreenButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual bool paintMediaPlayButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual bool paintMediaMuteButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual bool paintMediaSeekBackButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual bool paintMediaSeekForwardButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual bool paintMediaSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - virtual bool paintMediaSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&) { return true; } - -private: - mutable Color m_activeSelectionColor; - mutable Color m_inactiveSelectionColor; -}; - -// Function to obtain the theme. This is implemented in your platform-specific theme implementation to hand -// back the appropriate platform theme. -RenderTheme* theme(); - -} // namespace WebCore - -#endif // RenderTheme_h diff --git a/webkit/pending/SMILTimeContainer.h b/webkit/pending/SMILTimeContainer.h deleted file mode 100644 index dc858a8..0000000 --- a/webkit/pending/SMILTimeContainer.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2008 Apple Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SMILTimeContainer_H -#define SMILTimeContainer_H - -#if ENABLE(SVG) - -#include "PlatformString.h" -#include "SMILTime.h" -#include "StringHash.h" -#include "Timer.h" -#include <wtf/HashMap.h> -#include <wtf/HashSet.h> -#include <wtf/PassRefPtr.h> -#include <wtf/RefCounted.h> - -namespace WebCore { - - class SVGElement; - class SVGSMILElement; - class SVGSVGElement; - - class SMILTimeContainer : public RefCounted<SMILTimeContainer> { - public: - static PassRefPtr<SMILTimeContainer> create(SVGSVGElement* owner) { return adoptRef(new SMILTimeContainer(owner)); } - - void schedule(SVGSMILElement*); - void unschedule(SVGSMILElement*); - - SMILTime elapsed() const; - - bool isActive() const; - bool isPaused() const; - - void begin(); - void pause(); - void resume(); - - void setDocumentOrderIndexesDirty() { m_documentOrderIndexesDirty = true; } - - private: - SMILTimeContainer(SVGSVGElement* owner); - - void timerFired(Timer<SMILTimeContainer>*); - void startTimer(SMILTime fireTime, SMILTime minimumDelay = 0); - void updateAnimations(SMILTime elapsed); - - void updateDocumentOrderIndexes(); - void sortByPriority(Vector<SVGSMILElement*>& smilElements, SMILTime elapsed); - - typedef pair<SVGElement*, String> ElementAttributePair; - String baseValueFor(ElementAttributePair); - - double m_beginTime; - double m_pauseTime; - double m_accumulatedPauseTime; - - bool m_documentOrderIndexesDirty; - - Timer<SMILTimeContainer> m_timer; - - typedef HashSet<SVGSMILElement*> TimingElementSet; - TimingElementSet m_scheduledAnimations; - - typedef HashMap<ElementAttributePair, String> BaseValueMap; - BaseValueMap m_savedBaseValues; - - SVGSVGElement* m_ownerSVGElement; - }; -} - -#endif -#endif diff --git a/webkit/pending/Traversal.cpp b/webkit/pending/Traversal.cpp deleted file mode 100644 index 05fc88f8..0000000 --- a/webkit/pending/Traversal.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (C) 1999 Lars Knoll (knoll@kde.org) - * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) - * Copyright (C) 2001 Peter Kelly (pmk@post.com) - * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) - * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#include "config.h" -#include "Traversal.h" - -#include "ExceptionContext.h" -#include "Node.h" -#include "NodeFilter.h" - -namespace WebCore { - -Traversal::Traversal(PassRefPtr<Node> rootNode, unsigned whatToShow, PassRefPtr<NodeFilter> nodeFilter, bool expandEntityReferences) - : m_root(rootNode) - , m_whatToShow(whatToShow) - , m_filter(nodeFilter) - , m_expandEntityReferences(expandEntityReferences) -{ -} - -short Traversal::acceptNode(ExceptionContext* exec, Node* node) const -{ - // FIXME: To handle XML properly we would have to check m_expandEntityReferences. - - // The bit twiddling here is done to map DOM node types, which are given as integers from - // 1 through 12, to whatToShow bit masks. - if (!(((1 << (node->nodeType() - 1)) & m_whatToShow))) - return NodeFilter::FILTER_SKIP; - if (!m_filter) - return NodeFilter::FILTER_ACCEPT; - return m_filter->acceptNode(exec, node); -} - -} // namespace WebCore diff --git a/webkit/pending/Traversal.h b/webkit/pending/Traversal.h deleted file mode 100644 index 52bb88f..0000000 --- a/webkit/pending/Traversal.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 1999 Lars Knoll (knoll@kde.org) - * Copyright (C) 2000 Frederik Holljen (frederik.holljen@hig.no) - * Copyright (C) 2001 Peter Kelly (pmk@post.com) - * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) - * Copyright (C) 2004, 2008 Apple Inc. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#ifndef Traversal_h -#define Traversal_h - -#include <wtf/Forward.h> -#include <wtf/RefPtr.h> - - -namespace WebCore { - - class ExceptionContext; - class Node; - class NodeFilter; - - class Traversal { - public: - Node* root() const { return m_root.get(); } - unsigned whatToShow() const { return m_whatToShow; } - NodeFilter* filter() const { return m_filter.get(); } - bool expandEntityReferences() const { return m_expandEntityReferences; } - - protected: - Traversal(PassRefPtr<Node>, unsigned whatToShow, PassRefPtr<NodeFilter>, bool expandEntityReferences); - short acceptNode(ExceptionContext*, Node*) const; - - private: - RefPtr<Node> m_root; - unsigned m_whatToShow; - RefPtr<NodeFilter> m_filter; - bool m_expandEntityReferences; - }; - -} // namespace WebCore - -#endif // Traversal_h diff --git a/webkit/pending/TreeShared.h b/webkit/pending/TreeShared.h deleted file mode 100644 index bb38364..0000000 --- a/webkit/pending/TreeShared.h +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public License - * along with this library; see the file COPYING.LIB. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - */ - -#ifndef TreeShared_h -#define TreeShared_h - -#include "Peerable.h" -#include "RefCounted.h" - -namespace WebCore { - -#if USE(V8) - -template<class T> class TreeShared : public Peerable { -public: - TreeShared() : m_refCount(0), m_parent(0), m_peer(0) - { -#ifndef NDEBUG - m_deletionHasBegun = false; - m_inRemovedLastRefFunction = false; -#endif - } - - TreeShared(T* parent) : m_refCount(0), m_parent(parent), m_peer(0) - { -#ifndef NDEBUG - m_deletionHasBegun = false; - m_inRemovedLastRefFunction = false; -#endif - } - - virtual ~TreeShared() - { - ASSERT(m_deletionHasBegun); - ASSERT(!m_peer); - } - - void ref() - { - ASSERT(!m_deletionHasBegun); - ASSERT(!m_inRemovedLastRefFunction); - ++m_refCount; - } - - void deref() - { - ASSERT(!m_deletionHasBegun); - ASSERT(!m_inRemovedLastRefFunction); - - if (--m_refCount <= 0 && !m_parent && !m_peer) { -#ifndef NDEBUG - m_inRemovedLastRefFunction = true; -#endif - removedLastRef(); - } - } - - void setPeer(void* peer) - { - m_peer = peer; - if (m_refCount <= 0 && !m_parent && !m_peer) { -#ifndef NDEBUG - m_inRemovedLastRefFunction = true; -#endif - removedLastRef(); - } - } - - void* peer() const { return m_peer; } - - bool hasOneRef() - { - ASSERT(!m_deletionHasBegun); - ASSERT(!m_inRemovedLastRefFunction); - if (m_peer) - return m_refCount == 0; - return m_refCount == 1; - } - - int refCount() const - { - if (m_peer) - return m_refCount + 1; - return m_refCount; - } - - // setParent never deletes the node even if the node only has a - // parent and no other references. For DOM nodes the deletion - // done in ContainerNode::removeAllChildren. - void setParent(T* parent) { m_parent = parent; } - T* parent() const { return m_parent; } - -#ifndef NDEBUG - bool m_deletionHasBegun; - bool m_inRemovedLastRefFunction; -#endif - -private: - virtual void removedLastRef() - { -#ifndef NDEBUG - m_deletionHasBegun = true; -#endif - delete static_cast<T*>(this); - } - - int m_refCount; - T* m_parent; - void* m_peer; -}; - -#elif USE(JSC) - -template<class T> class TreeShared : Noncopyable { -public: - TreeShared() - : m_refCount(0) - , m_parent(0) - { -#ifndef NDEBUG - m_deletionHasBegun = false; - m_inRemovedLastRefFunction = false; -#endif - } - TreeShared(T* parent) - : m_refCount(0) - , m_parent(0) - { -#ifndef NDEBUG - m_deletionHasBegun = false; - m_inRemovedLastRefFunction = false; -#endif - } - virtual ~TreeShared() - { - ASSERT(m_deletionHasBegun); - } - - void ref() - { - ASSERT(!m_deletionHasBegun); - ASSERT(!m_inRemovedLastRefFunction); - ++m_refCount; - } - - void deref() - { - ASSERT(!m_deletionHasBegun); - ASSERT(!m_inRemovedLastRefFunction); - if (--m_refCount <= 0 && !m_parent) { -#ifndef NDEBUG - m_inRemovedLastRefFunction = true; -#endif - removedLastRef(); - } - } - - bool hasOneRef() const - { - ASSERT(!m_deletionHasBegun); - ASSERT(!m_inRemovedLastRefFunction); - return m_refCount == 1; - } - - int refCount() const - { - return m_refCount; - } - - void setParent(T* parent) { m_parent = parent; } - T* parent() const { return m_parent; } - -#ifndef NDEBUG - bool m_deletionHasBegun; - bool m_inRemovedLastRefFunction; -#endif - -private: - virtual void removedLastRef() - { -#ifndef NDEBUG - m_deletionHasBegun = true; -#endif - delete this; - } - - int m_refCount; - T* m_parent; -}; - -#else -#error "You must include config.h before TreeShared.h" -#endif - -} - -#endif // TreeShared.h diff --git a/webkit/port/DerivedSources.make b/webkit/port/DerivedSources.make index f0a0dad..e832dec 100644 --- a/webkit/port/DerivedSources.make +++ b/webkit/port/DerivedSources.make @@ -32,6 +32,7 @@ VPATH = \ $(PORTROOT)/html \ $(PORTROOT)/page \ $(PORTROOT)/page/inspector \ + $(PORTROOT)/svg \ $(PORTROOT)/xml \ $(PORTROOT)/ksvg2/svg \ $(PORTROOT)/ksvg2/events \ @@ -733,7 +734,9 @@ all : \ V8ImageData.h \ V8KeyboardEvent.h \ V8MediaList.h \ + V8MessageChannel.h \ V8MessageEvent.h \ + V8MessagePort.h \ V8MouseEvent.h \ V8MutationEvent.h \ V8NamedNodeMap.h \ @@ -742,7 +745,6 @@ all : \ V8NodeIterator.h \ V8NodeList.h \ V8Notation.h \ - V8NSResolver.h \ V8OverflowEvent.h \ V8ProcessingInstruction.h \ V8ProgressEvent.h \ @@ -918,7 +920,6 @@ all : \ XPathGrammar.cpp \ tokenizer.cpp \ V8Clipboard.h \ - V8HTMLSelectionInputElement.h \ V8InspectorController.h \ V8Location.h \ V8Navigator.h \ diff --git a/webkit/port/bindings/scripts/CodeGeneratorV8.pm b/webkit/port/bindings/scripts/CodeGeneratorV8.pm index 99e447c..87353ca 100644 --- a/webkit/port/bindings/scripts/CodeGeneratorV8.pm +++ b/webkit/port/bindings/scripts/CodeGeneratorV8.pm @@ -224,7 +224,6 @@ sub GetImplementationFileName { my $iface = shift; return "HTMLCollection.h" if $iface eq "UndetectableHTMLCollection"; - return "HTMLInputElement.h" if $iface eq "HTMLSelectionInputElement"; return "Event.h" if $iface eq "DOMTimeStamp"; return "NamedAttrMap.h" if $iface eq "NamedNodeMap"; return "NameNodeList.h" if $iface eq "NodeList"; @@ -240,7 +239,7 @@ sub GenerateHeader my $interfaceName = $dataNode->name; my $className = "V8$interfaceName"; - my $implClassName = GetImplementationClassName($interfaceName); + my $implClassName = $interfaceName; # Copy contents of parent classes except the first parent or if it is # EventTarget. @@ -426,11 +425,12 @@ sub GenerateNormalAttrGetter my $isPodType = $codeGenerator->IsPodType($implClassName); my $skipContext = 0; + if ($isPodType) { $implClassName = GetNativeType($implClassName); $implIncludes{"V8SVGPODTypeWrapper.h"} = 1; } - + # Special case: SVGZoomEvent's attributes are all read-only if ($implClassName eq "SVGZoomEvent") { $attrIsPodType = 0; @@ -830,7 +830,7 @@ sub GenerateImplementation my $dataNode = shift; my $interfaceName = $dataNode->name; my $className = "V8$interfaceName"; - my $implClassName = GetImplementationClassName($interfaceName); + my $implClassName = $interfaceName; my $classIndex = uc($codeGenerator->StripModule($interfaceName)); my $hasLegacyParent = $dataNode->extendedAttributes->{"LegacyParent"}; @@ -867,7 +867,8 @@ sub GenerateImplementation my $hasConstructors = 0; # Generate property accessors for attributes. - foreach my $attribute (@{$dataNode->attributes}) { + for ($index = 0; $index < @{$dataNode->attributes}; $index++) { + $attribute = @{$dataNode->attributes}[$index]; $attrName = $attribute->signature->name; $attrType = $attribute->signature->type; @@ -876,6 +877,18 @@ sub GenerateImplementation $hasConstructors = 1; next; } + + # Make EventListeners always custom. + # TODO(mbelshe): make the perl code capable of generating the + # event setters/getters. For now, WebKit has started removing the + # [Custom] attribute, so just automatically insert it to avoid forking + # other files. This should be okay because we can't generate stubs + # for any event getter/setters anyway. + if ($attrType eq "EventListener") { + $attribute->signature->extendedAttributes->{"Custom"} = 1; + $implIncludes{"v8_custom.h"} = 1; + next; + } # Do not generate accessor if this is a custom attribute. The # call will be forwarded to a hand-written accessor @@ -884,7 +897,7 @@ sub GenerateImplementation $implIncludes{"v8_custom.h"} = 1; next; } - + # Generate the accessor. if ($attribute->signature->extendedAttributes->{"CustomGetter"}) { $implIncludes{"v8_custom.h"} = 1; @@ -1374,21 +1387,10 @@ sub GetClassName { my $type = shift; return "HTMLCollection" if $type eq "UndetectableHTMLCollection"; - return "HTMLInputElement" if $type eq "HTMLSelectionInputElement"; return $type; } -sub GetImplementationClassName -{ - my $type = shift; - - return "HTMLInputElement" if $type eq "HTMLSelectionInputElement"; - - return $type; -} - - sub GetNativeTypeFromSignature { my $signature = shift; @@ -1484,9 +1486,6 @@ sub GetNativeType return "String" if $type eq "DOMUserData"; # temporary hack, TODO # temporary hack - $type = GetImplementationClassName($type); - - # temporary hack return "RefPtr<NodeFilter>" if $type eq "NodeFilter"; return "RefPtr<${type}>" if IsRefPtrType($type) and not $isParameter; @@ -1511,6 +1510,7 @@ my %typeCanFailConversion = ( "HTMLOptionElement" => 0, "Node" => 0, "NodeFilter" => 0, + "MessagePort" => 0, "NSResolver" => 0, "Range" => 0, "SQLResultSet" => 0, @@ -1615,7 +1615,7 @@ sub JSValueToNative } else { # TODO: Temporary to avoid Window name conflict. my $classIndex = uc($type); - my $implClassName = GetImplementationClassName(${type}); + my $implClassName = ${type}; $implIncludes{"V8$type.h"} = 1; @@ -1777,7 +1777,7 @@ sub NativeToJSValue } # V8 specific. - my $implClassName = GetImplementationClassName($type); + my $implClassName = $type; AddIncludesForType($type); # $implIncludes{GetImplementationFileName($type)} = 1 unless AvoidInclusionOfType($type); diff --git a/webkit/port/bindings/v8/JSNSResolver.cpp b/webkit/port/bindings/v8/JSNSResolver.cpp deleted file mode 100644 index 5251a35..0000000 --- a/webkit/port/bindings/v8/JSNSResolver.cpp +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright (c) 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include "config.h" -#include "JSNSResolver.h" - -#include "v8_proxy.h" -#include "v8_binding.h" -#include "ExceptionContext.h" -#include "PlatformString.h" - -namespace WebCore { - -JSNSResolver::JSNSResolver(v8::Handle<v8::Object> resolver) - : m_resolver(resolver) -{ -} - -JSNSResolver::~JSNSResolver() -{ -} - -String JSNSResolver::lookupNamespaceURI(ExceptionContext* exceptionContext, - const String& prefix) -{ - v8::Handle<v8::Function> lookupNamespaceURIFunc; - v8::Handle<v8::String> lookupNamespaceURIName = - v8::String::New("lookupNamespaceURI"); - - // Check if the resolver has a function property named lookupNamespaceURI. - if (m_resolver->Has(lookupNamespaceURIName)) { - // In case the property is a getter that throws an error, - // see LayoutTests/fast/dom/SelectorAPI/NSResolver-exceptions.xhtml - ExceptionCatcher exceptionCatcher(exceptionContext); - v8::Handle<v8::Value> lookupNamespaceURI = m_resolver->Get( - lookupNamespaceURIName); - if (exceptionContext->hadException()) - return String(); - if (lookupNamespaceURI->IsFunction()) { - lookupNamespaceURIFunc = v8::Handle<v8::Function>::Cast( - lookupNamespaceURI); - } - } - - if (lookupNamespaceURIFunc.IsEmpty() && !m_resolver->IsFunction()) { - Frame* frame = ScriptController::retrieveActiveFrame(); - log_info(frame, "NSResolver does not have a lookupNamespaceURI method.", - String()); - return String(); - } - - // Catch exceptions from calling the namespace resolver. - ExceptionCatcher exceptionCatcher(exceptionContext); - - const int argc = 1; - v8::Handle<v8::Value> argv[argc] = { v8String(prefix) }; - v8::Handle<v8::Function> function = lookupNamespaceURIFunc.IsEmpty() - ? v8::Handle<v8::Function>::Cast(m_resolver) - : lookupNamespaceURIFunc; - - V8Proxy* proxy = V8Proxy::retrieve(); - v8::Handle<v8::Value> retval = proxy->CallFunction(function, m_resolver, - argc, argv); - - // Eat exceptions from namespace resolver and return an empty string. This - // will cause NAMESPACE_ERR. - if (exceptionContext->hadException()) - return String(); - - return valueToStringWithNullOrUndefinedCheck(retval); -} - -} diff --git a/webkit/port/bindings/v8/ScriptController.h b/webkit/port/bindings/v8/ScriptController.h index aa4a46b..d23ca65 100644 --- a/webkit/port/bindings/v8/ScriptController.h +++ b/webkit/port/bindings/v8/ScriptController.h @@ -34,6 +34,7 @@ #define ScriptController_h #include "HashMap.h" +#include "SecurityOrigin.h" #include "bindings/npruntime.h" diff --git a/webkit/port/bindings/v8/V8MessagePortCustom.cpp b/webkit/port/bindings/v8/V8MessagePortCustom.cpp new file mode 100644 index 0000000..8e4c3a9 --- /dev/null +++ b/webkit/port/bindings/v8/V8MessagePortCustom.cpp @@ -0,0 +1,232 @@ +// Copyright (c) 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include "config.h" + +#include "v8_binding.h" +#include "v8_custom.h" +#include "v8_events.h" +#include "v8_proxy.h" + +#include "V8Document.h" +#include "V8HTMLDocument.h" + +#include "ExceptionCode.h" +#include "MessagePort.h" + +namespace WebCore { + +// TODO(mbelshe) - merge these with XHR's CreateHiddenXHRDependency + +// Use an array to hold dependents. It works like a ref-counted scheme. +// A value can be added more than once to the xhr object. +static void CreateHiddenDependency(v8::Local<v8::Object> object, + v8::Local<v8::Value> value) { + ASSERT(V8Proxy::GetDOMWrapperType(object) == + V8ClassIndex::MESSAGEPORT); + v8::Local<v8::Value> cache = + object->GetInternalField(V8Custom::kMessagePortRequestCacheIndex); + if (cache->IsNull() || cache->IsUndefined()) { + cache = v8::Array::New(); + object->SetInternalField(V8Custom::kXMLHttpRequestCacheIndex, cache); + } + + v8::Local<v8::Array> cache_array = v8::Local<v8::Array>::Cast(cache); + cache_array->Set(v8::Integer::New(cache_array->Length()), value); +} + +static void RemoveHiddenDependency(v8::Local<v8::Object> object, + v8::Local<v8::Value> value) { + ASSERT(V8Proxy::GetDOMWrapperType(object) == V8ClassIndex::MESSAGEPORT); + v8::Local<v8::Value> cache = + object->GetInternalField(V8Custom::kMessagePortRequestCacheIndex); + ASSERT(cache->IsArray()); + v8::Local<v8::Array> cache_array = v8::Local<v8::Array>::Cast(cache); + for (int i = cache_array->Length() - 1; i >= 0; i--) { + v8::Local<v8::Value> cached = cache_array->Get(v8::Integer::New(i)); + if (cached->StrictEquals(value)) { + cache_array->Delete(i); + return; + } + } + + // We should only get here if we try to remove an event listener that was + // never added. +} + +ACCESSOR_GETTER(MessagePortOnmessage) { + INC_STATS(L"DOM.MessagePort.onmessage._get"); + MessagePort* imp = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, info.Holder()); + if (imp->onmessage()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onmessage()); + v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); + return v8_listener; + } + return v8::Undefined(); +} + +ACCESSOR_SETTER(MessagePortOnmessage) { + INC_STATS(L"DOM.MessagePort.onmessage._set"); + MessagePort* imp = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, info.Holder()); + if (value->IsNull()) { + if (imp->onmessage()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onmessage()); + v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); + RemoveHiddenDependency(info.Holder(), v8_listener); + } + + // Clear the listener + imp->setOnmessage(0); + + } else { + V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); + if (!proxy) + return; + + RefPtr<EventListener> listener = + proxy->FindOrCreateObjectEventListener(value, false); + if (listener) { + imp->setOnmessage(listener); + CreateHiddenDependency(info.Holder(), value); + } + } +} + +ACCESSOR_GETTER(MessagePortOnclose) { + INC_STATS(L"DOM.MessagePort.onclose._get"); + MessagePort* imp = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, info.Holder()); + if (imp->onclose()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onclose()); + v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); + return v8_listener; + } + return v8::Undefined(); +} + +ACCESSOR_SETTER(MessagePortOnclose) { + INC_STATS(L"DOM.MessagePort.onclose._set"); + MessagePort* imp = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, info.Holder()); + if (value->IsNull()) { + if (imp->onclose()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onclose()); + v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); + RemoveHiddenDependency(info.Holder(), v8_listener); + } + + // Clear the listener + imp->setOnclose(0); + } else { + V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); + if (!proxy) + return; + + RefPtr<EventListener> listener = + proxy->FindOrCreateObjectEventListener(value, false); + if (listener) { + imp->setOnclose(listener); + CreateHiddenDependency(info.Holder(), value); + } + } +} + +CALLBACK_FUNC_DECL(MessagePortStartConversation) { + INC_STATS(L"DOM.MessagePort.StartConversation()"); + if (args.Length() < 1) { + V8Proxy::ThrowError(V8Proxy::SYNTAX_ERROR, "Not enough arguments"); + return v8::Undefined(); + } + + MessagePort* imp = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, args.Holder()); + + V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); + if (!proxy) + return v8::Undefined(); + + RefPtr<MessagePort> port = imp->startConversation(imp->document(), + ToWebCoreString(args[0])); + v8::Handle<v8::Value> wrapper = + V8Proxy::ToV8Object(V8ClassIndex::MESSAGEPORT, port.get()); + return wrapper; +} + +CALLBACK_FUNC_DECL(MessagePortAddEventListener) { + INC_STATS(L"DOM.MessagePort.AddEventListener()"); + MessagePort* imp = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, args.Holder()); + + V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); + if (!proxy) + return v8::Undefined(); + + RefPtr<EventListener> listener = + proxy->FindOrCreateObjectEventListener(args[1], false); + if (listener) { + String type = ToWebCoreString(args[0]); + bool useCapture = args[2]->BooleanValue(); + imp->addEventListener(type, listener, useCapture); + + CreateHiddenDependency(args.Holder(), args[1]); + } + return v8::Undefined(); +} + +CALLBACK_FUNC_DECL(MessagePortRemoveEventListener) { + INC_STATS(L"DOM.MessagePort.RemoveEventListener()"); + MessagePort* imp = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, args.Holder()); + + V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); + if (!proxy) + return v8::Undefined(); // probably leaked + + RefPtr<EventListener> listener = + proxy->FindObjectEventListener(args[1], false); + + if (listener) { + String type = ToWebCoreString(args[0]); + bool useCapture = args[2]->BooleanValue(); + imp->removeEventListener(type, listener.get(), useCapture); + + RemoveHiddenDependency(args.Holder(), args[1]); + } + + return v8::Undefined(); +} + + +} // namespace WebCore diff --git a/webkit/port/bindings/v8/V8XMLHttpRequestCustom.cpp b/webkit/port/bindings/v8/V8XMLHttpRequestCustom.cpp index ce4c84d..d61a8c32 100644 --- a/webkit/port/bindings/v8/V8XMLHttpRequestCustom.cpp +++ b/webkit/port/bindings/v8/V8XMLHttpRequestCustom.cpp @@ -107,9 +107,9 @@ ACCESSOR_GETTER(XMLHttpRequestOnabort) { INC_STATS(L"DOM.XMLHttpRequest.onabort._get"); XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); - if (imp->onAbortListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onAbortListener()); + if (imp->onabort()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onabort()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -121,24 +121,24 @@ ACCESSOR_SETTER(XMLHttpRequestOnabort) { XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); if (value->IsNull()) { - if (imp->onAbortListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onAbortListener()); + if (imp->onabort()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onabort()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnAbortListener(0); + imp->setOnabort(0); } else { V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); if (!proxy) return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnAbortListener(listener); + imp->setOnabort(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -148,9 +148,9 @@ ACCESSOR_GETTER(XMLHttpRequestOnerror) { INC_STATS(L"DOM.XMLHttpRequest.onerror._get"); XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); - if (imp->onErrorListener()) { - RefPtr<V8XHREventListener> listener = - static_cast<V8XHREventListener*>(imp->onErrorListener()); + if (imp->onerror()) { + RefPtr<V8ObjectEventListener> listener = + static_cast<V8ObjectEventListener*>(imp->onerror()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -162,24 +162,24 @@ ACCESSOR_SETTER(XMLHttpRequestOnerror) { XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); if (value->IsNull()) { - if (imp->onErrorListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onErrorListener()); + if (imp->onerror()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onerror()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnErrorListener(0); + imp->setOnerror(0); } else { V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); if (!proxy) return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnErrorListener(listener); + imp->setOnerror(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -189,9 +189,9 @@ ACCESSOR_GETTER(XMLHttpRequestOnload) { INC_STATS(L"DOM.XMLHttpRequest.onload._get"); XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); - if (imp->onLoadListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onLoadListener()); + if (imp->onload()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onload()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -205,7 +205,7 @@ ACCESSOR_SETTER(XMLHttpRequestOnload) V8ClassIndex::XMLHTTPREQUEST, info.Holder()); if (value->IsNull()) { if (imp->onload()) { - V8XHREventListener* listener = static_cast<V8XHREventListener*>(imp->onload()); + V8ObjectEventListener* listener = static_cast<V8ObjectEventListener*>(imp->onload()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } @@ -218,7 +218,7 @@ ACCESSOR_SETTER(XMLHttpRequestOnload) return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { imp->setOnload(listener.get()); CreateHiddenXHRDependency(info.Holder(), value); @@ -230,9 +230,9 @@ ACCESSOR_GETTER(XMLHttpRequestOnloadstart) { INC_STATS(L"DOM.XMLHttpRequest.onloadstart._get"); XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); - if (imp->onLoadStartListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onLoadStartListener()); + if (imp->onloadstart()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onloadstart()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -244,24 +244,24 @@ ACCESSOR_SETTER(XMLHttpRequestOnloadstart) { XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); if (value->IsNull()) { - if (imp->onLoadStartListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onLoadStartListener()); + if (imp->onloadstart()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onloadstart()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnLoadStartListener(0); + imp->setOnloadstart(0); } else { V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); if (!proxy) return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnLoadStartListener(listener); + imp->setOnloadstart(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -271,9 +271,9 @@ ACCESSOR_GETTER(XMLHttpRequestOnprogress) { INC_STATS(L"DOM.XMLHttpRequest.onprogress._get"); XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); - if (imp->onProgressListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onProgressListener()); + if (imp->onprogress()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onprogress()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -285,24 +285,24 @@ ACCESSOR_SETTER(XMLHttpRequestOnprogress) { XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); if (value->IsNull()) { - if (imp->onProgressListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onProgressListener()); + if (imp->onprogress()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onprogress()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnProgressListener(0); + imp->setOnprogress(0); } else { V8Proxy* proxy = V8Proxy::retrieve(imp->document()->frame()); if (!proxy) return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnProgressListener(listener); + imp->setOnprogress(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -312,9 +312,9 @@ ACCESSOR_GETTER(XMLHttpRequestOnreadystatechange) { INC_STATS(L"DOM.XMLHttpRequest.onreadystatechange._get"); XMLHttpRequest* imp = V8Proxy::ToNativeObject<XMLHttpRequest>( V8ClassIndex::XMLHTTPREQUEST, info.Holder()); - if (imp->onReadyStateChangeListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onReadyStateChangeListener()); + if (imp->onreadystatechange()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onreadystatechange()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -328,8 +328,8 @@ ACCESSOR_SETTER(XMLHttpRequestOnreadystatechange) V8ClassIndex::XMLHTTPREQUEST, info.Holder()); if (value->IsNull()) { if (imp->onreadystatechange()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onreadystatechange()); + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onreadystatechange()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } @@ -342,7 +342,7 @@ ACCESSOR_SETTER(XMLHttpRequestOnreadystatechange) return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { imp->setOnreadystatechange(listener.get()); CreateHiddenXHRDependency(info.Holder(), value); @@ -361,7 +361,7 @@ CALLBACK_FUNC_DECL(XMLHttpRequestAddEventListener) return v8::Undefined(); RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(args[1], false); + proxy->FindOrCreateObjectEventListener(args[1], false); if (listener) { String type = ToWebCoreString(args[0]); bool useCapture = args[2]->BooleanValue(); @@ -382,7 +382,7 @@ CALLBACK_FUNC_DECL(XMLHttpRequestRemoveEventListener) { return v8::Undefined(); // probably leaked RefPtr<EventListener> listener = - proxy->FindXHREventListener(args[1], false); + proxy->FindObjectEventListener(args[1], false); if (listener) { String type = ToWebCoreString(args[0]); @@ -544,9 +544,9 @@ ACCESSOR_GETTER(XMLHttpRequestUploadOnabort) { INC_STATS(L"DOM.XMLHttpRequestUpload.onabort._get"); XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); - if (imp->onAbortListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onAbortListener()); + if (imp->onabort()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onabort()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -558,15 +558,15 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnabort) { XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); if (value->IsNull()) { - if (imp->onAbortListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onAbortListener()); + if (imp->onabort()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onabort()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnAbortListener(0); + imp->setOnabort(0); } else { XMLHttpRequest* xmlhttprequest = imp->associatedXMLHttpRequest(); V8Proxy* proxy = V8Proxy::retrieve(xmlhttprequest->document()->frame()); @@ -574,9 +574,9 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnabort) { return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnAbortListener(listener); + imp->setOnabort(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -586,9 +586,9 @@ ACCESSOR_GETTER(XMLHttpRequestUploadOnerror) { INC_STATS(L"DOM.XMLHttpRequestUpload.onerror._get"); XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); - if (imp->onErrorListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onErrorListener()); + if (imp->onerror()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onerror()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -600,15 +600,15 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnerror) { XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); if (value->IsNull()) { - if (imp->onErrorListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onErrorListener()); + if (imp->onerror()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onerror()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnErrorListener(0); + imp->setOnerror(0); } else { XMLHttpRequest* xmlhttprequest = imp->associatedXMLHttpRequest(); V8Proxy* proxy = V8Proxy::retrieve(xmlhttprequest->document()->frame()); @@ -616,9 +616,9 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnerror) { return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnErrorListener(listener); + imp->setOnerror(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -628,9 +628,9 @@ ACCESSOR_GETTER(XMLHttpRequestUploadOnload) { INC_STATS(L"DOM.XMLHttpRequestUpload.onload._get"); XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); - if (imp->onLoadListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onLoadListener()); + if (imp->onload()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onload()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -642,15 +642,15 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnload) { XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); if (value->IsNull()) { - if (imp->onLoadListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onLoadListener()); + if (imp->onload()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onload()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnLoadListener(0); + imp->setOnload(0); } else { XMLHttpRequest* xmlhttprequest = imp->associatedXMLHttpRequest(); V8Proxy* proxy = V8Proxy::retrieve(xmlhttprequest->document()->frame()); @@ -658,9 +658,9 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnload) { return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnLoadListener(listener); + imp->setOnload(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -670,9 +670,9 @@ ACCESSOR_GETTER(XMLHttpRequestUploadOnloadstart) { INC_STATS(L"DOM.XMLHttpRequestUpload.onloadstart._get"); XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); - if (imp->onLoadStartListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onLoadStartListener()); + if (imp->onloadstart()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onloadstart()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -684,15 +684,15 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnloadstart) { XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); if (value->IsNull()) { - if (imp->onLoadStartListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onLoadStartListener()); + if (imp->onloadstart()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onloadstart()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnLoadStartListener(0); + imp->setOnloadstart(0); } else { XMLHttpRequest* xmlhttprequest = imp->associatedXMLHttpRequest(); V8Proxy* proxy = V8Proxy::retrieve(xmlhttprequest->document()->frame()); @@ -700,9 +700,9 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnloadstart) { return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnLoadStartListener(listener); + imp->setOnloadstart(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -712,9 +712,9 @@ ACCESSOR_GETTER(XMLHttpRequestUploadOnprogress) { INC_STATS(L"DOM.XMLHttpRequestUpload.onprogress._get"); XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); - if (imp->onProgressListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onProgressListener()); + if (imp->onprogress()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onprogress()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); return v8_listener; } @@ -726,15 +726,15 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnprogress) { XMLHttpRequestUpload* imp = V8Proxy::ToNativeObject<XMLHttpRequestUpload>( V8ClassIndex::XMLHTTPREQUESTUPLOAD, info.Holder()); if (value->IsNull()) { - if (imp->onProgressListener()) { - V8XHREventListener* listener = - static_cast<V8XHREventListener*>(imp->onProgressListener()); + if (imp->onprogress()) { + V8ObjectEventListener* listener = + static_cast<V8ObjectEventListener*>(imp->onprogress()); v8::Local<v8::Object> v8_listener = listener->GetListenerObject(); RemoveHiddenXHRDependency(info.Holder(), v8_listener); } // Clear the listener - imp->setOnProgressListener(0); + imp->setOnprogress(0); } else { XMLHttpRequest* xmlhttprequest = imp->associatedXMLHttpRequest(); V8Proxy* proxy = V8Proxy::retrieve(xmlhttprequest->document()->frame()); @@ -742,9 +742,9 @@ ACCESSOR_SETTER(XMLHttpRequestUploadOnprogress) { return; RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(value, false); + proxy->FindOrCreateObjectEventListener(value, false); if (listener) { - imp->setOnProgressListener(listener); + imp->setOnprogress(listener); CreateHiddenXHRDependency(info.Holder(), value); } } @@ -761,7 +761,7 @@ CALLBACK_FUNC_DECL(XMLHttpRequestUploadAddEventListener) { return v8::Undefined(); RefPtr<EventListener> listener = - proxy->FindOrCreateXHREventListener(args[1], false); + proxy->FindOrCreateObjectEventListener(args[1], false); if (listener) { String type = ToWebCoreString(args[0]); bool useCapture = args[2]->BooleanValue(); @@ -783,7 +783,7 @@ CALLBACK_FUNC_DECL(XMLHttpRequestUploadRemoveEventListener) { return v8::Undefined(); // probably leaked RefPtr<EventListener> listener = - proxy->FindXHREventListener(args[1], false); + proxy->FindObjectEventListener(args[1], false); if (listener) { String type = ToWebCoreString(args[0]); diff --git a/webkit/port/bindings/v8/v8_custom.cpp b/webkit/port/bindings/v8/v8_custom.cpp index 827323a..9bb904d 100644 --- a/webkit/port/bindings/v8/v8_custom.cpp +++ b/webkit/port/bindings/v8/v8_custom.cpp @@ -43,7 +43,6 @@ #include "V8HTMLImageElement.h" #include "V8HTMLOptionElement.h" #include "V8Node.h" -#include "V8NSResolver.h" #include "V8XPathNSResolver.h" #include "V8XPathResult.h" @@ -80,15 +79,17 @@ #include "HTMLFrameSetElement.h" #include "HTMLIFrameElement.h" #include "HTMLImageElement.h" +#include "HTMLInputElement.h" #include "HTMLNames.h" #include "HTMLOptionElement.h" #include "HTMLOptionsCollection.h" #include "HTMLSelectElement.h" #include "History.h" -#include "JSNSResolver.h" #include "JSXPathNSResolver.h" #include "KURL.h" #include "Location.h" +#include "MessageChannel.h" +#include "MessagePort.h" #include "MouseEvent.h" #include "NodeIterator.h" #include "Page.h" @@ -110,6 +111,7 @@ #if ENABLE(SVG) #include "V8SVGPODTypeWrapper.h" +#include "SVGElementInstance.h" #include "SVGException.h" #include "SVGPathSeg.h" #endif @@ -260,6 +262,33 @@ CALLBACK_FUNC_DECL(DOMParserConstructor) { DOMParser>(args); } +// TODO(mbelshe): merge this with the XHR Constructor. +// The only difference is that this one takes an argument to its +// create call, the XHR does not. +CALLBACK_FUNC_DECL(MessageChannelConstructor) { + INC_STATS(L"DOM.MessageChannel.Constructor"); + if (!args.IsConstructCall()) { + V8Proxy::ThrowError(V8Proxy::TYPE_ERROR, + "DOM object constructor cannot be called as a function."); + return v8::Undefined(); + } + + // Get the document. + Frame* frame = V8Proxy::retrieveFrame(); + if (!frame) + return v8::Undefined(); + Document* document = frame->document(); + + // Note: it's OK to let this RefPtr go out of scope because we also call + // SetDOMWrapper(), which effectively holds a reference to obj. + RefPtr<MessageChannel> obj = MessageChannel::create(document); + V8Proxy::SetDOMWrapper(args.Holder(), V8ClassIndex::MESSAGECHANNEL, + obj.get()); + V8Proxy::SetJSWrapperForDOMObject( + obj.get(), v8::Persistent<v8::Object>::New(args.Holder())); + return args.Holder(); +} + CALLBACK_FUNC_DECL(XMLSerializerConstructor) { INC_STATS(L"DOM.XMLSerializer.Constructor"); @@ -859,19 +888,31 @@ CALLBACK_FUNC_DECL(DOMWindowPostMessage) { v8::TryCatch try_catch; String message = ToWebCoreString(args[0]); - String domain = ToWebCoreString(args[1]); + MessagePort* port = NULL; + String domain; + + // This function has variable arguments and can either be: + // postMessage(message, port, domain); + // or + // postMessage(message, domain); + if (args.Length() > 2) { + port = V8Proxy::ToNativeObject<MessagePort>( + V8ClassIndex::MESSAGEPORT, args[1]); + domain = valueToStringWithNullOrUndefinedCheck(args[2]); + } else { + domain = valueToStringWithNullOrUndefinedCheck(args[1]); + } if (try_catch.HasCaught()) return v8::Undefined(); - ExceptionCode ec; - window->postMessage(message, domain, source, ec); + ExceptionCode ec = 0; + window->postMessage(message, port, domain, source, ec); if (ec) V8Proxy::SetDOMException(ec); return v8::Undefined(); } - static bool canShowModalDialogNow(const Frame* frame) { // A frame can out live its page. See bug 1219613. if (!frame || !frame->page()) @@ -2324,6 +2365,18 @@ CALLBACK_FUNC_DECL(ConsoleWarn) { return v8::Undefined(); } +CALLBACK_FUNC_DECL(ConsoleDirxml) { + INC_STATS(L"DOM.Console.dirxml()"); + V8Proxy::SetDOMException(NOT_SUPPORTED_ERR); + return v8::Undefined(); +} + +CALLBACK_FUNC_DECL(ConsoleTrace) { + INC_STATS(L"DOM.Console.trace()"); + V8Proxy::SetDOMException(NOT_SUPPORTED_ERR); + return v8::Undefined(); +} + // Clipboard ------------------------------------------------------------------- @@ -2488,69 +2541,6 @@ static bool AllowSettingFrameSrcToJavascriptUrl(HTMLFrameElementBase* frame, // Element --------------------------------------------------------------------- -CALLBACK_FUNC_DECL(ElementQuerySelector) { - INC_STATS(L"DOM.Element.querySelector()"); - Element* element = V8Proxy::DOMWrapperToNode<Element>(args.Holder()); - - ExceptionCode ec = 0; - - String selectors = valueToStringWithNullOrUndefinedCheck(args[0]); - - NSResolver* resolver = 0; - if (V8NSResolver::HasInstance(args[1])) { - resolver = V8Proxy::ToNativeObject<NSResolver>( - V8ClassIndex::NSRESOLVER, args[1]); - } else if (args[1]->IsObject()) { - resolver = new JSNSResolver(args[1]->ToObject()); - } else if (!args[1]->IsNull() && !args[1]->IsUndefined()) { - V8Proxy::SetDOMException(TYPE_MISMATCH_ERR); - return v8::Handle<v8::Value>(); - } - OwnPtr<ExceptionContext> context(new ExceptionContext()); - RefPtr<Element> result = WTF::getPtr( - element->querySelector(selectors, resolver, ec, context.get())); - if (ec != 0) { - V8Proxy::SetDOMException(ec); - return v8::Handle<v8::Value>(); - } - if (context->hadException()) { - v8::ThrowException(context->exception()); - return v8::Undefined(); - } - return V8Proxy::ToV8Object(V8ClassIndex::NODE, WTF::getPtr(result)); -} - -CALLBACK_FUNC_DECL(ElementQuerySelectorAll) { - INC_STATS(L"DOM.Element.querySelectorAll()"); - Element* element = V8Proxy::DOMWrapperToNode<Element>(args.Holder()); - ExceptionCode ec = 0; - - String selectors = valueToStringWithNullOrUndefinedCheck(args[0]); - - NSResolver* resolver = 0; - if (V8NSResolver::HasInstance(args[1])) { - resolver = V8Proxy::ToNativeObject<NSResolver>( - V8ClassIndex::NSRESOLVER, args[1]); - } else if (args[1]->IsObject()) { - resolver = new JSNSResolver(args[1]->ToObject()); - } else if (!args[1]->IsNull() && !args[1]->IsUndefined()) { - V8Proxy::SetDOMException(TYPE_MISMATCH_ERR); - return v8::Handle<v8::Value>(); - } - OwnPtr<ExceptionContext> context(new ExceptionContext()); - RefPtr<NodeList> result = WTF::getPtr( - element->querySelectorAll(selectors, resolver, ec, context.get())); - if (ec != 0) { - V8Proxy::SetDOMException(ec); - return v8::Handle<v8::Value>(); - } - if (context->hadException()) { - v8::ThrowException(context->exception()); - return v8::Undefined(); - } - return V8Proxy::ToV8Object(V8ClassIndex::NODELIST, WTF::getPtr(result)); -} - CALLBACK_FUNC_DECL(ElementSetAttribute) { INC_STATS(L"DOM.Element.setAttribute()"); Element* imp = V8Proxy::DOMWrapperToNode<Element>(args.Holder()); @@ -2857,142 +2847,19 @@ CALLBACK_FUNC_DECL(DocumentEvaluate) { inResult = V8Proxy::ToNativeObject<XPathResult>( V8ClassIndex::XPATHRESULT, args[4]); } + + v8::TryCatch try_catch; RefPtr<XPathResult> result = imp->evaluate(expression, contextNode, resolver, type, inResult, ec); - if (ec != 0) { - V8Proxy::SetDOMException(ec); + if (try_catch.HasCaught() || ec != 0) { + if (!try_catch.HasCaught()) + V8Proxy::SetDOMException(ec); return v8::Handle<v8::Value>(); } return V8Proxy::ToV8Object(V8ClassIndex::XPATHRESULT, static_cast<Peerable*>(result.get())); } -CALLBACK_FUNC_DECL(DocumentQuerySelector) { - INC_STATS(L"DOM.Document.querySelector()"); - Document* document = V8Proxy::DOMWrapperToNode<Document>(args.Holder()); - ExceptionCode ec = 0; - - String selectors = valueToStringWithNullOrUndefinedCheck(args[0]); - - NSResolver* resolver = 0; - if (V8NSResolver::HasInstance(args[1])) { - resolver = V8Proxy::ToNativeObject<NSResolver>( - V8ClassIndex::NSRESOLVER, args[1]); - } else if (args[1]->IsObject()) { - resolver = new JSNSResolver(args[1]->ToObject()); - } else if (!args[1]->IsNull() && !args[1]->IsUndefined()) { - V8Proxy::SetDOMException(TYPE_MISMATCH_ERR); - return v8::Handle<v8::Value>(); - } - OwnPtr<ExceptionContext> context(new ExceptionContext()); - RefPtr<Element> result = WTF::getPtr( - document->querySelector(selectors, resolver, ec, context.get())); - if (ec != 0) { - V8Proxy::SetDOMException(ec); - return v8::Handle<v8::Value>(); - } - if (context->hadException()) { - v8::ThrowException(context->exception()); - return v8::Undefined(); - } - return V8Proxy::ToV8Object(V8ClassIndex::NODE, WTF::getPtr(result)); -} - -CALLBACK_FUNC_DECL(DocumentQuerySelectorAll) { - INC_STATS(L"DOM.Document.querySelectorAll()"); - Document* document = V8Proxy::DOMWrapperToNode<Document>(args.Holder()); - ExceptionCode ec = 0; - - String selectors = valueToStringWithNullOrUndefinedCheck(args[0]); - - NSResolver* resolver = 0; - if (V8NSResolver::HasInstance(args[1])) { - resolver = V8Proxy::ToNativeObject<NSResolver>( - V8ClassIndex::NSRESOLVER, args[1]); - } else if (args[1]->IsObject()) { - resolver = new JSNSResolver(args[1]->ToObject()); - } else if (!args[1]->IsNull() && !args[1]->IsUndefined()) { - V8Proxy::SetDOMException(TYPE_MISMATCH_ERR); - return v8::Handle<v8::Value>(); - } - OwnPtr<ExceptionContext> context(new ExceptionContext()); - RefPtr<NodeList> result = WTF::getPtr( - document->querySelectorAll(selectors, resolver, ec, context.get())); - if (ec != 0) { - V8Proxy::SetDOMException(ec); - return v8::Handle<v8::Value>(); - } - if (context->hadException()) { - v8::ThrowException(context->exception()); - return v8::Undefined(); - } - return V8Proxy::ToV8Object(V8ClassIndex::NODELIST, WTF::getPtr(result)); -} - -CALLBACK_FUNC_DECL(DocumentFragmentQuerySelector) { - INC_STATS(L"DOM.DocumentFragment.querySelector()"); - DocumentFragment* fragment = - V8Proxy::DOMWrapperToNode<DocumentFragment>(args.Holder()); - ExceptionCode ec = 0; - - String selectors = valueToStringWithNullOrUndefinedCheck(args[0]); - - NSResolver* resolver = 0; - if (V8NSResolver::HasInstance(args[1])) { - resolver = V8Proxy::ToNativeObject<NSResolver>( - V8ClassIndex::NSRESOLVER, args[1]); - } else if (args[1]->IsObject()) { - resolver = new JSNSResolver(args[1]->ToObject()); - } else if (!args[1]->IsNull() && !args[1]->IsUndefined()) { - V8Proxy::SetDOMException(TYPE_MISMATCH_ERR); - return v8::Handle<v8::Value>(); - } - OwnPtr<ExceptionContext> context(new ExceptionContext()); - RefPtr<Element> result = WTF::getPtr( - fragment->querySelector(selectors, resolver, ec, context.get())); - if (ec != 0) { - V8Proxy::SetDOMException(ec); - return v8::Handle<v8::Value>(); - } - if (context->hadException()) { - v8::ThrowException(context->exception()); - return v8::Undefined(); - } - return V8Proxy::ToV8Object(V8ClassIndex::NODE, WTF::getPtr(result)); -} - -CALLBACK_FUNC_DECL(DocumentFragmentQuerySelectorAll) { - INC_STATS(L"DOM.DocumentFragment.querySelectorAll()"); - DocumentFragment* fragment = - V8Proxy::DOMWrapperToNode<DocumentFragment>(args.Holder()); - ExceptionCode ec = 0; - - String selectors = valueToStringWithNullOrUndefinedCheck(args[0]); - - NSResolver* resolver = 0; - if (V8NSResolver::HasInstance(args[1])) { - resolver = V8Proxy::ToNativeObject<NSResolver>( - V8ClassIndex::NSRESOLVER, args[1]); - } else if (args[1]->IsObject()) { - resolver = new JSNSResolver(args[1]->ToObject()); - } else if (!args[1]->IsNull() && !args[1]->IsUndefined()) { - V8Proxy::SetDOMException(TYPE_MISMATCH_ERR); - return v8::Handle<v8::Value>(); - } - OwnPtr<ExceptionContext> context(new ExceptionContext()); - RefPtr<NodeList> result = WTF::getPtr( - fragment->querySelectorAll(selectors, resolver, ec, context.get())); - if (ec != 0) { - V8Proxy::SetDOMException(ec); - return v8::Handle<v8::Value>(); - } - if (context->hadException()) { - v8::ThrowException(context->exception()); - return v8::Undefined(); - } - return V8Proxy::ToV8Object(V8ClassIndex::NODELIST, WTF::getPtr(result)); -} - // DOMWindow ------------------------------------------------------------------- static bool IsAscii(const String& str) { @@ -3291,14 +3158,6 @@ CALLBACK_FUNC_DECL(NodeFilterAcceptNode) { return v8::Undefined(); } -// NSResolver -CALLBACK_FUNC_DECL(NSResolverLookupNamespaceURI) { - INC_STATS(L"DOM.NSResolver.lookupNamespaceURI()"); - V8Proxy::SetDOMException(NOT_SUPPORTED_ERR); - return v8::Undefined(); -} - - static String EventNameFromAttributeName(const String& name) { ASSERT(name.startsWith("on")); String event_type = name.substring(2); @@ -3345,7 +3204,7 @@ ACCESSOR_SETTER(DOMWindowEventHandler) { if (value->IsNull()) { // Clear the event listener - doc->removeHTMLWindowEventListener(event_type); + doc->removeWindowEventListenerForType(event_type); } else { V8Proxy* proxy = V8Proxy::retrieve(imp->frame()); if (!proxy) @@ -3354,7 +3213,7 @@ ACCESSOR_SETTER(DOMWindowEventHandler) { RefPtr<EventListener> listener = proxy->FindOrCreateV8EventListener(value, true); if (listener) { - doc->setHTMLWindowEventListener(event_type, listener); + doc->setWindowEventListenerForType(event_type, listener); } } } @@ -3378,7 +3237,7 @@ ACCESSOR_GETTER(DOMWindowEventHandler) { String key = ToWebCoreString(name); String event_type = EventNameFromAttributeName(key); - EventListener* listener = doc->getHTMLWindowEventListener(event_type); + EventListener* listener = doc->windowEventListenerForType(event_type); return V8Proxy::EventListenerToV8Object(listener); } @@ -3406,10 +3265,10 @@ ACCESSOR_SETTER(ElementEventHandler) { RefPtr<EventListener> listener = proxy->FindOrCreateV8EventListener(value, true); if (listener) { - node->setHTMLEventListener(event_type, listener); + node->setEventListenerForType(event_type, listener); } } else { - node->removeHTMLEventListener(event_type); + node->removeEventListenerForType(event_type); } } @@ -3423,7 +3282,7 @@ ACCESSOR_GETTER(ElementEventHandler) { ASSERT(key.startsWith("on")); String event_type = key.substring(2); - EventListener* listener = node->getHTMLEventListener(event_type); + EventListener* listener = node->eventListenerForType(event_type); return V8Proxy::EventListenerToV8Object(listener); } @@ -3448,6 +3307,30 @@ ACCESSOR_SETTER(HTMLOptionsCollectionLength) { V8Proxy::SetDOMException(ec); } +ACCESSOR_GETTER(HTMLInputElementSelectionStart) { + INC_STATS(L"DOM.HTMLInputElement.selectionStart._get"); + v8::Handle<v8::Object> holder = info.Holder(); + HTMLInputElement* imp = V8Proxy::DOMWrapperToNode<HTMLInputElement>(holder); + + if (!imp->canHaveSelection()) + return v8::Undefined(); + + int v = imp->selectionStart(); + return v8::Integer::New(v); +} + +ACCESSOR_GETTER(HTMLInputElementSelectionEnd) { + INC_STATS(L"DOM.HTMLInputElement.selectionEnd._get"); + v8::Handle<v8::Object> holder = info.Holder(); + HTMLInputElement* imp = V8Proxy::DOMWrapperToNode<HTMLInputElement>(holder); + + if (!imp->canHaveSelection()) + return v8::Undefined(); + + int v = imp->selectionEnd(); + return v8::Integer::New(v); +} + #if ENABLE(SVG) ACCESSOR_GETTER(SVGLengthValue) { @@ -3510,6 +3393,48 @@ CALLBACK_FUNC_DECL(SVGMatrixRotateFromVector) { return V8Proxy::ToV8Object(V8ClassIndex::SVGMATRIX, peer); } +CALLBACK_FUNC_DECL(SVGElementInstanceAddEventListener) { + INC_STATS(L"DOM.SVGElementInstance.AddEventListener()"); + SVGElementInstance* instance = + V8Proxy::DOMWrapperToNative<SVGElementInstance>(args.Holder()); + + V8Proxy* proxy = V8Proxy::retrieve(instance->associatedFrame()); + if (!proxy) + return v8::Undefined(); + + RefPtr<EventListener> listener = + proxy->FindOrCreateV8EventListener(args[1], false); + if (listener) { + String type = ToWebCoreString(args[0]); + bool useCapture = args[2]->BooleanValue(); + instance->addEventListener(type, listener, useCapture); + } + return v8::Undefined(); +} + +CALLBACK_FUNC_DECL(SVGElementInstanceRemoveEventListener) { + INC_STATS(L"DOM.SVGElementInstance.RemoveEventListener()"); + SVGElementInstance* instance = + V8Proxy::DOMWrapperToNative<SVGElementInstance>(args.Holder()); + + V8Proxy* proxy = V8Proxy::retrieve(instance->associatedFrame()); + // It is possbile that the owner document of the node is detached + // from the frame, return immediately in this case. + // See issue 878909 + if (!proxy) + return v8::Undefined(); + + RefPtr<EventListener> listener = + proxy->FindV8EventListener(args[1], false); + if (listener) { + String type = ToWebCoreString(args[0]); + bool useCapture = args[2]->BooleanValue(); + instance->removeEventListener(type, listener.get(), useCapture); + } + + return v8::Undefined(); +} + #endif // ENABLE(SVG) // --------------- Security Checks ------------------------- diff --git a/webkit/port/bindings/v8/v8_custom.h b/webkit/port/bindings/v8/v8_custom.h index 302b80a..ef2fb4d 100644 --- a/webkit/port/bindings/v8/v8_custom.h +++ b/webkit/port/bindings/v8/v8_custom.h @@ -54,6 +54,11 @@ class V8Custom { static const int kXMLHttpRequestInternalFieldCount = kDefaultWrapperInternalFieldCount + 1; + static const int kMessagePortRequestCacheIndex = + kDefaultWrapperInternalFieldCount + 0; + static const int kMessagePortInternalFieldCount = + kDefaultWrapperInternalFieldCount + 1; + static const int kDOMWindowLocationIndex = kDefaultWrapperInternalFieldCount + 0; static const int kDOMWindowNavigatorIndex = @@ -172,6 +177,10 @@ DECLARE_PROPERTY_ACCESSOR_SETTER(AttrValue) // Customized setter of HTMLOptionsCollection length DECLARE_PROPERTY_ACCESSOR_SETTER(HTMLOptionsCollectionLength) +// Customized accessors for HTMLInputElement +DECLARE_PROPERTY_ACCESSOR_GETTER(HTMLInputElementSelectionStart) +DECLARE_PROPERTY_ACCESSOR_GETTER(HTMLInputElementSelectionEnd) + DECLARE_NAMED_ACCESS_CHECK(Location) DECLARE_INDEXED_ACCESS_CHECK(History) @@ -217,6 +226,7 @@ DECLARE_CALLBACK(DOMWindowShowModalDialog) DECLARE_CALLBACK(DOMWindowOpen) DECLARE_CALLBACK(DOMParserConstructor) +DECLARE_CALLBACK(MessageChannelConstructor) DECLARE_CALLBACK(XMLHttpRequestConstructor) DECLARE_CALLBACK(XMLSerializerConstructor) DECLARE_CALLBACK(XPathEvaluatorConstructor) @@ -258,6 +268,8 @@ DECLARE_CALLBACK(ConsoleProfile) DECLARE_CALLBACK(ConsoleProfileEnd) DECLARE_CALLBACK(ConsoleTimeEnd) DECLARE_CALLBACK(ConsoleWarn) +DECLARE_CALLBACK(ConsoleDirxml) +DECLARE_CALLBACK(ConsoleTrace) // Implementation of Clipboard attributes and methods. DECLARE_PROPERTY_ACCESSOR_GETTER(ClipboardTypes) @@ -360,8 +372,12 @@ DECLARE_NAMED_PROPERTY_GETTER(HTMLCollection) DECLARE_INDEXED_PROPERTY_GETTER(CanvasPixelArray) DECLARE_INDEXED_PROPERTY_SETTER(CanvasPixelArray) -// NSResolver -DECLARE_CALLBACK(NSResolverLookupNamespaceURI) +// MessagePort +DECLARE_PROPERTY_ACCESSOR(MessagePortOnmessage) +DECLARE_PROPERTY_ACCESSOR(MessagePortOnclose) +DECLARE_CALLBACK(MessagePortStartConversation) +DECLARE_CALLBACK(MessagePortAddEventListener) +DECLARE_CALLBACK(MessagePortRemoveEventListener) // SVG custom properties and callbacks #if ENABLE(SVG) @@ -369,6 +385,8 @@ DECLARE_PROPERTY_ACCESSOR_GETTER(SVGLengthValue) DECLARE_CALLBACK(SVGLengthConvertToSpecifiedUnits) DECLARE_CALLBACK(SVGMatrixInverse) DECLARE_CALLBACK(SVGMatrixRotateFromVector) +DECLARE_CALLBACK(SVGElementInstanceAddEventListener) +DECLARE_CALLBACK(SVGElementInstanceRemoveEventListener) #endif #undef DECLARE_INDEXED_ACCESS_CHECK diff --git a/webkit/port/bindings/v8/v8_events.cpp b/webkit/port/bindings/v8/v8_events.cpp index dd11bb2..bdd7e8a 100644 --- a/webkit/port/bindings/v8/v8_events.cpp +++ b/webkit/port/bindings/v8/v8_events.cpp @@ -61,8 +61,8 @@ V8AbstractEventListener::V8AbstractEventListener(Frame* frame, bool html) void V8AbstractEventListener::handleEvent(Event* event, bool isWindowEvent) { // EventListener could be disconnected from the frame. - ASSERT(m_frame); - if (!m_frame) return; + if (!m_frame) + return; // The callback function on XMLHttpRequest can clear the event listener // and destroys 'this' object. Keep a local reference of it. @@ -72,7 +72,8 @@ void V8AbstractEventListener::handleEvent(Event* event, bool isWindowEvent) { v8::HandleScope handle_scope; v8::Handle<v8::Context> context = V8Proxy::GetContext(m_frame); - if (context.IsEmpty()) return; + if (context.IsEmpty()) + return; v8::Context::Scope scope(context); // m_frame can removed by the callback function, @@ -227,6 +228,11 @@ v8::Local<v8::Object> V8EventListener::GetThisObject(Event* event, v8::Handle<v8::Value> value = V8Proxy::ToV8Object( V8ClassIndex::XMLHTTPREQUESTUPLOAD, target->toXMLHttpRequestUpload()); return v8::Local<v8::Object>::New(v8::Handle<v8::Object>::Cast(value)); + + } else if (target->toMessagePort()) { + v8::Handle<v8::Value> value = V8Proxy::ToV8Object( + V8ClassIndex::MESSAGEPORT, target->toMessagePort()); + return v8::Local<v8::Object>::New(v8::Handle<v8::Object>::Cast(value)); } else { ASSERT(false); @@ -237,16 +243,16 @@ v8::Local<v8::Object> V8EventListener::GetThisObject(Event* event, // ------- V 8 X H R E v e n t L i s t e n e r ----------------- -static void WeakXHRListenerCallback(v8::Persistent<v8::Value> obj, +static void WeakObjectEventListenerCallback(v8::Persistent<v8::Value> obj, void* para) { - V8XHREventListener* listener = static_cast<V8XHREventListener*>(para); + V8ObjectEventListener* listener = static_cast<V8ObjectEventListener*>(para); // Remove the wrapper Frame* frame = listener->frame(); if (frame) { V8Proxy* proxy = V8Proxy::retrieve(frame); if (proxy) - proxy->RemoveXHREventListener(listener); + proxy->RemoveObjectEventListener(listener); // Because the listener is no longer in the list, it must // be disconnected from the frame to avoid dangling frame pointer @@ -259,21 +265,21 @@ static void WeakXHRListenerCallback(v8::Persistent<v8::Value> obj, } -V8XHREventListener::V8XHREventListener(Frame* frame, +V8ObjectEventListener::V8ObjectEventListener(Frame* frame, v8::Local<v8::Object> listener, bool html) : V8EventListener(frame, listener, html) { // make m_listener weak. - m_listener.MakeWeak(this, WeakXHRListenerCallback); + m_listener.MakeWeak(this, WeakObjectEventListenerCallback); } -V8XHREventListener::~V8XHREventListener() { +V8ObjectEventListener::~V8ObjectEventListener() { if (m_frame) { ASSERT(!m_listener.IsEmpty()); V8Proxy* proxy = V8Proxy::retrieve(m_frame); if (proxy) - proxy->RemoveXHREventListener(this); + proxy->RemoveObjectEventListener(this); } DisposeListenerObject(); diff --git a/webkit/port/bindings/v8/v8_events.h b/webkit/port/bindings/v8/v8_events.h index 72e077a..5ff5e96 100644 --- a/webkit/port/bindings/v8/v8_events.h +++ b/webkit/port/bindings/v8/v8_events.h @@ -72,7 +72,7 @@ class V8AbstractEventListener : public EventListener { int m_columnNumber; friend class V8EventListener; - friend class V8XHREventListener; + friend class V8ObjectEventListener; friend class V8LazyEventListener; }; @@ -102,16 +102,16 @@ class V8EventListener : public V8AbstractEventListener { }; -// V8XHREventListener is a special listener wrapper for XMLHttpRequest object. -// It keeps JS listener week. -class V8XHREventListener : public V8EventListener { +// V8ObjectEventListener is a special listener wrapper for objects not +// in the DOM. It keeps the JS listener as a weak pointer. +class V8ObjectEventListener : public V8EventListener { public: - static PassRefPtr<V8XHREventListener> create(Frame* frame, + static PassRefPtr<V8ObjectEventListener> create(Frame* frame, v8::Local<v8::Object> listener, bool html) { - return adoptRef(new V8XHREventListener(frame, listener, html)); + return adoptRef(new V8ObjectEventListener(frame, listener, html)); } - V8XHREventListener(Frame* frame, v8::Local<v8::Object> listener, bool html); - virtual ~V8XHREventListener(); + V8ObjectEventListener(Frame* frame, v8::Local<v8::Object> listener, bool html); + virtual ~V8ObjectEventListener(); }; diff --git a/webkit/port/bindings/v8/v8_index.cpp b/webkit/port/bindings/v8/v8_index.cpp index 902ebfb..d785d73 100644 --- a/webkit/port/bindings/v8/v8_index.cpp +++ b/webkit/port/bindings/v8/v8_index.cpp @@ -102,7 +102,6 @@ #include "V8HTMLIFrameElement.h" #include "V8HTMLImageElement.h" #include "V8HTMLInputElement.h" -#include "V8HTMLSelectionInputElement.h" #include "V8HTMLIsIndexElement.h" #include "V8HTMLLabelElement.h" #include "V8HTMLLegendElement.h" @@ -135,13 +134,14 @@ #include "V8ImageData.h" #include "V8InspectorController.h" #include "V8MediaList.h" +#include "V8MessageChannel.h" #include "V8MessageEvent.h" +#include "V8MessagePort.h" #include "V8NamedNodeMap.h" #include "V8Node.h" #include "V8NodeList.h" #include "V8NodeFilter.h" #include "V8Notation.h" -#include "V8NSResolver.h" #include "V8ProcessingInstruction.h" #include "V8ProgressEvent.h" #include "V8StyleSheet.h" diff --git a/webkit/port/bindings/v8/v8_index.h b/webkit/port/bindings/v8/v8_index.h index 109f702..5ba923d 100644 --- a/webkit/port/bindings/v8/v8_index.h +++ b/webkit/port/bindings/v8/v8_index.h @@ -61,7 +61,6 @@ typedef v8::Persistent<v8::FunctionTemplate> (*FunctionTemplateFactory)(); V(HTMLIFRAMEELEMENT, HTMLIFrameElement) \ V(HTMLIMAGEELEMENT, HTMLImageElement) \ V(HTMLINPUTELEMENT, HTMLInputElement) \ - V(HTMLSELECTIONINPUTELEMENT, HTMLSelectionInputElement) \ V(HTMLISINDEXELEMENT, HTMLIsIndexElement) \ V(HTMLLABELELEMENT, HTMLLabelElement) \ V(HTMLLEGENDELEMENT, HTMLLegendElement) \ @@ -251,7 +250,9 @@ typedef v8::Persistent<v8::FunctionTemplate> (*FunctionTemplateFactory)(); V(KEYBOARDEVENT, KeyboardEvent) \ V(LOCATION, Location) \ V(MEDIALIST, MediaList) \ + V(MESSAGECHANNEL, MessageChannel) \ V(MESSAGEEVENT, MessageEvent) \ + V(MESSAGEPORT, MessagePort) \ V(MIMETYPE, MimeType) \ V(MIMETYPEARRAY, MimeTypeArray) \ V(MOUSEEVENT, MouseEvent) \ @@ -261,7 +262,6 @@ typedef v8::Persistent<v8::FunctionTemplate> (*FunctionTemplateFactory)(); V(NODEFILTER, NodeFilter) \ V(NODEITERATOR, NodeIterator) \ V(NODELIST, NodeList) \ - V(NSRESOLVER, NSResolver) \ V(OVERFLOWEVENT, OverflowEvent) \ V(PLUGIN, Plugin) \ V(PLUGINARRAY, PluginArray) \ diff --git a/webkit/port/bindings/v8/v8_proxy.cpp b/webkit/port/bindings/v8/v8_proxy.cpp index f21197b..4e84ae1 100644 --- a/webkit/port/bindings/v8/v8_proxy.cpp +++ b/webkit/port/bindings/v8/v8_proxy.cpp @@ -903,44 +903,48 @@ PassRefPtr<V8EventListener> V8Proxy::FindOrCreateV8EventListener(v8::Local<v8::V } -// XMLHttpRequest(XHR) event listeners are different from listeners -// on DOM nodes. A XHR event listener wrapper only hold a weak reference -// to the JS function. A strong reference can create a cycle. +// Object event listeners (such as XmlHttpRequest and MessagePort) are +// different from listeners on DOM nodes. An object event listener wrapper +// only holds a weak reference to the JS function. A strong reference can +// create a cycle. // -// The lifetime of a XHR object is bounded by the life time of its JS_XHR -// object. So we can create a hidden reference from JS_XHR to JS function. +// The lifetime of these objects is bounded by the life time of its JS +// wrapper. So we can create a hidden reference from the JS wrapper to +// to its JS function. // // (peer) -// XHR <---------- JS_XHR +// XHR <---------- JS_wrapper // | (hidden) : ^ // V V : (may reachable by closure) // V8_listener --------> JS_function // (weak) <-- may create a cycle if it is strong // // The persistent reference is made weak in the constructor -// of V8XHREventListener. +// of V8ObjectEventListener. -PassRefPtr<V8EventListener> V8Proxy::FindXHREventListener( +PassRefPtr<V8EventListener> V8Proxy::FindObjectEventListener( v8::Local<v8::Value> listener, bool html) { return FindEventListenerInList(m_xhr_listeners, listener, html); } -PassRefPtr<V8EventListener> V8Proxy::FindOrCreateXHREventListener( +PassRefPtr<V8EventListener> V8Proxy::FindOrCreateObjectEventListener( v8::Local<v8::Value> obj, bool html) { ASSERT(v8::Context::InContext()); - if (!obj->IsObject()) return 0; + if (!obj->IsObject()) + return 0; V8EventListener* wrapper = FindEventListenerInList(m_xhr_listeners, obj, html); - if (wrapper) return wrapper; + if (wrapper) + return wrapper; // Create a new one, and add to cache. RefPtr<V8EventListener> new_listener = - V8XHREventListener::create(m_frame, v8::Local<v8::Object>::Cast(obj), html); + V8ObjectEventListener::create(m_frame, v8::Local<v8::Object>::Cast(obj), html); m_xhr_listeners.push_back(new_listener.get()); return new_listener.release(); @@ -967,7 +971,7 @@ void V8Proxy::RemoveV8EventListener(V8EventListener* listener) } -void V8Proxy::RemoveXHREventListener(V8XHREventListener* listener) +void V8Proxy::RemoveObjectEventListener(V8ObjectEventListener* listener) { RemoveEventListenerFromList(m_xhr_listeners, listener); } @@ -1120,7 +1124,8 @@ v8::Local<v8::Value> V8Proxy::CallFunction(v8::Handle<v8::Function> function, // of recursion that stems from calling functions. This is in // contrast to the script evaluations. v8::Local<v8::Value> result; - { ConsoleMessageScope scope; + { + ConsoleMessageScope scope; // Evaluating the JavaScript could cause the frame to be deallocated, // so we start the keep alive timer here. @@ -1145,7 +1150,8 @@ v8::Persistent<v8::FunctionTemplate> V8Proxy::GetTemplate( { v8::Persistent<v8::FunctionTemplate>* cache_cell = V8ClassIndex::GetCache(type); - if (!(*cache_cell).IsEmpty()) return *cache_cell; + if (!(*cache_cell).IsEmpty()) + return *cache_cell; // not found FunctionTemplateFactory factory = V8ClassIndex::GetFactory(type); @@ -1377,6 +1383,18 @@ v8::Persistent<v8::FunctionTemplate> V8Proxy::GetTemplate( break; } + case V8ClassIndex::MESSAGECHANNEL: + desc->SetCallHandler(USE_CALLBACK(MessageChannelConstructor)); + break; + case V8ClassIndex::MESSAGEPORT: { + // Reserve one more internal field for keeping event listeners. + v8::Local<v8::ObjectTemplate> instance_template = + desc->InstanceTemplate(); + instance_template->SetInternalFieldCount( + V8Custom::kMessagePortInternalFieldCount); + break; + } + // DOMParser, XMLSerializer, and XMLHttpRequest objects are created from // JS world, but we setup the constructor function lazily in // WindowNamedPropertyHandler::get. @@ -1388,12 +1406,12 @@ v8::Persistent<v8::FunctionTemplate> V8Proxy::GetTemplate( break; case V8ClassIndex::XMLHTTPREQUEST: { // Reserve one more internal field for keeping event listeners. - v8::Local<v8::ObjectTemplate> instance_template = - desc->InstanceTemplate(); - instance_template->SetInternalFieldCount( - V8Custom::kXMLHttpRequestInternalFieldCount); - desc->SetCallHandler(USE_CALLBACK(XMLHttpRequestConstructor)); - break; + v8::Local<v8::ObjectTemplate> instance_template = + desc->InstanceTemplate(); + instance_template->SetInternalFieldCount( + V8Custom::kXMLHttpRequestInternalFieldCount); + desc->SetCallHandler(USE_CALLBACK(XMLHttpRequestConstructor)); + break; } case V8ClassIndex::XMLHTTPREQUESTUPLOAD: { // Reserve one more internal field for keeping event listeners. @@ -1702,7 +1720,11 @@ static void GenerateSecurityToken(v8::Local<v8::Context> context) // Ask the document's SecurityOrigin to generate a security token. // If two tokens are equal, then the SecurityOrigins canAccess each other. // If two tokens are not equal, then we have to call canAccess. - String token = document->securityOrigin()->securityToken(); + // Note: we can't use the HTTPOrigin if it was set from the DOM. + SecurityOrigin* origin = document->securityOrigin(); + String token; + if (!origin->domainWasSetInDOM()) + token = document->securityOrigin()->toString(); // An empty token means we always have to call canAccess. In this case, we // use the global object as the security token to avoid calling canAccess @@ -2120,13 +2142,6 @@ v8::Local<v8::Object> V8Proxy::InstantiateV8Object( desc_type = V8ClassIndex::UNDETECTABLEHTMLCOLLECTION; } - // Special case for HTMLInputElements that support selection. - if (desc_type == V8ClassIndex::HTMLINPUTELEMENT) { - HTMLInputElement* element = static_cast<HTMLInputElement*>(imp); - if (element->canHaveSelection()) - desc_type = V8ClassIndex::HTMLSELECTIONINPUTELEMENT; - } - v8::Persistent<v8::FunctionTemplate> desc = GetTemplate(desc_type); v8::Local<v8::Function> function = desc->GetFunction(); v8::Local<v8::Object> instance = SafeAllocation::NewInstance(function); diff --git a/webkit/port/bindings/v8/v8_proxy.h b/webkit/port/bindings/v8/v8_proxy.h index f1b558f..5c2c246 100644 --- a/webkit/port/bindings/v8/v8_proxy.h +++ b/webkit/port/bindings/v8/v8_proxy.h @@ -70,7 +70,7 @@ class SVGElementInstance; #endif class V8EventListener; -class V8XHREventListener; +class V8ObjectEventListener; typedef std::list<V8EventListener*> V8EventListenerList; // TODO(fqian): use standard logging facilities in WebCore. @@ -197,13 +197,13 @@ class V8Proxy { PassRefPtr<V8EventListener> FindOrCreateV8EventListener(v8::Local<v8::Value> listener, bool html); - PassRefPtr<V8EventListener> FindXHREventListener(v8::Local<v8::Value> listener, + PassRefPtr<V8EventListener> FindObjectEventListener(v8::Local<v8::Value> listener, bool html); - PassRefPtr<V8EventListener> FindOrCreateXHREventListener(v8::Local<v8::Value> listener, + PassRefPtr<V8EventListener> FindOrCreateObjectEventListener(v8::Local<v8::Value> listener, bool html); void RemoveV8EventListener(V8EventListener* listener); - void RemoveXHREventListener(V8XHREventListener* listener); + void RemoveObjectEventListener(V8ObjectEventListener* listener); // Protect/Unprotect JS wrappers of a DOM object. static void GCProtect(Peerable* dom_object); diff --git a/webkit/port/bindings/v8/v8_utility.h b/webkit/port/bindings/v8/v8_utility.h index 5e7df97..2dd52bf 100644 --- a/webkit/port/bindings/v8/v8_utility.h +++ b/webkit/port/bindings/v8/v8_utility.h @@ -33,7 +33,8 @@ class SafeAllocation { v8::Local<v8::Object> SafeAllocation::NewInstance( v8::Handle<v8::Function> fun) { - if (fun.IsEmpty()) return v8::Local<v8::Object>(); + if (fun.IsEmpty()) + return v8::Local<v8::Object>(); AllowAllocation allow; return fun->NewInstance(); } diff --git a/webkit/port/bindings/v8/v8_vectornodelist.cpp b/webkit/port/bindings/v8/v8_vectornodelist.cpp index 7e19cf8..f9341aa 100644 --- a/webkit/port/bindings/v8/v8_vectornodelist.cpp +++ b/webkit/port/bindings/v8/v8_vectornodelist.cpp @@ -30,6 +30,7 @@ #include "config.h" #include "v8_vectornodelist.h" +#include "Element.h" #include "NamedAttrMap.h" // Node::attributes namespace WebCore { diff --git a/webkit/port/dom/Document.idl b/webkit/port/dom/Document.idl index fb8ba94..83c80b8 100644 --- a/webkit/port/dom/Document.idl +++ b/webkit/port/dom/Document.idl @@ -237,18 +237,10 @@ module core { NodeList getElementsByClassName(in DOMString tagname); // NodeSelector - Selector API -#if defined(LANGUAGE_JAVASCRIPT) - [Custom] Element querySelector(in [ConvertUndefinedOrNullToNullString] DOMString selectors, in NSResolver resolver) - raises(DOMException); - [Custom] NodeList querySelectorAll(in [ConvertUndefinedOrNullToNullString] DOMString selectors, in NSResolver resolver) - raises(DOMException); -#else - // FIXME: add support for NSResolver in languages other than JS Element querySelector(in [ConvertUndefinedOrNullToNullString] DOMString selectors) raises(DOMException); NodeList querySelectorAll(in [ConvertUndefinedOrNullToNullString] DOMString selectors) raises(DOMException); -#endif }; diff --git a/webkit/port/dom/NSResolver.idl b/webkit/port/dom/NSResolver.idl deleted file mode 100644 index 5927331..0000000 --- a/webkit/port/dom/NSResolver.idl +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2008 Apple Inc. All Rights Reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -module core { - - interface NSResolver { - [Custom] DOMString lookupNamespaceURI(in DOMString prefix); - }; - -} diff --git a/webkit/port/html/HTMLSelectionInputElement.idl b/webkit/port/html/HTMLSelectionInputElement.idl deleted file mode 100644 index ba6e611..0000000 --- a/webkit/port/html/HTMLSelectionInputElement.idl +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (c) 2008 The Chromium Authors. All rights reserved. Use of this -// source code is governed by a BSD-style license that can be found in the -// LICENSE file. - -module html { - - // HTMLSelectionInputElements are the HTMLInputElements that support selection. - interface HTMLSelectionInputElement : HTMLInputElement { - attribute long selectionStart; - attribute long selectionEnd; - void setSelectionRange(in long start, in long end); - }; - -} diff --git a/webkit/port/page/DOMWindow.idl b/webkit/port/page/DOMWindow.idl index e6e0c31..c6f51f3 100644 --- a/webkit/port/page/DOMWindow.idl +++ b/webkit/port/page/DOMWindow.idl @@ -314,6 +314,7 @@ module window { // KJS adds these to the window object in kjs_window.cpp. attribute XMLHttpRequestConstructor XMLHttpRequest; attribute XSLTProcessorConstructor XSLTProcessor; + attribute MessageChannelConstructor MessageChannel; #endif #if ENABLE_DOM_STORAGE diff --git a/webkit/port/page/chromium/ChromeClientChromium.h b/webkit/port/page/chromium/ChromeClientChromium.h index 2e04c39..66e08b0 100644 --- a/webkit/port/page/chromium/ChromeClientChromium.h +++ b/webkit/port/page/chromium/ChromeClientChromium.h @@ -10,10 +10,13 @@ #include "ChromeClient.h" namespace WebCore { - + class Cursor; class FileChooser; class Frame; + class FramelessScrollView; + class IntRect; class String; + class Widget; class ChromeClientChromium : public ChromeClient { public: @@ -21,9 +24,12 @@ namespace WebCore { virtual void runFileChooser(const String& defaultFileName, PassRefPtr<FileChooser> file_chooser) = 0; - // Given a rect in main frame coordinates, returns a new rect relative - // to the screen. - virtual IntRect windowToScreen(const IntRect& rect) = 0; + // Notifies the client of a new popup widget. The client should place + // and size the widget with the given bounds, relative to the screen. + virtual void popupOpened(FramelessScrollView* popupView, const IntRect& bounds) = 0; + + // Set the current cursor. + virtual void setCursor(const Cursor& cursor) = 0; }; } diff --git a/webkit/port/page/chromium/EventHandlerChromium.cpp b/webkit/port/page/chromium/EventHandlerChromium.cpp index ef4d732..d7082e5 100644 --- a/webkit/port/page/chromium/EventHandlerChromium.cpp +++ b/webkit/port/page/chromium/EventHandlerChromium.cpp @@ -37,7 +37,6 @@ #include "MouseEventWithHitTestResults.h" #include "Page.h" #include "PlatformKeyboardEvent.h" -#include "PlatformScrollBar.h" #include "PlatformWheelEvent.h" #include "RenderWidget.h" #include "SelectionController.h" @@ -104,13 +103,6 @@ bool EventHandler::passWheelEventToWidget(PlatformWheelEvent& wheelEvent, Widget return static_cast<FrameView*>(widget)->frame()->eventHandler()->handleWheelEvent(wheelEvent); } -bool EventHandler::passMousePressEventToScrollbar(MouseEventWithHitTestResults& mev, PlatformScrollbar* scrollbar) -{ - if (!scrollbar || !scrollbar->isEnabled()) - return false; - return scrollbar->handleMousePressEvent(mev.event()); -} - bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults& event) { // Figure out which view to send the event to. diff --git a/webkit/port/page/inspector/InspectorController.cpp b/webkit/port/page/inspector/InspectorController.cpp index 901a97d..f18a6bb 100644 --- a/webkit/port/page/inspector/InspectorController.cpp +++ b/webkit/port/page/inspector/InspectorController.cpp @@ -54,6 +54,7 @@ #include "FrameTree.h" #include "FrameView.h" #include "GraphicsContext.h" +#include "HitTestResult.h" #include "HTMLFrameOwnerElement.h" #include "InspectorClient.h" #include "v8_proxy.h" @@ -622,6 +623,10 @@ InspectorController::InspectorController(Page* page, InspectorClient* client) , m_showAfterVisible(ElementsPanel) , m_nextIdentifier(-2) , m_groupLevel(0) + , m_searchingForNode(false) + , m_currentUserInitiatedProfileNumber(-1) + , m_nextUserInitiatedProfileNumber(1) + , m_previousMessage(0) { ASSERT_ARG(page, page); ASSERT_ARG(client, client); @@ -893,6 +898,41 @@ void InspectorController::setAttachedWindowHeight(unsigned height) notImplemented(); } +void InspectorController::toggleSearchForNodeInPage() +{ + if (!enabled()) + return; + + m_searchingForNode = !m_searchingForNode; + if (!m_searchingForNode) + hideHighlight(); +} + +void InspectorController::mouseDidMoveOverElement(const HitTestResult& result, unsigned modifierFlags) +{ + if (!enabled() || !m_searchingForNode) + return; + + Node* node = result.innerNode(); + if (node) + highlight(node); +} + +void InspectorController::handleMousePressOnNode(Node* node) +{ + if (!enabled()) + return; + + ASSERT(m_searchingForNode); + ASSERT(node); + if (!node) + return; + + // inspect() will implicitly call ElementsPanel's focusedNodeChanged() and the hover feedback will be stopped there. + inspect(node); +} + + void InspectorController::windowScriptObjectAvailable() { if (!m_page || !enabled()) diff --git a/webkit/port/platform/GKURL_unittest.cpp b/webkit/port/platform/GKURL_unittest.cpp index 4286d0a..4da8c94 100644 --- a/webkit/port/platform/GKURL_unittest.cpp +++ b/webkit/port/platform/GKURL_unittest.cpp @@ -587,4 +587,4 @@ TEST(GKURL, Offsets) { EXPECT_TRUE(kurl3.pathStart() == gurl3.pathStart()); EXPECT_TRUE(kurl3.pathEnd() == gurl3.pathEnd()); EXPECT_TRUE(kurl3.pathAfterLastSlash() == gurl3.pathAfterLastSlash()); -} +}
\ No newline at end of file diff --git a/webkit/port/platform/chromium/FileChooserChromium.cpp b/webkit/port/platform/chromium/FileChooserChromium.cpp index 6d38b2db..c70ff69 100644 --- a/webkit/port/platform/chromium/FileChooserChromium.cpp +++ b/webkit/port/platform/chromium/FileChooserChromium.cpp @@ -24,18 +24,13 @@ */ #include "config.h" -#if PLATFORM(WIN_OS) -#include <shlwapi.h> -#endif #pragma warning(push, 0) #include "ChromeClientChromium.h" #include "Document.h" #include "Frame.h" #include "FileChooser.h" -#if PLATFORM(DARWIN) -#include "FileChooserChromiumMac.h" -#endif +#include "FileSystem.h" #include "LocalizedStrings.h" #include "NotImplemented.h" #include "Page.h" @@ -65,19 +60,8 @@ String FileChooser::basenameForWidth(const Font& font, int width) const String string; if (m_filename.isEmpty()) string = fileButtonNoFileSelectedLabel(); - else { -#if PLATFORM(WIN_OS) - String tmpFilename = m_filename; - // Apple's code has a LPTSTR here, which will compile and run, but is wrong. - wchar_t* basename = PathFindFileName(tmpFilename.charactersWithNullTermination()); - string = String(basename); -#elif PLATFORM(DARWIN) - string = FileChooserGetBaseNameFromPath(m_filename); -#else - notImplemented(); - string = "fixme"; -#endif - } + else + string = pathGetFileName(m_filename); return StringTruncator::centerTruncate(string, static_cast<float>(width), font, false); } diff --git a/webkit/port/platform/chromium/FileChooserChromiumMac.mm b/webkit/port/platform/chromium/FileChooserChromiumMac.mm deleted file mode 100644 index 389bb8d..0000000 --- a/webkit/port/platform/chromium/FileChooserChromiumMac.mm +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -#include "config.h" -#include "FileChooserChromiumMac.h" - -#import <Foundation/NSFileManager.h> -#include "PlatformString.h" - -namespace WebCore { - -String FileChooserGetBaseNameFromPath(const String &path) { - // TODO(playmobil): Perhaps in the future we can unify this with the other - // platforms by using the FilePath class in base. - return [[NSFileManager defaultManager] displayNameAtPath:path]; -} - -} diff --git a/webkit/pending/DNS.h b/webkit/port/platform/chromium/FileSystemChromium.cpp index 3a32ce7..102fde9 100644 --- a/webkit/pending/DNS.h +++ b/webkit/port/platform/chromium/FileSystemChromium.cpp @@ -1,36 +1,64 @@ -/*
- * Copyright (C) 2008 Collin Jackson <collinj@webkit.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DNS_h
-#define DNS_h
-
-namespace WebCore {
-
- class String;
-
- void prefetchDNS(const String& hostname);
-}
-
-#endif
+/* + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" + +#include "NotImplemented.h" +#include "PlatformString.h" + + +namespace WebCore { + +bool deleteFile(const String&) +{ + notImplemented(); + return false; +} + +bool deleteEmptyDirectory(const String&) +{ + notImplemented(); + return false; +} + +bool getFileSize(const String&, long long& result) +{ + notImplemented(); + return false; +} + +bool getFileModificationTime(const String&, time_t& result) +{ + notImplemented(); + return false; +} + +String directoryName(const String&) +{ + notImplemented(); + return String(); +} + +} // namespace WebCore diff --git a/webkit/port/bindings/v8/JSNSResolver.h b/webkit/port/platform/chromium/FileSystemChromiumMac.mm index 84bd072..152bee2 100644 --- a/webkit/port/bindings/v8/JSNSResolver.h +++ b/webkit/port/platform/chromium/FileSystemChromiumMac.mm @@ -27,32 +27,17 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include "config.h" +#include "FileSystem.h" -// The wrapper for a JS object that implements NSResolver interface. - -#ifndef JSNSResolver_h -#define JSNSResolver_h - -#include <v8.h> -#include <wtf/RefCounted.h> -#include "NSResolver.h" +#import <Foundation/NSFileManager.h> +#include "PlatformString.h" namespace WebCore { -class ExceptionContext; -class String; - -class JSNSResolver : public NSResolver { -public: - JSNSResolver(v8::Handle<v8::Object>); - virtual ~JSNSResolver(); - - virtual String lookupNamespaceURI(ExceptionContext*, const String&); - -private: - v8::Handle<v8::Object> m_resolver; // Handle to resolver object. -}; - +String pathGetFileName(const String& path) +{ + return [[NSFileManager defaultManager] displayNameAtPath:path]; } -#endif // !defined(JSNSResolver_h) +} diff --git a/webkit/port/platform/chromium/FileChooserChromiumMac.h b/webkit/port/platform/chromium/FileSystemChromiumWin.cpp index 5b546fc..0c91231 100644 --- a/webkit/port/platform/chromium/FileChooserChromiumMac.h +++ b/webkit/port/platform/chromium/FileSystemChromiumWin.cpp @@ -1,19 +1,20 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. -// +// Copyright (c) 2008, Google Inc. +// All rights reserved. +// // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: -// -// * Redistributions of source code must retain the above copyright +// +// * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above +// * Redistributions in binary form must reproduce the above // copyright notice, this list of conditions and the following disclaimer // in the documentation and/or other materials provided with the // distribution. -// * Neither the name of Google Inc. nor the names of its +// * Neither the name of Google Inc. nor the names of its // contributors may be used to endorse or promote products derived from // this software without specific prior written permission. -// +// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -26,16 +27,17 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#ifndef FileChooserChromiumMac_h__ -#define FileChooserChromiumMac_h__ +#include "config.h" +#include "FileSystem.h" + +#include <windows.h> +#include <shlwapi.h> namespace WebCore { - -class String; -// Returns the basename of a path. -String FileChooserGetBaseNameFromPath(const String &path); - +String pathGetFileName(const String& path) +{ + return String(PathFindFileName(String(path).charactersWithNullTermination())); } -#endif +}
\ No newline at end of file diff --git a/webkit/port/platform/chromium/FramelessScrollView.cpp b/webkit/port/platform/chromium/FramelessScrollView.cpp index 51c9d52..60d4375 100644 --- a/webkit/port/platform/chromium/FramelessScrollView.cpp +++ b/webkit/port/platform/chromium/FramelessScrollView.cpp @@ -28,14 +28,59 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "config.h" - #include "FramelessScrollView.h" +#include "FramelessScrollViewClient.h" + namespace WebCore { -IntRect FramelessScrollView::windowClipRect() const +FramelessScrollView::~FramelessScrollView() +{ + // Remove native scrollbars now before we lose the connection to the HostWindow. + setHasHorizontalScrollbar(false); + setHasVerticalScrollbar(false); +} + +void FramelessScrollView::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect& rect) +{ + // Add in our offset within the ScrollView. + IntRect dirtyRect = rect; + dirtyRect.move(scrollbar->x(), scrollbar->y()); + invalidateRect(dirtyRect); +} + +bool FramelessScrollView::isActive() const +{ + // FIXME + return true; +} + +void FramelessScrollView::invalidateRect(const IntRect& rect) +{ + if (HostWindow* h = hostWindow()) + h->repaint(contentsToWindow(rect), true); +} + +HostWindow* FramelessScrollView::hostWindow() const +{ + return const_cast<FramelessScrollViewClient*>(m_client); +} + +IntRect FramelessScrollView::windowClipRect(bool clipToContents) const +{ + return contentsToWindow(visibleContentRect(!clipToContents)); +} + +void FramelessScrollView::paintContents(GraphicsContext*, const IntRect& damageRect) +{ +} + +void FramelessScrollView::contentsResized() +{ +} + +void FramelessScrollView::visibleContentsResized() { - return convertToContainingWindow(IntRect(0, 0, width(), height())); } } diff --git a/webkit/port/platform/chromium/FramelessScrollView.h b/webkit/port/platform/chromium/FramelessScrollView.h index a71fcfb..dd940a0 100644 --- a/webkit/port/platform/chromium/FramelessScrollView.h +++ b/webkit/port/platform/chromium/FramelessScrollView.h @@ -5,34 +5,55 @@ #ifndef FramelessScrollView_h #define FramelessScrollView_h -#include "FrameView.h" +#include "ScrollView.h" namespace WebCore { - + class FramelessScrollViewClient; class PlatformKeyboardEvent; + class PlatformMouseEvent; + class PlatformWheelEvent; // A FramelessScrollView is a ScrollView that can be used to render custom - // content, which does not have an associated Frame. This extends from - // FrameView because much of WebCore unfortunately assumes that a - // ScrollView is a FrameView. + // content, which does not have an associated Frame. // // TODO: It may be better to just develop a custom subclass of Widget that // can have scroll bars for this instead of trying to reuse ScrollView. // - class FramelessScrollView : public FrameView { + class FramelessScrollView : public ScrollView { public: - FramelessScrollView() : FrameView(0) {} + FramelessScrollView() : m_client(0) {} + ~FramelessScrollView(); - virtual IntRect windowClipRect() const; + FramelessScrollViewClient* client() const { return m_client; } + void setClient(FramelessScrollViewClient* client) { m_client = client; } - // Event handlers + // Event handlers that subclasses must implement. virtual bool handleMouseDownEvent(const PlatformMouseEvent&) = 0; virtual bool handleMouseMoveEvent(const PlatformMouseEvent&) = 0; virtual bool handleMouseReleaseEvent(const PlatformMouseEvent&) = 0; virtual bool handleWheelEvent(const PlatformWheelEvent&) = 0; virtual bool handleKeyEvent(const PlatformKeyboardEvent&) = 0; + + // ScrollbarClient public methods: + virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&); + virtual bool isActive() const; + + // Widget public methods: + virtual void invalidateRect(const IntRect&); + + // ScrollView public methods: + virtual HostWindow* hostWindow() const; + virtual IntRect windowClipRect(bool clipToContents = true) const; + + protected: + // ScrollView protected methods: + virtual void paintContents(GraphicsContext*, const IntRect& damageRect); + virtual void contentsResized(); + virtual void visibleContentsResized(); + + private: + FramelessScrollViewClient* m_client; }; } #endif // FramelessScrollView_h - diff --git a/webkit/port/platform/chromium/FramelessScrollViewClient.h b/webkit/port/platform/chromium/FramelessScrollViewClient.h new file mode 100644 index 0000000..a237bce --- /dev/null +++ b/webkit/port/platform/chromium/FramelessScrollViewClient.h @@ -0,0 +1,17 @@ +// Copyright (c) 2008 The Chromium Authors. All rights reserved. Use of this +// source code is governed by a BSD-style license that can be found in the +// LICENSE file. + +#ifndef FramelessScrollViewClient_h +#define FramelessScrollViewClient_h + +#include "HostWindow.h" + +namespace WebCore { + class FramelessScrollViewClient : public HostWindow { + public: + virtual void popupClosed(FramelessScrollView* popup_view) = 0; + }; +} + +#endif // FramelessScrollViewClient_h diff --git a/webkit/port/platform/chromium/PlatformScrollBar.h b/webkit/port/platform/chromium/PlatformScrollBar.h deleted file mode 100644 index bf865c5..0000000 --- a/webkit/port/platform/chromium/PlatformScrollBar.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef PlatformScrollbar_h -#define PlatformScrollbar_h - -#include "Widget.h" -#include "ScrollBar.h" -#include "Timer.h" - -namespace WebCore { - -// IMPORTANT NOTES ABOUT SCROLLBARS -// -// WebKit uses scrollbars in two ways. The first way is as a scroll control -// for a ScrollView. This scrollbar sits inside the ScrollView's rect and -// modifies its scrollOffset. Because it is inside the ScrollView's rect, it -// is a child of the ScrollView, but because it is not really part of the -// scrollView's content, it doesn't move as the scrollOffset changes. -// -// The second use is as a scroll control for things other than a ScrollView, -// e.g. a <select>. A <select> is not a ScrollView, so the scrollbar is not a -// child of it -- instead, it is a child of the ScrollView representing the -// frame in which the <select> (and the scrollbar) are located. In this case, -// the scrollbar IS part of the ScrollView's content, and it moves when the -// scrollOffset changes. -// -// ScrollViewWin distinguishes these two cases in its convertChildToSelf and -// convertSelfToChild methods, which are used when converting coordinates -// between the ScrollBar's coordinate system and that of the native window. - -class PlatformScrollbar : public Widget, public Scrollbar { -public: - static PassRefPtr<PlatformScrollbar> create(ScrollbarClient* client, ScrollbarOrientation orientation, ScrollbarControlSize size) - { - return adoptRef(new PlatformScrollbar(client, orientation, size)); - } - virtual ~PlatformScrollbar(); - - virtual bool isWidget() const { return true; } - - virtual int width() const; - virtual int height() const; - virtual void setRect(const IntRect&); - virtual void setEnabled(bool); - virtual bool isEnabled() const { return m_enabled; } - virtual void paint(GraphicsContext*, const IntRect& damageRect); - - virtual void setFrameGeometry(const IntRect& rect); - - // All mouse handler functions below receive mouse events in window - // coordinates. - - // NOTE: These may be called after we've been removed from the widget/ - // window hierarchy, for example because the EventHandler keeps a reference - // around and tries to feed us MouseOut events. In this case, doing - // something would be not only pointless but dangerous, as without a - // parent() we will end up failing an ASSERT(). So bail early if we get to - // any of these with no parent(). - virtual bool handleMouseMoveEvent(const PlatformMouseEvent&); - virtual bool handleMouseOutEvent(const PlatformMouseEvent&); - virtual bool handleMousePressEvent(const PlatformMouseEvent&); - virtual bool handleMouseReleaseEvent(const PlatformMouseEvent&); - - virtual IntRect windowClipRect() const; - - static void themeChanged(); - static int horizontalScrollbarHeight(ScrollbarControlSize size = RegularScrollbar); - static int verticalScrollbarWidth(ScrollbarControlSize size = RegularScrollbar); - - // Scrolls the page when auto-repeat scrolling. - void autoscrollTimerFired(Timer<PlatformScrollbar>*); - - // This function receives events in window coordinates. - void handleMouseMoveEventWhenCapturing(const PlatformMouseEvent& e); - -protected: - virtual void updateThumbPosition(); - virtual void updateThumbProportion(); - -private: - PlatformScrollbar(ScrollbarClient*, ScrollbarOrientation, ScrollbarControlSize); - - // Scroll bar segment identifiers - enum Segment { - Arrow1 = 0, - Track, // Only used when scrollbar does not contain a thumb - BeforeThumb, // -| - Thumb, // -+ Only used when scrollbar contains a thumb - AfterThumb, // -| - Arrow2, - None, - NumSegments = None - }; - - // Turns on/off whether we have mouse capture. This is only for tracking, - // as the EventHandler is what controls the actual capture. - void setCapturingMouse(bool capturing); - - // Returns the girth of the scrollbar arrow button for layout, given the - // system metrics code for the desired direction's button and a limiting - // height (for vertical scroll bars) or width (for horizontal scrollbars). - // Also computes the background span (available remaining space). - int scrollButtonGirth(int systemMetricsCode, int limit, - int* backgroundSpan); - - // Returns the girth of the scrollbar thumb for layout, given the system - // metrics code for the desired direction's thumb and the background span - // (space remaining after the buttons are drawn). - int scrollThumbGirth(int systemMetricsCode, int backgroundSpan); - - // Computes the layout of the scroll bar given its current configuration. - void layout(); - - // Sets the current mouse position to the coordinates in |event|. - void updateMousePosition(int x, int y); - - // Helper routine for updateMousePosition(), used to bypass layout(). - void updateMousePositionInternal(); - - // Returns the correct state for the theme engine to draw a segment. - int getThemeState(Segment target) const; - int getThemeArrowState(Segment target) const; - int getClassicThemeState(Segment target) const; - - // Draws the tick-marks on the scrollbar. The tick-marks are visual - // indicators showing the results from a find-in-page operation. - void DrawTickmarks(GraphicsContext* context) const; - - IntPoint m_lastNativePos; // The last (native) mouse coordinate received. - struct { - int thumbPos; // Relevant (window) mouse coordinate, and... - int scrollVal; // ...current scrollvalue, when... - } m_dragOrigin; // ...user begins dragging the thumb. - IntRect m_segmentRects[NumSegments]; - // The native coordinates of the scrollbar - // segments. - Segment m_mouseOver; // The scrollbar segment the mouse is over. - Segment m_captureStart; // The segment on which we started capture. - Timer<PlatformScrollbar> m_autorepeatTimer; - // Timer to start and continue auto-repeat - // scrolling when the button is held down. - bool m_enabled; // True when the scrollbar is enabled. - bool m_needsLayout; // True when cached geometry may have changed - - // Multipliers against scrollbar thickness that determine how far away from - // the scrollbar track the cursor can go before the thumb "snaps back" - static const int kOffSideMultiplier; - static const int kOffEndMultiplier; - - // Auto-repeat delays, in seconds - static const double kAutorepeatInitialDelay; - static const double kAutorepeatRepeatInterval; -}; - -} - -#endif // PlatformScrollbar_h diff --git a/webkit/port/platform/chromium/PlatformScrollBarChromium.cpp b/webkit/port/platform/chromium/PlatformScrollBarChromium.cpp deleted file mode 100644 index 6cd0033..0000000 --- a/webkit/port/platform/chromium/PlatformScrollBarChromium.cpp +++ /dev/null @@ -1,848 +0,0 @@ -// Copyright (c) 2008, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// TODO(pinkerton): clearly this needs a lot of work for mac and linux. -// Right now it has just been stubbed out to get things to compile with fixed -// geometries. - -#include "config.h" -#include <algorithm> -#if PLATFORM(WIN_OS) -#include <windows.h> -#include <vsstyle.h> -#endif -#include "FrameView.h" -#include "GraphicsContext.h" -#include "IntRect.h" -#include "NativeImageSkia.h" -#include "PlatformMouseEvent.h" -#include "PlatformScrollBar.h" -#include "Range.h" -#include "ScrollView.h" -#include "WidgetClientChromium.h" - -#include "graphics/SkiaUtils.h" - -#undef LOG -#if PLATFORM(WIN_OS) -#include "base/gfx/native_theme.h" -#endif -#include "base/gfx/platform_canvas.h" -#include "base/gfx/skia_utils.h" -#if PLATFORM(WIN_OS) -#include "base/win_util.h" -#endif -#include "webkit/glue/webframe_impl.h" -#include "webkit/glue/webkit_glue.h" - -namespace WebCore { - -const int PlatformScrollbar::kOffSideMultiplier = 8; -const int PlatformScrollbar::kOffEndMultiplier = 3; -const double PlatformScrollbar::kAutorepeatInitialDelay = 0.4; -const double PlatformScrollbar::kAutorepeatRepeatInterval = 1. / 15.; - -// The scrollbar size in DumpRenderTree on the Mac - so we can match their -// layout results. Entries are for regular, small, and mini scrollbars. -// Metrics obtained using [NSScroller scrollerWidthForControlSize:] -static const int kMacScrollbarSize[3] = {15, 11, 15}; - -// Scrollbar button and thumb sizes, for consistent layout results. The Mac -// value is not readily available, but it's not really needed, since these -// metrics only affect drawing within the scrollbar itself. These are the -// standard Windows values without Large Fonts. -static const int kLayoutTestScrollbarButtonGirth = 17; -static const int kLayoutTestScrollbarThumbGirth = 17; - - -/*static*/ void PlatformScrollbar::themeChanged() -{ - // TODO(darin): implement this -} - -/*static*/ int PlatformScrollbar::horizontalScrollbarHeight( - ScrollbarControlSize controlSize) -{ -#if PLATFORM(WIN_OS) - return webkit_glue::IsLayoutTestMode() ? kMacScrollbarSize[controlSize] : - GetSystemMetrics(SM_CYHSCROLL); -#elif PLATFORM(UNIX) - return kMacScrollbarSize[controlSize]; -#endif -} - -/*static*/ int PlatformScrollbar::verticalScrollbarWidth( - ScrollbarControlSize controlSize) -{ -#if PLATFORM(WIN_OS) - return webkit_glue::IsLayoutTestMode() ? kMacScrollbarSize[controlSize] : - GetSystemMetrics(SM_CXVSCROLL); -#elif PLATFORM(UNIX) - return kMacScrollbarSize[controlSize]; -#endif -} - -PlatformScrollbar::PlatformScrollbar(ScrollbarClient* client, - ScrollbarOrientation orientation, - ScrollbarControlSize controlSize) - : Scrollbar(client, orientation, controlSize) - , m_lastNativePos(-1, -1) // initialize to bogus values - , m_mouseOver(None) - , m_captureStart(None) -#pragma warning(suppress: 4355) // it's okay to pass |this| here! - , m_autorepeatTimer(this, &PlatformScrollbar::autoscrollTimerFired) - , m_enabled(true) - , m_needsLayout(true) -{ -} - -PlatformScrollbar::~PlatformScrollbar() -{ -} - -int PlatformScrollbar::width() const -{ - return orientation() == VerticalScrollbar ? - verticalScrollbarWidth(controlSize()) : Widget::width(); -} - -int PlatformScrollbar::height() const -{ - return orientation() == HorizontalScrollbar ? - horizontalScrollbarHeight(controlSize()) : Widget::height(); -} - -void PlatformScrollbar::setRect(const IntRect& rect) -{ - setFrameGeometry(rect); -} - -void PlatformScrollbar::setEnabled(bool enabled) -{ - if (m_enabled == enabled) - return; - - m_enabled = enabled; - invalidate(); -} - -void PlatformScrollbar::DrawTickmarks(GraphicsContext* context) const -{ -#if PLATFORM(WIN_OS) - // We don't draw on the horizontal scrollbar. It is too confusing - // to have the tickmarks appear on both scrollbars. - const bool horz = orientation() == HorizontalScrollbar; - if (horz) - return; - - // We need to as the WidgetClientChromium for the bitmap to use to draw. - WidgetClientChromium* widget_client = static_cast<WidgetClientChromium*>( - WebCore::Widget::client()); - if (!widget_client) - return; // Cannot draw without access to the bitmap. - - // Get the frame view this scroll bar belongs to. - FrameView* view = reinterpret_cast<FrameView*>(parent()); - ASSERT(view); - - // A frame can be null if this function is called for the scroll views - // used when drawing drop-down boxes. We don't need to draw anything in - // such cases. - if (!view->frame()) - return; - - // Find out if the frame has any tickmarks. - const Vector<RefPtr<Range> >& tickmarks = - WebFrameImpl::FromFrame(view->frame())->tickmarks(); - if (tickmarks.isEmpty()) - return; - - RECT track_area; - if (m_segmentRects[Track].x() != -1) { - // Scroll bar is too small to draw a thumb. - track_area.left = m_segmentRects[Track].x(); - track_area.top = m_segmentRects[Track].y(); - track_area.right = m_segmentRects[Track].right() - 1; - track_area.bottom = m_segmentRects[Track].bottom() - 1; - } else { - // Find the area between the arrows of the scroll bar. - track_area.left = m_segmentRects[BeforeThumb].x(); - track_area.top = m_segmentRects[BeforeThumb].y(); - track_area.right = m_segmentRects[AfterThumb].right() - 1; - track_area.bottom = m_segmentRects[AfterThumb].bottom() - 1; - } - - // We now can figure out the actual height and width of the track. - const int track_height = track_area.bottom - track_area.top; - const int track_width = track_area.right - track_area.left; - - if (track_height <= 0 || track_width <= 0) - return; // nothing to draw on. - - // NOTE: We tolerate the platformContext() call here because the scrollbars - // will not be serialized, i.e. composition is done in the renderer and - // never in the browser. - // Prepare the bitmap for drawing the tickmarks on the scroll bar. - gfx::PlatformCanvas* canvas = context->platformContext()->canvas(); - - // Load the image for the tickmark. - static RefPtr<Image> dashImg = Image::loadPlatformResource("tickmarkDash"); - DCHECK(dashImg); - if (dashImg->isNull()) { - ASSERT_NOT_REACHED(); - return; - } - const NativeImageSkia* dash = dashImg->nativeImageForCurrentFrame(); - - for (Vector<RefPtr<Range> >::const_iterator i = - tickmarks.begin(); - i != tickmarks.end(); ++i) { - const RefPtr<Range> range = (*i); - - if (!WebFrameImpl::RangeShouldBeHighlighted(range.get())) - continue; - - const IntRect& bounds = range->boundingBox(); - - // Calculate how far down (in %) the tick-mark should appear. - const float percent = static_cast<float>(bounds.y()) / m_totalSize; - - // Calculate how far down (in pixels) the tick-mark should appear. - const int y_pos = track_area.top + (track_height * percent); - - // Draw the tick-mark as a rounded rect with a slightly curved edge. - canvas->drawBitmap(*dash, track_area.left, y_pos); - } -#endif -} - -// paint in the coordinate space of our parent's content area -void PlatformScrollbar::paint(GraphicsContext* gc, const IntRect& damageRect) -{ -#if PLATFORM(WIN_OS) - if (gc->paintingDisabled()) - return; - - // Don't paint anything if the scrollbar doesn't intersect the damage rect. - if (!frameGeometry().intersects(damageRect)) - return; - - gc->save(); - gc->translate(x(), y()); - - layout(); - - HDC hdc = gc->platformContext()->canvas()->beginPlatformPaint(); - const bool horz = orientation() == HorizontalScrollbar; - const PlatformContextSkia* const skia = gc->platformContext(); - const gfx::NativeTheme* const nativeTheme = skia->nativeTheme(); - gfx::PlatformCanvasWin* const canvas = skia->canvas(); - - // Draw the up/left arrow of the scroll bar. - RECT rect = gfx::SkIRectToRECT(m_segmentRects[Arrow1]); - nativeTheme->PaintScrollbarArrow(hdc, getThemeArrowState(Arrow1), - (horz ? DFCS_SCROLLLEFT : DFCS_SCROLLUP) | - getClassicThemeState(Arrow1), - &rect); - - if (m_segmentRects[Track].x() != -1) { - // The scroll bar is too small to draw the thumb. Just draw a - // single track between the arrows. - rect = gfx::SkIRectToRECT(m_segmentRects[Track]); - nativeTheme->PaintScrollbarTrack(hdc, - horz ? SBP_UPPERTRACKHORZ : - SBP_UPPERTRACKVERT, - getThemeState(Track), - getClassicThemeState(Track), - &rect, &rect, canvas); - DrawTickmarks(gc); - } else { - // Draw the track area before the thumb on the scroll bar. - rect = gfx::SkIRectToRECT(m_segmentRects[BeforeThumb]); - nativeTheme->PaintScrollbarTrack(hdc, - horz ? SBP_UPPERTRACKHORZ : - SBP_UPPERTRACKVERT, - getThemeState(BeforeThumb), - getClassicThemeState(BeforeThumb), - &rect, &rect, canvas); - - // Draw the track area after the thumb on the scroll bar. - rect = gfx::SkIRectToRECT(m_segmentRects[BeforeThumb]); - RECT rect_after = gfx::SkIRectToRECT(m_segmentRects[AfterThumb]); - nativeTheme->PaintScrollbarTrack(hdc, - horz ? SBP_LOWERTRACKHORZ : - SBP_LOWERTRACKVERT, - getThemeState(AfterThumb), - getClassicThemeState(AfterThumb), - &rect_after, - &rect, - canvas); - - // Draw the tick-marks on the scroll bar, if any tick-marks - // exist. Note: The thumb will be drawn on top of the tick-marks, - // which is desired. - DrawTickmarks(gc); - - // Draw the thumb (the box you drag in the scroll bar to scroll). - rect = gfx::SkIRectToRECT(m_segmentRects[Thumb]); - nativeTheme->PaintScrollbarThumb(hdc, - horz ? SBP_THUMBBTNHORZ : - SBP_THUMBBTNVERT, - getThemeState(Thumb), - getClassicThemeState(Thumb), - &rect); - - // Draw the gripper (the three little lines on the thumb). - rect = gfx::SkIRectToRECT(m_segmentRects[Thumb]); - nativeTheme->PaintScrollbarThumb(hdc, - horz ? SBP_GRIPPERHORZ : - SBP_GRIPPERVERT, - getThemeState(Thumb), - getClassicThemeState(Thumb), - &rect); - } - - // Draw the down/right arrow of the scroll bar. - rect = gfx::SkIRectToRECT(m_segmentRects[Arrow2]); - nativeTheme->PaintScrollbarArrow(hdc, getThemeArrowState(Arrow2), - (horz ? - DFCS_SCROLLRIGHT : DFCS_SCROLLDOWN) | - getClassicThemeState(Arrow2), - &rect); - gc->platformContext()->canvas()->endPlatformPaint(); - - gc->restore(); -#endif -} - -void PlatformScrollbar::setFrameGeometry(const IntRect& rect) -{ - if (rect == frameGeometry()) - return; - - Widget::setFrameGeometry(rect); - m_needsLayout = true; - // NOTE: we assume that our caller will invalidate us -} - -bool PlatformScrollbar::handleMouseMoveEvent(const PlatformMouseEvent& e) -{ - if (!parent()) - return true; - - if (m_captureStart != None) { - handleMouseMoveEventWhenCapturing(e); - return true; - } - - IntPoint pos = convertFromContainingWindow(e.pos()); - updateMousePosition(pos.x(), pos.y()); - - // FIXME: Invalidate only the portions that actually changed - invalidate(); - return true; -} - -bool PlatformScrollbar::handleMouseOutEvent(const PlatformMouseEvent& e) -{ - if (!parent()) - return true; - - ASSERT(m_captureStart == None); - - // Pass bogus values that will never match real mouse coords. - updateMousePosition(-1, -1); - - // FIXME: Invalidate only the portions that actually changed - invalidate(); - return true; -} - -bool PlatformScrollbar::handleMouseReleaseEvent(const PlatformMouseEvent& e) -{ - ScrollView* parentView = parent(); - if (!parentView) - return true; - - IntPoint pos = convertFromContainingWindow(e.pos()); - updateMousePosition(pos.x(), pos.y()); - - setCapturingMouse(false); - - // FIXME: Invalidate only the portions that actually changed - invalidate(); - return true; -} - -bool PlatformScrollbar::handleMousePressEvent(const PlatformMouseEvent& e) -{ - if (!parent()) - return true; - - // TODO(pkasting): http://b/583875 Right-click should invoke a context menu - // (maybe this would be better handled elsewhere?) - if (!m_enabled || (e.button() != LeftButton)) { - return true; - } - - ASSERT(m_captureStart == None); - - IntPoint pos = convertFromContainingWindow(e.pos()); - - const bool horz = (orientation() == HorizontalScrollbar); - updateMousePosition(pos.x(), pos.y()); - switch (m_mouseOver) { - case Arrow1: - scroll(horz ? ScrollLeft : ScrollUp, ScrollByLine); - break; - case Track: - return true; - case BeforeThumb: - scroll(horz ? ScrollLeft : ScrollUp, ScrollByPage); - break; - case Thumb: - m_dragOrigin.thumbPos = horz ? pos.x() : pos.y(); - m_dragOrigin.scrollVal = value(); - break; - case AfterThumb: - scroll(horz ? ScrollRight : ScrollDown, ScrollByPage); - break; - case Arrow2: - scroll(horz ? ScrollRight : ScrollDown, ScrollByLine); - break; - default: - ASSERT_NOT_REACHED(); - } - - setCapturingMouse(true); - - // Kick off auto-repeat timer - if (m_mouseOver != Thumb) - m_autorepeatTimer.start(kAutorepeatInitialDelay, - kAutorepeatRepeatInterval); - - m_needsLayout = true; - // FIXME: Invalidate only the portions that actually changed - invalidate(); - - return true; -} - -void PlatformScrollbar::handleMouseMoveEventWhenCapturing(const PlatformMouseEvent& e) -{ - IntPoint pos = convertFromContainingWindow(e.pos()); - updateMousePosition(pos.x(), pos.y()); - - if (m_captureStart != Thumb) { - // FIXME: Invalidate only the portions that actually changed - invalidate(); - return; - } - - int xCancelDistance, yCancelDistance, backgroundSpan, thumbGirth, delta; - // NOTE: The cancel distance calculations are based on the behavior of the - // MSVC8 main window scrollbar + some guessing/extrapolation - if (orientation() == HorizontalScrollbar) { - xCancelDistance = kOffEndMultiplier * horizontalScrollbarHeight(); - yCancelDistance = kOffSideMultiplier * horizontalScrollbarHeight(); - backgroundSpan = m_segmentRects[AfterThumb].right() - - m_segmentRects[BeforeThumb].x(); - thumbGirth = m_segmentRects[Thumb].right() - m_segmentRects[Thumb].x(); - delta = pos.x() - m_dragOrigin.thumbPos; - } else { - xCancelDistance = kOffSideMultiplier * verticalScrollbarWidth(); - yCancelDistance = kOffEndMultiplier * verticalScrollbarWidth(); - backgroundSpan = m_segmentRects[AfterThumb].bottom() - - m_segmentRects[BeforeThumb].y(); - thumbGirth = m_segmentRects[Thumb].bottom() - m_segmentRects[Thumb].y(); - delta = pos.y() - m_dragOrigin.thumbPos; - } - - // Snap scrollbar back to drag origin if mouse gets too far away - if ((m_lastNativePos.x() < - (m_segmentRects[BeforeThumb].x() - xCancelDistance)) || - (m_lastNativePos.x() > - (m_segmentRects[AfterThumb].right() + xCancelDistance)) || - (m_lastNativePos.y() < - (m_segmentRects[BeforeThumb].y() - yCancelDistance)) || - (m_lastNativePos.y() > - (m_segmentRects[AfterThumb].bottom() + yCancelDistance))) - delta = 0; - - // Convert delta from pixel coords to scrollbar logical coords - if (backgroundSpan > thumbGirth) { - if (setValue(m_dragOrigin.scrollVal + (delta * - (m_totalSize - m_visibleSize) / (backgroundSpan - thumbGirth)))) { - m_needsLayout = true; - // FIXME: Invalidate only the portions that actually changed - invalidate(); - } - } -} - -IntRect PlatformScrollbar::windowClipRect() const -{ - if (m_client) - return m_client->windowClipRect(); - - return convertToContainingWindow(IntRect(0, 0, width(), height())); -} - -void PlatformScrollbar::updateThumbPosition() -{ - m_needsLayout = true; - // FIXME: Invalidate only the portions that actually changed - invalidate(); -} - -void PlatformScrollbar::updateThumbProportion() -{ - // RenderLayer::updateScrollInfoAfterLayout changes the enabled state when - // the style is OSCROLL, however it doesn't change it when the style is OAUTO. - // As a workaround we enable the scrollbar if the visible size is less than - // the total size - if (!m_enabled && m_visibleSize < m_totalSize) { - setEnabled(true); - } - - // If the thumb was at the end of the track and the scrollbar was resized - // smaller, we need to cap the value to the new maximum. - if (setValue(value())) - return; // updateThumbPosition() already invalidated as needed - - m_needsLayout = true; - // FIXME: Invalidate only the portions that actually changed - invalidate(); -} - -void PlatformScrollbar::autoscrollTimerFired(Timer<PlatformScrollbar>*) -{ - ASSERT((m_captureStart != None) && (m_mouseOver == m_captureStart)); - - const bool horz = (orientation() == HorizontalScrollbar); - switch (m_captureStart) { - case Arrow1: - scroll(horz ? ScrollLeft : ScrollUp, ScrollByLine); - break; - case BeforeThumb: - scroll(horz ? ScrollLeft : ScrollUp, ScrollByPage); - break; - case AfterThumb: - scroll(horz ? ScrollRight : ScrollDown, ScrollByPage); - break; - case Arrow2: - scroll(horz ? ScrollRight : ScrollDown, ScrollByLine); - break; - default: - ASSERT_NOT_REACHED(); - } -} - -void PlatformScrollbar::setCapturingMouse(bool capturing) -{ - if (capturing) { - m_captureStart = m_mouseOver; - } else { - m_captureStart = None; - m_autorepeatTimer.stop(); - } -} - -int PlatformScrollbar::scrollButtonGirth(int systemMetricsCode, int limit, - int* backgroundSpan) -{ -#if PLATFORM(WIN_OS) - const int girth = webkit_glue::IsLayoutTestMode() ? - kLayoutTestScrollbarButtonGirth : GetSystemMetrics(systemMetricsCode); -#elif PLATFORM(UNIX) - const int girth = kLayoutTestScrollbarButtonGirth; -#endif - *backgroundSpan = limit - 2 * girth; - if (*backgroundSpan < 0) { - *backgroundSpan = 0; - return limit / 2; - } - return girth; -} - -int PlatformScrollbar::scrollThumbGirth(int systemMetricsCode, - int backgroundSpan) -{ -#if PLATFORM(WIN_OS) - const int minimumGirth = webkit_glue::IsLayoutTestMode() ? - kLayoutTestScrollbarThumbGirth : GetSystemMetrics(systemMetricsCode); -#elif PLATFORM(UNIX) - const int minimumGirth = kLayoutTestScrollbarThumbGirth; -#endif - return std::max<int>(m_visibleSize * backgroundSpan / m_totalSize, - minimumGirth); -} - -void PlatformScrollbar::layout() -{ -#if PLATFORM(WIN_OS) - if (!m_needsLayout) - return; - m_needsLayout = false; - - const IntRect invalid(-1, -1, 0, 0); - if (m_totalSize <= 0) { - for (int i = 0; i < NumSegments; ++i) - m_segmentRects[i] = invalid; - return; - } - - int buttonGirth, backgroundSpan, thumbGirth; - RECT box = {0}; - LONG* changingCoord1, * changingCoord2; - // For both orientations, we allow the buttonGirth to determine the - // backgroundSpan directly, to avoid rounding errors. - if (orientation() == HorizontalScrollbar) { - buttonGirth = scrollButtonGirth(SM_CXHSCROLL, width(), &backgroundSpan); - thumbGirth = scrollThumbGirth(SM_CXHTHUMB, backgroundSpan); - box.bottom += horizontalScrollbarHeight(); - changingCoord1 = &box.left; - changingCoord2 = &box.right; - } else { - buttonGirth = scrollButtonGirth(SM_CYVSCROLL, height(), - &backgroundSpan); - thumbGirth = scrollThumbGirth(SM_CYVTHUMB, backgroundSpan); - box.right += verticalScrollbarWidth(); - changingCoord1 = &box.top; - changingCoord2 = &box.bottom; - } - - // Scrollbar: |<|--------|XXX|------|>| - // Start arrow: |<| - *changingCoord2 += buttonGirth; - m_segmentRects[Arrow1] = gfx::RECTToSkIRect(box); - - if (thumbGirth >= backgroundSpan) { - if (backgroundSpan == 0) { - m_segmentRects[Track] = invalid; - } else { - // Track: |-------------------| - *changingCoord1 = *changingCoord2; - *changingCoord2 += backgroundSpan; - m_segmentRects[Track] = gfx::RECTToSkIRect(box); - } - - m_segmentRects[BeforeThumb] = invalid; - m_segmentRects[Thumb] = invalid; - m_segmentRects[AfterThumb] = invalid; - } else { - m_segmentRects[Track] = invalid; - - const int thumbOffset = (m_totalSize <= m_visibleSize) ? 0 : (value() * - (backgroundSpan - thumbGirth) / (m_totalSize - m_visibleSize)); - // Before thumb: |--------| - *changingCoord1 = *changingCoord2; - *changingCoord2 += thumbOffset; - m_segmentRects[BeforeThumb] = gfx::RECTToSkIRect(box); - - // Thumb: |XXX| - *changingCoord1 = *changingCoord2; - *changingCoord2 += thumbGirth; - m_segmentRects[Thumb] = gfx::RECTToSkIRect(box); - - // After thumb: |------| - *changingCoord1 = *changingCoord2; - *changingCoord2 += backgroundSpan - (thumbOffset + thumbGirth); - m_segmentRects[AfterThumb] = gfx::RECTToSkIRect(box); - } - - // End arrow: |>| - *changingCoord1 = *changingCoord2; - *changingCoord2 += buttonGirth; - m_segmentRects[Arrow2] = gfx::RECTToSkIRect(box); - - // Changed layout, so need to update m_mouseOver and m_autorepeatTimer - updateMousePositionInternal(); - - // DO NOT invalidate() here. We already invalidate()d for this layout when - // setting m_needsLayout = true; by the time we reach this point, we're - // called by paint(), so invalidate() is not only unnecessary but will - // waste effort. -#endif -} - -void PlatformScrollbar::updateMousePosition(int x, int y) -{ - m_lastNativePos.setX(x); - m_lastNativePos.setY(y); - - if (m_needsLayout) - layout(); // Calls updateMousePositionInternal() - else - updateMousePositionInternal(); -} - -void PlatformScrollbar::updateMousePositionInternal() -{ - m_mouseOver = None; - for (int i = 0; i < NumSegments; ++i) { - if ((m_lastNativePos.x() >= m_segmentRects[i].x()) && - (m_lastNativePos.x() < m_segmentRects[i].right()) && - (m_lastNativePos.y() >= m_segmentRects[i].y()) && - (m_lastNativePos.y() < m_segmentRects[i].bottom())) { - m_mouseOver = static_cast<Segment>(i); - break; - } - } - - // Start/stop autorepeat timer if capturing something other than the thumb. - if ((m_captureStart != None) && (m_captureStart != Thumb)) { - if (m_mouseOver != m_captureStart) - m_autorepeatTimer.stop(); // Safe to call when already stopped - else if (!m_autorepeatTimer.isActive()) - m_autorepeatTimer.startRepeating(kAutorepeatRepeatInterval); - } -} - -int PlatformScrollbar::getThemeState(Segment target) const -{ -#if PLATFORM(WIN_OS) - // When dragging the thumb, draw thumb pressed and other segments normal - // regardless of where the cursor actually is. See also four places in - // getThemeArrowState(). - if (m_captureStart == Thumb) { - if (target == Thumb) - return SCRBS_PRESSED; - return (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) ? - SCRBS_NORMAL : SCRBS_HOVER; - } - if (!m_enabled) - return SCRBS_DISABLED; - if ((m_mouseOver != target) || (target == Track)) { - return ((m_mouseOver == None) || - (win_util::GetWinVersion() < win_util::WINVERSION_VISTA)) ? - SCRBS_NORMAL : SCRBS_HOVER; - } - if (m_captureStart == None) - return SCRBS_HOT; - return (m_captureStart == target) ? SCRBS_PRESSED : SCRBS_NORMAL; -#elif PLATFORM(UNIX) - return 0; -#endif -} - -int PlatformScrollbar::getThemeArrowState(Segment target) const -{ -#if PLATFORM(WIN_OS) - // We could take advantage of knowing the values in the state enum to write - // some simpler code, but treating the state enum as a black box seems - // clearer and more future-proof. - if (target == Arrow1) { - if (orientation() == HorizontalScrollbar) { - if (m_captureStart == Thumb) { - return - (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) ? - ABS_LEFTNORMAL : ABS_LEFTHOVER; - } - if (!m_enabled) - return ABS_LEFTDISABLED; - if (m_mouseOver != target) { - return ((m_mouseOver == None) || - (win_util::GetWinVersion() < win_util::WINVERSION_VISTA)) ? - ABS_LEFTNORMAL : ABS_LEFTHOVER; - } - if (m_captureStart == None) - return ABS_LEFTHOT; - return (m_captureStart == target) ? - ABS_LEFTPRESSED : ABS_LEFTNORMAL; - } - if (m_captureStart == Thumb) { - return (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) ? - ABS_UPNORMAL : ABS_UPHOVER; - } - if (!m_enabled) - return ABS_UPDISABLED; - if (m_mouseOver != target) { - return ((m_mouseOver == None) || - (win_util::GetWinVersion() < win_util::WINVERSION_VISTA)) ? - ABS_UPNORMAL : ABS_UPHOVER; - } - if (m_captureStart == None) - return ABS_UPHOT; - return (m_captureStart == target) ? ABS_UPPRESSED : ABS_UPNORMAL; - } - if (orientation() == HorizontalScrollbar) { - if (m_captureStart == Thumb) { - return (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) ? - ABS_RIGHTNORMAL : ABS_RIGHTHOVER; - } - if (!m_enabled) - return ABS_RIGHTDISABLED; - if (m_mouseOver != target) { - return ((m_mouseOver == None) || - (win_util::GetWinVersion() < win_util::WINVERSION_VISTA)) ? - ABS_RIGHTNORMAL : ABS_RIGHTHOVER; - } - if (m_captureStart == None) - return ABS_RIGHTHOT; - return (m_captureStart == target) ? ABS_RIGHTPRESSED : ABS_RIGHTNORMAL; - } - if (m_captureStart == Thumb) { - return (win_util::GetWinVersion() < win_util::WINVERSION_VISTA) ? - ABS_DOWNNORMAL : ABS_DOWNHOVER; - } - if (!m_enabled) - return ABS_DOWNDISABLED; - if (m_mouseOver != target) { - return ((m_mouseOver == None) || - (win_util::GetWinVersion() < win_util::WINVERSION_VISTA)) ? - ABS_DOWNNORMAL : ABS_DOWNHOVER; - } - if (m_captureStart == None) - return ABS_DOWNHOT; - return (m_captureStart == target) ? ABS_DOWNPRESSED : ABS_DOWNNORMAL; -#elif PLATFORM(UNIX) - return 0; -#endif -} - -int PlatformScrollbar::getClassicThemeState(Segment target) const -{ -#if PLATFORM(WIN_OS) - // When dragging the thumb, draw the buttons normal even when hovered. - if (m_captureStart == Thumb) - return 0; - if (!m_enabled) - return DFCS_INACTIVE; - if ((m_mouseOver != target) || (target == Track)) - return 0; - if (m_captureStart == None) - return DFCS_HOT; - return (m_captureStart == target) ? (DFCS_PUSHED | DFCS_FLAT) : 0; -#elif PLATFORM(UNIX) - return 0; -#endif -} - -} // namespace WebCore diff --git a/webkit/port/platform/chromium/PlatformWidget.h b/webkit/port/platform/chromium/PlatformWidget.h index a97432b..8751657 100644 --- a/webkit/port/platform/chromium/PlatformWidget.h +++ b/webkit/port/platform/chromium/PlatformWidget.h @@ -27,8 +27,8 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#ifndef PlatformWidget_h__ -#define PlatformWidget_h__ +#ifndef PlatformWidget_h +#define PlatformWidget_h #include "base/gfx/native_widget_types.h" diff --git a/webkit/port/platform/chromium/PopupMenuChromium.cpp b/webkit/port/platform/chromium/PopupMenuChromium.cpp index 8d63e71..841ca08 100644 --- a/webkit/port/platform/chromium/PopupMenuChromium.cpp +++ b/webkit/port/platform/chromium/PopupMenuChromium.cpp @@ -37,8 +37,10 @@ #include "Document.h" #include "Font.h" #include "Frame.h" +#include "FrameView.h" #include "FontSelector.h" #include "FramelessScrollView.h" +#include "FramelessScrollViewClient.h" #include "GraphicsContext.h" #include "IntRect.h" #include "NotImplemented.h" @@ -46,13 +48,12 @@ #include "PlatformKeyboardEvent.h" #include "PlatformMouseEvent.h" #include "PlatformScreen.h" -#include "PlatformScrollBar.h" #include "PlatformWheelEvent.h" -#include "SystemTime.h" #include "RenderBlock.h" #include "RenderTheme.h" +#include "ScrollbarTheme.h" +#include "SystemTime.h" #include "Widget.h" -#include "WidgetClientChromium.h" #if !PLATFORM(WIN_OS) #include "KeyboardCodes.h" @@ -77,10 +78,12 @@ static const TimeStamp kTypeAheadTimeoutMs = 1000; class PopupListBox; +// TODO(darin): Our FramelessScrollView classes need to implement HostWindow! + // This class holds a PopupListBox. Its sole purpose is to be able to draw // a border around its child. All its paint/event handling is just forwarded // to the child listBox (with the appropriate transforms). -class PopupContainer : public FramelessScrollView { +class PopupContainer : public FramelessScrollView, public RefCounted<PopupContainer> { public: static PassRefPtr<PopupContainer> create(PopupMenuClient* client); @@ -107,6 +110,8 @@ public: PopupListBox* listBox() const { return m_listBox.get(); } private: + friend class RefCounted<PopupContainer>; + PopupContainer(PopupMenuClient* client); ~PopupContainer(); @@ -118,7 +123,7 @@ private: // This class uses WebCore code to paint and handle events for a drop-down list // box ("combobox" on Windows). -class PopupListBox : public FramelessScrollView { +class PopupListBox : public FramelessScrollView, public RefCounted<PopupListBox> { public: // FramelessScrollView virtual void paint(GraphicsContext* gc, const IntRect& rect); @@ -128,6 +133,9 @@ public: virtual bool handleWheelEvent(const PlatformWheelEvent& event); virtual bool handleKeyEvent(const PlatformKeyboardEvent& event); + // ScrollView + virtual HostWindow* hostWindow() const; + // PopupListBox methods // Show the popup @@ -168,6 +176,7 @@ public: private: friend class PopupContainer; + friend class RefCounted<PopupListBox>; // A type of List Item enum ListItemType { @@ -194,7 +203,7 @@ private: , m_repeatingChar(0) , m_lastCharTime(0) { - setScrollbarsMode(ScrollbarAlwaysOff); + setScrollbarModes(ScrollbarAlwaysOff, ScrollbarAlwaysOff); } ~PopupListBox() @@ -273,10 +282,10 @@ private: // The scrollbar which has mouse capture. Mouse events go straight to this // if non-NULL. - RefPtr<PlatformScrollbar> m_capturingScrollbar; + RefPtr<Scrollbar> m_capturingScrollbar; // The last scrollbar that the mouse was over. Used for mouseover highlights. - RefPtr<PlatformScrollbar> m_lastScrollbarUnderMouse; + RefPtr<Scrollbar> m_lastScrollbarUnderMouse; // The string the user has typed so far into the popup. Used for typeAheadFind. String m_typedString; @@ -289,12 +298,12 @@ private: }; static PlatformMouseEvent constructRelativeMouseEvent(const PlatformMouseEvent& e, - FrameView* parent, - FrameView* child) + FramelessScrollView* parent, + FramelessScrollView* child) { IntPoint pos = parent->convertSelfToChild(child, e.pos()); - // FIXME(beng): This is a horrible hack since PlatformWheelEvent has no setters for x/y. + // FIXME(beng): This is a horrible hack since PlatformMouseEvent has no setters for x/y. // Need to add setters and get patch back upstream to webkit source. PlatformMouseEvent relativeEvent = e; IntPoint& relativePos = const_cast<IntPoint&>(relativeEvent.pos()); @@ -304,8 +313,8 @@ static PlatformMouseEvent constructRelativeMouseEvent(const PlatformMouseEvent& } static PlatformWheelEvent constructRelativeWheelEvent(const PlatformWheelEvent& e, - FrameView* parent, - FrameView* child) + FramelessScrollView* parent, + FramelessScrollView* child) { IntPoint pos = parent->convertSelfToChild(child, e.pos()); @@ -334,7 +343,7 @@ PopupContainer::PopupContainer(PopupMenuClient* client) // assign it to a RefPtr. m_listBox->deref(); - setScrollbarsMode(ScrollbarAlwaysOff); + setScrollbarModes(ScrollbarAlwaysOff, ScrollbarAlwaysOff); } PopupContainer::~PopupContainer() @@ -346,25 +355,23 @@ PopupContainer::~PopupContainer() void PopupContainer::showPopup(FrameView* view) { // Pre-layout, our size matches the <select> dropdown control. - int selectHeight = frameGeometry().height(); + int selectHeight = frameRect().height(); // Lay everything out to figure out our preferred size, then tell the view's // WidgetClient about it. It should assign us a client. layout(); - WidgetClientChromium* widgetClient = static_cast<WidgetClientChromium*>( - view->client()); ChromeClientChromium* chromeClient = static_cast<ChromeClientChromium*>( view->frame()->page()->chrome()->client()); - if (widgetClient && chromeClient) { + if (chromeClient) { // If the popup would extend past the bottom of the screen, open upwards // instead. FloatRect screen = screenRect(view); - IntRect widgetRect = chromeClient->windowToScreen(frameGeometry()); + IntRect widgetRect = chromeClient->windowToScreen(frameRect()); if (widgetRect.bottom() > static_cast<int>(screen.bottom())) widgetRect.move(0, -(widgetRect.height() + selectHeight)); - widgetClient->popupOpened(this, widgetRect); + chromeClient->popupOpened(this, widgetRect); } // Must get called after we have a client and containingWindow. @@ -372,7 +379,7 @@ void PopupContainer::showPopup(FrameView* view) // Enable scrollbars after the listbox is inserted into the hierarchy, so // it has a proper WidgetClient. - m_listBox->setVScrollbarMode(ScrollbarAuto); + m_listBox->setVerticalScrollbarMode(ScrollbarAuto); m_listBox->scrollToRevealSelection(); @@ -385,9 +392,10 @@ void PopupContainer::hidePopup() m_listBox->disconnectClient(); removeChild(m_listBox.get()); - + m_listBox = 0; + if (client()) - static_cast<WidgetClientChromium*>(client())->popupClosed(this); + client()->popupClosed(this); } void PopupContainer::layout() @@ -439,7 +447,7 @@ void PopupContainer::hide() { void PopupContainer::paint(GraphicsContext* gc, const IntRect& rect) { // adjust coords for scrolled frame - IntRect r = intersection(rect, frameGeometry()); + IntRect r = intersection(rect, frameRect()); int tx = x(); int ty = y(); @@ -476,10 +484,10 @@ void PopupContainer::paintBorder(GraphicsContext* gc, const IntRect& rect) bool PopupListBox::handleMouseDownEvent(const PlatformMouseEvent& event) { - PlatformScrollbar* scrollbar = scrollbarUnderMouse(event); + Scrollbar* scrollbar = scrollbarUnderMouse(event); if (scrollbar) { m_capturingScrollbar = scrollbar; - m_capturingScrollbar->handleMousePressEvent(event); + m_capturingScrollbar->mouseDown(event); return true; } @@ -492,20 +500,20 @@ bool PopupListBox::handleMouseDownEvent(const PlatformMouseEvent& event) bool PopupListBox::handleMouseMoveEvent(const PlatformMouseEvent& event) { if (m_capturingScrollbar) { - m_capturingScrollbar->handleMouseMoveEvent(event); + m_capturingScrollbar->mouseMoved(event); return true; } - PlatformScrollbar* scrollbar = scrollbarUnderMouse(event); + Scrollbar* scrollbar = scrollbarUnderMouse(event); if (m_lastScrollbarUnderMouse != scrollbar) { // Send mouse exited to the old scrollbar. if (m_lastScrollbarUnderMouse) - m_lastScrollbarUnderMouse->handleMouseOutEvent(event); + m_lastScrollbarUnderMouse->mouseExited(); m_lastScrollbarUnderMouse = scrollbar; } if (scrollbar) { - scrollbar->handleMouseMoveEvent(event); + scrollbar->mouseMoved(event); return true; } @@ -519,7 +527,7 @@ bool PopupListBox::handleMouseMoveEvent(const PlatformMouseEvent& event) bool PopupListBox::handleMouseReleaseEvent(const PlatformMouseEvent& event) { if (m_capturingScrollbar) { - m_capturingScrollbar->handleMouseReleaseEvent(event); + m_capturingScrollbar->mouseUp(); m_capturingScrollbar = 0; return true; } @@ -598,6 +606,13 @@ bool PopupListBox::handleKeyEvent(const PlatformKeyboardEvent& event) return true; } +HostWindow* PopupListBox::hostWindow() const +{ + // Our parent is the root ScrollView, so it is the one that has a + // HostWindow. FrameView::hostWindow() works similarly. + return parent() ? parent()->hostWindow() : 0; +} + // From HTMLSelectElement.cpp static String stripLeadingWhiteSpace(const String& string) { @@ -655,9 +670,9 @@ void PopupListBox::typeAheadFind(const PlatformKeyboardEvent& event) void PopupListBox::paint(GraphicsContext* gc, const IntRect& rect) { // adjust coords for scrolled frame - IntRect r = intersection(rect, frameGeometry()); - int tx = x() - contentsX(); - int ty = y() - contentsY(); + IntRect r = intersection(rect, frameRect()); + int tx = x() - scrollX(); + int ty = y() - scrollY(); r.move(-tx, -ty); @@ -680,12 +695,8 @@ void PopupListBox::paint(GraphicsContext* gc, const IntRect& rect) ScrollView::paint(gc, rect); } -static RenderStyle* getPopupClientStyleForRow(PopupMenuClient* client, int rowIndex) { - RenderStyle* style = client->itemStyle(rowIndex); - if (!style) - style = client->clientStyle(); - return style; -} +static const int separatorPadding = 4; +static const int separatorHeight = 1; void PopupListBox::paintRow(GraphicsContext* gc, const IntRect& rect, int rowIndex) { @@ -695,7 +706,7 @@ void PopupListBox::paintRow(GraphicsContext* gc, const IntRect& rect, int rowInd if (!rowRect.intersects(rect)) return; - RenderStyle* style = getPopupClientStyleForRow(m_popupClient, rowIndex); + PopupMenuStyle style = m_popupClient->itemStyle(rowIndex); // Paint background Color backColor, textColor; @@ -703,16 +714,26 @@ void PopupListBox::paintRow(GraphicsContext* gc, const IntRect& rect, int rowInd backColor = theme()->activeListBoxSelectionBackgroundColor(); textColor = theme()->activeListBoxSelectionForegroundColor(); } else { - backColor = m_popupClient->itemBackgroundColor(rowIndex); - textColor = style->color(); + backColor = style.backgroundColor(); + textColor = style.foregroundColor(); } // If we have a transparent background, make sure it has a color to blend // against. if (backColor.hasAlpha()) - gc->fillRect(rowRect, Color::white); + gc->fillRect(rowRect, Color::white); gc->fillRect(rowRect, backColor); + + if (m_popupClient->itemIsSeparator(rowIndex)) { + IntRect separatorRect( + rowRect.x() + separatorPadding, + rowRect.y() + (rowRect.height() - separatorHeight) / 2, + rowRect.width() - 2 * separatorPadding, separatorHeight); + gc->fillRect(separatorRect, textColor); + return; + } + gc->setFillColor(textColor); Font itemFont = getRowFont(rowIndex); @@ -723,22 +744,22 @@ void PopupListBox::paintRow(GraphicsContext* gc, const IntRect& rect, int rowInd unsigned length = itemText.length(); const UChar* str = itemText.characters(); - TextRun textRun(str, length, false, 0, 0, style->direction() == RTL, style->unicodeBidi() == Override); + TextRun textRun(str, length, false, 0, 0, itemText.defaultWritingDirection() == WTF::Unicode::RightToLeft); + + // TODO(ojan): http://b/1210481 We should get the padding of individual + // option elements. This probably implies changes to PopupMenuClient. // Draw the item text - // TODO(ojan): http://b/1210481 We should get the padding of individual option elements. - rowRect.move(theme()->popupInternalPaddingLeft(style), itemFont.ascent()); - if (style->direction() == RTL) { - // Right-justify the text for RTL style. - rowRect.move(rowRect.width() - itemFont.width(textRun) - - 2 * theme()->popupInternalPaddingLeft(style), 0); + if (style.isVisible()) { + int textX = max(0, m_popupClient->clientPaddingLeft() - m_popupClient->clientInsetLeft()); + int textY = rowRect.y() + itemFont.ascent() + (rowRect.height() - itemFont.height()) / 2; + gc->drawBidiText(textRun, IntPoint(textX, textY)); } - gc->drawBidiText(textRun, rowRect.location()); } Font PopupListBox::getRowFont(int rowIndex) { - Font itemFont = m_popupClient->itemStyle(rowIndex)->font(); + Font itemFont = m_popupClient->itemStyle(rowIndex).font(); if (m_popupClient->itemIsLabel(rowIndex)) { // Bold-ify labels (ie, an <optgroup> heading). FontDescription d = itemFont.fontDescription(); @@ -767,7 +788,7 @@ void PopupListBox::abandon() int PopupListBox::pointToRowIndex(const IntPoint& point) { - int y = contentsY() + point.y(); + int y = scrollY() + point.y(); // TODO(mpcomplete): binary search if perf matters. for (int i = 0; i < numItems(); ++i) { @@ -818,10 +839,7 @@ void PopupListBox::setOriginalIndex(int index) int PopupListBox::getRowHeight(int index) { - RenderStyle* style; - if ((index < 0) || (!(style = m_popupClient->itemStyle(index)))) - style = m_popupClient->clientStyle(); - return style->font().height(); + return m_popupClient->itemStyle(index).font().height(); } IntRect PopupListBox::getRowBounds(int index) @@ -838,7 +856,7 @@ void PopupListBox::invalidateRow(int index) if (index < 0) return; - updateContents(getRowBounds(index)); + invalidateRect(getRowBounds(index)); } void PopupListBox::scrollToRevealRow(int index) @@ -848,12 +866,12 @@ void PopupListBox::scrollToRevealRow(int index) IntRect rowRect = getRowBounds(index); - if (rowRect.y() < contentsY()) { + if (rowRect.y() < scrollY()) { // Row is above current scroll position, scroll up. - ScrollView::setContentsPos(0, rowRect.y()); - } else if (rowRect.bottom() > contentsY() + visibleHeight()) { + ScrollView::setScrollPosition(IntPoint(0, rowRect.y())); + } else if (rowRect.bottom() > scrollY() + visibleHeight()) { // Row is below current scroll position, scroll down. - ScrollView::setContentsPos(0, rowRect.bottom() - visibleHeight()); + ScrollView::setScrollPosition(IntPoint(0, rowRect.bottom() - visibleHeight())); } } @@ -946,10 +964,9 @@ void PopupListBox::layout() int width = itemFont.width(TextRun(text)); baseWidth = max(baseWidth, width); } - RenderStyle* style = getPopupClientStyleForRow(m_popupClient, i); // TODO(ojan): http://b/1210481 We should get the padding of individual option elements. paddingWidth = max(paddingWidth, - theme()->popupInternalPaddingLeft(style) + theme()->popupInternalPaddingRight(style)); + m_popupClient->clientPaddingLeft() + m_popupClient->clientPaddingRight()); } int windowHeight = 0; @@ -970,7 +987,7 @@ void PopupListBox::layout() // Set our widget and scrollable contents sizes. int scrollbarWidth = 0; if (m_visibleRows < numItems()) - scrollbarWidth = PlatformScrollbar::verticalScrollbarWidth(); + scrollbarWidth = ScrollbarTheme::nativeTheme()->scrollbarThickness(); int windowWidth = baseWidth + scrollbarWidth + paddingWidth; int contentWidth = baseWidth; @@ -983,8 +1000,10 @@ void PopupListBox::layout() } resize(windowWidth, windowHeight); - resizeContents(contentWidth, getRowBounds(numItems() - 1).bottom()); - scrollToRevealSelection(); + setContentsSize(IntSize(contentWidth, getRowBounds(numItems() - 1).bottom())); + + if (hostWindow()) + scrollToRevealSelection(); invalidate(); } @@ -1042,7 +1061,7 @@ void PopupMenu::show(const IntRect& r, FrameView* v, int index) location.move(0, r.height()); IntRect popupRect(location, r.size()); - p.m_popup->setFrameGeometry(popupRect); + p.m_popup->setFrameRect(popupRect); p.m_popup->showPopup(v); } diff --git a/webkit/port/platform/chromium/ScrollViewChromium.cpp b/webkit/port/platform/chromium/ScrollViewChromium.cpp deleted file mode 100644 index b773243..0000000 --- a/webkit/port/platform/chromium/ScrollViewChromium.cpp +++ /dev/null @@ -1,1251 +0,0 @@ -/* - * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "config.h" -#include "ScrollView.h" - -#include "Chrome.h" -#include "ChromeClient.h" -#include "FloatRect.h" -#include "FocusController.h" -#include "Frame.h" -#include "FrameView.h" -#include "GraphicsContext.h" -#include "IntRect.h" -#include "NotImplemented.h" -#include "Page.h" -#include "PlatformScrollBar.h" -#include "PlatformMouseEvent.h" -#include "PlatformWheelEvent.h" -#include "Range.h" -#include "RenderTheme.h" -#include "ScrollBar.h" -#include "SkiaUtils.h" -#include "WidgetClientChromium.h" -#include <algorithm> -#include <wtf/Assertions.h> -#include <wtf/HashSet.h> - -#undef LOG -#include "base/gfx/platform_canvas.h" -#include "webkit/glue/webframe_impl.h" -#include "webkit/glue/webview_impl.h" - -using namespace std; - -namespace WebCore { - -class ScrollView::ScrollViewPrivate : public ScrollbarClient { -public: - ScrollViewPrivate(ScrollView* view) - : m_view(view) - , m_hasStaticBackground(false) - , m_scrollbarsSuppressed(false) - , m_inUpdateScrollbars(false) - , m_scrollbarsAvoidingResizer(0) - , m_vScrollbarMode(ScrollbarAuto) - , m_hScrollbarMode(ScrollbarAuto) - , m_visible(false) - , m_attachedToWindow(false) - , m_panScrollIconPoint(0,0) - , m_drawPanScrollIcon(false) - { - } - - ~ScrollViewPrivate() - { - setHasHorizontalScrollbar(false); - setHasVerticalScrollbar(false); - } - - void setHasHorizontalScrollbar(bool hasBar); - void setHasVerticalScrollbar(bool hasBar); - - virtual void valueChanged(Scrollbar*); - virtual IntRect windowClipRect() const; - virtual bool isActive() const; - - void scrollBackingStore(const IntSize& scrollDelta); - - // Get the vector containing the result from the FindInPage operation. - const Vector<RefPtr<Range> >* getTickmarks() const; - - // Retrieves the index of the active tickmark for a given frame. If the - // frame does not have an active tickmark (for example if the active - // tickmark resides in another frame) this function returns kNoTickmark. - size_t getActiveTickmarkIndex() const; - - // This is a helper function for accessing the bitmaps that have been cached - // in the renderer. - const SkBitmap* GetPreloadedBitmapFromRenderer(int resource_id) const; - - // Highlight the matches found during FindInPage operation. - void highlightMatches(GraphicsContext* context) const; - - // Highlights the node selected in the DOM inspector. - void highlightInspectedNode(GraphicsContext* context, Frame* frame) const; - -#if PLATFORM(WIN_OS) - // Highlight a certain Range on the page. - void highlightRange(HDC hdc, HDC mem_dc, RefPtr<Range> range) const; -#endif - - void setAllowsScrolling(bool); - bool allowsScrolling() const; - - ScrollView* m_view; - IntSize m_scrollOffset; - IntSize m_contentsSize; - bool m_hasStaticBackground; - bool m_scrollbarsSuppressed; - bool m_inUpdateScrollbars; - int m_scrollbarsAvoidingResizer; - ScrollbarMode m_vScrollbarMode; - ScrollbarMode m_hScrollbarMode; - RefPtr<PlatformScrollbar> m_vBar; - RefPtr<PlatformScrollbar> m_hBar; - HashSet<Widget*> m_children; - bool m_visible; - bool m_attachedToWindow; - IntPoint m_panScrollIconPoint; - bool m_drawPanScrollIcon; -}; - -const int panIconSizeLength = 20; - -void ScrollView::ScrollViewPrivate::setHasHorizontalScrollbar(bool hasBar) -{ - if (Scrollbar::hasPlatformScrollbars()) { - if (hasBar && !m_hBar) { - m_hBar = PlatformScrollbar::create(this, HorizontalScrollbar, RegularScrollbar); - m_view->addChild(m_hBar.get()); - } else if (!hasBar && m_hBar) { - m_view->removeChild(m_hBar.get()); - m_hBar = 0; - } - } -} - -void ScrollView::ScrollViewPrivate::setHasVerticalScrollbar(bool hasBar) -{ - if (Scrollbar::hasPlatformScrollbars()) { - if (hasBar && !m_vBar) { - m_vBar = PlatformScrollbar::create(this, VerticalScrollbar, RegularScrollbar); - m_view->addChild(m_vBar.get()); - } else if (!hasBar && m_vBar) { - m_view->removeChild(m_vBar.get()); - m_vBar = 0; - } - } -} - -void ScrollView::ScrollViewPrivate::valueChanged(Scrollbar* bar) -{ - // Figure out if we really moved. - IntSize newOffset = m_scrollOffset; - if (bar) { - if (bar == m_hBar) - newOffset.setWidth(bar->value()); - else if (bar == m_vBar) - newOffset.setHeight(bar->value()); - } - IntSize scrollDelta = newOffset - m_scrollOffset; - if (scrollDelta == IntSize()) - return; - m_scrollOffset = newOffset; - - if (m_scrollbarsSuppressed) - return; - - scrollBackingStore(scrollDelta); - - if (Frame* frame = static_cast<FrameView*>(m_view)->frame()) { - frame->sendScrollEvent(); - - // Inform the delegate that the scroll position has changed. - WidgetClientChromium* client = - static_cast<WidgetClientChromium*>(m_view->client()); - if (client) - client->onScrollPositionChanged(m_view); - } -} - -void ScrollView::ScrollViewPrivate::scrollBackingStore(const IntSize& scrollDelta) -{ - // Since scrolling is double buffered, we will be blitting the scroll view's intersection - // with the clip rect every time to keep it smooth. - - IntRect clipRect = m_view->windowClipRect(); - IntRect scrollViewRect = m_view->convertToContainingWindow(IntRect(0, 0, m_view->visibleWidth(), m_view->visibleHeight())); - - // Negative when our frame is smaller than the min scrollbar width. - if (scrollViewRect.width() < 0) - scrollViewRect.setWidth(0); - if (scrollViewRect.height() < 0) - scrollViewRect.setHeight(0); - - if (!m_hasStaticBackground) { // The main frame can just blit the WebView window - // FIXME: Find a way to blit subframes without blitting overlapping content - m_view->scrollBackingStore(-scrollDelta.width(), -scrollDelta.height(), scrollViewRect, clipRect); - } else { - IntRect updateRect = clipRect; - updateRect.intersect(scrollViewRect); - - // We need to go ahead and repaint the entire backing store. Do it now before moving the - // plugins. - m_view->addToDirtyRegion(updateRect); - m_view->updateBackingStore(); - } - - // This call will move child HWNDs (plugins) and invalidate them as well. - m_view->geometryChanged(); -} - -void ScrollView::ScrollViewPrivate::setAllowsScrolling(bool flag) -{ - if (flag && m_vScrollbarMode == ScrollbarAlwaysOff) - m_vScrollbarMode = ScrollbarAuto; - else if (!flag) - m_vScrollbarMode = ScrollbarAlwaysOff; - - if (flag && m_hScrollbarMode == ScrollbarAlwaysOff) - m_hScrollbarMode = ScrollbarAuto; - else if (!flag) - m_hScrollbarMode = ScrollbarAlwaysOff; - - m_view->updateScrollbars(m_scrollOffset); -} - -bool ScrollView::ScrollViewPrivate::allowsScrolling() const -{ - // Return YES if either horizontal or vertical scrolling is allowed. - return m_hScrollbarMode != ScrollbarAlwaysOff || m_vScrollbarMode != ScrollbarAlwaysOff; -} - -IntRect ScrollView::ScrollViewPrivate::windowClipRect() const -{ - // FrameView::windowClipRect() will exclude the scrollbars, but here we - // want to include them, so we are forced to cast to FrameView in order to - // call the non-virtual version of windowClipRect :-( - // - // The non-frame case exists to support FramelessScrollView. - - const FrameView* frameView = static_cast<const FrameView*>(m_view); - if (frameView->frame()) - return frameView->windowClipRect(false); - - return m_view->windowClipRect(); -} - -bool ScrollView::ScrollViewPrivate::isActive() const -{ - Page* page = static_cast<const FrameView*>(m_view)->frame()->page(); - return page && page->focusController()->isActive(); -} - -const Vector<RefPtr<Range> >* ScrollView::ScrollViewPrivate::getTickmarks() const -{ - FrameView* view = static_cast<FrameView*>(m_view); - ASSERT(view); - Frame* frame = view->frame(); - - if (!frame) - return NULL; // NOTE: Frame can be null for dropdown boxes. - - WidgetClientChromium* c = - static_cast<WidgetClientChromium*>(m_view->client()); - ASSERT(c); - return c->getTickmarks(view->frame()); -} - -size_t ScrollView::ScrollViewPrivate::getActiveTickmarkIndex() const -{ - FrameView* view = static_cast<FrameView*>(m_view); - ASSERT(view); - Frame* frame = view->frame(); - - // NOTE: Frame can be null for dropdown boxes. - if (!frame) - return WidgetClientChromium::kNoTickmark; - - WidgetClientChromium* c = - static_cast<WidgetClientChromium*>(m_view->client()); - ASSERT(c); - return c->getActiveTickmarkIndex(view->frame()); -} - -const SkBitmap* ScrollView::ScrollViewPrivate::GetPreloadedBitmapFromRenderer( - int resource_id) const -{ - WidgetClientChromium* c = - static_cast<WidgetClientChromium*>(m_view->client()); - if (!c) - return NULL; - - return c->getPreloadedResourceBitmap(resource_id); -} - -#if PLATFORM(WIN_OS) -void ScrollView::ScrollViewPrivate::highlightMatches( - GraphicsContext* context) const -{ - if (context->paintingDisabled()) - return; - - const Vector<RefPtr<Range> >* tickmarks = getTickmarks(); - if (!tickmarks || tickmarks->isEmpty()) - return; - - context->save(); - context->translate(m_view->x(), m_view->y()); - - // NOTE: We tolerate the platformContext() call here because the scrollbars - // will not be serialized, i.e. composition is done in the renderer and - // never in the browser. - // Prepare for drawing the arrows along the scroll bar. - gfx::PlatformCanvas* canvas = context->platformContext()->canvas(); - - int horz_start = 0; - int horz_end = m_view->width(); - int vert_start = 0; - int vert_end = m_view->height(); - - if (m_vBar) { - // Account for the amount of scrolling on the vertical scroll bar. - vert_start += m_scrollOffset.height(); - vert_end += m_scrollOffset.height(); - // Don't draw atop the vertical scrollbar. - horz_end -= PlatformScrollbar::verticalScrollbarWidth() + 1; - } - - if (m_hBar) { - // Account for the amount of scrolling on the horizontal scroll bar. - horz_start += m_scrollOffset.width(); - horz_end += m_scrollOffset.width(); - // Don't draw atop the horizontal scrollbar. - vert_end -= PlatformScrollbar::horizontalScrollbarHeight() + 1; - } - - HDC hdc = canvas->beginPlatformPaint(); - - // We create a memory DC, copy the bits we want to highlight to the DC and - // then MERGE_COPY pieces of it back with a yellow brush selected (which - // gives them yellow highlighting). - HDC mem_dc = CreateCompatibleDC(hdc); - HBITMAP mem_bmp = CreateCompatibleBitmap(hdc, m_view->width(), - m_view->height()); - HGDIOBJ old_bmp = SelectObject(mem_dc, mem_bmp); - - // Now create a brush for hit highlighting. This is needed for the MERGECOPY - // to paint a yellow highlight onto the matches found. For more details, see - // the documentation for BitBlt. - static const COLORREF kFillColor = RGB(255, 250, 150); // Light yellow. - HGDIOBJ inactive_brush = CreateSolidBrush(kFillColor); - static const COLORREF kFillColorActive = RGB(255, 150, 50); // Orange. - HGDIOBJ active_brush = CreateSolidBrush(kFillColorActive); - HGDIOBJ old_brush = SelectObject(hdc, inactive_brush); - - // Keep a copy of what's on screen, so we can MERGECOPY it back later for - // the purpose of highlighting the text. - BitBlt(mem_dc, 0, 0, m_view->width(), m_view->height(), - hdc, 0, 0, SRCCOPY); - - const size_t active_tickmark = getActiveTickmarkIndex(); - for (Vector<RefPtr<Range> >::const_iterator i = tickmarks->begin(); - i != tickmarks->end(); ++i) { - const RefPtr<Range> range = (*i); - const IntRect& bounds = range->boundingBox(); - // To highlight the word, we check if the rectangle boundary is within - // the bounds vertically as well as horizontally. - if (bounds.bottomRight().y() > vert_start && - bounds.topLeft().y() < vert_end && - bounds.bottomRight().x() > horz_start && - bounds.topLeft().x() < horz_end && - WebFrameImpl::RangeShouldBeHighlighted(range.get())) { - // We highlight the active tick-mark with a green color instead - // of the normal yellow color. - SelectObject(hdc, ((i - tickmarks->begin()) == active_tickmark) ? - active_brush : inactive_brush); - highlightRange(hdc, mem_dc, range); - } - } - - SelectObject(mem_dc, old_brush); - DeleteObject(active_brush); - DeleteObject(inactive_brush); - - SelectObject(mem_dc, old_bmp); - DeleteObject(mem_bmp); - - DeleteDC(mem_dc); - - canvas->endPlatformPaint(); - context->restore(); -} -#else -void ScrollView::ScrollViewPrivate::highlightMatches( - GraphicsContext* context) const -{ - notImplemented(); -} -#endif - -// TODO(ojan): http://b/1143983 make this work for inline elements as they can -// wrap (use highlightRange instead?) -void ScrollView::ScrollViewPrivate::highlightInspectedNode( - GraphicsContext* context, Frame* frame) const -{ - WebViewImpl* c = static_cast<WebViewImpl*>(m_view->client()); - const WebCore::Node* inspected_node = c->getInspectedNode(frame); - - if (!inspected_node) - return; - -#if !PLATFORM(CG) - SkPaint paint; - paint.setARGB(122, 255, 225, 0); // Yellow - - // TODO(ojan): http://b/1143991 Once we sync a Skia version that supports - // it, use SkPorterDuff::kScreenMode and remove the transparency. - // Then port highlightMatches/highlightRanges to use this as well. - // Although, perhaps the web inspector really should be using - // an alpha overlay? It's less pretty, but more clear what node - // is being overlayed. In this case, the TODO is to make - // highlightMatches/Ranges use Skia and to leave this as is. - // - // paint.setPorterDuffXfermode(SkPorterDuff::kScreenMode); - - // TODO(ojan): http://b/1143975 Draw the padding/border/margin boxes in - // different colors. - context->platformContext()->paintSkPaint(inspected_node->getRect(), paint); -#else - CGContextRef cg_context = context->platformContext(); - CGContextSaveGState(cg_context); - CGContextSetRGBFillColor(cg_context, 0.4784, 1.0, 0.8824, 1.0); - CGContextSetRGBStrokeColor(cg_context, 0.4784, 1.0, 0.8824, 1.0); - CGContextFillRect(cg_context, inspected_node->getRect()); - CGContextRestoreGState(cg_context); -#endif -} - -#if PLATFORM(WIN_OS) -void ScrollView::ScrollViewPrivate::highlightRange(HDC hdc, HDC mem_dc, - RefPtr<Range> range) const { - // We need to figure out whether the match that we want to - // highlight is on a single line or on multiple lines. - IntRect start = VisiblePosition(range->startPosition()).caretRect(); - IntRect end = VisiblePosition(range->endPosition()).caretRect(); - IntRect bounds = range->boundingBox(); - - // Multi-line bounds have different y pos for start and end. - if (start.y() == end.y()) { - int x = bounds.topLeft().x() - m_scrollOffset.width(); - int y = bounds.topLeft().y() - m_scrollOffset.height(); - int w = bounds.bottomRight().x() - bounds.topLeft().x() + 1; - int h = bounds.bottomRight().y() - bounds.topLeft().y() + 1; - - // MERGECOPY the relevant bits back, creating a highlight. - BitBlt(hdc, x, y, w, h, mem_dc, x, y, MERGECOPY); - } else { - // Multi line bounds, for example, when we need to highlight - // all the numbers (and only the numbers) in this block of - // text: - // - // xxxxxxxxxxxxxxxx11111111 - // 222222222222222222222222 - // 222222222222222222222222 - // 333333333333333xxxxxxxxx - // - // In this case, the bounding box will contain all the text, - // (including the exes (x)). We highlight in three steps. - // First we highlight the segment containing the ones (1) - // above. Then the whole middle section is highlighted, or the - // twos (2), and finally the remaining segment consisting of - // the threes (3) is highlighted. - - const int row_height = start.height(); - int x = 0, y = 0, w = 0, h = 0; - - // The start and end caret can be outside the bounding box, for leading - // and trailing whitespace and we should not highlight those. - if (start.intersects(bounds)) { - // Highlight the first segment. - x = start.x() - m_scrollOffset.width(); - y = start.y() - m_scrollOffset.height(); - w = bounds.topRight().x() - start.x() + 1; - h = row_height; - - BitBlt(hdc, x, y, w, h, mem_dc, x, y, MERGECOPY); - } - - // Figure out how large the middle section is. - int rows_between = (end.y() - start.y()) / row_height - 1; - - if (rows_between > 0) { - // Highlight the middle segment. - x = bounds.x() - m_scrollOffset.width(); - y = bounds.y() - m_scrollOffset.height() + row_height; - w = bounds.width(); - h = rows_between * row_height; - - BitBlt(hdc, x, y, w, h, mem_dc, x, y, MERGECOPY); - } - - // The end caret might not intersect the bounding box, for example - // when highlighting the last letter of a line that wraps. In that - // case the end caret is set to the beginning of the next line, and - // since it doesn't intersect with the bounding box we don't need to - // highlight. - if (end.intersects(bounds)) { - // Highlight the remaining segment. - x = bounds.bottomLeft().x() - m_scrollOffset.width(); - y = bounds.bottomLeft().y() - m_scrollOffset.height() - - row_height + 1; - w = end.x() - bounds.bottomLeft().x(); - h = row_height; - - BitBlt(hdc, x, y, w, h, mem_dc, x, y, MERGECOPY); - } - } -} -#endif - -ScrollView::ScrollView() -{ - m_data = new ScrollViewPrivate(this); -} - -ScrollView::~ScrollView() -{ - delete m_data; -} - -void ScrollView::updateContents(const IntRect& rect, bool now) -{ - if (rect.isEmpty()) - return; - - IntRect containingWindowRect = contentsToWindow(rect); - - if (containingWindowRect.x() < 0) - containingWindowRect.setX(0); - if (containingWindowRect.y() < 0) - containingWindowRect.setY(0); - - updateWindowRect(containingWindowRect, now); -} - -void ScrollView::updateWindowRect(const IntRect& rect, bool now) -{ - // TODO(dglazkov): make sure this is actually the right way to do this - - // Cache the dirty spot. - addToDirtyRegion(rect); - - // since painting always happens asynchronously, we don't have a way to - // honor the "now" parameter. it is unclear if it matters. - if (now) { - // TODO(iyengar): Should we force a layout to occur here? - geometryChanged(); - } -} - -void ScrollView::update() -{ - // TODO(iyengar): Should we force a layout to occur here? - geometryChanged(); -} - -int ScrollView::visibleWidth() const -{ - return width() - (m_data->m_vBar ? m_data->m_vBar->width() : 0); -} - -int ScrollView::visibleHeight() const -{ - return height() - (m_data->m_hBar ? m_data->m_hBar->height() : 0); -} - -FloatRect ScrollView::visibleContentRect() const -{ - return FloatRect(contentsX(), contentsY(), visibleWidth(), visibleHeight()); -} - -FloatRect ScrollView::visibleContentRectConsideringExternalScrollers() const -{ - // external scrollers not supported for now - return visibleContentRect(); -} - -void ScrollView::setContentsPos(int newX, int newY) -{ - int dx = newX - contentsX(); - int dy = newY - contentsY(); - scrollBy(dx, dy); -} - -void ScrollView::resizeContents(int w, int h) -{ - IntSize newContentsSize(w, h); - if (m_data->m_contentsSize != newContentsSize) { - m_data->m_contentsSize = newContentsSize; - updateScrollbars(m_data->m_scrollOffset); - } -} - -void ScrollView::setFrameGeometry(const IntRect& newGeometry) -{ - IntRect normalizedNewGeometry = newGeometry; - - // Webkit sometimes attempts to set negative sizes due to - // sloppy calculations of width with margins and such. - // (RenderPart:updateWidgetPosition is one example.) - // Safeguard against this and prevent negative heights/widths. - if (normalizedNewGeometry.width() < 0) - normalizedNewGeometry.setWidth(0); - if (normalizedNewGeometry.height() < 0) - normalizedNewGeometry.setHeight(0); - - IntRect oldGeometry = frameGeometry(); - Widget::setFrameGeometry(normalizedNewGeometry); - - if (normalizedNewGeometry == oldGeometry) - return; - - if (normalizedNewGeometry.width() != oldGeometry.width() || - normalizedNewGeometry.height() != oldGeometry.height()) { - updateScrollbars(m_data->m_scrollOffset); - - // when used to display a popup menu, we do not have a frame - FrameView* frameView = static_cast<FrameView*>(this); - if (frameView->frame()) - frameView->setNeedsLayout(); - } - - geometryChanged(); -} - -int ScrollView::contentsX() const -{ - return scrollOffset().width(); -} - -int ScrollView::contentsY() const -{ - return scrollOffset().height(); -} - -int ScrollView::contentsWidth() const -{ - return m_data->m_contentsSize.width(); -} - -int ScrollView::contentsHeight() const -{ - return m_data->m_contentsSize.height(); -} - -IntPoint ScrollView::windowToContents(const IntPoint& windowPoint) const -{ - IntPoint viewPoint = convertFromContainingWindow(windowPoint); - return viewPoint + scrollOffset(); -} - -IntPoint ScrollView::contentsToWindow(const IntPoint& contentsPoint) const -{ - IntPoint viewPoint = contentsPoint - scrollOffset(); - return convertToContainingWindow(viewPoint); -} - -IntPoint ScrollView::convertChildToSelf(const Widget* child, const IntPoint& point) const -{ - IntPoint newPoint = point; - if (child != m_data->m_hBar && child != m_data->m_vBar) - newPoint = point - scrollOffset(); - return Widget::convertChildToSelf(child, newPoint); -} - -IntPoint ScrollView::convertSelfToChild(const Widget* child, const IntPoint& point) const -{ - IntPoint newPoint = point; - if (child != m_data->m_hBar && child != m_data->m_vBar) - newPoint = point + scrollOffset(); - return Widget::convertSelfToChild(child, newPoint); -} - -IntSize ScrollView::scrollOffset() const -{ - return m_data->m_scrollOffset; -} - -IntSize ScrollView::maximumScroll() const -{ - // We should not check whether scrolling is allowed for this view before calculating - // the maximumScroll. Please refer to http://b/issue?id=1164704, where in scrolling - // would not work on a scrollview created with scrollbars disabled. The current - // behavior mirrors Safari's webkit implementation. Firefox also behaves similarly. - IntSize delta = (m_data->m_contentsSize - IntSize(visibleWidth(), visibleHeight())) - scrollOffset(); - delta.clampNegativeToZero(); - return delta; -} - -void ScrollView::scrollBy(int dx, int dy) -{ - IntSize scrollOffset = m_data->m_scrollOffset; - IntSize newScrollOffset = scrollOffset + IntSize(dx, dy).shrunkTo(maximumScroll()); - newScrollOffset.clampNegativeToZero(); - - if (newScrollOffset == scrollOffset) - return; - - updateScrollbars(newScrollOffset); -} - -void ScrollView::scrollRectIntoViewRecursively(const IntRect& r) -{ - IntPoint p(max(0, r.x()), max(0, r.y())); - ScrollView* view = this; - while (view) { - view->setContentsPos(p.x(), p.y()); - p.move(view->x() - view->scrollOffset().width(), view->y() - view->scrollOffset().height()); - view = static_cast<ScrollView*>(view->parent()); - } -} - -WebCore::ScrollbarMode ScrollView::hScrollbarMode() const -{ - return m_data->m_hScrollbarMode; -} - -WebCore::ScrollbarMode ScrollView::vScrollbarMode() const -{ - return m_data->m_vScrollbarMode; -} - -void ScrollView::suppressScrollbars(bool suppressed, bool repaintOnSuppress) -{ - m_data->m_scrollbarsSuppressed = suppressed; - if (repaintOnSuppress && !suppressed) { - if (m_data->m_hBar) - m_data->m_hBar->invalidate(); - if (m_data->m_vBar) - m_data->m_vBar->invalidate(); - - // Invalidate the scroll corner too on unsuppress. - IntRect hCorner; - if (m_data->m_hBar && width() - m_data->m_hBar->width() > 0) { - hCorner = IntRect(m_data->m_hBar->width(), - height() - m_data->m_hBar->height(), - width() - m_data->m_hBar->width(), - m_data->m_hBar->height()); - invalidateRect(hCorner); - } - - if (m_data->m_vBar && height() - m_data->m_vBar->height() > 0) { - IntRect vCorner(width() - m_data->m_vBar->width(), - m_data->m_vBar->height(), - m_data->m_vBar->width(), - height() - m_data->m_vBar->height()); - if (vCorner != hCorner) - invalidateRect(vCorner); - } - } -} - -void ScrollView::setHScrollbarMode(ScrollbarMode newMode) -{ - if (m_data->m_hScrollbarMode != newMode) { - m_data->m_hScrollbarMode = newMode; - updateScrollbars(m_data->m_scrollOffset); - } -} - -void ScrollView::setVScrollbarMode(ScrollbarMode newMode) -{ - if (m_data->m_vScrollbarMode != newMode) { - m_data->m_vScrollbarMode = newMode; - updateScrollbars(m_data->m_scrollOffset); - } -} - -void ScrollView::setScrollbarsMode(ScrollbarMode newMode) -{ - if (m_data->m_hScrollbarMode != newMode || - m_data->m_vScrollbarMode != newMode) { - m_data->m_hScrollbarMode = m_data->m_vScrollbarMode = newMode; - updateScrollbars(m_data->m_scrollOffset); - } -} - -void ScrollView::setStaticBackground(bool flag) -{ - m_data->m_hasStaticBackground = flag; -} - -void ScrollView::updateScrollbars(const IntSize& desiredOffset) -{ - // Don't allow re-entrancy into this function. - if (m_data->m_inUpdateScrollbars) - return; - - m_data->m_inUpdateScrollbars = true; - - bool hasVerticalScrollbar = m_data->m_vBar; - bool hasHorizontalScrollbar = m_data->m_hBar; - bool oldHasVertical = hasVerticalScrollbar; - bool oldHasHorizontal = hasHorizontalScrollbar; - ScrollbarMode hScroll = m_data->m_hScrollbarMode; - ScrollbarMode vScroll = m_data->m_vScrollbarMode; - - const int cVerticalWidth = PlatformScrollbar::verticalScrollbarWidth(); - const int cHorizontalHeight = PlatformScrollbar::horizontalScrollbarHeight(); - - // we may not be able to support scrollbars due to our frame geometry - if (width() < cVerticalWidth) - vScroll = ScrollbarAlwaysOff; - if (height() < cHorizontalHeight) - hScroll = ScrollbarAlwaysOff; - - for (int pass = 0; pass < 2; pass++) { - bool scrollsVertically; - bool scrollsHorizontally; - - if (!m_data->m_scrollbarsSuppressed && (hScroll == ScrollbarAuto || vScroll == ScrollbarAuto)) { - // Do a layout if pending before checking if scrollbars are needed. - if (hasVerticalScrollbar != oldHasVertical || hasHorizontalScrollbar != oldHasHorizontal) - static_cast<FrameView*>(this)->layout(); - - scrollsVertically = (vScroll == ScrollbarAlwaysOn) || (vScroll == ScrollbarAuto && contentsHeight() > height()); - if (scrollsVertically) - scrollsHorizontally = (hScroll == ScrollbarAlwaysOn) || (hScroll == ScrollbarAuto && contentsWidth() + cVerticalWidth > width()); - else { - scrollsHorizontally = (hScroll == ScrollbarAlwaysOn) || (hScroll == ScrollbarAuto && contentsWidth() > width()); - if (scrollsHorizontally) - scrollsVertically = (vScroll == ScrollbarAlwaysOn) || (vScroll == ScrollbarAuto && contentsHeight() + cHorizontalHeight > height()); - } - } - else { - scrollsHorizontally = (hScroll == ScrollbarAuto) ? hasHorizontalScrollbar : (hScroll == ScrollbarAlwaysOn); - scrollsVertically = (vScroll == ScrollbarAuto) ? hasVerticalScrollbar : (vScroll == ScrollbarAlwaysOn); - } - - if (hasVerticalScrollbar != scrollsVertically) { - m_data->setHasVerticalScrollbar(scrollsVertically); - hasVerticalScrollbar = scrollsVertically; - } - - if (hasHorizontalScrollbar != scrollsHorizontally) { - m_data->setHasHorizontalScrollbar(scrollsHorizontally); - hasHorizontalScrollbar = scrollsHorizontally; - } - } - - // Set up the range (and page step/line step). - IntSize maxScrollPosition(contentsWidth() - visibleWidth(), contentsHeight() - visibleHeight()); - IntSize scroll = desiredOffset.shrunkTo(maxScrollPosition); - scroll.clampNegativeToZero(); - - if (m_data->m_hBar) { - int clientWidth = visibleWidth(); - m_data->m_hBar->setEnabled(contentsWidth() > clientWidth); - int pageStep = (clientWidth - PAGE_KEEP); - if (pageStep < 0) pageStep = clientWidth; - IntRect oldRect(m_data->m_hBar->frameGeometry()); - IntRect hBarRect = IntRect(0, - height() - m_data->m_hBar->height(), - width() - (m_data->m_vBar ? m_data->m_vBar->width() : 0), - m_data->m_hBar->height()); - m_data->m_hBar->setRect(hBarRect); - if (!m_data->m_scrollbarsSuppressed && oldRect != m_data->m_hBar->frameGeometry()) - m_data->m_hBar->invalidate(); - - if (m_data->m_scrollbarsSuppressed) - m_data->m_hBar->setSuppressInvalidation(true); - m_data->m_hBar->setSteps(LINE_STEP, pageStep); - m_data->m_hBar->setProportion(clientWidth, contentsWidth()); - m_data->m_hBar->setValue(scroll.width()); - if (m_data->m_scrollbarsSuppressed) - m_data->m_hBar->setSuppressInvalidation(false); - } - - if (m_data->m_vBar) { - int clientHeight = visibleHeight(); - m_data->m_vBar->setEnabled(contentsHeight() > clientHeight); - int pageStep = (clientHeight - PAGE_KEEP); - if (pageStep < 0) pageStep = clientHeight; - IntRect oldRect(m_data->m_vBar->frameGeometry()); - IntRect vBarRect = IntRect(width() - m_data->m_vBar->width(), - 0, - m_data->m_vBar->width(), - height() - (m_data->m_hBar ? m_data->m_hBar->height() : 0)); - m_data->m_vBar->setRect(vBarRect); - if (!m_data->m_scrollbarsSuppressed && oldRect != m_data->m_vBar->frameGeometry()) - m_data->m_vBar->invalidate(); - - if (m_data->m_scrollbarsSuppressed) - m_data->m_vBar->setSuppressInvalidation(true); - m_data->m_vBar->setSteps(LINE_STEP, pageStep); - m_data->m_vBar->setProportion(clientHeight, contentsHeight()); - m_data->m_vBar->setValue(scroll.height()); - if (m_data->m_scrollbarsSuppressed) - m_data->m_vBar->setSuppressInvalidation(false); - } - - if (oldHasVertical != (m_data->m_vBar != 0) || oldHasHorizontal != (m_data->m_hBar != 0)) - geometryChanged(); - - // See if our offset has changed in a situation where we might not have scrollbars. - // This can happen when editing a body with overflow:hidden and scrolling to reveal selection. - // It can also happen when maximizing a window that has scrollbars (but the new maximized result - // does not). - IntSize scrollDelta = scroll - m_data->m_scrollOffset; - if (scrollDelta != IntSize()) { - m_data->m_scrollOffset = scroll; - m_data->scrollBackingStore(scrollDelta); - - // Inform the delegate that the scroll position has changed. - WidgetClientChromium* c = static_cast<WidgetClientChromium*>(client()); - if (c) - c->onScrollPositionChanged(this); - } - - m_data->m_inUpdateScrollbars = false; - - ASSERT(visibleWidth() >= 0); - ASSERT(visibleHeight() >= 0); -} - -PlatformScrollbar* ScrollView::scrollbarUnderMouse(const PlatformMouseEvent& mouseEvent) -{ - IntPoint viewPoint = convertFromContainingWindow(mouseEvent.pos()); - if (m_data->m_hBar && m_data->m_hBar->frameGeometry().contains(viewPoint)) - return m_data->m_hBar.get(); - if (m_data->m_vBar && m_data->m_vBar->frameGeometry().contains(viewPoint)) - return m_data->m_vBar.get(); - return 0; -} - -void ScrollView::addChild(Widget* child) -{ - child->setParent(this); - - // There is only one global widget client (which should be the WebViewImpl). - // It is responsible for things like capturing the mouse. - child->setClient(client()); - - m_data->m_children.add(child); -} - -void ScrollView::removeChild(Widget* child) -{ - child->setParent(0); - m_data->m_children.remove(child); -} - -void ScrollView::paint(GraphicsContext* context, const IntRect& rect) -{ - // FIXME: This code is here so we don't have to fork FrameView.h/.cpp. - // In the end, FrameView should just merge with ScrollView. - ASSERT(isFrameView()); - - if (context->paintingDisabled()) - return; - - if (Frame* frame = static_cast<FrameView*>(this)->frame()) { - IntRect documentDirtyRect = rect; - documentDirtyRect.intersect(frameGeometry()); - - context->save(); - - context->translate(x(), y()); - documentDirtyRect.move(-x(), -y()); - - context->translate(-contentsX(), -contentsY()); - documentDirtyRect.move(contentsX(), contentsY()); - - // do not allow painting outside of the dirty rect - context->clip(documentDirtyRect); - - frame->paint(context, documentDirtyRect); - - // Highlights the node selected in the DOM inspector. - m_data->highlightInspectedNode(context, frame); - - context->restore(); - } - - // Highlight the matches found on the page, during a FindInPage operation. - m_data->highlightMatches(context); - - // Now paint the scrollbars. - if (!m_data->m_scrollbarsSuppressed && (m_data->m_hBar || m_data->m_vBar)) { - context->save(); - IntRect scrollViewDirtyRect = rect; - scrollViewDirtyRect.intersect(frameGeometry()); - context->translate(x(), y()); - scrollViewDirtyRect.move(-x(), -y()); - if (m_data->m_hBar) - m_data->m_hBar->paint(context, scrollViewDirtyRect); - if (m_data->m_vBar) - m_data->m_vBar->paint(context, scrollViewDirtyRect); - - // Fill the scroll corner with white. - IntRect hCorner; - if (m_data->m_hBar && width() - m_data->m_hBar->width() > 0) { - hCorner = IntRect(m_data->m_hBar->width(), - height() - m_data->m_hBar->height(), - width() - m_data->m_hBar->width(), - m_data->m_hBar->height()); - if (hCorner.intersects(scrollViewDirtyRect)) - context->fillRect(hCorner, Color::white); - } - - if (m_data->m_vBar && height() - m_data->m_vBar->height() > 0) { - IntRect vCorner(width() - m_data->m_vBar->width(), - m_data->m_vBar->height(), - m_data->m_vBar->width(), - height() - m_data->m_vBar->height()); - if (vCorner != hCorner && vCorner.intersects(scrollViewDirtyRect)) - context->fillRect(vCorner, Color::white); - } - - context->restore(); - } -} - -void ScrollView::themeChanged() -{ - PlatformScrollbar::themeChanged(); - theme()->themeChanged(); - invalidate(); -} - -void ScrollView::wheelEvent(PlatformWheelEvent& e) -{ - if (!m_data->allowsScrolling()) - return; - - // Determine how much we want to scroll. If we can move at all, we will accept the event. - IntSize maxScrollDelta = maximumScroll(); - if ((e.deltaX() < 0 && maxScrollDelta.width() > 0) || - (e.deltaX() > 0 && scrollOffset().width() > 0) || - (e.deltaY() < 0 && maxScrollDelta.height() > 0) || - (e.deltaY() > 0 && scrollOffset().height() > 0)) { - e.accept(); - scrollBy(-e.deltaX() * LINE_STEP, -e.deltaY() * LINE_STEP); - } -} - -HashSet<Widget*>* ScrollView::children() -{ - return &(m_data->m_children); -} - -void ScrollView::geometryChanged() const -{ - HashSet<Widget*>::const_iterator end = m_data->m_children.end(); - for (HashSet<Widget*>::const_iterator current = m_data->m_children.begin(); current != end; ++current) - (*current)->geometryChanged(); -} - -bool ScrollView::scroll(ScrollDirection direction, ScrollGranularity granularity) -{ - if (direction == ScrollUp || direction == ScrollDown) { - if (m_data->m_vBar) - return m_data->m_vBar->scroll(direction, granularity); - } else { - if (m_data->m_hBar) - return m_data->m_hBar->scroll(direction, granularity); - } - return false; -} - -IntRect ScrollView::windowResizerRect() -{ - return IntRect(); -} - -bool ScrollView::resizerOverlapsContent() const -{ - return !m_data->m_scrollbarsAvoidingResizer; -} - -void ScrollView::adjustOverlappingScrollbarCount(int overlapDelta) -{ - int oldCount = m_data->m_scrollbarsAvoidingResizer; - m_data->m_scrollbarsAvoidingResizer += overlapDelta; - if (parent() && parent()->isFrameView()) - static_cast<FrameView*>(parent())->adjustOverlappingScrollbarCount(overlapDelta); - else if (!m_data->m_scrollbarsSuppressed) { - // If we went from n to 0 or from 0 to n and we're the outermost view, - // we need to invalidate the windowResizerRect(), since it will now need to paint - // differently. - if (oldCount > 0 && m_data->m_scrollbarsAvoidingResizer == 0 || - oldCount == 0 && m_data->m_scrollbarsAvoidingResizer > 0) - invalidateRect(windowResizerRect()); - } -} - -void ScrollView::setParent(ScrollView* parentView) -{ - if (!parentView && m_data->m_scrollbarsAvoidingResizer && parent() && parent()->isFrameView()) - static_cast<FrameView*>(parent())->adjustOverlappingScrollbarCount(false); - Widget::setParent(parentView); -} - -void ScrollView::addToDirtyRegion(const IntRect& containingWindowRect) -{ - WidgetClientChromium* c = static_cast<WidgetClientChromium*>(client()); - if (c) - c->invalidateRect(containingWindowRect); -} - -void ScrollView::scrollBackingStore(int dx, int dy, const IntRect& scrollViewRect, const IntRect& clipRect) -{ - // We don't know how to scroll in two directions at once. - if (dx && dy) { - IntRect updateRect = clipRect; - updateRect.intersect(scrollViewRect); - addToDirtyRegion(updateRect); - return; - } - - WidgetClientChromium* c = static_cast<WidgetClientChromium*>(client()); - if (c) { - // TODO(ericroman): would be better to pass both the scroll rect - // and clip rect up to the client and let them decide how best to - // scroll the backing store. - IntRect clippedScrollRect = scrollViewRect; - clippedScrollRect.intersect(clipRect); - c->scrollRect(dx, dy, clippedScrollRect); - } -} - -void ScrollView::updateBackingStore() -{ - // nothing to do. painting happens asynchronously. -} - -bool ScrollView::inWindow() const -{ - WidgetClientChromium* c = static_cast<WidgetClientChromium*>(client()); - if (!c) - return false; - - return !c->isHidden(); -} - -void ScrollView::attachToWindow() -{ - if (m_data->m_attachedToWindow) - return; - - m_data->m_attachedToWindow = true; - - if (m_data->m_visible) { - HashSet<Widget*>::iterator end = m_data->m_children.end(); - for (HashSet<Widget*>::iterator it = m_data->m_children.begin(); it != end; ++it) - (*it)->attachToWindow(); - } -} - -void ScrollView::detachFromWindow() -{ - if (!m_data->m_attachedToWindow) - return; - - if (m_data->m_visible) { - HashSet<Widget*>::iterator end = m_data->m_children.end(); - for (HashSet<Widget*>::iterator it = m_data->m_children.begin(); it != end; ++it) - (*it)->detachFromWindow(); - } - - m_data->m_attachedToWindow = false; -} - -void ScrollView::show() -{ - if (!m_data->m_visible) { - m_data->m_visible = true; - if (isAttachedToWindow()) { - HashSet<Widget*>::iterator end = m_data->m_children.end(); - for (HashSet<Widget*>::iterator it = m_data->m_children.begin(); it != end; ++it) - (*it)->attachToWindow(); - } - } - - Widget::show(); -} - -void ScrollView::hide() -{ - if (m_data->m_visible) { - if (isAttachedToWindow()) { - HashSet<Widget*>::iterator end = m_data->m_children.end(); - for (HashSet<Widget*>::iterator it = m_data->m_children.begin(); it != end; ++it) - (*it)->detachFromWindow(); - } - m_data->m_visible = false; - } - - Widget::hide(); -} - -bool ScrollView::isAttachedToWindow() const -{ - return m_data->m_attachedToWindow; -} - -void ScrollView::setAllowsScrolling(bool flag) -{ - m_data->setAllowsScrolling(flag); -} - -bool ScrollView::allowsScrolling() const -{ - return m_data->allowsScrolling(); -} - -void ScrollView::printPanScrollIcon(const IntPoint& iconPosition) -{ - m_data->m_drawPanScrollIcon = true; - m_data->m_panScrollIconPoint = IntPoint(iconPosition.x() - panIconSizeLength / 2 , iconPosition.y() - panIconSizeLength / 2) ; - - updateWindowRect(IntRect(m_data->m_panScrollIconPoint, IntSize(panIconSizeLength,panIconSizeLength)), true); -} - -void ScrollView::removePanScrollIcon() -{ - m_data->m_drawPanScrollIcon = false; - - updateWindowRect(IntRect(m_data->m_panScrollIconPoint, IntSize(panIconSizeLength, panIconSizeLength)), true); -} - -bool ScrollView::isScrollable() -{ - return m_data->m_vBar != 0 || m_data->m_hBar != 0; -} - -} // namespace WebCore diff --git a/webkit/port/platform/chromium/ScrollbarThemeChromiumWin.cpp b/webkit/port/platform/chromium/ScrollbarThemeChromiumWin.cpp new file mode 100644 index 0000000..e887d59 --- /dev/null +++ b/webkit/port/platform/chromium/ScrollbarThemeChromiumWin.cpp @@ -0,0 +1,361 @@ +/* + * Copyright (C) 2008 Apple Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "ScrollbarThemeChromiumWin.h" + +#include <windows.h> +#include <vsstyle.h> + +#include "GraphicsContext.h" +#include "PlatformContextSkia.h" +#include "PlatformMouseEvent.h" +#include "Scrollbar.h" + +#include "base/gfx/native_theme.h" +#include "base/win_util.h" +#include "webkit/glue/webkit_glue.h" + +namespace WebCore { + +// The scrollbar size in DumpRenderTree on the Mac - so we can match their +// layout results. Entries are for regular, small, and mini scrollbars. +// Metrics obtained using [NSScroller scrollerWidthForControlSize:] +static const int kMacScrollbarSize[3] = { 15, 11, 15 }; + +static bool runningVista() +{ + return win_util::GetWinVersion() >= win_util::WINVERSION_VISTA; +} + +static RECT toRECT(const IntRect& input) +{ + RECT output; + output.left = input.x(); + output.right = input.right(); + output.top = input.y(); + output.bottom = input.bottom(); + return output; +} + +ScrollbarTheme* ScrollbarTheme::nativeTheme() +{ + static ScrollbarThemeChromiumWin theme; + return &theme; +} + +ScrollbarThemeChromiumWin::ScrollbarThemeChromiumWin() +{ +} + +ScrollbarThemeChromiumWin::~ScrollbarThemeChromiumWin() +{ +} + +int ScrollbarThemeChromiumWin::scrollbarThickness(ScrollbarControlSize controlSize) +{ + static int thickness; + if (!thickness) { + if (webkit_glue::IsLayoutTestMode()) + return kMacScrollbarSize[controlSize]; + thickness = GetSystemMetrics(SM_CXVSCROLL); + } + return thickness; +} + +void ScrollbarThemeChromiumWin::themeChanged() +{ +} + +bool ScrollbarThemeChromiumWin::invalidateOnMouseEnterExit() +{ + return runningVista(); +} + +bool ScrollbarThemeChromiumWin::hasThumb(Scrollbar* scrollbar) +{ + // This method is just called as a paint-time optimization to see if + // painting the thumb can be skipped. We don't have to be exact here. + return thumbLength(scrollbar) > 0; +} + +IntRect ScrollbarThemeChromiumWin::backButtonRect(Scrollbar* scrollbar, ScrollbarPart part, bool) +{ + // Windows just has single arrows. + if (part == BackButtonEndPart) + return IntRect(); + + IntSize size = buttonSize(scrollbar); + return IntRect(scrollbar->x(), scrollbar->y(), size.width(), size.height()); +} + +IntRect ScrollbarThemeChromiumWin::forwardButtonRect(Scrollbar* scrollbar, ScrollbarPart part, bool) +{ + // Windows just has single arrows. + if (part == ForwardButtonStartPart) + return IntRect(); + + IntSize size = buttonSize(scrollbar); + int x, y; + if (scrollbar->orientation() == HorizontalScrollbar) { + x = scrollbar->x() + scrollbar->width() - size.width(); + y = scrollbar->y(); + } else { + x = scrollbar->x(); + y = scrollbar->y() + scrollbar->height() - size.height(); + } + return IntRect(x, y, size.width(), size.height()); +} + +IntRect ScrollbarThemeChromiumWin::trackRect(Scrollbar* scrollbar, bool) +{ + IntSize bs = buttonSize(scrollbar); + int thickness = scrollbarThickness(); + if (scrollbar->orientation() == HorizontalScrollbar) { + if (scrollbar->width() < 2 * thickness) + return IntRect(); + return IntRect(scrollbar->x() + bs.width(), scrollbar->y(), scrollbar->width() - 2 * bs.width(), thickness); + } + if (scrollbar->height() < 2 * thickness) + return IntRect(); + return IntRect(scrollbar->x(), scrollbar->y() + bs.height(), thickness, scrollbar->height() - 2 * bs.height()); +} + +void ScrollbarThemeChromiumWin::paintTrackBackground(GraphicsContext* context, Scrollbar* scrollbar, const IntRect& rect) +{ + // Just assume a forward track part. We only paint the track as a single piece when there is no thumb. + if (!hasThumb(scrollbar)) + paintTrackPiece(context, scrollbar, rect, ForwardTrackPart); +} + +void ScrollbarThemeChromiumWin::paintTrackPiece(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart partType) +{ + bool horz = scrollbar->orientation() == HorizontalScrollbar; + + gfx::PlatformCanvasWin* canvas = gc->platformContext()->canvas(); + HDC hdc = canvas->beginPlatformPaint(); + + RECT paintRect = toRECT(rect); + + int partId; + if (partType == BackTrackPart) { + partId = horz ? SBP_UPPERTRACKHORZ : SBP_UPPERTRACKVERT; + } else { + partId = horz ? SBP_LOWERTRACKHORZ : SBP_LOWERTRACKVERT; + } + + RECT alignRect = toRECT(trackRect(scrollbar, false)); + + // Draw the track area before/after the thumb on the scroll bar. + gfx::NativeTheme::instance()->PaintScrollbarTrack( + hdc, + partId, + getThemeState(scrollbar, partType), + getClassicThemeState(scrollbar, partType), + &paintRect, + &alignRect, + gc->platformContext()->canvas()); + + canvas->endPlatformPaint(); +} + +void ScrollbarThemeChromiumWin::paintButton(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect, ScrollbarPart part) +{ + bool horz = scrollbar->orientation() == HorizontalScrollbar; + + gfx::PlatformCanvasWin* canvas = gc->platformContext()->canvas(); + HDC hdc = canvas->beginPlatformPaint(); + + RECT paintRect = toRECT(rect); + + int partId; + if (part == BackButtonStartPart || part == ForwardButtonStartPart) { + partId = horz ? DFCS_SCROLLLEFT : DFCS_SCROLLUP; + } else { + partId = horz ? DFCS_SCROLLRIGHT : DFCS_SCROLLDOWN; + } + + // Draw the thumb (the box you drag in the scroll bar to scroll). + gfx::NativeTheme::instance()->PaintScrollbarArrow( + hdc, + getThemeArrowState(scrollbar, part), + partId | getClassicThemeState(scrollbar, part), + &paintRect); + + canvas->endPlatformPaint(); +} + +void ScrollbarThemeChromiumWin::paintThumb(GraphicsContext* gc, Scrollbar* scrollbar, const IntRect& rect) +{ + bool horz = scrollbar->orientation() == HorizontalScrollbar; + + gfx::PlatformCanvasWin* canvas = gc->platformContext()->canvas(); + HDC hdc = canvas->beginPlatformPaint(); + + RECT paintRect = toRECT(rect); + + // Draw the thumb (the box you drag in the scroll bar to scroll). + gfx::NativeTheme::instance()->PaintScrollbarThumb( + hdc, + horz ? SBP_THUMBBTNHORZ : SBP_THUMBBTNVERT, + getThemeState(scrollbar, ThumbPart), + getClassicThemeState(scrollbar, ThumbPart), + &paintRect); + + // Draw the gripper (the three little lines on the thumb). + gfx::NativeTheme::instance()->PaintScrollbarThumb( + hdc, + horz ? SBP_GRIPPERHORZ : SBP_GRIPPERVERT, + getThemeState(scrollbar, ThumbPart), + getClassicThemeState(scrollbar, ThumbPart), + &paintRect); + + canvas->endPlatformPaint(); +} + +void ScrollbarThemeChromiumWin::paintScrollCorner(ScrollView* view, GraphicsContext* context, const IntRect& cornerRect) +{ + // ScrollbarThemeComposite::paintScrollCorner incorrectly assumes that the + // ScrollView is a FrameView (see FramelessScrollView), so we cannot let + // that code run. For FrameView's this is correct since we don't do custom + // scrollbar corner rendering, which ScrollbarThemeComposite supports. + ScrollbarTheme::paintScrollCorner(view, context, cornerRect); +} + +bool ScrollbarThemeChromiumWin::shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent& evt) +{ + return evt.shiftKey() && evt.button() == LeftButton; +} + +IntSize ScrollbarThemeChromiumWin::buttonSize(Scrollbar* scrollbar) +{ + // Our desired rect is essentially thickness by thickness. + + // Our actual rect will shrink to half the available space when we have < 2 + // times thickness pixels left. This allows the scrollbar to scale down + // and function even at tiny sizes. + + // In layout test mode, we force the button "girth" (i.e., the length of + // the button along the axis of the scrollbar) to be a fixed size. + // FIXME: This is retarded! scrollbarThickness is already fixed in layout + // test mode so that should be enough to result in repeatable results, but + // preserving this hack avoids having to rebaseline pixel tests. + const int kLayoutTestModeGirth = 17; + + int thickness = scrollbarThickness(); + int girth = webkit_glue::IsLayoutTestMode() ? kLayoutTestModeGirth : thickness; + if (scrollbar->orientation() == HorizontalScrollbar) { + int width = scrollbar->width() < 2 * girth ? scrollbar->width() / 2 : girth; + return IntSize(width, thickness); + } + + int height = scrollbar->height() < 2 * girth ? scrollbar->height() / 2 : girth; + return IntSize(thickness, height); +} + +int ScrollbarThemeChromiumWin::getThemeState(Scrollbar* scrollbar, ScrollbarPart part) const +{ + // When dragging the thumb, draw thumb pressed and other segments normal + // regardless of where the cursor actually is. See also four places in + // getThemeArrowState(). + if (scrollbar->pressedPart() == ThumbPart) { + if (part == ThumbPart) + return SCRBS_PRESSED; + return runningVista() ? SCRBS_HOVER : SCRBS_NORMAL; + } + if (!scrollbar->enabled()) + return SCRBS_DISABLED; + if (scrollbar->hoveredPart() != part || part == BackTrackPart || part == ForwardTrackPart) + return (scrollbar->hoveredPart() == NoPart || !runningVista()) ? SCRBS_NORMAL : SCRBS_HOVER; + if (scrollbar->pressedPart() == NoPart) + return SCRBS_HOT; + return (scrollbar->pressedPart() == part) ? SCRBS_PRESSED : SCRBS_NORMAL; +} + +int ScrollbarThemeChromiumWin::getThemeArrowState(Scrollbar* scrollbar, ScrollbarPart part) const +{ + // We could take advantage of knowing the values in the state enum to write + // some simpler code, but treating the state enum as a black box seems + // clearer and more future-proof. + if (part == BackButtonStartPart || part == ForwardButtonStartPart) { + if (scrollbar->orientation() == HorizontalScrollbar) { + if (scrollbar->pressedPart() == ThumbPart) + return !runningVista() ? ABS_LEFTNORMAL : ABS_LEFTHOVER; + if (!scrollbar->enabled()) + return ABS_LEFTDISABLED; + if (scrollbar->hoveredPart() != part) + return ((scrollbar->hoveredPart() == NoPart) || !runningVista()) ? ABS_LEFTNORMAL : ABS_LEFTHOVER; + if (scrollbar->pressedPart() == NoPart) + return ABS_LEFTHOT; + return (scrollbar->pressedPart() == part) ? + ABS_LEFTPRESSED : ABS_LEFTNORMAL; + } + if (scrollbar->pressedPart() == ThumbPart) + return !runningVista() ? ABS_UPNORMAL : ABS_UPHOVER; + if (!scrollbar->enabled()) + return ABS_UPDISABLED; + if (scrollbar->hoveredPart() != part) + return ((scrollbar->hoveredPart() == NoPart) || !runningVista()) ? ABS_UPNORMAL : ABS_UPHOVER; + if (scrollbar->pressedPart() == NoPart) + return ABS_UPHOT; + return (scrollbar->pressedPart() == part) ? ABS_UPPRESSED : ABS_UPNORMAL; + } + if (scrollbar->orientation() == HorizontalScrollbar) { + if (scrollbar->pressedPart() == ThumbPart) + return !runningVista() ? ABS_RIGHTNORMAL : ABS_RIGHTHOVER; + if (!scrollbar->enabled()) + return ABS_RIGHTDISABLED; + if (scrollbar->hoveredPart() != part) + return ((scrollbar->hoveredPart() == NoPart) || !runningVista()) ? ABS_RIGHTNORMAL : ABS_RIGHTHOVER; + if (scrollbar->pressedPart() == NoPart) + return ABS_RIGHTHOT; + return (scrollbar->pressedPart() == part) ? ABS_RIGHTPRESSED : ABS_RIGHTNORMAL; + } + if (scrollbar->pressedPart() == ThumbPart) + return !runningVista() ? ABS_DOWNNORMAL : ABS_DOWNHOVER; + if (!scrollbar->enabled()) + return ABS_DOWNDISABLED; + if (scrollbar->hoveredPart() != part) + return ((scrollbar->hoveredPart() == NoPart) || !runningVista()) ? ABS_DOWNNORMAL : ABS_DOWNHOVER; + if (scrollbar->pressedPart() == NoPart) + return ABS_DOWNHOT; + return (scrollbar->pressedPart() == part) ? ABS_DOWNPRESSED : ABS_DOWNNORMAL; +} + +int ScrollbarThemeChromiumWin::getClassicThemeState(Scrollbar* scrollbar, ScrollbarPart part) const +{ + // When dragging the thumb, draw the buttons normal even when hovered. + if (scrollbar->pressedPart() == ThumbPart) + return 0; + if (!scrollbar->enabled()) + return DFCS_INACTIVE; + if (scrollbar->hoveredPart() != part || part == BackTrackPart || part == ForwardTrackPart) + return 0; + if (scrollbar->pressedPart() == NoPart) + return DFCS_HOT; + return (scrollbar->pressedPart() == part) ? (DFCS_PUSHED | DFCS_FLAT) : 0; +} + +} diff --git a/webkit/port/platform/chromium/ScrollbarThemeChromiumWin.h b/webkit/port/platform/chromium/ScrollbarThemeChromiumWin.h new file mode 100644 index 0000000..5f694da --- /dev/null +++ b/webkit/port/platform/chromium/ScrollbarThemeChromiumWin.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2008 Apple Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ScrollbarThemeChromiumWin_h +#define ScrollbarThemeChromiumWin_h + +#include "ScrollbarThemeComposite.h" + +namespace WebCore { + +class ScrollbarThemeChromiumWin : public ScrollbarThemeComposite { +public: + ScrollbarThemeChromiumWin(); + virtual ~ScrollbarThemeChromiumWin(); + + virtual int scrollbarThickness(ScrollbarControlSize = RegularScrollbar); + + virtual void themeChanged(); + + virtual bool invalidateOnMouseEnterExit(); + +protected: + virtual bool hasButtons(Scrollbar*) { return true; } + virtual bool hasThumb(Scrollbar*); + + virtual IntRect backButtonRect(Scrollbar*, ScrollbarPart, bool painting = false); + virtual IntRect forwardButtonRect(Scrollbar*, ScrollbarPart, bool painting = false); + virtual IntRect trackRect(Scrollbar*, bool painting = false); + + virtual void paintScrollCorner(ScrollView*, GraphicsContext*, const IntRect&); + virtual bool shouldCenterOnThumb(Scrollbar*, const PlatformMouseEvent&); + + virtual void paintTrackBackground(GraphicsContext*, Scrollbar*, const IntRect&); + virtual void paintTrackPiece(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart); + virtual void paintButton(GraphicsContext*, Scrollbar*, const IntRect&, ScrollbarPart); + virtual void paintThumb(GraphicsContext*, Scrollbar*, const IntRect&); + +private: + IntSize buttonSize(Scrollbar*); + int getThemeState(Scrollbar*, ScrollbarPart) const; + int getThemeArrowState(Scrollbar*, ScrollbarPart) const; + int getClassicThemeState(Scrollbar*, ScrollbarPart) const; +}; + +} +#endif diff --git a/webkit/port/platform/chromium/TemporaryLinkStubs.cpp b/webkit/port/platform/chromium/TemporaryLinkStubs.cpp index 25a4494..11f9459 100644 --- a/webkit/port/platform/chromium/TemporaryLinkStubs.cpp +++ b/webkit/port/platform/chromium/TemporaryLinkStubs.cpp @@ -36,8 +36,8 @@ MSVC_PUSH_WARNING_LEVEL(0); MSVC_POP_WARNING(); using namespace WebCore; - String WebCore::signedPublicKeyAndChallengeString(unsigned, const String&, const KURL&) { notImplemented(); return String(); } +void WebCore::getSupportedKeySizes(Vector<String>&) { notImplemented(); } String KURL::fileSystemPath() const { notImplemented(); return String(); } diff --git a/webkit/port/platform/chromium/WidgetChromium.cpp b/webkit/port/platform/chromium/WidgetChromium.cpp index a36cb2c..9b84698 100644 --- a/webkit/port/platform/chromium/WidgetChromium.cpp +++ b/webkit/port/platform/chromium/WidgetChromium.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -26,93 +26,41 @@ #include "config.h" #include "Widget.h" -#include "Cursor.h" -#include "Document.h" -#include "Element.h" +#include "Assertions.h" +#include "ChromeClientChromium.h" #include "Frame.h" #include "FrameView.h" -#include "GraphicsContext.h" -#include "IntRect.h" -#include "WidgetClientChromium.h" +#include "Page.h" +#include "NotImplemented.h" namespace WebCore { -class WidgetPrivate +ChromeClientChromium* chromeClientChromium(Widget* widget) { -public: - WidgetClientChromium* client; - ScrollView* parent; - IntRect frameRect; - bool enabled; - bool suppressInvalidation; -}; - -Widget::Widget() - : data(new WidgetPrivate) -{ - data->client = 0; - data->parent = 0; - data->enabled = true; - data->suppressInvalidation = false; -} - -Widget::~Widget() -{ - if (parent()) - parent()->removeChild(this); - delete data; -} - -void Widget::setContainingWindow(PlatformWidget containingWindow) -{ - ASSERT_NOT_REACHED(); -} - -PlatformWidget Widget::containingWindow() const -{ - if (!data->client) - return NULL; - return data->client->containingWindow(); -} - -void Widget::setClient(WidgetClient* c) -{ - data->client = static_cast<WidgetClientChromium*>(c); -} - -WidgetClient* Widget::client() const -{ - return data->client; -} + FrameView* view; + if (widget->isFrameView()) { + view = static_cast<FrameView*>(widget); + } else if (widget->parent() && widget->parent()->isFrameView()) { + view = static_cast<FrameView*>(widget->parent()); + } else { + return 0; + } -IntRect Widget::frameGeometry() const -{ - return data->frameRect; -} + Page* page = view->frame() ? view->frame()->page() : 0; + if (!page) + return 0; -void Widget::setFrameGeometry(const IntRect &rect) -{ - data->frameRect = rect; + return static_cast<ChromeClientChromium*>(page->chrome()->client()); } -void Widget::setParent(ScrollView* v) +Widget::Widget(PlatformWidget widget) { - if (!v || !v->isAttachedToWindow()) - detachFromWindow(); - data->parent = v; - if (v && v->isAttachedToWindow()) - attachToWindow(); + init(widget); } -ScrollView* Widget::parent() const -{ - return data->parent; -} - -void Widget::removeFromParent() +Widget::~Widget() { - if (parent()) - parent()->removeChild(this); + ASSERT(!parent()); } void Widget::show() @@ -125,104 +73,34 @@ void Widget::hide() void Widget::setCursor(const Cursor& cursor) { - if (data->client) - data->client->setCursor(cursor); -} - -IntPoint Widget::convertToContainingWindow(const IntPoint& point) const -{ - IntPoint windowPoint = point; - for (const Widget *parentWidget = parent(), *childWidget = this; - parentWidget; - childWidget = parentWidget, parentWidget = parentWidget->parent()) - windowPoint = parentWidget->convertChildToSelf(childWidget, windowPoint); - return windowPoint; -} - -IntPoint Widget::convertFromContainingWindow(const IntPoint& point) const -{ - IntPoint widgetPoint = point; - for (const Widget *parentWidget = parent(), *childWidget = this; - parentWidget; - childWidget = parentWidget, parentWidget = parentWidget->parent()) - widgetPoint = parentWidget->convertSelfToChild(childWidget, widgetPoint); - return widgetPoint; -} - -IntRect Widget::convertToContainingWindow(const IntRect& rect) const -{ - IntRect convertedRect = rect; - convertedRect.setLocation(convertToContainingWindow(convertedRect.location())); - return convertedRect; -} - -IntPoint Widget::convertChildToSelf(const Widget* child, const IntPoint& point) const -{ - return IntPoint(point.x() + child->x(), point.y() + child->y()); -} - -IntPoint Widget::convertSelfToChild(const Widget* child, const IntPoint& point) const -{ - return IntPoint(point.x() - child->x(), point.y() - child->y()); + ChromeClientChromium* client = chromeClientChromium(this); + if (client) + client->setCursor(cursor); } void Widget::paint(GraphicsContext*, const IntRect&) { } -bool Widget::isEnabled() const -{ - return data->enabled; -} - -void Widget::setEnabled(bool e) -{ - if (e != data->enabled) { - data->enabled = e; - invalidate(); - } -} - -bool Widget::suppressInvalidation() const -{ - return data->suppressInvalidation; -} - -void Widget::setSuppressInvalidation(bool suppress) -{ - data->suppressInvalidation = suppress; -} - -void Widget::invalidate() +void Widget::setFocus() { - invalidateRect(IntRect(0, 0, width(), height())); + ChromeClientChromium* client = chromeClientChromium(this); + if (client) + client->focus(); } -void Widget::invalidateRect(const IntRect& r) +void Widget::setIsSelected(bool) { - if (data->suppressInvalidation) - return; - - if (!data->client) - return; - - IntRect windowRect = convertToContainingWindow(r); - - // Get our clip rect and intersect with it to ensure we don't invalidate too much. - IntRect clipRect = windowClipRect(); - windowRect.intersect(clipRect); - - data->client->invalidateRect(windowRect); } -void Widget::setFocus() +IntRect Widget::frameRect() const { - if (data->client) - data->client->setFocus(); + return m_frame; } -void Widget::setIsSelected(bool) +void Widget::setFrameRect(const IntRect& rect) { + m_frame = rect; } } // namespace WebCore diff --git a/webkit/port/platform/chromium/WidgetClientChromium.h b/webkit/port/platform/chromium/WidgetClientChromium.h deleted file mode 100644 index f39c49b..0000000 --- a/webkit/port/platform/chromium/WidgetClientChromium.h +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WidgetClientChromium_H__ -#define WidgetClientChromium_H__ - -#include "base/gfx/native_widget_types.h" -#include "WidgetClient.h" - -class SkBitmap; - -namespace WebCore { - -class Cursor; -class IntRect; -class Range; - -// Generic interface for features needed by the Widget. -class WidgetClientChromium : public WidgetClient { -public: - virtual ~WidgetClientChromium() {} - - // Returns the containing window for the Widget. - // TODO(pinkerton): this needs a better name, "window" is incorrect on other - // platforms. - virtual gfx::ViewHandle containingWindow() = 0; - - // Invalidate a region of the widget's containing window. - virtual void invalidateRect(const IntRect& damagedRect) = 0; - - // Scroll the region of the widget's containing window within the given - // clipRect by the specified dx and dy. - virtual void scrollRect(int dx, int dy, const IntRect& clipRect) = 0; - - // Notifies the client of a new popup widget. The client should place - // and size the widget with the given bounds, relative to the screen. - virtual void popupOpened(Widget* widget, const IntRect& bounds) = 0; - - // Notifies the client that the given popup widget has closed. - virtual void popupClosed(Widget* widget) = 0; - - // Indicates that a new cursor should be shown. - virtual void setCursor(const Cursor& cursor) = 0; - - // Indicates the widget thinks it has focus. This should give focus to the - // window hosting the widget. - virtual void setFocus() = 0; - - // This function is called to retrieve a resource bitmap from the - // renderer that was cached as a result of the renderer receiving a - // ViewMsg_Preload_Bitmap message from the browser. - virtual const SkBitmap* getPreloadedResourceBitmap(int resource_id) = 0; - - // Notification that the given widget's scroll position has changed. This - // function is called AFTER the position has been updated. - virtual void onScrollPositionChanged(Widget* widget) = 0; - - // Retrieves the tick-marks for a given frame. - virtual const WTF::Vector<RefPtr<WebCore::Range> >* getTickmarks( - WebCore::Frame* frame) = 0; - - // Retrieves the index of the active tickmark for a given frame. If the - // frame does not have an active tickmark (for example if the active - // tickmark resides in another frame) this function returns kNoTickmark. - static const size_t kNoTickmark = -1; - virtual size_t getActiveTickmarkIndex(WebCore::Frame* frame) = 0; - - // Returns true if this widget is hidden because it's in a background tab. - virtual bool isHidden() = 0; -}; - -} // namespace WebCore - -#endif // WidgetClientChromium_H__ diff --git a/webkit/port/platform/graphics/GraphicsContextSkia.cpp b/webkit/port/platform/graphics/GraphicsContextSkia.cpp index 1dd027a..e98dbf8 100644 --- a/webkit/port/platform/graphics/GraphicsContextSkia.cpp +++ b/webkit/port/platform/graphics/GraphicsContextSkia.cpp @@ -936,6 +936,27 @@ void GraphicsContext::setLineCap(LineCap cap) } } +void GraphicsContext::setLineDash(const DashArray& dashes, float dashOffset) +{ + // TODO(dglazkov): This is lifted directly off SkiaSupport, lines 49-74 + // so it is not guaranteed to work correctly. I made some minor cosmetic + // refactoring, but not much else. Please fix this? + size_t dashLength = dashes.size(); + if (!dashLength) + return; + + size_t count = (dashLength % 2) == 0 ? dashLength : dashLength * 2; + SkScalar* intervals = new SkScalar[count]; + + for(unsigned int i = 0; i < count; i++) + intervals[i] = dashes[i % dashLength]; + + m_data->setDashPathEffect(new SkDashPathEffect(intervals, + count, dashOffset)); + + delete[] intervals; +} + void GraphicsContext::setLineJoin(LineJoin join) { switch (join) { @@ -1096,22 +1117,4 @@ void GraphicsContext::setImageInterpolationQuality(InterpolationQuality) notImplemented(); } -// Skia platform gradients and patterns are handled at draw time -// Upstream is considering removing these methods anyway -void GraphicsContext::setPlatformStrokePattern(Pattern* pattern) -{ -} - -void GraphicsContext::setPlatformFillPattern(Pattern* pattern) -{ -} - -void GraphicsContext::setPlatformStrokeGradient(Gradient*) -{ -} - -void GraphicsContext::setPlatformFillGradient(Gradient*) -{ -} - } diff --git a/webkit/port/platform/graphics/ImageSkia.cpp b/webkit/port/platform/graphics/ImageSkia.cpp index 5e9d518..5cf364d 100644 --- a/webkit/port/platform/graphics/ImageSkia.cpp +++ b/webkit/port/platform/graphics/ImageSkia.cpp @@ -38,8 +38,8 @@ #include "Logging.h" #include "NativeImageSkia.h" #include "NotImplemented.h" -#include "PlatformScrollBar.h" #include "PlatformString.h" +#include "ScrollbarTheme.h" #include "SkiaUtils.h" #include "SkShader.h" @@ -93,20 +93,19 @@ void TransformDimensions(const SkMatrix& matrix, static PassRefPtr<Image> GetTextAreaResizeCorner() { // Get the size of the resizer. - const int width = PlatformScrollbar::verticalScrollbarWidth(); - const int height = PlatformScrollbar::horizontalScrollbarHeight(); + const int thickness = ScrollbarTheme::nativeTheme()->scrollbarThickness(); // Setup a memory buffer. - gfx::PlatformCanvasWin canvas(width, height, false); + gfx::PlatformCanvasWin canvas(thickness, thickness, false); gfx::PlatformDeviceWin& device = canvas.getTopPlatformDevice(); - device.prepareForGDI(0, 0, width, height); + device.prepareForGDI(0, 0, thickness, thickness); HDC hdc = device.getBitmapDC(); - RECT widgetRect = { 0, 0, width, height }; + RECT widgetRect = { 0, 0, thickness, thickness }; // Do the drawing. gfx::NativeTheme::instance()->PaintStatusGripper(hdc, SP_GRIPPER, 0, 0, &widgetRect); - device.postProcessGDI(0, 0, width, height); + device.postProcessGDI(0, 0, thickness, thickness); return BitmapImageSingleFrameSkia::create(device.accessBitmap(false)); } #endif diff --git a/webkit/port/platform/graphics/PlatformContextSkia.h b/webkit/port/platform/graphics/PlatformContextSkia.h index 67ab1f1f..c2aee46 100644 --- a/webkit/port/platform/graphics/PlatformContextSkia.h +++ b/webkit/port/platform/graphics/PlatformContextSkia.h @@ -10,7 +10,6 @@ namespace WebCore { class GraphicsContext; class GraphicsContextPlatformPrivate; -class PlatformScrollbar; class ScrollView; } diff --git a/webkit/port/platform/graphics/SkPaintContext.cpp b/webkit/port/platform/graphics/SkPaintContext.cpp index 863aaa0..53b165e 100644 --- a/webkit/port/platform/graphics/SkPaintContext.cpp +++ b/webkit/port/platform/graphics/SkPaintContext.cpp @@ -209,7 +209,7 @@ void SkPaintContext::setup_paint_fill(SkPaint* paint) const { int SkPaintContext::setup_paint_stroke(SkPaint* paint, SkRect* rect, - int length) { + int length) const { setup_paint_common(paint); float width = state_->mStrokeThickness; @@ -313,7 +313,7 @@ void SkPaintContext::addPath(const SkPath& path) { path_.addPath(path); } -SkPath* SkPaintContext::currentPath() { +const SkPath* SkPaintContext::currentPath() const { return &path_; } diff --git a/webkit/port/platform/graphics/SkPaintContext.h b/webkit/port/platform/graphics/SkPaintContext.h index 0d7aaae..b14d5f2 100644 --- a/webkit/port/platform/graphics/SkPaintContext.h +++ b/webkit/port/platform/graphics/SkPaintContext.h @@ -51,7 +51,7 @@ class SkPaintContext { // the pen, or 1 if the pen's width is 0 if a non-zero length is provided, // the number of dashes/dots on a dashed/dotted line will be adjusted to // start and end that length with a dash/dot. - int setup_paint_stroke(SkPaint* paint, SkRect* rect, int length); + int setup_paint_stroke(SkPaint* paint, SkRect* rect, int length) const; // State proxying functions SkDrawLooper* setDrawLooper(SkDrawLooper* dl); @@ -69,7 +69,7 @@ class SkPaintContext { void beginPath(); void addPath(const SkPath& path); - SkPath* currentPath(); + const SkPath* currentPath() const; void setGradient(SkShader*); void setPattern(SkShader*); diff --git a/webkit/port/platform/win/ScreenWin.cpp b/webkit/port/platform/win/PlatformScreenWin.cpp index d69888a..1c529d8 100644 --- a/webkit/port/platform/win/ScreenWin.cpp +++ b/webkit/port/platform/win/PlatformScreenWin.cpp @@ -24,7 +24,7 @@ */ #include "config.h" -#include "Screen.h" +#include "PlatformScreen.h" #include "IntRect.h" #include "FloatRect.h" @@ -44,7 +44,8 @@ static FloatRect ToFloatRect(const RECT& rect) { // Returns info for the default monitor if widget is NULL static MONITORINFOEX monitorInfoForWidget(Widget* widget) { - HWND window = widget ? widget->containingWindow() : 0; + // TODO(darin): We should not be dealing with native widgets here! + HWND window = widget ? widget->root()->hostWindow()->platformWindow() : 0; return webkit_glue::GetMonitorInfoForWindow(window); } diff --git a/webkit/port/rendering/RenderThemeWin.cpp b/webkit/port/rendering/RenderThemeWin.cpp index c302118..859df7d 100644 --- a/webkit/port/rendering/RenderThemeWin.cpp +++ b/webkit/port/rendering/RenderThemeWin.cpp @@ -31,7 +31,7 @@ #include "Document.h" #include "FontSelector.h" #include "GraphicsContext.h" -#include "PlatformScrollBar.h" +#include "ScrollbarTheme.h" #include "SkiaUtils.h" #include "base/gfx/native_theme.h" @@ -706,7 +706,7 @@ int RenderThemeWin::menuListInternalPadding(RenderStyle* style, int paddingType) // we don't draw a button, so don't reserve space for it. const int bar_type = style->direction() == LTR ? RightPadding : LeftPadding; if (paddingType == bar_type && style->appearance() != NoAppearance) - padding += PlatformScrollbar::verticalScrollbarWidth(); + padding += ScrollbarTheme::nativeTheme()->scrollbarThickness(); return padding; } diff --git a/webkit/port/svg/SVGElementInstance.idl b/webkit/port/svg/SVGElementInstance.idl new file mode 100644 index 0000000..606aa18 --- /dev/null +++ b/webkit/port/svg/SVGElementInstance.idl @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> + * Copyright (C) 2008 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +module svg { + + interface [ + Conditional=SVG, + ObjCCustomInternalImpl, + CustomListeners, + CustomPushEventHandlerScope, + GenerateToJS, + GenerateNativeConverter + ] SVGElementInstance +#if defined(LANGUAGE_OBJECTIVE_C) + : Object, EventTarget +#endif /* defined(LANGUAGE_OBJECTIVE_C) */ + { + readonly attribute SVGElement correspondingElement; + readonly attribute SVGUseElement correspondingUseElement; + readonly attribute SVGElementInstance parentNode; + readonly attribute SVGElementInstanceList childNodes; + readonly attribute SVGElementInstance firstChild; + readonly attribute SVGElementInstance lastChild; + readonly attribute SVGElementInstance previousSibling; + readonly attribute SVGElementInstance nextSibling; + + // EventTarget +#if !defined(LANGUAGE_OBJECTIVE_C) + attribute [DontEnum, Custom=ElementEventHandler] DOMString onabort; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onblur; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onchange; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onclick; + attribute [DontEnum, Custom=ElementEventHandler] DOMString oncontextmenu; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondblclick; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onerror; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onfocus; + attribute [DontEnum, Custom=ElementEventHandler] DOMString oninput; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onkeydown; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onkeypress; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onkeyup; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onload; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onmousedown; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onmousemove; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onmouseout; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onmouseover; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onmouseup; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onmousewheel; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onbeforecut; + attribute [DontEnum, Custom=ElementEventHandler] DOMString oncut; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onbeforecopy; + attribute [DontEnum, Custom=ElementEventHandler] DOMString oncopy; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onbeforepaste; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onpaste; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondragenter; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondragover; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondragleave; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondrop; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondragstart; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondrag; + attribute [DontEnum, Custom=ElementEventHandler] DOMString ondragend; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onreset; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onresize; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onscroll; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onsearch; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onselect; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onselectstart; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onsubmit; + attribute [DontEnum, Custom=ElementEventHandler] DOMString onunload; + + [Custom] void addEventListener(in DOMString type, + in EventListener listener, + in boolean useCapture); + [Custom] void removeEventListener(in DOMString type, + in EventListener listener, + in boolean useCapture); + boolean dispatchEvent(in Event event) + raises(EventException); +#endif /* defined(LANGUAGE_OBJECTIVE_C) */ + }; +} diff --git a/webkit/tools/layout_tests/layout_package/http_server.sh b/webkit/tools/layout_tests/layout_package/http_server.sh index 5412994..5412994 100755..100644 --- a/webkit/tools/layout_tests/layout_package/http_server.sh +++ b/webkit/tools/layout_tests/layout_package/http_server.sh diff --git a/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt b/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt index 48a5ff5..f16cc8b 100644 --- a/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt +++ b/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt @@ -173,7 +173,7 @@ V8 | KJS # LayoutTests/fast/history/history_reload.html = PASS | FAIL V8 | KJS # LayoutTests/fast/repaint/bugzilla-6473.html = PASS | FAIL // Bug 982608: test had a wrong result for one condition -V8 | KJS # LayoutTests/plugins/destroy-stream-twice.html = FAIL +V8 | KJS # LayoutTests/plugins/destroy-stream-twice.html = FAIL | TIMEOUT // This test has been modified and placed in pending, so we ignore the original // until we get our modification into WebKit. @@ -268,7 +268,7 @@ V8 | KJS # LayoutTests/fast/history/subframe-is-visited.html = FAIL // Bug 945322: test shell should dump text when // layoutTestController.notifyDone() is called // Not critical for beta. -V8 | KJS # LayoutTests/editing/selection/drag-in-iframe.html = TIMEOUT +V8 | KJS # LayoutTests/editing/selection/drag-in-iframe.html = FAIL | TIMEOUT // BUG 938563: occasionally times out (performs about 50 HTTP CGI requests) V8 | KJS # LayoutTests/http/tests/xmlhttprequest/supported-xml-content-types.html = PASS | TIMEOUT @@ -356,7 +356,7 @@ V8 | KJS # LayoutTests/editing/deleting/deletionUI-single-instance.html = FAIL // Bug 871718: These tests load data: URLs into frames and sets queries on then. // This is totally broken. This layout test should be rewitten so that the // subframes are not data URLs (probably we want files in the resources dir.). -V8 | KJS # LayoutTests/fast/encoding/char-encoding.html = TIMEOUT +V8 | KJS # LayoutTests/fast/encoding/char-encoding.html = FAIL | TIMEOUT V8 | KJS # LayoutTests/fast/encoding/char-decoding.html = FAIL | TIMEOUT // Bug 1130795: since we don't have Aqua-themed controls, don't ignore the @@ -900,10 +900,10 @@ V8 | KJS # LayoutTests/fast/transforms/shadows.html = FAIL V8 | KJS # LayoutTests/http/tests/misc/acid3.html = FAIL V8 | KJS # DEFER : LayoutTests/http/tests/misc/frame-default-enc-same-domain.html = FAIL V8 | KJS # LayoutTests/http/tests/security/canvas-remote-read-svg-image.html = FAIL -V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-object-prototype.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-object-prototype.html = FAIL | TIMEOUT V8 | KJS # LayoutTests/http/tests/security/cross-origin-xsl-BLOCKED.html = FAIL -V8 | KJS # LayoutTests/http/tests/security/xss-DENIED-synchronous-form.html = FAIL -V8 | KJS # LayoutTests/http/tests/security/xss-eval.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/xss-DENIED-synchronous-form.html = FAIL | TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/xss-eval.html = FAIL | TIMEOUT V8 | KJS # LayoutTests/http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-method.html = FAIL V8 | KJS # LayoutTests/http/tests/xmlhttprequest/xmlhttprequest-no-content-length-onProgress.html = FAIL V8 | KJS # LayoutTests/media/progress-event-total.html = FAIL @@ -931,7 +931,7 @@ V8 | KJS # LayoutTests/fast/forms/form-hides-table.html = FAIL V8 | KJS # LayoutTests/fast/forms/input-readonly-autoscroll.html = FAIL V8 | KJS # LayoutTests/fast/replaced/replaced-breaking.html = FAIL V8 | KJS # LayoutTests/fast/table/text-field-baseline.html = FAIL -V8 | KJS # LayoutTests/http/tests/messaging/cross-domain-message-event-dispatch.html = FAIL | PASS +V8 | KJS # LayoutTests/http/tests/messaging/cross-domain-message-event-dispatch.html = FAIL | PASS | TIMEOUT V8 | KJS # LayoutTests/http/tests/navigation/back-to-slow-frame.html = FAIL V8 | KJS # LayoutTests/http/tests/navigation/metaredirect-basic.html = FAIL V8 | KJS # LayoutTests/http/tests/navigation/post-basic.html = FAIL | PASS @@ -939,14 +939,14 @@ V8 | KJS # LayoutTests/http/tests/navigation/post-frames.html = FAIL | PASS V8 | KJS # LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-document-write.html = FAIL V8 | KJS # LayoutTests/http/tests/security/aboutBlank/xss-DENIED-navigate-opener-javascript-url.html = FAIL V8 | KJS # LayoutTests/http/tests/security/aboutBlank/xss-DENIED-set-opener.html = FAIL -V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-history-put.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-history-put.html = FAIL | TIMEOUT V8 | KJS # LayoutTests/http/tests/security/listener/xss-JSTargetNode-onclick-addEventListener.html = FAIL V8 | KJS # LayoutTests/http/tests/security/listener/xss-JSTargetNode-onclick-shortcut.html = FAIL V8 | KJS # LayoutTests/http/tests/security/listener/xss-XMLHttpRequest-addEventListener.html = FAIL V8 | KJS # LayoutTests/http/tests/security/listener/xss-XMLHttpRequest-shortcut.html = FAIL V8 | KJS # LayoutTests/http/tests/security/listener/xss-window-onclick-addEventListener.html = FAIL V8 | KJS # LayoutTests/http/tests/security/listener/xss-window-onclick-shortcut.html = FAIL -V8 | KJS # LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception.html = FAIL | TIMEOUT V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-34-t.svg = FAIL V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-40-t.svg = FAIL V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/color-prop-01-b.svg = FAIL @@ -1080,3 +1080,334 @@ V8 | KJS # LayoutTests/http/tests/navigation/redirect302-goback.html = FAIL | PA // Got flakey (both debug and release) around r3581 (ananta). V8 | KJS # LayoutTests/http/tests/plugins/geturlnotify-from-npp-destroystream.html = FAIL | PASS + +// NEW FOR MERGE 36102:37604 +V8 | KJS # LayoutTests/animations/big-rotation.html = FAIL +V8 | KJS # LayoutTests/animations/matrix-anim.html = FAIL +V8 | KJS # LayoutTests/editing/spelling/inline_spelling_markers.html = FAIL +V8 | KJS # LayoutTests/fast/block/basic/quirk-percent-height-grandchild.html = FAIL +V8 | KJS # LayoutTests/fast/block/positioning/replaced-inside-fixed-top-bottom.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/001-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/001.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/002-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/002.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/003-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/003-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/003.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/004-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/004-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/004.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/005-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/005-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/005.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/006-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/006-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/006.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/007-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/007-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/007.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/008-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-color/008.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/001-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/001.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/002-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/002.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/003-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/003-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/003.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/004-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/004-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/004.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/005-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/005-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/005.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/006-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/006-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/006.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/007-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/007-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/007.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/008-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/008.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/009-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/009.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/010-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/background-image/010.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/001-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/001.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/002-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/002.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/003-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/003-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/003.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/004-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/004-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/004.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/005-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/005-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/005.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/006-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/006-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/006.html = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/007-declarative.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/007-xhtml.xhtml = FAIL +V8 | KJS # LayoutTests/fast/body-propagation/overflow/007.html = FAIL +V8 | KJS # LayoutTests/fast/dom/HTMLScriptElement/script-reexecution.html = FAIL +V8 | KJS # LayoutTests/fast/dom/StyleSheet/ownerNode-lifetime-2.html = FAIL +V8 | KJS # LayoutTests/fast/dom/constructors-cached-navigate.html = FAIL +V8 | KJS # LayoutTests/fast/dom/constructors-cached.html = FAIL +V8 | KJS # LayoutTests/fast/forms/password-placeholder-text-security.html = FAIL +V8 | KJS # LayoutTests/fast/forms/placeholder-pseudo-style.html = FAIL +V8 | KJS # LayoutTests/fast/forms/placeholder-set-attribute.html = FAIL +V8 | KJS # LayoutTests/fast/js/arguments.html = FAIL +V8 | KJS # LayoutTests/fast/js/construct-global-object.html = FAIL +V8 | KJS # LayoutTests/fast/js/function-dot-arguments.html = FAIL +V8 | KJS # LayoutTests/fast/js/primitive-method-this.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/button-spurious-layout-hint.html = FAIL +V8 | KJS # LayoutTests/fast/table/empty-row-crash.html = FAIL +V8 | KJS # LayoutTests/http/tests/plugins/local-geturl-from-remote.html = FAIL +V8 | KJS # LayoutTests/scrollbars/basic-scrollbar.html = FAIL +V8 | KJS # LayoutTests/scrollbars/disabled-scrollbar.html = FAIL +V8 | KJS # LayoutTests/scrollbars/listbox-scrollbar-combinations.html = FAIL +V8 | KJS # LayoutTests/scrollbars/overflow-scrollbar-combinations.html = FAIL +V8 | KJS # LayoutTests/scrollbars/scrollbar-buttons.html = FAIL +V8 | KJS # LayoutTests/scrollbars/scrollbar-orientation.html = FAIL +V8 | KJS # LayoutTests/transforms/2d/compound-transforms-vs-containers.html = FAIL +V8 | KJS # LayoutTests/transforms/2d/transform-borderbox.html = FAIL +V8 | KJS # LayoutTests/transforms/2d/transform-origin-borderbox.html = FAIL +V8 | KJS # LayoutTests/fast/events/message-channel-gc-2.html = TIMEOUT +V8 | KJS # LayoutTests/fast/events/message-channel-gc.html = TIMEOUT +V8 | KJS # LayoutTests/fast/events/message-port-deleted-document.html = TIMEOUT +V8 | KJS # LayoutTests/fast/events/message-port-deleted-frame.html = TIMEOUT +V8 | KJS # LayoutTests/fast/events/message-port-inactive-document.html = TIMEOUT +V8 | KJS # LayoutTests/fast/events/message-port.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/misc/dns-prefetch-control.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/frameNavigation/not-opener.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/frameNavigation/opener.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/MessagePort/event-listener-context.html = CRASH +// missing expected results +V8 | KJS # SKIP LayoutTests/fast/forms/search-placeholder-value-changed.html = FAIL +V8 | KJS # SKIP LayoutTests/fast/frames/frame-length-fractional.html = FAIL +V8 | KJS # SKIP LayoutTests/fast/table/floating-th.html = FAIL +V8 | KJS # SKIP LayoutTests/fast/table/table-display-types-strict.html = FAIL +V8 | KJS # SKIP LayoutTests/fast/table/table-display-types.html = FAIL + +// CHANGED OR REBASELINED IN WEBKIT 36102:37604 +V8 | KJS # LayoutTests/fast/css/variables/block-cycle-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/color-hex-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/colors-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/declaration-block-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/font-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/image-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/import-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/inline-style-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/invalid-variable-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/margin-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/misplaced-import-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/multiple-term-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/override-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/print-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/remove-variable-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/set-variable-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/shorthand-test.html = FAIL +V8 | KJS # LayoutTests/fast/css/variables/variable-iteration-test.html = FAIL +V8 | KJS # LayoutTests/fast/forms/8250.html = FAIL +V8 | KJS # LayoutTests/fast/forms/input-disabled-color.html = FAIL +V8 | KJS # LayoutTests/fast/forms/password-placeholder.html = FAIL +V8 | KJS # LayoutTests/fast/forms/selection-functions.html = FAIL +V8 | KJS # LayoutTests/fast/js/number-toString.html = FAIL +V8 | KJS # LayoutTests/fast/js/numeric-conversion.html = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-03-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-11-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-24-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-33-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-39-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-41-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-46-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-60-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-61-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-62-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-63-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-64-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-65-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-66-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-67-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-68-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-69-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-70-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-81-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/animate-elem-82-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/coords-viewattr-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/coords-viewattr-02-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-04-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-06-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/fonts-elem-07-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/pservers-grad-08-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-elems-01-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-elems-02-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-elems-03-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-elems-06-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-elems-07-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/render-elems-08-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/script-handle-02-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/script-handle-03-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/script-handle-04-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/struct-image-05-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/struct-image-06-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/struct-image-07-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-align-05-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-align-06-b.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-text-04-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-text-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-text-07-t.svg = FAIL +V8 | KJS # LayoutTests/svg/W3C-SVG-1.1/text-tspan-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/filters/filterRegions.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textLayout.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textLayout2.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textLength.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textPCDATA.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/textPosition2.svg = FAIL +V8 | KJS # LayoutTests/svg/batik/text/xmlSpace.svg = FAIL +V8 | KJS # LayoutTests/svg/carto.net/button.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/class-baseValue.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/container-opacity-clip-viewBox.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/getscreenctm-in-mixed-content2.xhtml = FAIL +V8 | KJS # LayoutTests/svg/custom/svg-fonts-in-html.html = FAIL +V8 | KJS # LayoutTests/svg/custom/text-linking.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/text-xy-updates.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/use-clipped-transform.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/use-css-no-effect-on-shadow-tree.svg = FAIL +V8 | KJS # LayoutTests/svg/custom/use-instanceRoot-as-event-target.xhtml = FAIL +V8 | KJS # LayoutTests/svg/custom/use-instanceRoot-event-listeners.xhtml = FAIL +V8 | KJS # LayoutTests/svg/custom/use-setAttribute-crash.svg = FAIL +V8 | KJS # LayoutTests/svg/dom/SVGScriptElement/script-reexecution.svg = FAIL +V8 | KJS # LayoutTests/svg/hixie/links/003-broken.xml = FAIL +V8 | KJS # LayoutTests/svg/text/kerning.svg = FAIL +V8 | KJS # LayoutTests/svg/text/multichar-glyph.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-align-05-b.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-align-06-b.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-altglyph-01-b.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-text-04-t.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-text-05-t.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-text-06-t.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-text-07-t.svg = FAIL +V8 | KJS # LayoutTests/svg/text/text-tspan-01-b.svg = FAIL + +// MERGE REGRESSIONS 36102:37604 +V8 | KJS # LayoutTests/editing/pasteboard/drag-drop-dead-frame.html = FAIL +V8 | KJS # LayoutTests/editing/style/smoosh-styles-003.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/svg-as-background-1.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/svg-as-background-2.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/svg-as-background-3.html = FAIL +V8 | KJS # LayoutTests/fast/backgrounds/svg-as-background-4.html = FAIL +V8 | KJS # LayoutTests/fast/borders/svg-as-border-image-2.html = FAIL +V8 | KJS # LayoutTests/fast/borders/svg-as-border-image.html = FAIL +V8 | KJS # LayoutTests/fast/css/font-family-initial.html = FAIL +V8 | KJS # LayoutTests/fast/css/line-height-overflow.html = FAIL +V8 | KJS # LayoutTests/fast/css/rtl-ordering.html = FAIL +V8 | KJS # LayoutTests/fast/dom/Window/get-set-properties.html = FAIL +V8 | KJS # LayoutTests/fast/dom/Window/new-window-opener.html = FAIL +V8 | KJS # LayoutTests/fast/dom/Window/window-open-pending-url.html = FAIL +V8 | KJS # LayoutTests/fast/events/mouse-click-events.html = FAIL +V8 | KJS # LayoutTests/fast/events/onclick-list-marker.html = FAIL +V8 | KJS # LayoutTests/fast/events/updateLayoutForHitTest.html = FAIL +V8 | KJS # LayoutTests/fast/flexbox/009.html = FAIL +V8 | KJS # LayoutTests/fast/forms/form-element-geometry.html = FAIL +V8 | KJS # LayoutTests/fast/forms/listbox-deselect-scroll.html = FAIL +V8 | KJS # LayoutTests/fast/forms/listbox-scrollbar-incremental-load.html = FAIL +V8 | KJS # LayoutTests/fast/forms/listbox-selection-2.html = FAIL +V8 | KJS # LayoutTests/fast/forms/select-initial-position.html = FAIL +V8 | KJS # LayoutTests/fast/forms/select-item-background-clip.html = FAIL +V8 | KJS # LayoutTests/fast/forms/select-visual-hebrew.html = FAIL +V8 | KJS # LayoutTests/fast/forms/textarea-rows-cols.html = FAIL +V8 | KJS # LayoutTests/fast/forms/visual-hebrew-text-field.html = FAIL +V8 | KJS # LayoutTests/fast/frames/invalid.html = FAIL +V8 | KJS # LayoutTests/fast/frames/onlyCommentInIFrame.html = FAIL +V8 | KJS # LayoutTests/fast/frames/valid.html = FAIL +V8 | KJS # LayoutTests/fast/history/go-back-to-changed-name.html = FAIL +V8 | KJS # LayoutTests/fast/html/keygen.html = FAIL +V8 | KJS # LayoutTests/fast/images/svg-as-background.html = FAIL +V8 | KJS # LayoutTests/fast/images/svg-as-image.html = FAIL +V8 | KJS # LayoutTests/fast/images/svg-as-relative-image.html = FAIL +V8 | KJS # LayoutTests/fast/invalid/residual-style.html = FAIL +V8 | KJS # LayoutTests/fast/js/bitwise-and-on-undefined.html = FAIL +V8 | KJS # LayoutTests/fast/js/date-DST-pre-1970.html = FAIL +V8 | KJS # LayoutTests/fast/overflow/overflow-x-y.html = FAIL +V8 | KJS # LayoutTests/fast/overflow/unreachable-overflow-rtl-bug.html = FAIL +V8 | KJS # LayoutTests/fast/parser/comment-in-textarea.html = FAIL +V8 | KJS # LayoutTests/fast/parser/open-comment-in-textarea.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/layer-child-outline.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/line-flow-with-floats-7.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/overflow-outline-repaint.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/overflow-scroll-delete.html = FAIL +V8 | KJS # LayoutTests/fast/repaint/selection-after-delete.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/image-sizing.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/image-solid-color-with-alpha.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/inline-box-wrapper-handover.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/percent-height-in-anonymous-block.html = FAIL +V8 | KJS # LayoutTests/fast/replaced/width100percent-textarea.html = FAIL +V8 | KJS # LayoutTests/fast/table/cell-width-auto.html = FAIL +V8 | KJS # LayoutTests/fast/table/cellindex.html = FAIL +V8 | KJS # LayoutTests/fast/table/form-in-table-before-misnested-text-crash-css.html = FAIL +V8 | KJS # LayoutTests/fast/table/form-in-tbody-before-misnested-text-crash-css.html = FAIL +V8 | KJS # LayoutTests/fast/text/drawBidiText.html = FAIL +V8 | KJS # LayoutTests/fast/text/international/001.html = FAIL +V8 | KJS # LayoutTests/fast/text/international/002.html = FAIL +V8 | KJS # LayoutTests/fast/text/international/003.html = FAIL +V8 | KJS # LayoutTests/fast/text/international/wrap-CJK-001.html = FAIL +V8 | KJS # LayoutTests/http/tests/plugins/post-url-file.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-sub-frame-to-data-url-sub-frame.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/dataURL/xss-DENIED-from-data-url-to-data-url.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-from-data-url.html = FAIL +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/xss-ALLOWED-to-javascript-url-sub-frame.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug24627.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug24661.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug2479-1.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug2479-3.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug24880.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug25004.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug25074.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/bugs/bug25086.html = FAIL +V8 | KJS # LayoutTests/tables/mozilla/dom/deleteCol1.html = FAIL +V8 | KJS # chrome/fast/dom/Window/window-lookup-precedence.html = FAIL +V8 | KJS # chrome/fast/dom/xmlhttprequest-gc.html = FAIL +V8 | KJS # chrome/fast/dom/xss-DENIED-javascript-variations.html = FAIL +V8 | KJS # chrome/fast/forms/basic-textareas.html = FAIL +V8 | KJS # chrome/fast/forms/lazy-event-listener-scope-chain.html = FAIL +V8 | KJS # pending/security/block-test.html = FAIL +V8 | KJS # LayoutTests/fast/events/no-blur-on-page-leave.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/messaging/cross-domain-message-send.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/plugins/npapi-response-headers.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-DOMImplementation.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-delete.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/cross-frame-access-location-put.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/frameNavigation/xss-ALLOWED-targeted-subframe-navigation-change.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/frameNavigation/xss-DENIED-plugin-navigation.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/frameNavigation/xss-DENIED-targeted-link-navigation.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/host-compare-case-insensitive.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-location-htmldom.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-getAttribute-value.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-htmldom.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttribute.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNS.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNode.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-frame-src-setAttributeNodeNS.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-getAttribute-value.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-htmldom.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttribute.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNS.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNode.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/javascriptURL/javascriptURL-execution-context-iframe-src-setAttributeNodeNS.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/object-literals.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/postMessage/delivery-order.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/postMessage/origin-unaffected-by-base-tag.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/postMessage/origin-unaffected-by-document-domain.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/security/postMessage/target-origin.html = TIMEOUT +V8 | KJS # LayoutTests/http/tests/xmlhttprequest/access-control-basic-allow-access-control-origin-header-data-url.html = TIMEOUT +V8 | KJS # chrome/http/tests/security/listener/xss-inactive-closure.html = TIMEOUT +V8 | KJS # pending/plugins/destroy-stream-twice.html = TIMEOUT +V8 | KJS # LayoutTests/fast/xpath/nsresolver-exception.xhtml = CRASH
\ No newline at end of file diff --git a/webkit/tools/layout_tests/test_lists/win/tests_ignored.txt b/webkit/tools/layout_tests/test_lists/win/tests_ignored.txt index 21d6847..0e547f6 100644 --- a/webkit/tools/layout_tests/test_lists/win/tests_ignored.txt +++ b/webkit/tools/layout_tests/test_lists/win/tests_ignored.txt @@ -180,3 +180,6 @@ KJS # SKIP : chrome/fast/dom/set-table-head-no-crash.html = FAIL // Dashboard-related test KJS | V8 # SKIP : LayoutTests/fast/css/dashboard-region-parser.html = FAIL + +// Not a test? +KJS | V8 # SKIP : LayoutTests/http/tests/incremental/pause-in-script-element.pl = FAIL
\ No newline at end of file diff --git a/webkit/tools/test_shell/test_shell_main.cc b/webkit/tools/test_shell/test_shell_main.cc index b184dc8..b91ff13 100644 --- a/webkit/tools/test_shell/test_shell_main.cc +++ b/webkit/tools/test_shell/test_shell_main.cc @@ -125,7 +125,6 @@ int main(int argc, char* argv[]) { CommandLine parsed_command_line; if (parsed_command_line.HasSwitch(test_shell::kStartupDialog)) MessageBox(NULL, L"attach to me?", L"test_shell", MB_OK); - //webkit_glue::SetLayoutTestMode(true); // Allocate a message loop for this thread. Although it is not used // directly, its constructor sets up some necessary state. @@ -140,6 +139,9 @@ int main(int argc, char* argv[]) { TestShell::InitLogging(suppress_error_dialogs, layout_test_mode); + // Set this early before we start using WebCore. + webkit_glue::SetLayoutTestMode(layout_test_mode); + // Suppress abort message in v8 library in debugging mode. // V8 calls abort() when it hits assertion errors. if (suppress_error_dialogs) { @@ -299,8 +301,6 @@ int main(int argc, char* argv[]) { // See if we need to run the tests. if (layout_test_mode) { - webkit_glue::SetLayoutTestMode(true); - // Set up for the kind of test requested. TestShell::TestParams params; if (parsed_command_line.HasSwitch(test_shell::kDumpPixels)) { diff --git a/webkit/webkit.xcodeproj/project.pbxproj b/webkit/webkit.xcodeproj/project.pbxproj index c877cc8..7a3b97b 100644 --- a/webkit/webkit.xcodeproj/project.pbxproj +++ b/webkit/webkit.xcodeproj/project.pbxproj @@ -40,6 +40,7 @@ /* Begin PBXBuildFile section */ 4D11C4E10E9ABEA900EF7617 /* ExceptionContextV8.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D11C4D90E9ABE9200EF7617 /* ExceptionContextV8.cpp */; }; 4D11C5520E9AC23100EF7617 /* RenderThemeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = E49E50DE0E65E33200AD47F7 /* RenderThemeMac.mm */; }; + 4D329F8C0EB908A40041FB7E /* V8MessageChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D329F8A0EB908A40041FB7E /* V8MessageChannel.cpp */; }; 4D7B071F0E9DAE56009A6919 /* GraphicsContextStub.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D7B071E0E9DAE56009A6919 /* GraphicsContextStub.cpp */; }; 4DB043A40EB1577900A5633C /* webcursor.cc in Sources */ = {isa = PBXBuildFile; fileRef = 825405300D92E3DA0006B936 /* webcursor.cc */; }; 4DB044230EB161D600A5633C /* IconMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB044220EB161D600A5633C /* IconMac.cpp */; }; @@ -55,7 +56,6 @@ 4DB7EF930E9B9F6300C66CE0 /* V8File.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7EF820E9B9F6300C66CE0 /* V8File.cpp */; }; 4DB7EF940E9B9F6300C66CE0 /* V8FileList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7EF840E9B9F6300C66CE0 /* V8FileList.cpp */; }; 4DB7EF950E9B9F6300C66CE0 /* V8ImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7EF860E9B9F6300C66CE0 /* V8ImageData.cpp */; }; - 4DB7EF960E9B9F6300C66CE0 /* V8NSResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7EF880E9B9F6300C66CE0 /* V8NSResolver.cpp */; }; 4DB7EF970E9B9F6300C66CE0 /* V8SVGAnimateColorElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7EF8A0E9B9F6300C66CE0 /* V8SVGAnimateColorElement.cpp */; }; 4DB7EF980E9B9F6300C66CE0 /* V8SVGAnimateElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7EF8C0E9B9F6300C66CE0 /* V8SVGAnimateElement.cpp */; }; 4DB7EF990E9B9F6300C66CE0 /* V8SVGAnimateTransformElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7EF8E0E9B9F6300C66CE0 /* V8SVGAnimateTransformElement.cpp */; }; @@ -114,9 +114,7 @@ 4DB7F5290E9BD3FB00C66CE0 /* MainThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F5210E9BD3FB00C66CE0 /* MainThread.cpp */; }; 4DB7F52A0E9BD3FB00C66CE0 /* ThreadingPthreads.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F5270E9BD3FB00C66CE0 /* ThreadingPthreads.cpp */; }; 4DB7F5420E9BD50600C66CE0 /* MainThreadMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F5410E9BD50600C66CE0 /* MainThreadMac.mm */; }; - 4DB7F55C0E9BD66300C66CE0 /* JSNSResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F5570E9BD66300C66CE0 /* JSNSResolver.cpp */; }; 4DB7F55D0E9BD66300C66CE0 /* V8XMLHttpRequestCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F55B0E9BD66300C66CE0 /* V8XMLHttpRequestCustom.cpp */; }; - 4DB7F5620E9BD69A00C66CE0 /* JSNSResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F5570E9BD66300C66CE0 /* JSNSResolver.cpp */; }; 4DB7F5630E9BD69A00C66CE0 /* V8XMLHttpRequestCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F55B0E9BD66300C66CE0 /* V8XMLHttpRequestCustom.cpp */; }; 4DB7F9A80E9BEBA600C66CE0 /* V8WebKitCSSKeyframeRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F9A40E9BEB9B00C66CE0 /* V8WebKitCSSKeyframeRule.cpp */; }; 4DB7F9A90E9BEBA800C66CE0 /* V8WebKitCSSKeyframesRule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DB7F9A60E9BEB9B00C66CE0 /* V8WebKitCSSKeyframesRule.cpp */; }; @@ -226,7 +224,6 @@ 7B0094330DAFEFE600F72082 /* V8HTMLQuoteElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B0091F10DAFEFE300F72082 /* V8HTMLQuoteElement.cpp */; }; 7B0094350DAFEFE600F72082 /* V8HTMLScriptElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B0091F30DAFEFE300F72082 /* V8HTMLScriptElement.cpp */; }; 7B0094370DAFEFE600F72082 /* V8HTMLSelectElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B0091F50DAFEFE300F72082 /* V8HTMLSelectElement.cpp */; }; - 7B0094390DAFEFE600F72082 /* V8HTMLSelectionInputElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B0091F70DAFEFE300F72082 /* V8HTMLSelectionInputElement.cpp */; }; 7B00943D0DAFEFE600F72082 /* V8HTMLStyleElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B0091FB0DAFEFE300F72082 /* V8HTMLStyleElement.cpp */; }; 7B00943F0DAFEFE600F72082 /* V8HTMLTableCaptionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B0091FD0DAFEFE300F72082 /* V8HTMLTableCaptionElement.cpp */; }; 7B0094410DAFEFE600F72082 /* V8HTMLTableCellElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B0091FF0DAFEFE300F72082 /* V8HTMLTableCellElement.cpp */; }; @@ -425,6 +422,51 @@ AB332F3E0E9548900020F882 /* AccessibilityObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82761F810E3FAC700030D324 /* AccessibilityObject.cpp */; }; AB332F4D0E95497E0020F882 /* AnimationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB332F4B0E95497E0020F882 /* AnimationController.cpp */; }; AB8FE8A50E9BCD3E0051E7B4 /* GKURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB8FE8A40E9BCD3E0051E7B4 /* GKURL.cpp */; }; + ABBD23820EB7A8D200BEC658 /* StyleInheritedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23810EB7A8D200BEC658 /* StyleInheritedData.cpp */; }; + ABBD23A20EB7A95B00BEC658 /* StyleMarqueeData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23930EB7A95B00BEC658 /* StyleMarqueeData.cpp */; }; + ABBD23A30EB7A95B00BEC658 /* StyleMultiColData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23950EB7A95B00BEC658 /* StyleMultiColData.cpp */; }; + ABBD23A40EB7A95B00BEC658 /* StyleRareInheritedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23970EB7A95B00BEC658 /* StyleRareInheritedData.cpp */; }; + ABBD23A50EB7A95B00BEC658 /* StyleRareNonInheritedData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23990EB7A95B00BEC658 /* StyleRareNonInheritedData.cpp */; }; + ABBD23A60EB7A95B00BEC658 /* StyleSurroundData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD239C0EB7A95B00BEC658 /* StyleSurroundData.cpp */; }; + ABBD23A70EB7A95B00BEC658 /* StyleTransformData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD239E0EB7A95B00BEC658 /* StyleTransformData.cpp */; }; + ABBD23A80EB7A95B00BEC658 /* StyleVisualData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23A00EB7A95B00BEC658 /* StyleVisualData.cpp */; }; + ABBD23C30EB7AC1300BEC658 /* Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23AB0EB7AC1300BEC658 /* Animation.cpp */; }; + ABBD23C40EB7AC1300BEC658 /* AnimationList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23AD0EB7AC1300BEC658 /* AnimationList.cpp */; }; + ABBD23C50EB7AC1300BEC658 /* BindingURI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23AF0EB7AC1300BEC658 /* BindingURI.cpp */; }; + ABBD23C60EB7AC1300BEC658 /* ContentData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23B40EB7AC1300BEC658 /* ContentData.cpp */; }; + ABBD23C70EB7AC1300BEC658 /* CounterDirectives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23B70EB7AC1300BEC658 /* CounterDirectives.cpp */; }; + ABBD23C80EB7AC1300BEC658 /* FillLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23BC0EB7AC1300BEC658 /* FillLayer.cpp */; }; + ABBD23C90EB7AC1300BEC658 /* KeyframeList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23BF0EB7AC1300BEC658 /* KeyframeList.cpp */; }; + ABBD23CA0EB7AC1300BEC658 /* MatrixTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23C10EB7AC1300BEC658 /* MatrixTransformOperation.cpp */; }; + ABBD23EA0EB7ACA600BEC658 /* RotateTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23D50EB7ACA600BEC658 /* RotateTransformOperation.cpp */; }; + ABBD23EB0EB7ACA600BEC658 /* ScaleTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23D70EB7ACA600BEC658 /* ScaleTransformOperation.cpp */; }; + ABBD23EC0EB7ACA600BEC658 /* ShadowData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23D90EB7ACA600BEC658 /* ShadowData.cpp */; }; + ABBD23ED0EB7ACA600BEC658 /* SkewTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23DB0EB7ACA600BEC658 /* SkewTransformOperation.cpp */; }; + ABBD23EE0EB7ACA600BEC658 /* StyleBackgroundData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23DD0EB7ACA600BEC658 /* StyleBackgroundData.cpp */; }; + ABBD23EF0EB7ACA600BEC658 /* StyleBoxData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23DF0EB7ACA600BEC658 /* StyleBoxData.cpp */; }; + ABBD23F00EB7ACA600BEC658 /* StyleFlexibleBoxData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23E20EB7ACA600BEC658 /* StyleFlexibleBoxData.cpp */; }; + ABBD23F10EB7ACA600BEC658 /* TransformOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23E60EB7ACA600BEC658 /* TransformOperations.cpp */; }; + ABBD23F20EB7ACA600BEC658 /* TranslateTransformOperation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD23E80EB7ACA600BEC658 /* TranslateTransformOperation.cpp */; }; + ABBD24370EB7AE0700BEC658 /* V8MessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24020EB7AE0700BEC658 /* V8MessagePort.cpp */; }; + ABBD246D0EB7B1DA00BEC658 /* MessageChannel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24660EB7B1DA00BEC658 /* MessageChannel.cpp */; }; + ABBD246E0EB7B1DA00BEC658 /* MessagePort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24680EB7B1DA00BEC658 /* MessagePort.cpp */; }; + ABBD246F0EB7B1DA00BEC658 /* XMLTokenizerLibxml2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD246C0EB7B1DA00BEC658 /* XMLTokenizerLibxml2.cpp */; }; + ABBD24790EB7B31B00BEC658 /* V8MessagePortCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24780EB7B31B00BEC658 /* V8MessagePortCustom.cpp */; }; + ABBD24820EB7BCBB00BEC658 /* CSSNthSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24800EB7BCBB00BEC658 /* CSSNthSelector.cpp */; }; + ABBD248A0EB7BEA400BEC658 /* CachedResourceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24840EB7BEA400BEC658 /* CachedResourceHandle.cpp */; }; + ABBD248B0EB7BEA400BEC658 /* ImageLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24860EB7BEA400BEC658 /* ImageLoader.cpp */; }; + ABBD248C0EB7BEA400BEC658 /* MediaDocument.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24880EB7BEA400BEC658 /* MediaDocument.cpp */; }; + ABBD249F0EB7BFC500BEC658 /* Length.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24950EB7BFC500BEC658 /* Length.cpp */; }; + ABBD24A00EB7BFC500BEC658 /* RenderScrollbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24960EB7BFC500BEC658 /* RenderScrollbar.cpp */; }; + ABBD24A10EB7BFC500BEC658 /* RenderScrollbarPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24980EB7BFC500BEC658 /* RenderScrollbarPart.cpp */; }; + ABBD24A20EB7BFC500BEC658 /* RenderScrollbarTheme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD249A0EB7BFC500BEC658 /* RenderScrollbarTheme.cpp */; }; + ABBD24B70EB7C0DC00BEC658 /* WidthIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24B50EB7C0DC00BEC658 /* WidthIterator.cpp */; }; + ABBD24C60EB7C17E00BEC658 /* ScrollbarThemeComposite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24C30EB7C17E00BEC658 /* ScrollbarThemeComposite.cpp */; }; + ABBD24D90EB7C29F00BEC658 /* CoreTextController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24D50EB7C29F00BEC658 /* CoreTextController.cpp */; }; + ABBD24DA0EB7C29F00BEC658 /* FontMacATSUI.mm in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24D70EB7C29F00BEC658 /* FontMacATSUI.mm */; }; + ABBD24DB0EB7C29F00BEC658 /* FontMacCoreText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24D80EB7C29F00BEC658 /* FontMacCoreText.cpp */; }; + ABBD24E80EB7C35500BEC658 /* ScrollbarThemeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E90F20D7F3CC2001ECF42 /* ScrollbarThemeMac.mm */; }; + ABBD24EE0EB7C3C800BEC658 /* AccessibilityList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ABBD24EC0EB7C3C800BEC658 /* AccessibilityList.cpp */; }; B507F51C0E9BE98B00D16D77 /* PluginStubsMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B507F51B0E9BE98B00D16D77 /* PluginStubsMac.cpp */; }; B507F54E0E9BECC300D16D77 /* HTMLPlugInImageElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B507F54D0E9BECC300D16D77 /* HTMLPlugInImageElement.cpp */; }; B50F5BE00E96D3F800AD71A6 /* WebCoreObjCExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = B50F5BDF0E96D3F800AD71A6 /* WebCoreObjCExtras.mm */; }; @@ -437,10 +479,11 @@ B5442A7B0E9BDCF30098766D /* PatternCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5442A7A0E9BDCF30098766D /* PatternCG.cpp */; }; B5442A880E9BDD600098766D /* RenderImageGeneratedContent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5442A860E9BDD600098766D /* RenderImageGeneratedContent.cpp */; }; B5442A900E9BDDF10098766D /* SharedBufferCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5442A8F0E9BDDF10098766D /* SharedBufferCF.cpp */; }; + B556C24F0EB8FCD800418C57 /* FileSystemChromiumMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B556C24E0EB8FCD800418C57 /* FileSystemChromiumMac.mm */; }; + B556C33D0EB9035B00418C57 /* FileSystemChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B556C33C0EB9035B00418C57 /* FileSystemChromium.cpp */; }; B5599D130E95942900E2A85A /* SVGDocumentExtensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5599D120E95942900E2A85A /* SVGDocumentExtensions.cpp */; }; B5599D160E9594E800E2A85A /* SVGImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5599D140E9594E800E2A85A /* SVGImage.cpp */; }; B57635F80E96C13D008A7ABC /* ResourceResponseBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B57635F70E96C13D008A7ABC /* ResourceResponseBase.cpp */; }; - B58533D80EB658D7007104C1 /* FileChooserChromiumMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = B58533A40EB6543C007104C1 /* FileChooserChromiumMac.mm */; }; B58831090E9BD5B000CEC344 /* RenderReplica.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B58831070E9BD5B000CEC344 /* RenderReplica.cpp */; }; B58831140E9BD61F00CEC344 /* TextControlInnerElements.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B58831130E9BD61F00CEC344 /* TextControlInnerElements.cpp */; }; B588312A0E9BD6D800CEC344 /* StringBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B58831290E9BD6D800CEC344 /* StringBuilder.cpp */; }; @@ -819,8 +862,7 @@ E45625230E268E87005E4685 /* ProtectionSpace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E913C0D7F3CC2001ECF42 /* ProtectionSpace.cpp */; }; E45625250E268E87005E4685 /* ResourceHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E91470D7F3CC2001ECF42 /* ResourceHandle.cpp */; }; E45625260E268E87005E4685 /* ResourceRequestBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E914B0D7F3CC2001ECF42 /* ResourceRequestBase.cpp */; }; - E45625280E268E87005E4685 /* FileSystemPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E915D0D7F3CC2001ECF42 /* FileSystemPOSIX.cpp */; }; - E456252A0E268E87005E4685 /* ScrollBar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E91870D7F3CC2001ECF42 /* ScrollBar.cpp */; }; + E456252A0E268E87005E4685 /* Scrollbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E91870D7F3CC2001ECF42 /* Scrollbar.cpp */; }; E456252B0E268E87005E4685 /* SecurityOrigin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E918C0D7F3CC2001ECF42 /* SecurityOrigin.cpp */; }; E456252C0E268E87005E4685 /* SharedBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E91900D7F3CC2001ECF42 /* SharedBuffer.cpp */; }; E456252D0E268E87005E4685 /* AtomicString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B5E91AA0D7F3CC2001ECF42 /* AtomicString.cpp */; }; @@ -1186,9 +1228,8 @@ E473F64B0EADFFF8006C2098 /* Language.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F64A0EADFFF8006C2098 /* Language.cpp */; }; E473F64E0EAE0005006C2098 /* MimeTypeRegistryChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F64D0EAE0005006C2098 /* MimeTypeRegistryChromium.cpp */; }; E473F6530EAE002F006C2098 /* PlatformKeyboardEventChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F6500EAE002F006C2098 /* PlatformKeyboardEventChromium.cpp */; }; - E473F65A0EAE005C006C2098 /* PlatformScrollBarChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F6590EAE005C006C2098 /* PlatformScrollBarChromium.cpp */; }; E473F6600EAE00A6006C2098 /* PopupMenuChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F65E0EAE00A6006C2098 /* PopupMenuChromium.cpp */; }; - E473F6620EAE00D5006C2098 /* ScrollViewChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F6610EAE00D5006C2098 /* ScrollViewChromium.cpp */; }; + E473F6620EAE00D5006C2098 /* ScrollView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F6610EAE00D5006C2098 /* ScrollView.cpp */; }; E473F6640EAE00E4006C2098 /* SearchPopupMenuChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F6630EAE00E4006C2098 /* SearchPopupMenuChromium.cpp */; }; E473F6660EAE00F4006C2098 /* SharedTimerChromium.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F6650EAE00F4006C2098 /* SharedTimerChromium.cpp */; }; E473F6680EAE0109006C2098 /* SoundPosix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E473F6670EAE0109006C2098 /* SoundPosix.cpp */; }; @@ -1351,6 +1392,8 @@ /* Begin PBXFileReference section */ 046192AA0EA5476500FB37B0 /* BitmapImageSingleFrameSkia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitmapImageSingleFrameSkia.h; sourceTree = "<group>"; }; 4D11C4D90E9ABE9200EF7617 /* ExceptionContextV8.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExceptionContextV8.cpp; sourceTree = "<group>"; }; + 4D329F8A0EB908A40041FB7E /* V8MessageChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8MessageChannel.cpp; sourceTree = "<group>"; }; + 4D329F8B0EB908A40041FB7E /* V8MessageChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8MessageChannel.h; sourceTree = "<group>"; }; 4D7B071E0E9DAE56009A6919 /* GraphicsContextStub.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContextStub.cpp; sourceTree = "<group>"; }; 4DB044220EB161D600A5633C /* IconMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconMac.cpp; sourceTree = "<group>"; }; 4DB044420EB1639E00A5633C /* ImageMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageMac.cpp; sourceTree = "<group>"; }; @@ -1374,8 +1417,6 @@ 4DB7EF850E9B9F6300C66CE0 /* V8FileList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8FileList.h; sourceTree = "<group>"; }; 4DB7EF860E9B9F6300C66CE0 /* V8ImageData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8ImageData.cpp; sourceTree = "<group>"; }; 4DB7EF870E9B9F6300C66CE0 /* V8ImageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8ImageData.h; sourceTree = "<group>"; }; - 4DB7EF880E9B9F6300C66CE0 /* V8NSResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8NSResolver.cpp; sourceTree = "<group>"; }; - 4DB7EF890E9B9F6300C66CE0 /* V8NSResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8NSResolver.h; sourceTree = "<group>"; }; 4DB7EF8A0E9B9F6300C66CE0 /* V8SVGAnimateColorElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGAnimateColorElement.cpp; sourceTree = "<group>"; }; 4DB7EF8B0E9B9F6300C66CE0 /* V8SVGAnimateColorElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGAnimateColorElement.h; sourceTree = "<group>"; }; 4DB7EF8C0E9B9F6300C66CE0 /* V8SVGAnimateElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGAnimateElement.cpp; sourceTree = "<group>"; }; @@ -1460,13 +1501,13 @@ 4DB7F1000E9BAB5600C66CE0 /* WebKitAnimationEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitAnimationEvent.h; sourceTree = "<group>"; }; 4DB7F1010E9BAB5600C66CE0 /* WebKitTransitionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitTransitionEvent.cpp; sourceTree = "<group>"; }; 4DB7F1020E9BAB5600C66CE0 /* WebKitTransitionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitTransitionEvent.h; sourceTree = "<group>"; }; - 4DB7F1140E9BAC1500C66CE0 /* Archive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Archive.h; sourceTree = "<group>"; }; - 4DB7F1150E9BAC1500C66CE0 /* ArchiveFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchiveFactory.cpp; sourceTree = "<group>"; }; - 4DB7F1160E9BAC1500C66CE0 /* ArchiveFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveFactory.h; sourceTree = "<group>"; }; - 4DB7F1170E9BAC1500C66CE0 /* ArchiveResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchiveResource.cpp; sourceTree = "<group>"; }; - 4DB7F1180E9BAC1500C66CE0 /* ArchiveResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveResource.h; sourceTree = "<group>"; }; - 4DB7F1190E9BAC1500C66CE0 /* ArchiveResourceCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ArchiveResourceCollection.cpp; sourceTree = "<group>"; }; - 4DB7F11A0E9BAC1500C66CE0 /* ArchiveResourceCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArchiveResourceCollection.h; sourceTree = "<group>"; }; + 4DB7F1140E9BAC1500C66CE0 /* Archive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Archive.h; path = archive/Archive.h; sourceTree = "<group>"; }; + 4DB7F1150E9BAC1500C66CE0 /* ArchiveFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArchiveFactory.cpp; path = archive/ArchiveFactory.cpp; sourceTree = "<group>"; }; + 4DB7F1160E9BAC1500C66CE0 /* ArchiveFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ArchiveFactory.h; path = archive/ArchiveFactory.h; sourceTree = "<group>"; }; + 4DB7F1170E9BAC1500C66CE0 /* ArchiveResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArchiveResource.cpp; path = archive/ArchiveResource.cpp; sourceTree = "<group>"; }; + 4DB7F1180E9BAC1500C66CE0 /* ArchiveResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ArchiveResource.h; path = archive/ArchiveResource.h; sourceTree = "<group>"; }; + 4DB7F1190E9BAC1500C66CE0 /* ArchiveResourceCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ArchiveResourceCollection.cpp; path = archive/ArchiveResourceCollection.cpp; sourceTree = "<group>"; }; + 4DB7F11A0E9BAC1500C66CE0 /* ArchiveResourceCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ArchiveResourceCollection.h; path = archive/ArchiveResourceCollection.h; sourceTree = "<group>"; }; 4DB7F1D80E9BAD5400C66CE0 /* SMILTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SMILTime.cpp; sourceTree = "<group>"; }; 4DB7F1D90E9BAD5400C66CE0 /* SMILTime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMILTime.h; sourceTree = "<group>"; }; 4DB7F1DA0E9BAD5400C66CE0 /* SMILTimeContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SMILTimeContainer.cpp; sourceTree = "<group>"; }; @@ -1507,8 +1548,6 @@ 4DB7F5270E9BD3FB00C66CE0 /* ThreadingPthreads.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadingPthreads.cpp; sourceTree = "<group>"; }; 4DB7F5280E9BD3FB00C66CE0 /* ThreadSpecific.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThreadSpecific.h; sourceTree = "<group>"; }; 4DB7F5410E9BD50600C66CE0 /* MainThreadMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MainThreadMac.mm; sourceTree = "<group>"; }; - 4DB7F5570E9BD66300C66CE0 /* JSNSResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNSResolver.cpp; sourceTree = "<group>"; }; - 4DB7F5580E9BD66300C66CE0 /* JSNSResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNSResolver.h; sourceTree = "<group>"; }; 4DB7F5590E9BD66300C66CE0 /* v8_collection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = v8_collection.h; sourceTree = "<group>"; }; 4DB7F55A0E9BD66300C66CE0 /* V8SVGPODTypeWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGPODTypeWrapper.h; sourceTree = "<group>"; }; 4DB7F55B0E9BD66300C66CE0 /* V8XMLHttpRequestCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8XMLHttpRequestCustom.cpp; sourceTree = "<group>"; }; @@ -1524,12 +1563,12 @@ 4DB7F9E80E9BECB500C66CE0 /* NetworkStateNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkStateNotifier.h; path = pending/NetworkStateNotifier.h; sourceTree = SOURCE_ROOT; }; 4DB7F9ED0E9BECEC00C66CE0 /* AuthenticationChallenge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthenticationChallenge.h; sourceTree = "<group>"; }; 4DB7F9EE0E9BECEC00C66CE0 /* NetworkStateNotifierMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkStateNotifierMac.cpp; sourceTree = "<group>"; }; - 4DB7FA080E9BEDC900C66CE0 /* LegacyWebArchiveMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = LegacyWebArchiveMac.mm; path = cf/LegacyWebArchiveMac.mm; sourceTree = "<group>"; }; - 4DB7FA410E9BF0CA00C66CE0 /* StyleCachedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleCachedImage.cpp; path = style/StyleCachedImage.cpp; sourceTree = "<group>"; }; - 4DB7FA420E9BF0CA00C66CE0 /* StyleCachedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleCachedImage.h; path = style/StyleCachedImage.h; sourceTree = "<group>"; }; - 4DB7FA430E9BF0CA00C66CE0 /* StyleGeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StyleGeneratedImage.cpp; path = style/StyleGeneratedImage.cpp; sourceTree = "<group>"; }; - 4DB7FA440E9BF0CA00C66CE0 /* StyleGeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleGeneratedImage.h; path = style/StyleGeneratedImage.h; sourceTree = "<group>"; }; - 4DB7FA450E9BF0CA00C66CE0 /* StyleImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StyleImage.h; path = style/StyleImage.h; sourceTree = "<group>"; }; + 4DB7FA080E9BEDC900C66CE0 /* LegacyWebArchiveMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = LegacyWebArchiveMac.mm; path = archive/cf/LegacyWebArchiveMac.mm; sourceTree = "<group>"; }; + 4DB7FA410E9BF0CA00C66CE0 /* StyleCachedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleCachedImage.cpp; sourceTree = "<group>"; }; + 4DB7FA420E9BF0CA00C66CE0 /* StyleCachedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleCachedImage.h; sourceTree = "<group>"; }; + 4DB7FA430E9BF0CA00C66CE0 /* StyleGeneratedImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleGeneratedImage.cpp; sourceTree = "<group>"; }; + 4DB7FA440E9BF0CA00C66CE0 /* StyleGeneratedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleGeneratedImage.h; sourceTree = "<group>"; }; + 4DB7FA450E9BF0CA00C66CE0 /* StyleImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleImage.h; sourceTree = "<group>"; }; 4DB7FE690E9BF69A00C66CE0 /* WebSystemInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSystemInterface.h; sourceTree = "<group>"; }; 4DB7FE6A0E9BF69A00C66CE0 /* WebSystemInterface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebSystemInterface.m; sourceTree = "<group>"; }; 4DB7FE6F0E9BF6AC00C66CE0 /* libwebcoresysteminterface.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libwebcoresysteminterface.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1732,8 +1771,6 @@ 7B0091F40DAFEFE300F72082 /* V8HTMLScriptElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8HTMLScriptElement.h; sourceTree = "<group>"; }; 7B0091F50DAFEFE300F72082 /* V8HTMLSelectElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8HTMLSelectElement.cpp; sourceTree = "<group>"; }; 7B0091F60DAFEFE300F72082 /* V8HTMLSelectElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8HTMLSelectElement.h; sourceTree = "<group>"; }; - 7B0091F70DAFEFE300F72082 /* V8HTMLSelectionInputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8HTMLSelectionInputElement.cpp; sourceTree = "<group>"; }; - 7B0091F80DAFEFE300F72082 /* V8HTMLSelectionInputElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8HTMLSelectionInputElement.h; sourceTree = "<group>"; }; 7B0091FB0DAFEFE300F72082 /* V8HTMLStyleElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8HTMLStyleElement.cpp; sourceTree = "<group>"; }; 7B0091FC0DAFEFE300F72082 /* V8HTMLStyleElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8HTMLStyleElement.h; sourceTree = "<group>"; }; 7B0091FD0DAFEFE300F72082 /* V8HTMLTableCaptionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8HTMLTableCaptionElement.cpp; sourceTree = "<group>"; }; @@ -2087,15 +2124,15 @@ 7B0096160DAFF19C00F72082 /* Location.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Location.h; sourceTree = "<group>"; }; 7B00961D0DAFF19C00F72082 /* ScheduledAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScheduledAction.h; sourceTree = "<group>"; }; 7B0096290DAFF1D000F72082 /* InspectorController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InspectorController.cpp; path = port/page/inspector/InspectorController.cpp; sourceTree = "<group>"; }; - 7B0E595B0DB3D195007D4907 /* IconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconDatabase.h; sourceTree = "<group>"; }; - 7B0E595C0DB3D195007D4907 /* IconDatabaseClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconDatabaseClient.h; sourceTree = "<group>"; }; - 7B0E595D0DB3D195007D4907 /* IconDatabaseNone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconDatabaseNone.cpp; sourceTree = "<group>"; }; - 7B0E595E0DB3D195007D4907 /* IconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconLoader.cpp; sourceTree = "<group>"; }; - 7B0E595F0DB3D195007D4907 /* IconLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconLoader.h; sourceTree = "<group>"; }; - 7B0E59600DB3D195007D4907 /* IconRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IconRecord.cpp; sourceTree = "<group>"; }; - 7B0E59610DB3D195007D4907 /* IconRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconRecord.h; sourceTree = "<group>"; }; - 7B0E59620DB3D195007D4907 /* PageURLRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageURLRecord.cpp; sourceTree = "<group>"; }; - 7B0E59630DB3D195007D4907 /* PageURLRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageURLRecord.h; sourceTree = "<group>"; }; + 7B0E595B0DB3D195007D4907 /* IconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IconDatabase.h; path = icon/IconDatabase.h; sourceTree = "<group>"; }; + 7B0E595C0DB3D195007D4907 /* IconDatabaseClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IconDatabaseClient.h; path = icon/IconDatabaseClient.h; sourceTree = "<group>"; }; + 7B0E595D0DB3D195007D4907 /* IconDatabaseNone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IconDatabaseNone.cpp; path = icon/IconDatabaseNone.cpp; sourceTree = "<group>"; }; + 7B0E595E0DB3D195007D4907 /* IconLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IconLoader.cpp; path = icon/IconLoader.cpp; sourceTree = "<group>"; }; + 7B0E595F0DB3D195007D4907 /* IconLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IconLoader.h; path = icon/IconLoader.h; sourceTree = "<group>"; }; + 7B0E59600DB3D195007D4907 /* IconRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IconRecord.cpp; path = icon/IconRecord.cpp; sourceTree = "<group>"; }; + 7B0E59610DB3D195007D4907 /* IconRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IconRecord.h; path = icon/IconRecord.h; sourceTree = "<group>"; }; + 7B0E59620DB3D195007D4907 /* PageURLRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PageURLRecord.cpp; path = icon/PageURLRecord.cpp; sourceTree = "<group>"; }; + 7B0E59630DB3D195007D4907 /* PageURLRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PageURLRecord.h; path = icon/PageURLRecord.h; sourceTree = "<group>"; }; 7B14AA450DE323CD00F4E646 /* CachedPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedPage.cpp; sourceTree = "<group>"; }; 7B14AA460DE323CD00F4E646 /* CachedPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedPage.h; sourceTree = "<group>"; }; 7B14AAA80DE3340400F4E646 /* CharsetData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CharsetData.cpp; sourceTree = "<group>"; }; @@ -2381,7 +2418,7 @@ 7B5E8A5B0D7F3A7C001ECF42 /* TextEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextEvent.cpp; sourceTree = "<group>"; }; 7B5E8A5C0D7F3A7C001ECF42 /* TextEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextEvent.h; sourceTree = "<group>"; }; 7B5E8A5E0D7F3A7C001ECF42 /* Tokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tokenizer.h; sourceTree = "<group>"; }; - 7B5E8A5F0D7F3A7C001ECF42 /* Traversal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Traversal.cpp; path = ../../../../webkit/pending/Traversal.cpp; sourceTree = "<group>"; }; + 7B5E8A5F0D7F3A7C001ECF42 /* Traversal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Traversal.cpp; sourceTree = "<group>"; }; 7B5E8A600D7F3A7C001ECF42 /* Traversal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Traversal.h; sourceTree = "<group>"; }; 7B5E8A610D7F3A7C001ECF42 /* TreeWalker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TreeWalker.cpp; sourceTree = "<group>"; }; 7B5E8A620D7F3A7C001ECF42 /* TreeWalker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TreeWalker.h; sourceTree = "<group>"; }; @@ -2405,7 +2442,7 @@ 7B5E8B030D7F3AFA001ECF42 /* CreateLinkCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CreateLinkCommand.h; sourceTree = "<group>"; }; 7B5E8B040D7F3AFA001ECF42 /* DeleteButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteButton.cpp; sourceTree = "<group>"; }; 7B5E8B050D7F3AFA001ECF42 /* DeleteButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteButton.h; sourceTree = "<group>"; }; - 7B5E8B060D7F3AFA001ECF42 /* DeleteButtonController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DeleteButtonController.cpp; path = ../../../../webkit/pending/DeleteButtonController.cpp; sourceTree = "<group>"; }; + 7B5E8B060D7F3AFA001ECF42 /* DeleteButtonController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteButtonController.cpp; sourceTree = "<group>"; }; 7B5E8B070D7F3AFA001ECF42 /* DeleteButtonController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteButtonController.h; sourceTree = "<group>"; }; 7B5E8B080D7F3AFA001ECF42 /* DeleteFromTextNodeCommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeleteFromTextNodeCommand.cpp; sourceTree = "<group>"; }; 7B5E8B090D7F3AFA001ECF42 /* DeleteFromTextNodeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeleteFromTextNodeCommand.h; sourceTree = "<group>"; }; @@ -2706,9 +2743,9 @@ 7B5E8DC20D7F3C01001ECF42 /* ImageDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageDocument.h; sourceTree = "<group>"; }; 7B5E8DC30D7F3C01001ECF42 /* loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loader.cpp; sourceTree = "<group>"; }; 7B5E8DC40D7F3C01001ECF42 /* loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loader.h; sourceTree = "<group>"; }; - 7B5E8DC60D7F3C01001ECF42 /* LoaderNSURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoaderNSURLExtras.h; sourceTree = "<group>"; }; - 7B5E8DC70D7F3C01001ECF42 /* LoaderNSURLExtras.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = LoaderNSURLExtras.mm; sourceTree = "<group>"; }; - 7B5E8DC80D7F3C01001ECF42 /* ResourceLoaderMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceLoaderMac.mm; sourceTree = "<group>"; }; + 7B5E8DC60D7F3C01001ECF42 /* LoaderNSURLExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LoaderNSURLExtras.h; path = mac/LoaderNSURLExtras.h; sourceTree = "<group>"; }; + 7B5E8DC70D7F3C01001ECF42 /* LoaderNSURLExtras.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = LoaderNSURLExtras.mm; path = mac/LoaderNSURLExtras.mm; sourceTree = "<group>"; }; + 7B5E8DC80D7F3C01001ECF42 /* ResourceLoaderMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ResourceLoaderMac.mm; path = mac/ResourceLoaderMac.mm; sourceTree = "<group>"; }; 7B5E8DC90D7F3C01001ECF42 /* UserStyleSheetLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserStyleSheetLoader.cpp; sourceTree = "<group>"; }; 7B5E8DCA0D7F3C01001ECF42 /* UserStyleSheetLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserStyleSheetLoader.h; sourceTree = "<group>"; }; 7B5E8DCB0D7F3C01001ECF42 /* MainResourceLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MainResourceLoader.cpp; sourceTree = "<group>"; }; @@ -2766,9 +2803,9 @@ 7B5E8E5C0D7F3C48001ECF42 /* FrameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameView.h; sourceTree = "<group>"; }; 7B5E8E610D7F3C48001ECF42 /* History.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = History.cpp; sourceTree = "<group>"; }; 7B5E8E620D7F3C48001ECF42 /* History.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = History.h; sourceTree = "<group>"; }; - 7B5E8EF80D7F3C48001ECF42 /* InspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorClient.h; sourceTree = "<group>"; }; + 7B5E8EF80D7F3C48001ECF42 /* InspectorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorClient.h; path = ../inspector/InspectorClient.h; sourceTree = "<group>"; }; 7B5E8EF90D7F3C48001ECF42 /* InspectorController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InspectorController.cpp; path = ../../../../webkit/port/page/inspector/InspectorController.cpp; sourceTree = "<group>"; }; - 7B5E8EFA0D7F3C48001ECF42 /* InspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorController.h; path = ../../../../webkit/pending/InspectorController.h; sourceTree = "<group>"; }; + 7B5E8EFA0D7F3C48001ECF42 /* InspectorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InspectorController.h; path = ../inspector/InspectorController.h; sourceTree = "<group>"; }; 7B5E8EFD0D7F3C48001ECF42 /* ChromeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ChromeMac.mm; sourceTree = "<group>"; }; 7B5E8EFE0D7F3C48001ECF42 /* DragControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DragControllerMac.mm; sourceTree = "<group>"; }; 7B5E8EFF0D7F3C48001ECF42 /* EventHandlerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EventHandlerMac.mm; sourceTree = "<group>"; }; @@ -2942,8 +2979,8 @@ 7B5E90ED0D7F3CC2001ECF42 /* PasteboardHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasteboardHelper.h; sourceTree = "<group>"; }; 7B5E90EE0D7F3CC2001ECF42 /* PasteboardMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PasteboardMac.mm; path = ../../../../../webkit/port/platform/mac/PasteboardMac.mm; sourceTree = "<group>"; }; 7B5E90EF0D7F3CC2001ECF42 /* PlatformMouseEventMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformMouseEventMac.mm; sourceTree = "<group>"; }; - 7B5E90F10D7F3CC2001ECF42 /* PlatformScrollBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformScrollBar.h; sourceTree = "<group>"; }; - 7B5E90F20D7F3CC2001ECF42 /* PlatformScrollBarMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformScrollBarMac.mm; sourceTree = "<group>"; }; + 7B5E90F10D7F3CC2001ECF42 /* ScrollbarThemeMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarThemeMac.h; sourceTree = "<group>"; }; + 7B5E90F20D7F3CC2001ECF42 /* ScrollbarThemeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScrollbarThemeMac.mm; sourceTree = "<group>"; }; 7B5E90F40D7F3CC2001ECF42 /* PopupMenuMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PopupMenuMac.mm; sourceTree = "<group>"; }; 7B5E90F60D7F3CC2001ECF42 /* SearchPopupMenuMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SearchPopupMenuMac.mm; sourceTree = "<group>"; }; 7B5E90F70D7F3CC2001ECF42 /* SharedBufferMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SharedBufferMac.mm; sourceTree = "<group>"; }; @@ -3003,9 +3040,8 @@ 7B5E91590D7F3CC2001ECF42 /* PlatformWheelEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformWheelEvent.h; sourceTree = "<group>"; }; 7B5E915A0D7F3CC2001ECF42 /* PopupMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopupMenu.h; sourceTree = "<group>"; }; 7B5E915B0D7F3CC2001ECF42 /* PopupMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopupMenuClient.h; sourceTree = "<group>"; }; - 7B5E915D0D7F3CC2001ECF42 /* FileSystemPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemPOSIX.cpp; sourceTree = "<group>"; }; - 7B5E91870D7F3CC2001ECF42 /* ScrollBar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollBar.cpp; sourceTree = "<group>"; }; - 7B5E91880D7F3CC2001ECF42 /* ScrollBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollBar.h; sourceTree = "<group>"; }; + 7B5E91870D7F3CC2001ECF42 /* Scrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Scrollbar.cpp; sourceTree = "<group>"; }; + 7B5E91880D7F3CC2001ECF42 /* Scrollbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Scrollbar.h; sourceTree = "<group>"; }; 7B5E91890D7F3CC2001ECF42 /* ScrollTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollTypes.h; sourceTree = "<group>"; }; 7B5E918A0D7F3CC2001ECF42 /* ScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollView.h; sourceTree = "<group>"; }; 7B5E918B0D7F3CC2001ECF42 /* SearchPopupMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchPopupMenu.h; sourceTree = "<group>"; }; @@ -3158,7 +3194,7 @@ 7B5E95640D7F3E95001ECF42 /* RenderListMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderListMarker.h; sourceTree = "<group>"; }; 7B5E95650D7F3E95001ECF42 /* RenderMedia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMedia.cpp; sourceTree = "<group>"; }; 7B5E95660D7F3E95001ECF42 /* RenderMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMedia.h; sourceTree = "<group>"; }; - 7B5E95670D7F3E95001ECF42 /* RenderMenuList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderMenuList.cpp; path = ../../../../webkit/pending/RenderMenuList.cpp; sourceTree = "<group>"; }; + 7B5E95670D7F3E95001ECF42 /* RenderMenuList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMenuList.cpp; sourceTree = "<group>"; }; 7B5E95680D7F3E95001ECF42 /* RenderMenuList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMenuList.h; sourceTree = "<group>"; }; 7B5E956B0D7F3E95001ECF42 /* RenderPart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderPart.cpp; sourceTree = "<group>"; }; 7B5E956D0D7F3E95001ECF42 /* RenderPartObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderPartObject.cpp; sourceTree = "<group>"; }; @@ -3210,7 +3246,6 @@ 7B5E959F0D7F3E95001ECF42 /* RenderTextFragment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextFragment.cpp; sourceTree = "<group>"; }; 7B5E95A00D7F3E95001ECF42 /* RenderTextFragment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTextFragment.h; sourceTree = "<group>"; }; 7B5E95A10D7F3E95001ECF42 /* RenderTheme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTheme.cpp; sourceTree = "<group>"; }; - 7B5E95A20D7F3E95001ECF42 /* RenderTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderTheme.h; path = ../../../../webkit/pending/RenderTheme.h; sourceTree = "<group>"; }; 7B5E95A30D7F3E95001ECF42 /* RenderThemeMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderThemeMac.h; path = ../../../../webkit/pending/RenderThemeMac.h; sourceTree = "<group>"; }; 7B5E95AA0D7F3E95001ECF42 /* RenderTreeAsText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTreeAsText.cpp; sourceTree = "<group>"; }; 7B5E95AB0D7F3E95001ECF42 /* RenderTreeAsText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTreeAsText.h; sourceTree = "<group>"; }; @@ -3826,38 +3861,192 @@ 93BF8E650EA6AED30030F05C /* ResourceRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResourceRequest.h; path = chromium/ResourceRequest.h; sourceTree = "<group>"; }; 93BF8E660EA6AED30030F05C /* ResourceResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ResourceResponse.h; path = chromium/ResourceResponse.h; sourceTree = "<group>"; }; 93BF8F510EA6BD870030F05C /* AccessibilityObjectChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AccessibilityObjectChromium.cpp; path = chromium/AccessibilityObjectChromium.cpp; sourceTree = "<group>"; }; - AB0240640E9565F7006D59C8 /* DocumentLoaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentLoaderMac.cpp; sourceTree = "<group>"; }; + AB0240640E9565F7006D59C8 /* DocumentLoaderMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DocumentLoaderMac.cpp; path = mac/DocumentLoaderMac.cpp; sourceTree = "<group>"; }; AB332F4B0E95497E0020F882 /* AnimationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationController.cpp; path = animation/AnimationController.cpp; sourceTree = "<group>"; }; AB332F4C0E95497E0020F882 /* AnimationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationController.h; path = animation/AnimationController.h; sourceTree = "<group>"; }; AB50EA1C0E9AB12B00FDD61B /* EmptyClients.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmptyClients.h; sourceTree = "<group>"; }; AB8FE8A40E9BCD3E0051E7B4 /* GKURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GKURL.cpp; sourceTree = "<group>"; }; ABA23E6B0E9FC43700C96905 /* Navigator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Navigator.cpp; sourceTree = "<group>"; }; + ABBD23810EB7A8D200BEC658 /* StyleInheritedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleInheritedData.cpp; sourceTree = "<group>"; }; + ABBD23830EB7A8EC00BEC658 /* StyleInheritedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleInheritedData.h; sourceTree = "<group>"; }; + ABBD23930EB7A95B00BEC658 /* StyleMarqueeData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleMarqueeData.cpp; sourceTree = "<group>"; }; + ABBD23940EB7A95B00BEC658 /* StyleMarqueeData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleMarqueeData.h; sourceTree = "<group>"; }; + ABBD23950EB7A95B00BEC658 /* StyleMultiColData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleMultiColData.cpp; sourceTree = "<group>"; }; + ABBD23960EB7A95B00BEC658 /* StyleMultiColData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleMultiColData.h; sourceTree = "<group>"; }; + ABBD23970EB7A95B00BEC658 /* StyleRareInheritedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleRareInheritedData.cpp; sourceTree = "<group>"; }; + ABBD23980EB7A95B00BEC658 /* StyleRareInheritedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleRareInheritedData.h; sourceTree = "<group>"; }; + ABBD23990EB7A95B00BEC658 /* StyleRareNonInheritedData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleRareNonInheritedData.cpp; sourceTree = "<group>"; }; + ABBD239A0EB7A95B00BEC658 /* StyleRareNonInheritedData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleRareNonInheritedData.h; sourceTree = "<group>"; }; + ABBD239B0EB7A95B00BEC658 /* StyleReflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleReflection.h; sourceTree = "<group>"; }; + ABBD239C0EB7A95B00BEC658 /* StyleSurroundData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleSurroundData.cpp; sourceTree = "<group>"; }; + ABBD239D0EB7A95B00BEC658 /* StyleSurroundData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleSurroundData.h; sourceTree = "<group>"; }; + ABBD239E0EB7A95B00BEC658 /* StyleTransformData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleTransformData.cpp; sourceTree = "<group>"; }; + ABBD239F0EB7A95B00BEC658 /* StyleTransformData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleTransformData.h; sourceTree = "<group>"; }; + ABBD23A00EB7A95B00BEC658 /* StyleVisualData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleVisualData.cpp; sourceTree = "<group>"; }; + ABBD23A10EB7A95B00BEC658 /* StyleVisualData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleVisualData.h; sourceTree = "<group>"; }; + ABBD23AB0EB7AC1300BEC658 /* Animation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Animation.cpp; sourceTree = "<group>"; }; + ABBD23AC0EB7AC1300BEC658 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Animation.h; sourceTree = "<group>"; }; + ABBD23AD0EB7AC1300BEC658 /* AnimationList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnimationList.cpp; sourceTree = "<group>"; }; + ABBD23AE0EB7AC1300BEC658 /* AnimationList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AnimationList.h; sourceTree = "<group>"; }; + ABBD23AF0EB7AC1300BEC658 /* BindingURI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BindingURI.cpp; sourceTree = "<group>"; }; + ABBD23B00EB7AC1300BEC658 /* BindingURI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BindingURI.h; sourceTree = "<group>"; }; + ABBD23B10EB7AC1300BEC658 /* BorderData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BorderData.h; sourceTree = "<group>"; }; + ABBD23B20EB7AC1300BEC658 /* BorderValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BorderValue.h; sourceTree = "<group>"; }; + ABBD23B30EB7AC1300BEC658 /* CollapsedBorderValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollapsedBorderValue.h; sourceTree = "<group>"; }; + ABBD23B40EB7AC1300BEC658 /* ContentData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentData.cpp; sourceTree = "<group>"; }; + ABBD23B50EB7AC1300BEC658 /* ContentData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentData.h; sourceTree = "<group>"; }; + ABBD23B60EB7AC1300BEC658 /* CounterContent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CounterContent.h; sourceTree = "<group>"; }; + ABBD23B70EB7AC1300BEC658 /* CounterDirectives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CounterDirectives.cpp; sourceTree = "<group>"; }; + ABBD23B80EB7AC1300BEC658 /* CounterDirectives.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CounterDirectives.h; sourceTree = "<group>"; }; + ABBD23B90EB7AC1300BEC658 /* CursorData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CursorData.h; sourceTree = "<group>"; }; + ABBD23BA0EB7AC1300BEC658 /* CursorList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CursorList.h; sourceTree = "<group>"; }; + ABBD23BB0EB7AC1300BEC658 /* DataRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataRef.h; sourceTree = "<group>"; }; + ABBD23BC0EB7AC1300BEC658 /* FillLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FillLayer.cpp; sourceTree = "<group>"; }; + ABBD23BD0EB7AC1300BEC658 /* FillLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FillLayer.h; sourceTree = "<group>"; }; + ABBD23BE0EB7AC1300BEC658 /* IdentityTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IdentityTransformOperation.h; sourceTree = "<group>"; }; + ABBD23BF0EB7AC1300BEC658 /* KeyframeList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeyframeList.cpp; sourceTree = "<group>"; }; + ABBD23C00EB7AC1300BEC658 /* KeyframeList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeyframeList.h; sourceTree = "<group>"; }; + ABBD23C10EB7AC1300BEC658 /* MatrixTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MatrixTransformOperation.cpp; sourceTree = "<group>"; }; + ABBD23C20EB7AC1300BEC658 /* MatrixTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MatrixTransformOperation.h; sourceTree = "<group>"; }; + ABBD23D30EB7ACA600BEC658 /* OutlineValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OutlineValue.h; sourceTree = "<group>"; }; + ABBD23D40EB7ACA600BEC658 /* RenderStyleConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderStyleConstants.h; sourceTree = "<group>"; }; + ABBD23D50EB7ACA600BEC658 /* RotateTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RotateTransformOperation.cpp; sourceTree = "<group>"; }; + ABBD23D60EB7ACA600BEC658 /* RotateTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RotateTransformOperation.h; sourceTree = "<group>"; }; + ABBD23D70EB7ACA600BEC658 /* ScaleTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScaleTransformOperation.cpp; sourceTree = "<group>"; }; + ABBD23D80EB7ACA600BEC658 /* ScaleTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScaleTransformOperation.h; sourceTree = "<group>"; }; + ABBD23D90EB7ACA600BEC658 /* ShadowData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShadowData.cpp; sourceTree = "<group>"; }; + ABBD23DA0EB7ACA600BEC658 /* ShadowData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShadowData.h; sourceTree = "<group>"; }; + ABBD23DB0EB7ACA600BEC658 /* SkewTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SkewTransformOperation.cpp; sourceTree = "<group>"; }; + ABBD23DC0EB7ACA600BEC658 /* SkewTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SkewTransformOperation.h; sourceTree = "<group>"; }; + ABBD23DD0EB7ACA600BEC658 /* StyleBackgroundData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleBackgroundData.cpp; sourceTree = "<group>"; }; + ABBD23DE0EB7ACA600BEC658 /* StyleBackgroundData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleBackgroundData.h; sourceTree = "<group>"; }; + ABBD23DF0EB7ACA600BEC658 /* StyleBoxData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleBoxData.cpp; sourceTree = "<group>"; }; + ABBD23E00EB7ACA600BEC658 /* StyleBoxData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleBoxData.h; sourceTree = "<group>"; }; + ABBD23E10EB7ACA600BEC658 /* StyleDashboardRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleDashboardRegion.h; sourceTree = "<group>"; }; + ABBD23E20EB7ACA600BEC658 /* StyleFlexibleBoxData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleFlexibleBoxData.cpp; sourceTree = "<group>"; }; + ABBD23E30EB7ACA600BEC658 /* StyleFlexibleBoxData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleFlexibleBoxData.h; sourceTree = "<group>"; }; + ABBD23E40EB7ACA600BEC658 /* TimingFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimingFunction.h; sourceTree = "<group>"; }; + ABBD23E50EB7ACA600BEC658 /* TransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransformOperation.h; sourceTree = "<group>"; }; + ABBD23E60EB7ACA600BEC658 /* TransformOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TransformOperations.cpp; sourceTree = "<group>"; }; + ABBD23E70EB7ACA600BEC658 /* TransformOperations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransformOperations.h; sourceTree = "<group>"; }; + ABBD23E80EB7ACA600BEC658 /* TranslateTransformOperation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TranslateTransformOperation.cpp; sourceTree = "<group>"; }; + ABBD23E90EB7ACA600BEC658 /* TranslateTransformOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TranslateTransformOperation.h; sourceTree = "<group>"; }; + ABBD24000EB7AE0700BEC658 /* V8Database.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8Database.cpp; sourceTree = "<group>"; }; + ABBD24010EB7AE0700BEC658 /* V8Database.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8Database.h; sourceTree = "<group>"; }; + ABBD24020EB7AE0700BEC658 /* V8MessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8MessagePort.cpp; sourceTree = "<group>"; }; + ABBD24030EB7AE0700BEC658 /* V8MessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8MessagePort.h; sourceTree = "<group>"; }; + ABBD24040EB7AE0700BEC658 /* V8SVGComponentTransferFunctionElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGComponentTransferFunctionElement.cpp; sourceTree = "<group>"; }; + ABBD24050EB7AE0700BEC658 /* V8SVGComponentTransferFunctionElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGComponentTransferFunctionElement.h; sourceTree = "<group>"; }; + ABBD24060EB7AE0700BEC658 /* V8SVGFEBlendElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEBlendElement.cpp; sourceTree = "<group>"; }; + ABBD24070EB7AE0700BEC658 /* V8SVGFEBlendElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEBlendElement.h; sourceTree = "<group>"; }; + ABBD24080EB7AE0700BEC658 /* V8SVGFEColorMatrixElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEColorMatrixElement.cpp; sourceTree = "<group>"; }; + ABBD24090EB7AE0700BEC658 /* V8SVGFEColorMatrixElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEColorMatrixElement.h; sourceTree = "<group>"; }; + ABBD240A0EB7AE0700BEC658 /* V8SVGFEComponentTransferElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEComponentTransferElement.cpp; sourceTree = "<group>"; }; + ABBD240B0EB7AE0700BEC658 /* V8SVGFEComponentTransferElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEComponentTransferElement.h; sourceTree = "<group>"; }; + ABBD240C0EB7AE0700BEC658 /* V8SVGFECompositeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFECompositeElement.cpp; sourceTree = "<group>"; }; + ABBD240D0EB7AE0700BEC658 /* V8SVGFECompositeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFECompositeElement.h; sourceTree = "<group>"; }; + ABBD240E0EB7AE0700BEC658 /* V8SVGFEDiffuseLightingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEDiffuseLightingElement.cpp; sourceTree = "<group>"; }; + ABBD240F0EB7AE0700BEC658 /* V8SVGFEDiffuseLightingElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEDiffuseLightingElement.h; sourceTree = "<group>"; }; + ABBD24100EB7AE0700BEC658 /* V8SVGFEDisplacementMapElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEDisplacementMapElement.cpp; sourceTree = "<group>"; }; + ABBD24110EB7AE0700BEC658 /* V8SVGFEDisplacementMapElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEDisplacementMapElement.h; sourceTree = "<group>"; }; + ABBD24120EB7AE0700BEC658 /* V8SVGFEDistantLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEDistantLightElement.cpp; sourceTree = "<group>"; }; + ABBD24130EB7AE0700BEC658 /* V8SVGFEDistantLightElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEDistantLightElement.h; sourceTree = "<group>"; }; + ABBD24140EB7AE0700BEC658 /* V8SVGFEFloodElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEFloodElement.cpp; sourceTree = "<group>"; }; + ABBD24150EB7AE0700BEC658 /* V8SVGFEFloodElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEFloodElement.h; sourceTree = "<group>"; }; + ABBD24160EB7AE0700BEC658 /* V8SVGFEFuncAElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEFuncAElement.cpp; sourceTree = "<group>"; }; + ABBD24170EB7AE0700BEC658 /* V8SVGFEFuncAElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEFuncAElement.h; sourceTree = "<group>"; }; + ABBD24180EB7AE0700BEC658 /* V8SVGFEFuncBElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEFuncBElement.cpp; sourceTree = "<group>"; }; + ABBD24190EB7AE0700BEC658 /* V8SVGFEFuncBElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEFuncBElement.h; sourceTree = "<group>"; }; + ABBD241A0EB7AE0700BEC658 /* V8SVGFEFuncGElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEFuncGElement.cpp; sourceTree = "<group>"; }; + ABBD241B0EB7AE0700BEC658 /* V8SVGFEFuncGElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEFuncGElement.h; sourceTree = "<group>"; }; + ABBD241C0EB7AE0700BEC658 /* V8SVGFEFuncRElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEFuncRElement.cpp; sourceTree = "<group>"; }; + ABBD241D0EB7AE0700BEC658 /* V8SVGFEFuncRElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEFuncRElement.h; sourceTree = "<group>"; }; + ABBD241E0EB7AE0700BEC658 /* V8SVGFEGaussianBlurElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEGaussianBlurElement.cpp; sourceTree = "<group>"; }; + ABBD241F0EB7AE0700BEC658 /* V8SVGFEGaussianBlurElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEGaussianBlurElement.h; sourceTree = "<group>"; }; + ABBD24200EB7AE0700BEC658 /* V8SVGFEImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEImageElement.cpp; sourceTree = "<group>"; }; + ABBD24210EB7AE0700BEC658 /* V8SVGFEImageElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEImageElement.h; sourceTree = "<group>"; }; + ABBD24220EB7AE0700BEC658 /* V8SVGFEMergeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEMergeElement.cpp; sourceTree = "<group>"; }; + ABBD24230EB7AE0700BEC658 /* V8SVGFEMergeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEMergeElement.h; sourceTree = "<group>"; }; + ABBD24240EB7AE0700BEC658 /* V8SVGFEMergeNodeElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEMergeNodeElement.cpp; sourceTree = "<group>"; }; + ABBD24250EB7AE0700BEC658 /* V8SVGFEMergeNodeElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEMergeNodeElement.h; sourceTree = "<group>"; }; + ABBD24260EB7AE0700BEC658 /* V8SVGFEOffsetElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEOffsetElement.cpp; sourceTree = "<group>"; }; + ABBD24270EB7AE0700BEC658 /* V8SVGFEOffsetElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEOffsetElement.h; sourceTree = "<group>"; }; + ABBD24280EB7AE0700BEC658 /* V8SVGFEPointLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFEPointLightElement.cpp; sourceTree = "<group>"; }; + ABBD24290EB7AE0700BEC658 /* V8SVGFEPointLightElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFEPointLightElement.h; sourceTree = "<group>"; }; + ABBD242A0EB7AE0700BEC658 /* V8SVGFESpecularLightingElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFESpecularLightingElement.cpp; sourceTree = "<group>"; }; + ABBD242B0EB7AE0700BEC658 /* V8SVGFESpecularLightingElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFESpecularLightingElement.h; sourceTree = "<group>"; }; + ABBD242C0EB7AE0700BEC658 /* V8SVGFESpotLightElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFESpotLightElement.cpp; sourceTree = "<group>"; }; + ABBD242D0EB7AE0700BEC658 /* V8SVGFESpotLightElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFESpotLightElement.h; sourceTree = "<group>"; }; + ABBD242E0EB7AE0700BEC658 /* V8SVGFETileElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFETileElement.cpp; sourceTree = "<group>"; }; + ABBD242F0EB7AE0700BEC658 /* V8SVGFETileElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFETileElement.h; sourceTree = "<group>"; }; + ABBD24300EB7AE0700BEC658 /* V8SVGFETurbulenceElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFETurbulenceElement.cpp; sourceTree = "<group>"; }; + ABBD24310EB7AE0700BEC658 /* V8SVGFETurbulenceElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFETurbulenceElement.h; sourceTree = "<group>"; }; + ABBD24320EB7AE0700BEC658 /* V8SVGFilterElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8SVGFilterElement.cpp; sourceTree = "<group>"; }; + ABBD24330EB7AE0700BEC658 /* V8SVGFilterElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8SVGFilterElement.h; sourceTree = "<group>"; }; + ABBD24340EB7AE0700BEC658 /* V8VoidCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8VoidCallback.cpp; sourceTree = "<group>"; }; + ABBD24350EB7AE0700BEC658 /* V8VoidCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = V8VoidCallback.h; sourceTree = "<group>"; }; + ABBD24660EB7B1DA00BEC658 /* MessageChannel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessageChannel.cpp; sourceTree = "<group>"; }; + ABBD24670EB7B1DA00BEC658 /* MessageChannel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageChannel.h; sourceTree = "<group>"; }; + ABBD24680EB7B1DA00BEC658 /* MessagePort.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MessagePort.cpp; sourceTree = "<group>"; }; + ABBD24690EB7B1DA00BEC658 /* MessagePort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessagePort.h; sourceTree = "<group>"; }; + ABBD246A0EB7B1DA00BEC658 /* NodeRareData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRareData.h; sourceTree = "<group>"; }; + ABBD246B0EB7B1DA00BEC658 /* NodeRenderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeRenderStyle.h; sourceTree = "<group>"; }; + ABBD246C0EB7B1DA00BEC658 /* XMLTokenizerLibxml2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = XMLTokenizerLibxml2.cpp; sourceTree = "<group>"; }; + ABBD24780EB7B31B00BEC658 /* V8MessagePortCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = V8MessagePortCustom.cpp; sourceTree = "<group>"; }; + ABBD24800EB7BCBB00BEC658 /* CSSNthSelector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSNthSelector.cpp; sourceTree = "<group>"; }; + ABBD24810EB7BCBB00BEC658 /* CSSNthSelector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSNthSelector.h; sourceTree = "<group>"; }; + ABBD24840EB7BEA400BEC658 /* CachedResourceHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedResourceHandle.cpp; sourceTree = "<group>"; }; + ABBD24850EB7BEA400BEC658 /* CachedResourceHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedResourceHandle.h; sourceTree = "<group>"; }; + ABBD24860EB7BEA400BEC658 /* ImageLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageLoader.cpp; sourceTree = "<group>"; }; + ABBD24870EB7BEA400BEC658 /* ImageLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageLoader.h; sourceTree = "<group>"; }; + ABBD24880EB7BEA400BEC658 /* MediaDocument.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaDocument.cpp; sourceTree = "<group>"; }; + ABBD24890EB7BEA400BEC658 /* MediaDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaDocument.h; sourceTree = "<group>"; }; + ABBD24950EB7BFC500BEC658 /* Length.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Length.cpp; sourceTree = "<group>"; }; + ABBD24960EB7BFC500BEC658 /* RenderScrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbar.cpp; sourceTree = "<group>"; }; + ABBD24970EB7BFC500BEC658 /* RenderScrollbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbar.h; sourceTree = "<group>"; }; + ABBD24980EB7BFC500BEC658 /* RenderScrollbarPart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbarPart.cpp; sourceTree = "<group>"; }; + ABBD24990EB7BFC500BEC658 /* RenderScrollbarPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbarPart.h; sourceTree = "<group>"; }; + ABBD249A0EB7BFC500BEC658 /* RenderScrollbarTheme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderScrollbarTheme.cpp; sourceTree = "<group>"; }; + ABBD249B0EB7BFC500BEC658 /* RenderScrollbarTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderScrollbarTheme.h; sourceTree = "<group>"; }; + ABBD249C0EB7BFC500BEC658 /* RenderTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTheme.h; sourceTree = "<group>"; }; + ABBD24B50EB7C0DC00BEC658 /* WidthIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WidthIterator.cpp; sourceTree = "<group>"; }; + ABBD24B60EB7C0DC00BEC658 /* WidthIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WidthIterator.h; sourceTree = "<group>"; }; + ABBD24C10EB7C17E00BEC658 /* ScrollbarClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarClient.h; sourceTree = "<group>"; }; + ABBD24C20EB7C17E00BEC658 /* ScrollbarTheme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarTheme.h; sourceTree = "<group>"; }; + ABBD24C30EB7C17E00BEC658 /* ScrollbarThemeComposite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollbarThemeComposite.cpp; sourceTree = "<group>"; }; + ABBD24C40EB7C17E00BEC658 /* ScrollbarThemeComposite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScrollbarThemeComposite.h; sourceTree = "<group>"; }; + ABBD24D50EB7C29F00BEC658 /* CoreTextController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CoreTextController.cpp; sourceTree = "<group>"; }; + ABBD24D60EB7C29F00BEC658 /* CoreTextController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreTextController.h; sourceTree = "<group>"; }; + ABBD24D70EB7C29F00BEC658 /* FontMacATSUI.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FontMacATSUI.mm; sourceTree = "<group>"; }; + ABBD24D80EB7C29F00BEC658 /* FontMacCoreText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontMacCoreText.cpp; sourceTree = "<group>"; }; + ABBD24EC0EB7C3C800BEC658 /* AccessibilityList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityList.cpp; sourceTree = "<group>"; }; + ABBD24ED0EB7C3C800BEC658 /* AccessibilityList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityList.h; sourceTree = "<group>"; }; B507F51B0E9BE98B00D16D77 /* PluginStubsMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginStubsMac.cpp; sourceTree = "<group>"; }; B507F54D0E9BECC300D16D77 /* HTMLPlugInImageElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLPlugInImageElement.cpp; sourceTree = "<group>"; }; B50F5BDF0E96D3F800AD71A6 /* WebCoreObjCExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebCoreObjCExtras.mm; path = pending/WebCoreObjCExtras.mm; sourceTree = SOURCE_ROOT; }; B51C76BF0E9BC7A400D9DFC4 /* GradientCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GradientCG.cpp; sourceTree = "<group>"; }; B51C76CD0E9BC8D100D9DFC4 /* RenderMarquee.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMarquee.h; sourceTree = "<group>"; }; B51C76CE0E9BC8D100D9DFC4 /* RenderMarquee.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMarquee.cpp; sourceTree = "<group>"; }; - B51C76D90E9BC9F400D9DFC4 /* NinePieceImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NinePieceImage.h; path = style/NinePieceImage.h; sourceTree = "<group>"; }; - B51C76DA0E9BC9F400D9DFC4 /* NinePieceImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NinePieceImage.cpp; path = style/NinePieceImage.cpp; sourceTree = "<group>"; }; + B51C76D90E9BC9F400D9DFC4 /* NinePieceImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NinePieceImage.h; sourceTree = "<group>"; }; + B51C76DA0E9BC9F400D9DFC4 /* NinePieceImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NinePieceImage.cpp; sourceTree = "<group>"; }; B53CCC5D0E9BCFF100D51C9A /* SVGAltGlyphElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAltGlyphElement.h; sourceTree = "<group>"; }; B53CCC5E0E9BCFF100D51C9A /* SVGAltGlyphElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAltGlyphElement.cpp; sourceTree = "<group>"; }; - B53CCC6F0E9BD0B300D51C9A /* LegacyWebArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LegacyWebArchive.h; path = cf/LegacyWebArchive.h; sourceTree = "<group>"; }; - B53CCC700E9BD0B300D51C9A /* LegacyWebArchive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LegacyWebArchive.cpp; path = cf/LegacyWebArchive.cpp; sourceTree = "<group>"; }; + B53CCC6F0E9BD0B300D51C9A /* LegacyWebArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LegacyWebArchive.h; path = archive/cf/LegacyWebArchive.h; sourceTree = "<group>"; }; + B53CCC700E9BD0B300D51C9A /* LegacyWebArchive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LegacyWebArchive.cpp; path = archive/cf/LegacyWebArchive.cpp; sourceTree = "<group>"; }; B53CCC810E9BD1C700D51C9A /* SVGHKernElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGHKernElement.h; sourceTree = "<group>"; }; B53CCC820E9BD1C700D51C9A /* SVGHKernElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGHKernElement.cpp; sourceTree = "<group>"; }; B5442A7A0E9BDCF30098766D /* PatternCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PatternCG.cpp; sourceTree = "<group>"; }; B5442A860E9BDD600098766D /* RenderImageGeneratedContent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderImageGeneratedContent.cpp; sourceTree = "<group>"; }; B5442A870E9BDD600098766D /* RenderImageGeneratedContent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderImageGeneratedContent.h; sourceTree = "<group>"; }; B5442A8F0E9BDDF10098766D /* SharedBufferCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedBufferCF.cpp; sourceTree = "<group>"; }; + B556C24E0EB8FCD800418C57 /* FileSystemChromiumMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FileSystemChromiumMac.mm; sourceTree = "<group>"; }; + B556C33C0EB9035B00418C57 /* FileSystemChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemChromium.cpp; sourceTree = "<group>"; }; B5599D0D0E95929900E2A85A /* SVGFEColorMatrixElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SVGFEColorMatrixElement.h; path = ../third_party/WebKit/WebCore/svg/SVGFEColorMatrixElement.h; sourceTree = SOURCE_ROOT; }; B5599D110E95942900E2A85A /* SVGDocumentExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGDocumentExtensions.h; sourceTree = "<group>"; }; B5599D120E95942900E2A85A /* SVGDocumentExtensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGDocumentExtensions.cpp; sourceTree = "<group>"; }; B5599D140E9594E800E2A85A /* SVGImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGImage.cpp; sourceTree = "<group>"; }; B5599D150E9594E800E2A85A /* SVGImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGImage.h; sourceTree = "<group>"; }; B57635F70E96C13D008A7ABC /* ResourceResponseBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceResponseBase.cpp; sourceTree = "<group>"; }; - B58533A40EB6543C007104C1 /* FileChooserChromiumMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FileChooserChromiumMac.mm; path = platform/chromium/FileChooserChromiumMac.mm; sourceTree = "<group>"; }; - B58533B90EB65626007104C1 /* FileChooserChromiumMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileChooserChromiumMac.h; path = platform/chromium/FileChooserChromiumMac.h; sourceTree = "<group>"; }; B58831070E9BD5B000CEC344 /* RenderReplica.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderReplica.cpp; sourceTree = "<group>"; }; B58831080E9BD5B000CEC344 /* RenderReplica.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderReplica.h; sourceTree = "<group>"; }; B58831120E9BD61F00CEC344 /* TextControlInnerElements.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextControlInnerElements.h; sourceTree = "<group>"; }; @@ -3875,8 +4064,8 @@ B5C1809A0E958D81006EAF87 /* RenderObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderObject.h; sourceTree = "<group>"; }; B5C1809B0E958D81006EAF87 /* RenderObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderObject.cpp; sourceTree = "<group>"; }; B5C1809D0E958D96006EAF87 /* RenderPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderPart.h; sourceTree = "<group>"; }; - B5C1809E0E958E3D006EAF87 /* RenderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderStyle.h; path = pending/RenderStyle.h; sourceTree = SOURCE_ROOT; }; - B5C180A30E958EAA006EAF87 /* RenderStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderStyle.cpp; path = style/RenderStyle.cpp; sourceTree = "<group>"; }; + B5C1809E0E958E3D006EAF87 /* RenderStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderStyle.h; sourceTree = "<group>"; }; + B5C180A30E958EAA006EAF87 /* RenderStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderStyle.cpp; sourceTree = "<group>"; }; B5C180A60E958EFD006EAF87 /* RenderTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTable.cpp; sourceTree = "<group>"; }; B5C180A80E958F0E006EAF87 /* RenderText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderText.h; sourceTree = "<group>"; }; B5C180A90E958F28006EAF87 /* RenderWordBreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderWordBreak.h; sourceTree = "<group>"; }; @@ -3901,38 +4090,35 @@ E45626950E268E87005E4685 /* libwebcore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libwebcore.a; sourceTree = BUILT_PRODUCTS_DIR; }; E45627150E268F03005E4685 /* libglue.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libglue.a; sourceTree = BUILT_PRODUCTS_DIR; }; E45627F40E2694B8005E4685 /* libport.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libport.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E473F6320EADFF61006C2098 /* ContextMenuItemChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ContextMenuItemChromium.cpp; path = platform/chromium/ContextMenuItemChromium.cpp; sourceTree = "<group>"; }; - E473F6330EADFF61006C2098 /* ContextMenuChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ContextMenuChromium.cpp; path = platform/chromium/ContextMenuChromium.cpp; sourceTree = "<group>"; }; - E473F6360EADFF84006C2098 /* CursorChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CursorChromium.cpp; path = platform/chromium/CursorChromium.cpp; sourceTree = "<group>"; }; - E473F6380EADFF8E006C2098 /* DragImageRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DragImageRef.h; path = platform/chromium/DragImageRef.h; sourceTree = "<group>"; }; - E473F6390EADFF8E006C2098 /* DragDataChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DragDataChromium.cpp; path = platform/chromium/DragDataChromium.cpp; sourceTree = "<group>"; }; - E473F63A0EADFF8E006C2098 /* DragDataRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DragDataRef.h; path = platform/chromium/DragDataRef.h; sourceTree = "<group>"; }; - E473F63B0EADFF8E006C2098 /* DragImageChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DragImageChromium.cpp; path = platform/chromium/DragImageChromium.cpp; sourceTree = "<group>"; }; - E473F63E0EADFFB5006C2098 /* FileChooserChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileChooserChromium.cpp; path = platform/chromium/FileChooserChromium.cpp; sourceTree = "<group>"; }; - E473F6400EADFFC6006C2098 /* FileSystemPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileSystemPosix.cpp; path = platform/chromium/FileSystemPosix.cpp; sourceTree = "<group>"; }; - E473F6410EADFFC6006C2098 /* FramelessScrollView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FramelessScrollView.cpp; path = platform/chromium/FramelessScrollView.cpp; sourceTree = "<group>"; }; - E473F6420EADFFC6006C2098 /* FramelessScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FramelessScrollView.h; path = platform/chromium/FramelessScrollView.h; sourceTree = "<group>"; }; - E473F64A0EADFFF8006C2098 /* Language.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Language.cpp; path = platform/chromium/Language.cpp; sourceTree = "<group>"; }; - E473F64D0EAE0005006C2098 /* MimeTypeRegistryChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MimeTypeRegistryChromium.cpp; path = platform/chromium/MimeTypeRegistryChromium.cpp; sourceTree = "<group>"; }; - E473F6500EAE002F006C2098 /* PlatformKeyboardEventChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformKeyboardEventChromium.cpp; path = platform/chromium/PlatformKeyboardEventChromium.cpp; sourceTree = "<group>"; }; - E473F6510EAE002F006C2098 /* PasteboardPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PasteboardPrivate.h; path = platform/chromium/PasteboardPrivate.h; sourceTree = "<group>"; }; - E473F6520EAE002F006C2098 /* PlatformCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformCursor.h; path = platform/chromium/PlatformCursor.h; sourceTree = "<group>"; }; - E473F6580EAE005C006C2098 /* PlatformScrollBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformScrollBar.h; path = platform/chromium/PlatformScrollBar.h; sourceTree = "<group>"; }; - E473F6590EAE005C006C2098 /* PlatformScrollBarChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformScrollBarChromium.cpp; path = platform/chromium/PlatformScrollBarChromium.cpp; sourceTree = "<group>"; }; - E473F65D0EAE009A006C2098 /* PlatformWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformWidget.h; path = platform/chromium/PlatformWidget.h; sourceTree = "<group>"; }; - E473F65E0EAE00A6006C2098 /* PopupMenuChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PopupMenuChromium.cpp; path = platform/chromium/PopupMenuChromium.cpp; sourceTree = "<group>"; }; - E473F65F0EAE00A6006C2098 /* PopupMenuPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PopupMenuPrivate.h; path = platform/chromium/PopupMenuPrivate.h; sourceTree = "<group>"; }; - E473F6610EAE00D5006C2098 /* ScrollViewChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollViewChromium.cpp; path = platform/chromium/ScrollViewChromium.cpp; sourceTree = "<group>"; }; - E473F6630EAE00E4006C2098 /* SearchPopupMenuChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SearchPopupMenuChromium.cpp; path = platform/chromium/SearchPopupMenuChromium.cpp; sourceTree = "<group>"; }; - E473F6650EAE00F4006C2098 /* SharedTimerChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedTimerChromium.cpp; path = platform/chromium/SharedTimerChromium.cpp; sourceTree = "<group>"; }; - E473F6670EAE0109006C2098 /* SoundPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SoundPosix.cpp; path = platform/chromium/SoundPosix.cpp; sourceTree = "<group>"; }; + E473F6320EADFF61006C2098 /* ContextMenuItemChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenuItemChromium.cpp; sourceTree = "<group>"; }; + E473F6330EADFF61006C2098 /* ContextMenuChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContextMenuChromium.cpp; sourceTree = "<group>"; }; + E473F6360EADFF84006C2098 /* CursorChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CursorChromium.cpp; sourceTree = "<group>"; }; + E473F6380EADFF8E006C2098 /* DragImageRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragImageRef.h; sourceTree = "<group>"; }; + E473F6390EADFF8E006C2098 /* DragDataChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DragDataChromium.cpp; sourceTree = "<group>"; }; + E473F63A0EADFF8E006C2098 /* DragDataRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragDataRef.h; sourceTree = "<group>"; }; + E473F63B0EADFF8E006C2098 /* DragImageChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DragImageChromium.cpp; sourceTree = "<group>"; }; + E473F63E0EADFFB5006C2098 /* FileChooserChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileChooserChromium.cpp; sourceTree = "<group>"; }; + E473F6400EADFFC6006C2098 /* FileSystemPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileSystemPosix.cpp; sourceTree = "<group>"; }; + E473F6410EADFFC6006C2098 /* FramelessScrollView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FramelessScrollView.cpp; sourceTree = "<group>"; }; + E473F6420EADFFC6006C2098 /* FramelessScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FramelessScrollView.h; sourceTree = "<group>"; }; + E473F64A0EADFFF8006C2098 /* Language.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Language.cpp; sourceTree = "<group>"; }; + E473F64D0EAE0005006C2098 /* MimeTypeRegistryChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MimeTypeRegistryChromium.cpp; sourceTree = "<group>"; }; + E473F6500EAE002F006C2098 /* PlatformKeyboardEventChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformKeyboardEventChromium.cpp; sourceTree = "<group>"; }; + E473F6510EAE002F006C2098 /* PasteboardPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasteboardPrivate.h; sourceTree = "<group>"; }; + E473F6520EAE002F006C2098 /* PlatformCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCursor.h; sourceTree = "<group>"; }; + E473F65D0EAE009A006C2098 /* PlatformWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformWidget.h; sourceTree = "<group>"; }; + E473F65E0EAE00A6006C2098 /* PopupMenuChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PopupMenuChromium.cpp; sourceTree = "<group>"; }; + E473F65F0EAE00A6006C2098 /* PopupMenuPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PopupMenuPrivate.h; sourceTree = "<group>"; }; + E473F6610EAE00D5006C2098 /* ScrollView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollView.cpp; path = ../../../third_party/WebKit/WebCore/platform/ScrollView.cpp; sourceTree = "<group>"; }; + E473F6630EAE00E4006C2098 /* SearchPopupMenuChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SearchPopupMenuChromium.cpp; sourceTree = "<group>"; }; + E473F6650EAE00F4006C2098 /* SharedTimerChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedTimerChromium.cpp; sourceTree = "<group>"; }; + E473F6670EAE0109006C2098 /* SoundPosix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SoundPosix.cpp; sourceTree = "<group>"; }; E473F66D0EAE012D006C2098 /* SSLKeyGeneratorChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SSLKeyGeneratorChromium.cpp; path = chromium/SSLKeyGeneratorChromium.cpp; sourceTree = "<group>"; }; E473F66F0EAE016A006C2098 /* SystemTimeChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SystemTimeChromium.cpp; path = chromium/SystemTimeChromium.cpp; sourceTree = "<group>"; }; E473F6740EAE0199006C2098 /* TemporaryLinkStubs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TemporaryLinkStubs.cpp; path = chromium/TemporaryLinkStubs.cpp; sourceTree = "<group>"; }; E473F6760EAE01A1006C2098 /* TextBoundariesChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TextBoundariesChromium.cpp; path = chromium/TextBoundariesChromium.cpp; sourceTree = "<group>"; }; E473F6770EAE01A1006C2098 /* TextBreakIteratorInternalICUChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TextBreakIteratorInternalICUChromium.cpp; path = chromium/TextBreakIteratorInternalICUChromium.cpp; sourceTree = "<group>"; }; - E473F67F0EAE01BE006C2098 /* WidgetChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WidgetChromium.cpp; path = platform/chromium/WidgetChromium.cpp; sourceTree = "<group>"; }; - E473F6800EAE01BE006C2098 /* WidgetClientChromium.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WidgetClientChromium.h; path = platform/chromium/WidgetClientChromium.h; sourceTree = "<group>"; }; + E473F67F0EAE01BE006C2098 /* WidgetChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WidgetChromium.cpp; sourceTree = "<group>"; }; E473F6850EAE01F5006C2098 /* EventHandlerChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EventHandlerChromium.cpp; path = chromium/EventHandlerChromium.cpp; sourceTree = "<group>"; }; E473F6870EAE021B006C2098 /* FrameChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FrameChromium.cpp; path = chromium/FrameChromium.cpp; sourceTree = "<group>"; }; E473F6890EAE0230006C2098 /* DragControllerChromium.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DragControllerChromium.cpp; path = chromium/DragControllerChromium.cpp; sourceTree = "<group>"; }; @@ -4020,13 +4206,6 @@ isa = PBXGroup; children = ( B53CCC6B0E9BD0A700D51C9A /* cf */, - 4DB7F1140E9BAC1500C66CE0 /* Archive.h */, - 4DB7F1150E9BAC1500C66CE0 /* ArchiveFactory.cpp */, - 4DB7F1160E9BAC1500C66CE0 /* ArchiveFactory.h */, - 4DB7F1170E9BAC1500C66CE0 /* ArchiveResource.cpp */, - 4DB7F1180E9BAC1500C66CE0 /* ArchiveResource.h */, - 4DB7F1190E9BAC1500C66CE0 /* ArchiveResourceCollection.cpp */, - 4DB7F11A0E9BAC1500C66CE0 /* ArchiveResourceCollection.h */, ); path = archive; sourceTree = "<group>"; @@ -4088,8 +4267,6 @@ isa = PBXGroup; children = ( 7B0095D20DAFF0DC00F72082 /* dom_wrapper_map.h */, - 4DB7F5570E9BD66300C66CE0 /* JSNSResolver.cpp */, - 4DB7F5580E9BD66300C66CE0 /* JSNSResolver.h */, 7B0095D30DAFF0DC00F72082 /* JSXPathNSResolver.cpp */, 7B0095D40DAFF0DC00F72082 /* JSXPathNSResolver.h */, 7B0095D50DAFF0DC00F72082 /* np_v8object.cpp */, @@ -4122,6 +4299,7 @@ 7B0095EC0DAFF0DD00F72082 /* v8_utility.h */, 7B0095ED0DAFF0DD00F72082 /* v8_vectornodelist.cpp */, 7B0095EE0DAFF0DD00F72082 /* v8_vectornodelist.h */, + ABBD24780EB7B31B00BEC658 /* V8MessagePortCustom.cpp */, 4DB7F55A0E9BD66300C66CE0 /* V8SVGPODTypeWrapper.h */, 4DB7F55B0E9BD66300C66CE0 /* V8XMLHttpRequestCustom.cpp */, ); @@ -4141,15 +4319,6 @@ 7B0E59590DB3D195007D4907 /* icon */ = { isa = PBXGroup; children = ( - 7B0E595B0DB3D195007D4907 /* IconDatabase.h */, - 7B0E595C0DB3D195007D4907 /* IconDatabaseClient.h */, - 7B0E595D0DB3D195007D4907 /* IconDatabaseNone.cpp */, - 7B0E595E0DB3D195007D4907 /* IconLoader.cpp */, - 7B0E595F0DB3D195007D4907 /* IconLoader.h */, - 7B0E59600DB3D195007D4907 /* IconRecord.cpp */, - 7B0E59610DB3D195007D4907 /* IconRecord.h */, - 7B0E59620DB3D195007D4907 /* PageURLRecord.cpp */, - 7B0E59630DB3D195007D4907 /* PageURLRecord.h */, ); path = icon; sourceTree = "<group>"; @@ -4390,6 +4559,8 @@ 7B5E88F20D7F3A08001ECF42 /* CSSMutableStyleDeclaration.cpp */, 7B5E88F30D7F3A08001ECF42 /* CSSMutableStyleDeclaration.h */, 7B5E88F40D7F3A08001ECF42 /* CSSNamespace.h */, + ABBD24800EB7BCBB00BEC658 /* CSSNthSelector.cpp */, + ABBD24810EB7BCBB00BEC658 /* CSSNthSelector.h */, 7B5E88F50D7F3A08001ECF42 /* CSSPageRule.cpp */, 7B5E88F60D7F3A08001ECF42 /* CSSPageRule.h */, 7B5E88F90D7F3A08001ECF42 /* CSSParser.cpp */, @@ -4547,8 +4718,12 @@ 7B5E8A110D7F3A7C001ECF42 /* MappedAttribute.cpp */, 7B5E8A120D7F3A7C001ECF42 /* MappedAttribute.h */, 7B5E8A130D7F3A7C001ECF42 /* MappedAttributeEntry.h */, + ABBD24660EB7B1DA00BEC658 /* MessageChannel.cpp */, + ABBD24670EB7B1DA00BEC658 /* MessageChannel.h */, 7B5E8A140D7F3A7C001ECF42 /* MessageEvent.cpp */, 7B5E8A150D7F3A7C001ECF42 /* MessageEvent.h */, + ABBD24680EB7B1DA00BEC658 /* MessagePort.cpp */, + ABBD24690EB7B1DA00BEC658 /* MessagePort.h */, 7B5E8A170D7F3A7C001ECF42 /* MouseEvent.cpp */, 7B5E8A180D7F3A7C001ECF42 /* MouseEvent.h */, 7B5E8A1B0D7F3A7C001ECF42 /* MouseRelatedEvent.cpp */, @@ -4571,6 +4746,8 @@ 7B5E8A300D7F3A7C001ECF42 /* NodeIterator.cpp */, 7B5E8A310D7F3A7C001ECF42 /* NodeIterator.h */, 7B5E8A330D7F3A7C001ECF42 /* NodeList.h */, + ABBD246A0EB7B1DA00BEC658 /* NodeRareData.h */, + ABBD246B0EB7B1DA00BEC658 /* NodeRenderStyle.h */, 7B5E8A350D7F3A7C001ECF42 /* Notation.cpp */, 7B5E8A360D7F3A7C001ECF42 /* Notation.h */, 7B5E8A380D7F3A7C001ECF42 /* OverflowEvent.cpp */, @@ -4624,6 +4801,7 @@ 7B5E8A6A0D7F3A7D001ECF42 /* WheelEvent.h */, 7B5E8A6C0D7F3A7D001ECF42 /* XMLTokenizer.cpp */, 7B5E8A6D0D7F3A7D001ECF42 /* XMLTokenizer.h */, + ABBD246C0EB7B1DA00BEC658 /* XMLTokenizerLibxml2.cpp */, ); path = dom; sourceTree = "<group>"; @@ -4961,6 +5139,13 @@ 4DB7F10F0E9BABEE00C66CE0 /* archive */, 7B0E59590DB3D195007D4907 /* icon */, 7B5E8DC50D7F3C01001ECF42 /* mac */, + 4DB7F1140E9BAC1500C66CE0 /* Archive.h */, + 4DB7F1150E9BAC1500C66CE0 /* ArchiveFactory.cpp */, + 4DB7F1160E9BAC1500C66CE0 /* ArchiveFactory.h */, + 4DB7F1170E9BAC1500C66CE0 /* ArchiveResource.cpp */, + 4DB7F1180E9BAC1500C66CE0 /* ArchiveResource.h */, + 4DB7F1190E9BAC1500C66CE0 /* ArchiveResourceCollection.cpp */, + 4DB7F11A0E9BAC1500C66CE0 /* ArchiveResourceCollection.h */, 7B5E8D920D7F3C01001ECF42 /* Cache.cpp */, 7B5E8D930D7F3C01001ECF42 /* Cache.h */, 7B5E8D940D7F3C01001ECF42 /* CachedCSSStyleSheet.cpp */, @@ -4974,6 +5159,8 @@ 7B5E8D9C0D7F3C01001ECF42 /* CachedResourceClient.h */, 7B5E8D9D0D7F3C01001ECF42 /* CachedResourceClientWalker.cpp */, 7B5E8D9E0D7F3C01001ECF42 /* CachedResourceClientWalker.h */, + ABBD24840EB7BEA400BEC658 /* CachedResourceHandle.cpp */, + ABBD24850EB7BEA400BEC658 /* CachedResourceHandle.h */, 7B5E8D9F0D7F3C01001ECF42 /* CachedScript.cpp */, 7B5E8DA00D7F3C01001ECF42 /* CachedScript.h */, 7B5E8DA10D7F3C01001ECF42 /* CachedXBLDocument.cpp */, @@ -4985,6 +5172,7 @@ 7B5E8DA70D7F3C01001ECF42 /* DocLoader.h */, 7B5E8DA80D7F3C01001ECF42 /* DocumentLoader.cpp */, 7B5E8DA90D7F3C01001ECF42 /* DocumentLoader.h */, + AB0240640E9565F7006D59C8 /* DocumentLoaderMac.cpp */, AB50EA1C0E9AB12B00FDD61B /* EmptyClients.h */, 7B5E8DAA0D7F3C01001ECF42 /* FormState.cpp */, 7B5E8DAB0D7F3C01001ECF42 /* FormState.h */, @@ -4996,16 +5184,34 @@ 7B5E8DB20D7F3C01001ECF42 /* FTPDirectoryDocument.h */, 7B5E8DB30D7F3C01001ECF42 /* FTPDirectoryParser.cpp */, 7B5E8DB40D7F3C01001ECF42 /* FTPDirectoryParser.h */, + 7B0E595B0DB3D195007D4907 /* IconDatabase.h */, + 7B0E595C0DB3D195007D4907 /* IconDatabaseClient.h */, + 7B0E595D0DB3D195007D4907 /* IconDatabaseNone.cpp */, + 7B0E595E0DB3D195007D4907 /* IconLoader.cpp */, + 7B0E595F0DB3D195007D4907 /* IconLoader.h */, + 7B0E59600DB3D195007D4907 /* IconRecord.cpp */, + 7B0E59610DB3D195007D4907 /* IconRecord.h */, 7B5E8DC10D7F3C01001ECF42 /* ImageDocument.cpp */, 7B5E8DC20D7F3C01001ECF42 /* ImageDocument.h */, + ABBD24860EB7BEA400BEC658 /* ImageLoader.cpp */, + ABBD24870EB7BEA400BEC658 /* ImageLoader.h */, + B53CCC700E9BD0B300D51C9A /* LegacyWebArchive.cpp */, + B53CCC6F0E9BD0B300D51C9A /* LegacyWebArchive.h */, + 4DB7FA080E9BEDC900C66CE0 /* LegacyWebArchiveMac.mm */, 7B5E8DC30D7F3C01001ECF42 /* loader.cpp */, 7B5E8DC40D7F3C01001ECF42 /* loader.h */, + 7B5E8DC60D7F3C01001ECF42 /* LoaderNSURLExtras.h */, + 7B5E8DC70D7F3C01001ECF42 /* LoaderNSURLExtras.mm */, 7B5E8DCB0D7F3C01001ECF42 /* MainResourceLoader.cpp */, 7B5E8DCC0D7F3C01001ECF42 /* MainResourceLoader.h */, + ABBD24880EB7BEA400BEC658 /* MediaDocument.cpp */, + ABBD24890EB7BEA400BEC658 /* MediaDocument.h */, 7B5E8DCD0D7F3C01001ECF42 /* NavigationAction.cpp */, 7B5E8DCE0D7F3C01001ECF42 /* NavigationAction.h */, 7B5E8DCF0D7F3C01001ECF42 /* NetscapePlugInStreamLoader.cpp */, 7B5E8DD00D7F3C01001ECF42 /* NetscapePlugInStreamLoader.h */, + 7B0E59620DB3D195007D4907 /* PageURLRecord.cpp */, + 7B0E59630DB3D195007D4907 /* PageURLRecord.h */, 7B5E8DD10D7F3C01001ECF42 /* PluginDocument.cpp */, 7B5E8DD20D7F3C01001ECF42 /* PluginDocument.h */, 7B5E8DD30D7F3C01001ECF42 /* ProgressTracker.cpp */, @@ -5014,6 +5220,7 @@ 7B5E8DD70D7F3C01001ECF42 /* Request.h */, 7B5E8DD80D7F3C01001ECF42 /* ResourceLoader.cpp */, 7B5E8DD90D7F3C01001ECF42 /* ResourceLoader.h */, + 7B5E8DC80D7F3C01001ECF42 /* ResourceLoaderMac.mm */, 7B5E8DDA0D7F3C01001ECF42 /* SubresourceLoader.cpp */, 7B5E8DDB0D7F3C01001ECF42 /* SubresourceLoader.h */, 7B5E8DDC0D7F3C01001ECF42 /* SubresourceLoaderClient.h */, @@ -5031,10 +5238,6 @@ 7B5E8DC50D7F3C01001ECF42 /* mac */ = { isa = PBXGroup; children = ( - AB0240640E9565F7006D59C8 /* DocumentLoaderMac.cpp */, - 7B5E8DC60D7F3C01001ECF42 /* LoaderNSURLExtras.h */, - 7B5E8DC70D7F3C01001ECF42 /* LoaderNSURLExtras.mm */, - 7B5E8DC80D7F3C01001ECF42 /* ResourceLoaderMac.mm */, ); path = mac; sourceTree = "<group>"; @@ -5046,6 +5249,8 @@ 7B5E8EFC0D7F3C48001ECF42 /* mac */, 4DB7F1E80E9BAE2900C66CE0 /* AccessibilityImageMapLink.cpp */, 4DB7F1E90E9BAE2900C66CE0 /* AccessibilityImageMapLink.h */, + ABBD24EC0EB7C3C800BEC658 /* AccessibilityList.cpp */, + ABBD24ED0EB7C3C800BEC658 /* AccessibilityList.h */, 4DB7F1EA0E9BAE2900C66CE0 /* AccessibilityListBox.cpp */, 4DB7F1EB0E9BAE2900C66CE0 /* AccessibilityListBox.h */, 4DB7F1EC0E9BAE2900C66CE0 /* AccessibilityListBoxOption.cpp */, @@ -5113,6 +5318,9 @@ 4DB7F1FC0E9BAE2900C66CE0 /* PageGroup.h */, 7B5E8F130D7F3C49001ECF42 /* Screen.cpp */, 7B5E8F140D7F3C49001ECF42 /* Screen.h */, + 7B5E918C0D7F3CC2001ECF42 /* SecurityOrigin.cpp */, + 7B5E918D0D7F3CC2001ECF42 /* SecurityOrigin.h */, + 7B5E918E0D7F3CC2001ECF42 /* SecurityOriginHash.h */, 7B5E8F160D7F3C49001ECF42 /* Settings.cpp */, 7B5E8F170D7F3C49001ECF42 /* Settings.h */, 7B5E8F1C0D7F3C49001ECF42 /* WindowFeatures.cpp */, @@ -5144,7 +5352,6 @@ 7B5E8FA20D7F3CC1001ECF42 /* graphics */, 7B5E90D40D7F3CC2001ECF42 /* mac */, 7B5E91140D7F3CC2001ECF42 /* network */, - 7B5E915C0D7F3CC2001ECF42 /* posix */, 7B5E91A90D7F3CC2001ECF42 /* text */, 7B5E8F7D0D7F3CC1001ECF42 /* Arena.cpp */, 7B5E8F7E0D7F3CC1001ECF42 /* Arena.h */, @@ -5184,14 +5391,15 @@ 7B5E91590D7F3CC2001ECF42 /* PlatformWheelEvent.h */, 7B5E915A0D7F3CC2001ECF42 /* PopupMenu.h */, 7B5E915B0D7F3CC2001ECF42 /* PopupMenuClient.h */, - 7B5E91870D7F3CC2001ECF42 /* ScrollBar.cpp */, - 7B5E91880D7F3CC2001ECF42 /* ScrollBar.h */, + 7B5E91870D7F3CC2001ECF42 /* Scrollbar.cpp */, + 7B5E91880D7F3CC2001ECF42 /* Scrollbar.h */, + ABBD24C10EB7C17E00BEC658 /* ScrollbarClient.h */, + ABBD24C20EB7C17E00BEC658 /* ScrollbarTheme.h */, + ABBD24C30EB7C17E00BEC658 /* ScrollbarThemeComposite.cpp */, + ABBD24C40EB7C17E00BEC658 /* ScrollbarThemeComposite.h */, 7B5E91890D7F3CC2001ECF42 /* ScrollTypes.h */, 7B5E918A0D7F3CC2001ECF42 /* ScrollView.h */, 7B5E918B0D7F3CC2001ECF42 /* SearchPopupMenu.h */, - 7B5E918C0D7F3CC2001ECF42 /* SecurityOrigin.cpp */, - 7B5E918D0D7F3CC2001ECF42 /* SecurityOrigin.h */, - 7B5E918E0D7F3CC2001ECF42 /* SecurityOriginHash.h */, 7B5E91900D7F3CC2001ECF42 /* SharedBuffer.cpp */, 7B5E91910D7F3CC2001ECF42 /* SharedBuffer.h */, 7B5E91920D7F3CC2001ECF42 /* SharedTimer.h */, @@ -5298,6 +5506,8 @@ 7B5E903E0D7F3CC2001ECF42 /* StringTruncator.h */, 4DB7F0060E9BA3A100C66CE0 /* TextRun.h */, 4DB7F0070E9BA3A100C66CE0 /* UnitBezier.h */, + ABBD24B50EB7C0DC00BEC658 /* WidthIterator.cpp */, + ABBD24B60EB7C0DC00BEC658 /* WidthIterator.h */, ); path = graphics; sourceTree = "<group>"; @@ -5332,6 +5542,8 @@ children = ( 7B5E90040D7F3CC1001ECF42 /* ColorMac.h */, 7B5E90050D7F3CC1001ECF42 /* ColorMac.mm */, + ABBD24D50EB7C29F00BEC658 /* CoreTextController.cpp */, + ABBD24D60EB7C29F00BEC658 /* CoreTextController.h */, 7B5E90060D7F3CC1001ECF42 /* FloatPointMac.mm */, 7B5E90070D7F3CC1001ECF42 /* FloatRectMac.mm */, 7B5E90080D7F3CC1001ECF42 /* FloatSizeMac.mm */, @@ -5339,6 +5551,8 @@ 7B5E900A0D7F3CC1001ECF42 /* FontCustomPlatformData.cpp */, 7B5E900B0D7F3CC1001ECF42 /* FontCustomPlatformData.h */, 7B5E900C0D7F3CC1001ECF42 /* FontMac.mm */, + ABBD24D70EB7C29F00BEC658 /* FontMacATSUI.mm */, + ABBD24D80EB7C29F00BEC658 /* FontMacCoreText.cpp */, 7B5E900D0D7F3CC1001ECF42 /* FontPlatformData.h */, 7B5E900E0D7F3CC1001ECF42 /* FontPlatformDataMac.mm */, 7B5E900F0D7F3CC1001ECF42 /* GlyphPageTreeNodeMac.cpp */, @@ -5383,8 +5597,8 @@ 7B5E90ED0D7F3CC2001ECF42 /* PasteboardHelper.h */, 7B5E90EE0D7F3CC2001ECF42 /* PasteboardMac.mm */, 7B5E90EF0D7F3CC2001ECF42 /* PlatformMouseEventMac.mm */, - 7B5E90F10D7F3CC2001ECF42 /* PlatformScrollBar.h */, - 7B5E90F20D7F3CC2001ECF42 /* PlatformScrollBarMac.mm */, + 7B5E90F10D7F3CC2001ECF42 /* ScrollbarThemeMac.h */, + 7B5E90F20D7F3CC2001ECF42 /* ScrollbarThemeMac.mm */, 7B5E90F40D7F3CC2001ECF42 /* PopupMenuMac.mm */, E49E507C0E65D36300AD47F7 /* ScrollViewMac.mm */, 7B5E90F60D7F3CC2001ECF42 /* SearchPopupMenuMac.mm */, @@ -5468,14 +5682,6 @@ path = mac; sourceTree = "<group>"; }; - 7B5E915C0D7F3CC2001ECF42 /* posix */ = { - isa = PBXGroup; - children = ( - 7B5E915D0D7F3CC2001ECF42 /* FileSystemPOSIX.cpp */, - ); - path = posix; - sourceTree = "<group>"; - }; 7B5E91A90D7F3CC2001ECF42 /* text */ = { isa = PBXGroup; children = ( @@ -5578,6 +5784,14 @@ 7B5E95150D7F3E94001ECF42 /* rendering */ = { isa = PBXGroup; children = ( + ABBD24950EB7BFC500BEC658 /* Length.cpp */, + ABBD24960EB7BFC500BEC658 /* RenderScrollbar.cpp */, + ABBD24970EB7BFC500BEC658 /* RenderScrollbar.h */, + ABBD24980EB7BFC500BEC658 /* RenderScrollbarPart.cpp */, + ABBD24990EB7BFC500BEC658 /* RenderScrollbarPart.h */, + ABBD249A0EB7BFC500BEC658 /* RenderScrollbarTheme.cpp */, + ABBD249B0EB7BFC500BEC658 /* RenderScrollbarTheme.h */, + ABBD249C0EB7BFC500BEC658 /* RenderTheme.h */, B5C180A00E958E85006EAF87 /* style */, 7B5E95160D7F3E94001ECF42 /* AutoTableLayout.cpp */, 7B5E95170D7F3E94001ECF42 /* AutoTableLayout.h */, @@ -5723,7 +5937,6 @@ 7B5E959F0D7F3E95001ECF42 /* RenderTextFragment.cpp */, 7B5E95A00D7F3E95001ECF42 /* RenderTextFragment.h */, 7B5E95A10D7F3E95001ECF42 /* RenderTheme.cpp */, - 7B5E95A20D7F3E95001ECF42 /* RenderTheme.h */, 7B5E95A30D7F3E95001ECF42 /* RenderThemeMac.h */, 7B5E95AA0D7F3E95001ECF42 /* RenderTreeAsText.cpp */, 7B5E95AB0D7F3E95001ECF42 /* RenderTreeAsText.h */, @@ -5743,10 +5956,6 @@ 7B5E95B90D7F3E95001ECF42 /* SVGInlineFlowBox.h */, 7B5E95BA0D7F3E95001ECF42 /* SVGInlineTextBox.cpp */, 7B5E95BB0D7F3E95001ECF42 /* SVGInlineTextBox.h */, - 7B5E95BC0D7F3E95001ECF42 /* SVGRenderStyle.cpp */, - 7B5E95BD0D7F3E95001ECF42 /* SVGRenderStyle.h */, - 7B5E95BE0D7F3E95001ECF42 /* SVGRenderStyleDefs.cpp */, - 7B5E95BF0D7F3E95001ECF42 /* SVGRenderStyleDefs.h */, 7B5E95C00D7F3E95001ECF42 /* SVGRenderSupport.cpp */, 7B5E95C10D7F3E95001ECF42 /* SVGRenderSupport.h */, 7B5E95C20D7F3E95001ECF42 /* SVGRenderTreeAsText.cpp */, @@ -6381,6 +6590,8 @@ 4DB7EF780E9B9F0200C66CE0 /* V8CSSVariablesDeclaration.h */, 4DB7EF790E9B9F0200C66CE0 /* V8CSSVariablesRule.cpp */, 4DB7EF7A0E9B9F0200C66CE0 /* V8CSSVariablesRule.h */, + ABBD24000EB7AE0700BEC658 /* V8Database.cpp */, + ABBD24010EB7AE0700BEC658 /* V8Database.h */, 7B0091710DAFEFE300F72082 /* V8Document.cpp */, 7B0091720DAFEFE300F72082 /* V8Document.h */, 7B0091730DAFEFE300F72082 /* V8DocumentFragment.cpp */, @@ -6515,8 +6726,6 @@ 7B0091F40DAFEFE300F72082 /* V8HTMLScriptElement.h */, 7B0091F50DAFEFE300F72082 /* V8HTMLSelectElement.cpp */, 7B0091F60DAFEFE300F72082 /* V8HTMLSelectElement.h */, - 7B0091F70DAFEFE300F72082 /* V8HTMLSelectionInputElement.cpp */, - 7B0091F80DAFEFE300F72082 /* V8HTMLSelectionInputElement.h */, 7B0091FB0DAFEFE300F72082 /* V8HTMLStyleElement.cpp */, 7B0091FC0DAFEFE300F72082 /* V8HTMLStyleElement.h */, 7B0091FD0DAFEFE300F72082 /* V8HTMLTableCaptionElement.cpp */, @@ -6547,8 +6756,12 @@ 7B0092160DAFEFE400F72082 /* V8Location.h */, 7B0092190DAFEFE400F72082 /* V8MediaList.cpp */, 7B00921A0DAFEFE400F72082 /* V8MediaList.h */, + 4D329F8A0EB908A40041FB7E /* V8MessageChannel.cpp */, + 4D329F8B0EB908A40041FB7E /* V8MessageChannel.h */, 7B00921B0DAFEFE400F72082 /* V8MessageEvent.cpp */, 7B00921C0DAFEFE400F72082 /* V8MessageEvent.h */, + ABBD24020EB7AE0700BEC658 /* V8MessagePort.cpp */, + ABBD24030EB7AE0700BEC658 /* V8MessagePort.h */, 7B00921D0DAFEFE400F72082 /* V8MimeType.cpp */, 7B00921E0DAFEFE400F72082 /* V8MimeType.h */, 7B00921F0DAFEFE400F72082 /* V8MimeTypeArray.cpp */, @@ -6571,8 +6784,6 @@ 7B0092300DAFEFE400F72082 /* V8NodeList.h */, 7B0092310DAFEFE400F72082 /* V8Notation.cpp */, 7B0092320DAFEFE400F72082 /* V8Notation.h */, - 4DB7EF880E9B9F6300C66CE0 /* V8NSResolver.cpp */, - 4DB7EF890E9B9F6300C66CE0 /* V8NSResolver.h */, 7B0092330DAFEFE400F72082 /* V8OverflowEvent.cpp */, 7B0092340DAFEFE400F72082 /* V8OverflowEvent.h */, 7B0092350DAFEFE400F72082 /* V8Plugin.cpp */, @@ -6643,6 +6854,8 @@ 7B00927C0DAFEFE400F72082 /* V8SVGClipPathElement.h */, 7B00927D0DAFEFE400F72082 /* V8SVGColor.cpp */, 7B00927E0DAFEFE400F72082 /* V8SVGColor.h */, + ABBD24040EB7AE0700BEC658 /* V8SVGComponentTransferFunctionElement.cpp */, + ABBD24050EB7AE0700BEC658 /* V8SVGComponentTransferFunctionElement.h */, 7B0092810DAFEFE400F72082 /* V8SVGCursorElement.cpp */, 7B0092820DAFEFE400F72082 /* V8SVGCursorElement.h */, 7B0092830DAFEFE400F72082 /* V8SVGDefinitionSrcElement.cpp */, @@ -6663,6 +6876,52 @@ 7B0092920DAFEFE400F72082 /* V8SVGEllipseElement.h */, 7B0092930DAFEFE400F72082 /* V8SVGException.cpp */, 7B0092940DAFEFE400F72082 /* V8SVGException.h */, + ABBD24060EB7AE0700BEC658 /* V8SVGFEBlendElement.cpp */, + ABBD24070EB7AE0700BEC658 /* V8SVGFEBlendElement.h */, + ABBD24080EB7AE0700BEC658 /* V8SVGFEColorMatrixElement.cpp */, + ABBD24090EB7AE0700BEC658 /* V8SVGFEColorMatrixElement.h */, + ABBD240A0EB7AE0700BEC658 /* V8SVGFEComponentTransferElement.cpp */, + ABBD240B0EB7AE0700BEC658 /* V8SVGFEComponentTransferElement.h */, + ABBD240C0EB7AE0700BEC658 /* V8SVGFECompositeElement.cpp */, + ABBD240D0EB7AE0700BEC658 /* V8SVGFECompositeElement.h */, + ABBD240E0EB7AE0700BEC658 /* V8SVGFEDiffuseLightingElement.cpp */, + ABBD240F0EB7AE0700BEC658 /* V8SVGFEDiffuseLightingElement.h */, + ABBD24100EB7AE0700BEC658 /* V8SVGFEDisplacementMapElement.cpp */, + ABBD24110EB7AE0700BEC658 /* V8SVGFEDisplacementMapElement.h */, + ABBD24120EB7AE0700BEC658 /* V8SVGFEDistantLightElement.cpp */, + ABBD24130EB7AE0700BEC658 /* V8SVGFEDistantLightElement.h */, + ABBD24140EB7AE0700BEC658 /* V8SVGFEFloodElement.cpp */, + ABBD24150EB7AE0700BEC658 /* V8SVGFEFloodElement.h */, + ABBD24160EB7AE0700BEC658 /* V8SVGFEFuncAElement.cpp */, + ABBD24170EB7AE0700BEC658 /* V8SVGFEFuncAElement.h */, + ABBD24180EB7AE0700BEC658 /* V8SVGFEFuncBElement.cpp */, + ABBD24190EB7AE0700BEC658 /* V8SVGFEFuncBElement.h */, + ABBD241A0EB7AE0700BEC658 /* V8SVGFEFuncGElement.cpp */, + ABBD241B0EB7AE0700BEC658 /* V8SVGFEFuncGElement.h */, + ABBD241C0EB7AE0700BEC658 /* V8SVGFEFuncRElement.cpp */, + ABBD241D0EB7AE0700BEC658 /* V8SVGFEFuncRElement.h */, + ABBD241E0EB7AE0700BEC658 /* V8SVGFEGaussianBlurElement.cpp */, + ABBD241F0EB7AE0700BEC658 /* V8SVGFEGaussianBlurElement.h */, + ABBD24200EB7AE0700BEC658 /* V8SVGFEImageElement.cpp */, + ABBD24210EB7AE0700BEC658 /* V8SVGFEImageElement.h */, + ABBD24220EB7AE0700BEC658 /* V8SVGFEMergeElement.cpp */, + ABBD24230EB7AE0700BEC658 /* V8SVGFEMergeElement.h */, + ABBD24240EB7AE0700BEC658 /* V8SVGFEMergeNodeElement.cpp */, + ABBD24250EB7AE0700BEC658 /* V8SVGFEMergeNodeElement.h */, + ABBD24260EB7AE0700BEC658 /* V8SVGFEOffsetElement.cpp */, + ABBD24270EB7AE0700BEC658 /* V8SVGFEOffsetElement.h */, + ABBD24280EB7AE0700BEC658 /* V8SVGFEPointLightElement.cpp */, + ABBD24290EB7AE0700BEC658 /* V8SVGFEPointLightElement.h */, + ABBD242A0EB7AE0700BEC658 /* V8SVGFESpecularLightingElement.cpp */, + ABBD242B0EB7AE0700BEC658 /* V8SVGFESpecularLightingElement.h */, + ABBD242C0EB7AE0700BEC658 /* V8SVGFESpotLightElement.cpp */, + ABBD242D0EB7AE0700BEC658 /* V8SVGFESpotLightElement.h */, + ABBD242E0EB7AE0700BEC658 /* V8SVGFETileElement.cpp */, + ABBD242F0EB7AE0700BEC658 /* V8SVGFETileElement.h */, + ABBD24300EB7AE0700BEC658 /* V8SVGFETurbulenceElement.cpp */, + ABBD24310EB7AE0700BEC658 /* V8SVGFETurbulenceElement.h */, + ABBD24320EB7AE0700BEC658 /* V8SVGFilterElement.cpp */, + ABBD24330EB7AE0700BEC658 /* V8SVGFilterElement.h */, 7B0092C30DAFEFE400F72082 /* V8SVGFontElement.cpp */, 7B0092C40DAFEFE400F72082 /* V8SVGFontElement.h */, 7B0092C50DAFEFE400F72082 /* V8SVGFontFaceElement.cpp */, @@ -6829,6 +7088,8 @@ 7B0093660DAFEFE500F72082 /* V8UIEvent.h */, 7B0093670DAFEFE500F72082 /* V8UndetectableHTMLCollection.cpp */, 7B0093680DAFEFE500F72082 /* V8UndetectableHTMLCollection.h */, + ABBD24340EB7AE0700BEC658 /* V8VoidCallback.cpp */, + ABBD24350EB7AE0700BEC658 /* V8VoidCallback.h */, 4DB299BD0EA4DD1E007EA4CF /* V8WebKitAnimationEvent.cpp */, 4DB299BE0EA4DD1E007EA4CF /* V8WebKitAnimationEvent.h */, 4DB7F9A40E9BEB9B00C66CE0 /* V8WebKitCSSKeyframeRule.cpp */, @@ -6910,6 +7171,7 @@ AB8FE8A40E9BCD3E0051E7B4 /* GKURL.cpp */, E40FB28E0EAFF0BC006F380A /* PlatformScreenMac.mm */, B507F51B0E9BE98B00D16D77 /* PluginStubsMac.cpp */, + E473F6610EAE00D5006C2098 /* ScrollView.cpp */, E473F66D0EAE012D006C2098 /* SSLKeyGeneratorChromium.cpp */, E473F66F0EAE016A006C2098 /* SystemTimeChromium.cpp */, E473F6740EAE0199006C2098 /* TemporaryLinkStubs.cpp */, @@ -7179,9 +7441,6 @@ B53CCC6B0E9BD0A700D51C9A /* cf */ = { isa = PBXGroup; children = ( - B53CCC6F0E9BD0B300D51C9A /* LegacyWebArchive.h */, - B53CCC700E9BD0B300D51C9A /* LegacyWebArchive.cpp */, - 4DB7FA080E9BEDC900C66CE0 /* LegacyWebArchiveMac.mm */, ); name = cf; sourceTree = "<group>"; @@ -7189,17 +7448,85 @@ B5C180A00E958E85006EAF87 /* style */ = { isa = PBXGroup; children = ( + ABBD23AB0EB7AC1300BEC658 /* Animation.cpp */, + ABBD23AC0EB7AC1300BEC658 /* Animation.h */, + ABBD23AD0EB7AC1300BEC658 /* AnimationList.cpp */, + ABBD23AE0EB7AC1300BEC658 /* AnimationList.h */, + ABBD23AF0EB7AC1300BEC658 /* BindingURI.cpp */, + ABBD23B00EB7AC1300BEC658 /* BindingURI.h */, + ABBD23B10EB7AC1300BEC658 /* BorderData.h */, + ABBD23B20EB7AC1300BEC658 /* BorderValue.h */, + ABBD23B30EB7AC1300BEC658 /* CollapsedBorderValue.h */, + ABBD23B40EB7AC1300BEC658 /* ContentData.cpp */, + ABBD23B50EB7AC1300BEC658 /* ContentData.h */, + ABBD23B60EB7AC1300BEC658 /* CounterContent.h */, + ABBD23B70EB7AC1300BEC658 /* CounterDirectives.cpp */, + ABBD23B80EB7AC1300BEC658 /* CounterDirectives.h */, + ABBD23B90EB7AC1300BEC658 /* CursorData.h */, + ABBD23BA0EB7AC1300BEC658 /* CursorList.h */, + ABBD23BB0EB7AC1300BEC658 /* DataRef.h */, + ABBD23BC0EB7AC1300BEC658 /* FillLayer.cpp */, + ABBD23BD0EB7AC1300BEC658 /* FillLayer.h */, + ABBD23BE0EB7AC1300BEC658 /* IdentityTransformOperation.h */, + ABBD23BF0EB7AC1300BEC658 /* KeyframeList.cpp */, + ABBD23C00EB7AC1300BEC658 /* KeyframeList.h */, + ABBD23C10EB7AC1300BEC658 /* MatrixTransformOperation.cpp */, + ABBD23C20EB7AC1300BEC658 /* MatrixTransformOperation.h */, B51C76DA0E9BC9F400D9DFC4 /* NinePieceImage.cpp */, B51C76D90E9BC9F400D9DFC4 /* NinePieceImage.h */, + ABBD23D30EB7ACA600BEC658 /* OutlineValue.h */, B5C180A30E958EAA006EAF87 /* RenderStyle.cpp */, B5C1809E0E958E3D006EAF87 /* RenderStyle.h */, + ABBD23D40EB7ACA600BEC658 /* RenderStyleConstants.h */, + ABBD23D50EB7ACA600BEC658 /* RotateTransformOperation.cpp */, + ABBD23D60EB7ACA600BEC658 /* RotateTransformOperation.h */, + ABBD23D70EB7ACA600BEC658 /* ScaleTransformOperation.cpp */, + ABBD23D80EB7ACA600BEC658 /* ScaleTransformOperation.h */, + ABBD23D90EB7ACA600BEC658 /* ShadowData.cpp */, + ABBD23DA0EB7ACA600BEC658 /* ShadowData.h */, + ABBD23DB0EB7ACA600BEC658 /* SkewTransformOperation.cpp */, + ABBD23DC0EB7ACA600BEC658 /* SkewTransformOperation.h */, + ABBD23DD0EB7ACA600BEC658 /* StyleBackgroundData.cpp */, + ABBD23DE0EB7ACA600BEC658 /* StyleBackgroundData.h */, + ABBD23DF0EB7ACA600BEC658 /* StyleBoxData.cpp */, + ABBD23E00EB7ACA600BEC658 /* StyleBoxData.h */, 4DB7FA410E9BF0CA00C66CE0 /* StyleCachedImage.cpp */, 4DB7FA420E9BF0CA00C66CE0 /* StyleCachedImage.h */, + ABBD23E10EB7ACA600BEC658 /* StyleDashboardRegion.h */, + ABBD23E20EB7ACA600BEC658 /* StyleFlexibleBoxData.cpp */, + ABBD23E30EB7ACA600BEC658 /* StyleFlexibleBoxData.h */, 4DB7FA430E9BF0CA00C66CE0 /* StyleGeneratedImage.cpp */, 4DB7FA440E9BF0CA00C66CE0 /* StyleGeneratedImage.h */, 4DB7FA450E9BF0CA00C66CE0 /* StyleImage.h */, - ); - name = style; + ABBD23810EB7A8D200BEC658 /* StyleInheritedData.cpp */, + ABBD23830EB7A8EC00BEC658 /* StyleInheritedData.h */, + ABBD23930EB7A95B00BEC658 /* StyleMarqueeData.cpp */, + ABBD23940EB7A95B00BEC658 /* StyleMarqueeData.h */, + ABBD23950EB7A95B00BEC658 /* StyleMultiColData.cpp */, + ABBD23960EB7A95B00BEC658 /* StyleMultiColData.h */, + ABBD23970EB7A95B00BEC658 /* StyleRareInheritedData.cpp */, + ABBD23980EB7A95B00BEC658 /* StyleRareInheritedData.h */, + ABBD23990EB7A95B00BEC658 /* StyleRareNonInheritedData.cpp */, + ABBD239A0EB7A95B00BEC658 /* StyleRareNonInheritedData.h */, + ABBD239B0EB7A95B00BEC658 /* StyleReflection.h */, + ABBD239C0EB7A95B00BEC658 /* StyleSurroundData.cpp */, + ABBD239D0EB7A95B00BEC658 /* StyleSurroundData.h */, + ABBD239E0EB7A95B00BEC658 /* StyleTransformData.cpp */, + ABBD239F0EB7A95B00BEC658 /* StyleTransformData.h */, + ABBD23A00EB7A95B00BEC658 /* StyleVisualData.cpp */, + ABBD23A10EB7A95B00BEC658 /* StyleVisualData.h */, + 7B5E95BC0D7F3E95001ECF42 /* SVGRenderStyle.cpp */, + 7B5E95BD0D7F3E95001ECF42 /* SVGRenderStyle.h */, + 7B5E95BE0D7F3E95001ECF42 /* SVGRenderStyleDefs.cpp */, + 7B5E95BF0D7F3E95001ECF42 /* SVGRenderStyleDefs.h */, + ABBD23E40EB7ACA600BEC658 /* TimingFunction.h */, + ABBD23E50EB7ACA600BEC658 /* TransformOperation.h */, + ABBD23E60EB7ACA600BEC658 /* TransformOperations.cpp */, + ABBD23E70EB7ACA600BEC658 /* TransformOperations.h */, + ABBD23E80EB7ACA600BEC658 /* TranslateTransformOperation.cpp */, + ABBD23E90EB7ACA600BEC658 /* TranslateTransformOperation.h */, + ); + path = style; sourceTree = "<group>"; }; E450EF7B0E65F4E700107F73 /* rendering */ = { @@ -7229,8 +7556,8 @@ E473F63A0EADFF8E006C2098 /* DragDataRef.h */, E473F63B0EADFF8E006C2098 /* DragImageChromium.cpp */, E473F63E0EADFFB5006C2098 /* FileChooserChromium.cpp */, - B58533A40EB6543C007104C1 /* FileChooserChromiumMac.mm */, - B58533B90EB65626007104C1 /* FileChooserChromiumMac.h */, + B556C33C0EB9035B00418C57 /* FileSystemChromium.cpp */, + B556C24E0EB8FCD800418C57 /* FileSystemChromiumMac.mm */, E473F6400EADFFC6006C2098 /* FileSystemPosix.cpp */, E473F6410EADFFC6006C2098 /* FramelessScrollView.cpp */, E473F6420EADFFC6006C2098 /* FramelessScrollView.h */, @@ -7239,20 +7566,15 @@ E473F6500EAE002F006C2098 /* PlatformKeyboardEventChromium.cpp */, E473F6510EAE002F006C2098 /* PasteboardPrivate.h */, E473F6520EAE002F006C2098 /* PlatformCursor.h */, - E473F6580EAE005C006C2098 /* PlatformScrollBar.h */, - E473F6590EAE005C006C2098 /* PlatformScrollBarChromium.cpp */, E473F65D0EAE009A006C2098 /* PlatformWidget.h */, E473F65E0EAE00A6006C2098 /* PopupMenuChromium.cpp */, E473F65F0EAE00A6006C2098 /* PopupMenuPrivate.h */, - E473F6610EAE00D5006C2098 /* ScrollViewChromium.cpp */, E473F6630EAE00E4006C2098 /* SearchPopupMenuChromium.cpp */, E473F6650EAE00F4006C2098 /* SharedTimerChromium.cpp */, E473F6670EAE0109006C2098 /* SoundPosix.cpp */, E473F67F0EAE01BE006C2098 /* WidgetChromium.cpp */, - E473F6800EAE01BE006C2098 /* WidgetClientChromium.h */, ); - name = chromium; - path = ..; + path = chromium; sourceTree = "<group>"; }; E4A970880E3614F200E8EF3B /* page */ = { @@ -7576,7 +7898,6 @@ 7B0091350DAFEFBE00F72082 /* CSSGrammar.cpp in Sources */, 7B0091370DAFEFBE00F72082 /* HTMLNames.cpp in Sources */, 7B00962A0DAFF1D000F72082 /* InspectorController.cpp in Sources */, - 4DB7F5620E9BD69A00C66CE0 /* JSNSResolver.cpp in Sources */, 7B0095F10DAFF0DD00F72082 /* JSXPathNSResolver.cpp in Sources */, 7B0096220DAFF19C00F72082 /* Location.cpp in Sources */, 7B0095F30DAFF0DD00F72082 /* np_v8object.cpp in Sources */, @@ -7687,7 +8008,6 @@ 7B0094330DAFEFE600F72082 /* V8HTMLQuoteElement.cpp in Sources */, 7B0094350DAFEFE600F72082 /* V8HTMLScriptElement.cpp in Sources */, 7B0094370DAFEFE600F72082 /* V8HTMLSelectElement.cpp in Sources */, - 7B0094390DAFEFE600F72082 /* V8HTMLSelectionInputElement.cpp in Sources */, 7B00943D0DAFEFE600F72082 /* V8HTMLStyleElement.cpp in Sources */, 7B00943F0DAFEFE600F72082 /* V8HTMLTableCaptionElement.cpp in Sources */, 7B0094410DAFEFE600F72082 /* V8HTMLTableCellElement.cpp in Sources */, @@ -7703,7 +8023,10 @@ 7B0094550DAFEFE600F72082 /* V8KeyboardEvent.cpp in Sources */, 7B0094570DAFEFE600F72082 /* V8Location.cpp in Sources */, 7B00945B0DAFEFE600F72082 /* V8MediaList.cpp in Sources */, + 4D329F8C0EB908A40041FB7E /* V8MessageChannel.cpp in Sources */, 7B00945D0DAFEFE600F72082 /* V8MessageEvent.cpp in Sources */, + ABBD24370EB7AE0700BEC658 /* V8MessagePort.cpp in Sources */, + ABBD24790EB7B31B00BEC658 /* V8MessagePortCustom.cpp in Sources */, 7B00945F0DAFEFE600F72082 /* V8MimeType.cpp in Sources */, 7B0094610DAFEFE600F72082 /* V8MimeTypeArray.cpp in Sources */, 7B0094630DAFEFE600F72082 /* V8MouseEvent.cpp in Sources */, @@ -7715,7 +8038,6 @@ 7B00946F0DAFEFE600F72082 /* V8NodeIterator.cpp in Sources */, 7B0094710DAFEFE600F72082 /* V8NodeList.cpp in Sources */, 7B0094730DAFEFE600F72082 /* V8Notation.cpp in Sources */, - 4DB7EF960E9B9F6300C66CE0 /* V8NSResolver.cpp in Sources */, 7B0094750DAFEFE600F72082 /* V8OverflowEvent.cpp in Sources */, 7B0094770DAFEFE600F72082 /* V8Plugin.cpp in Sources */, 7B0094790DAFEFE600F72082 /* V8PluginArray.cpp in Sources */, @@ -8026,7 +8348,6 @@ E45624BF0E268E87005E4685 /* FileChooser.cpp in Sources */, 4DB7F05B0E9BA86A00C66CE0 /* FileList.cpp in Sources */, E45624B50E268E87005E4685 /* FileSystemCF.cpp in Sources */, - E45625280E268E87005E4685 /* FileSystemPOSIX.cpp in Sources */, E456254F0E268E87005E4685 /* FixedTableLayout.cpp in Sources */, E45624C30E268E87005E4685 /* FloatPoint.cpp in Sources */, E45624C40E268E87005E4685 /* FloatPoint3D.cpp in Sources */, @@ -8331,7 +8652,7 @@ E45625930E268E87005E4685 /* RootInlineBox.cpp in Sources */, E45624B00E268E87005E4685 /* Screen.cpp in Sources */, 4DB7F1030E9BAB5600C66CE0 /* ScriptElement.cpp in Sources */, - E456252A0E268E87005E4685 /* ScrollBar.cpp in Sources */, + E456252A0E268E87005E4685 /* Scrollbar.cpp in Sources */, E456252B0E268E87005E4685 /* SecurityOrigin.cpp in Sources */, E45624E70E268E87005E4685 /* SegmentedFontData.cpp in Sources */, E456253A0E268E87005E4685 /* SegmentedString.cpp in Sources */, @@ -8637,6 +8958,49 @@ E456266F0E268E87005E4685 /* XSLTExtensions.cpp in Sources */, E45626700E268E87005E4685 /* XSLTProcessor.cpp in Sources */, E45626710E268E87005E4685 /* XSLTUnicodeSort.cpp in Sources */, + ABBD23820EB7A8D200BEC658 /* StyleInheritedData.cpp in Sources */, + ABBD23A20EB7A95B00BEC658 /* StyleMarqueeData.cpp in Sources */, + ABBD23A30EB7A95B00BEC658 /* StyleMultiColData.cpp in Sources */, + ABBD23A40EB7A95B00BEC658 /* StyleRareInheritedData.cpp in Sources */, + ABBD23A50EB7A95B00BEC658 /* StyleRareNonInheritedData.cpp in Sources */, + ABBD23A60EB7A95B00BEC658 /* StyleSurroundData.cpp in Sources */, + ABBD23A70EB7A95B00BEC658 /* StyleTransformData.cpp in Sources */, + ABBD23A80EB7A95B00BEC658 /* StyleVisualData.cpp in Sources */, + ABBD23C30EB7AC1300BEC658 /* Animation.cpp in Sources */, + ABBD23C40EB7AC1300BEC658 /* AnimationList.cpp in Sources */, + ABBD23C50EB7AC1300BEC658 /* BindingURI.cpp in Sources */, + ABBD23C60EB7AC1300BEC658 /* ContentData.cpp in Sources */, + ABBD23C70EB7AC1300BEC658 /* CounterDirectives.cpp in Sources */, + ABBD23C80EB7AC1300BEC658 /* FillLayer.cpp in Sources */, + ABBD23C90EB7AC1300BEC658 /* KeyframeList.cpp in Sources */, + ABBD23CA0EB7AC1300BEC658 /* MatrixTransformOperation.cpp in Sources */, + ABBD23EA0EB7ACA600BEC658 /* RotateTransformOperation.cpp in Sources */, + ABBD23EB0EB7ACA600BEC658 /* ScaleTransformOperation.cpp in Sources */, + ABBD23EC0EB7ACA600BEC658 /* ShadowData.cpp in Sources */, + ABBD23ED0EB7ACA600BEC658 /* SkewTransformOperation.cpp in Sources */, + ABBD23EE0EB7ACA600BEC658 /* StyleBackgroundData.cpp in Sources */, + ABBD23EF0EB7ACA600BEC658 /* StyleBoxData.cpp in Sources */, + ABBD23F00EB7ACA600BEC658 /* StyleFlexibleBoxData.cpp in Sources */, + ABBD23F10EB7ACA600BEC658 /* TransformOperations.cpp in Sources */, + ABBD23F20EB7ACA600BEC658 /* TranslateTransformOperation.cpp in Sources */, + ABBD246D0EB7B1DA00BEC658 /* MessageChannel.cpp in Sources */, + ABBD246E0EB7B1DA00BEC658 /* MessagePort.cpp in Sources */, + ABBD246F0EB7B1DA00BEC658 /* XMLTokenizerLibxml2.cpp in Sources */, + ABBD24820EB7BCBB00BEC658 /* CSSNthSelector.cpp in Sources */, + ABBD248A0EB7BEA400BEC658 /* CachedResourceHandle.cpp in Sources */, + ABBD248B0EB7BEA400BEC658 /* ImageLoader.cpp in Sources */, + ABBD248C0EB7BEA400BEC658 /* MediaDocument.cpp in Sources */, + ABBD249F0EB7BFC500BEC658 /* Length.cpp in Sources */, + ABBD24A00EB7BFC500BEC658 /* RenderScrollbar.cpp in Sources */, + ABBD24A10EB7BFC500BEC658 /* RenderScrollbarPart.cpp in Sources */, + ABBD24A20EB7BFC500BEC658 /* RenderScrollbarTheme.cpp in Sources */, + ABBD24B70EB7C0DC00BEC658 /* WidthIterator.cpp in Sources */, + ABBD24C60EB7C17E00BEC658 /* ScrollbarThemeComposite.cpp in Sources */, + ABBD24D90EB7C29F00BEC658 /* CoreTextController.cpp in Sources */, + ABBD24DA0EB7C29F00BEC658 /* FontMacATSUI.mm in Sources */, + ABBD24DB0EB7C29F00BEC658 /* FontMacCoreText.cpp in Sources */, + ABBD24E80EB7C35500BEC658 /* ScrollbarThemeMac.mm in Sources */, + ABBD24EE0EB7C3C800BEC658 /* AccessibilityList.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -8704,7 +9068,8 @@ E473F6860EAE01F5006C2098 /* EventHandlerChromium.cpp in Sources */, 4D11C4E10E9ABEA900EF7617 /* ExceptionContextV8.cpp in Sources */, E473F63F0EADFFB5006C2098 /* FileChooserChromium.cpp in Sources */, - B58533D80EB658D7007104C1 /* FileChooserChromiumMac.mm in Sources */, + B556C33D0EB9035B00418C57 /* FileSystemChromium.cpp in Sources */, + B556C24F0EB8FCD800418C57 /* FileSystemChromiumMac.mm in Sources */, E473F6430EADFFC6006C2098 /* FileSystemPosix.cpp in Sources */, 4DB044260EB161E800A5633C /* FontCacheMacPending.cpp in Sources */, E473F6880EAE021B006C2098 /* FrameChromium.cpp in Sources */, @@ -8718,7 +9083,6 @@ 4DB044430EB1639E00A5633C /* ImageMac.cpp in Sources */, E4E4C94A0E797648009A687C /* ImageSourceCG.cpp in Sources */, 7B2B0A630E3143EC00D4C6B7 /* JPEGImageDecoder.cpp in Sources */, - 4DB7F55C0E9BD66300C66CE0 /* JSNSResolver.cpp in Sources */, E473F64B0EADFFF8006C2098 /* Language.cpp in Sources */, E473F64E0EAE0005006C2098 /* MimeTypeRegistryChromium.cpp in Sources */, E48A07280E3F95A000172919 /* NativeImageSkia.cpp in Sources */, @@ -8726,7 +9090,6 @@ E4E4C8560E7832E2009A687C /* PlatformContextSkia.cpp in Sources */, E473F6530EAE002F006C2098 /* PlatformKeyboardEventChromium.cpp in Sources */, E40FB28F0EAFF0BC006F380A /* PlatformScreenMac.mm in Sources */, - E473F65A0EAE005C006C2098 /* PlatformScrollBarChromium.cpp in Sources */, B507F51C0E9BE98B00D16D77 /* PluginStubsMac.cpp in Sources */, 7B2B0A650E3143EC00D4C6B7 /* PNGImageDecoder.cpp in Sources */, E473F6600EAE00A6006C2098 /* PopupMenuChromium.cpp in Sources */, @@ -8734,7 +9097,7 @@ E45627ED0E2694B8005E4685 /* RGBColor.cpp in Sources */, E40063610EA907510055B38E /* ScriptCallContextV8.cpp in Sources */, E40060DB0EA69E0B0055B38E /* ScriptController.cpp in Sources */, - E473F6620EAE00D5006C2098 /* ScrollViewChromium.cpp in Sources */, + E473F6620EAE00D5006C2098 /* ScrollView.cpp in Sources */, E473F6640EAE00E4006C2098 /* SearchPopupMenuChromium.cpp in Sources */, E473F6660EAE00F4006C2098 /* SharedTimerChromium.cpp in Sources */, E4E4C88F0E783E49009A687C /* SkGraphicsContextMac.cpp in Sources */, @@ -8983,6 +9346,7 @@ "$(DIR_WEBCORE)/editing/mac", "$(DIR_WEBCORE)/history", "$(DIR_WEBCORE)/history/mac", + "$(DIR_WEBCORE)/inspector", "$(DIR_WEBCORE)/html", "$(DIR_WEBCORE)/loader", "$(DIR_WEBCORE)/loader/appcache", @@ -9107,6 +9471,7 @@ "$(DIR_WEBCORE)/editing/mac", "$(DIR_WEBCORE)/history", "$(DIR_WEBCORE)/history/mac", + "$(DIR_WEBCORE)/inspector", "$(DIR_WEBCORE)/html", "$(DIR_WEBCORE)/loader", "$(DIR_WEBCORE)/loader/appcache", |