WebCore:
[WebKit-https.git] / WebCore / ChangeLog
index 85ca246..8393014 100644 (file)
@@ -1,3 +1,633 @@
+2008-04-29  David Hyatt  <hyatt@apple.com>
+
+        Implement the new box-reflect property in CSS.  This property enables real-time reflections on
+        objects (yes you can reflect <video>!).
+
+        Reviewed by Dan Bernstein
+
+        Test cases added in fast/reflections/
+
+        * GNUmakefile.am:
+        * WebCore.pro:
+        * WebCore.xcodeproj/project.pbxproj:
+        * WebCoreSources.bkl:
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::):
+        (WebCore::valueForReflection):
+        (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+        * css/CSSParser.cpp:
+        (WebCore::CSSParser::parseValue):
+        (WebCore::CSSParser::parseReflect):
+        (WebCore::BorderImageParseContext::commitBorderImage):
+        (WebCore::CSSParser::parseBorderImage):
+        (WebCore::parseGradientColorStop):
+        (WebCore::CSSParser::parseTransform):
+        * css/CSSParser.h:
+        * css/CSSPropertyNames.in:
+        * css/CSSReflectValue.cpp: Added.
+        (WebCore::CSSReflectValue::cssText):
+        * css/CSSReflectValue.h: Added.
+        (WebCore::):
+        (WebCore::CSSReflectValue::CSSReflectValue):
+        (WebCore::CSSReflectValue::direction):
+        (WebCore::CSSReflectValue::offset):
+        (WebCore::CSSReflectValue::mask):
+        (WebCore::CSSReflectValue::setDirection):
+        (WebCore::CSSReflectValue::setOffset):
+        (WebCore::CSSReflectValue::setMask):
+        * css/CSSStyleSelector.cpp:
+        (WebCore::CSSStyleSelector::adjustRenderStyle):
+        (WebCore::CSSStyleSelector::applyProperty):
+        (WebCore::CSSStyleSelector::mapNinePieceImage):
+        * css/CSSStyleSelector.h:
+        * rendering/InlineFlowBox.cpp:
+        (WebCore::InlineFlowBox::placeBoxesVertically):
+        (WebCore::InlineFlowBox::paintMask):
+        * rendering/Length.h:
+        (WebCore::Length::calcFloatValue):
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::overflowHeight):
+        (WebCore::RenderBlock::overflowWidth):
+        (WebCore::RenderBlock::overflowLeft):
+        (WebCore::RenderBlock::overflowTop):
+        (WebCore::RenderBlock::overflowRect):
+        (WebCore::RenderBlock::layoutBlock):
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::setStyle):
+        (WebCore::RenderBox::paintMask):
+        (WebCore::RenderBox::imageChanged):
+        (WebCore::RenderBox::computeAbsoluteRepaintRect):
+        * rendering/RenderFlexibleBox.cpp:
+        (WebCore::RenderFlexibleBox::layoutBlock):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::RenderLayer):
+        (WebCore::RenderLayer::~RenderLayer):
+        (WebCore::RenderLayer::updateLayerPositions):
+        (WebCore::RenderLayer::enclosingPositionedAncestor):
+        (WebCore::RenderLayer::enclosingTransformedAncestor):
+        (WebCore::RenderLayer::isTransparent):
+        (WebCore::transparencyClipBox):
+        (WebCore::RenderLayer::operator delete):
+        (WebCore::RenderLayer::destroy):
+        (WebCore::RenderLayer::removeOnlyThisLayer):
+        (WebCore::RenderLayer::insertOnlyThisLayer):
+        (WebCore::RenderLayer::paintLayer):
+        (WebCore::RenderLayer::updateZOrderLists):
+        (WebCore::RenderLayer::updateOverflowList):
+        (WebCore::RenderLayer::collectLayers):
+        (WebCore::RenderLayer::shouldBeOverflowOnly):
+        (WebCore::RenderLayer::styleChanged):
+        (WebCore::RenderLayer::reflectionLayer):
+        (WebCore::RenderLayer::createReflection):
+        (WebCore::RenderLayer::updateReflectionStyle):
+        * rendering/RenderLayer.h:
+        (WebCore::RenderLayer::hasReflection):
+        (WebCore::RenderLayer::reflection):
+        (WebCore::RenderLayer::paintingInsideReflection):
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::RenderObject):
+        (WebCore::RenderObject::requiresLayer):
+        (WebCore::RenderObject::setStyle):
+        (WebCore::RenderObject::updateImage):
+        (WebCore::RenderObject::reflectionBox):
+        (WebCore::RenderObject::reflectionOffset):
+        * rendering/RenderObject.h:
+        (WebCore::RenderObject::hasTransform):
+        (WebCore::RenderObject::setHasReflection):
+        (WebCore::RenderObject::hasReflection):
+        * rendering/RenderReplica.cpp: Added.
+        (WebCore::RenderReplica::RenderReplica):
+        (WebCore::RenderReplica::~RenderReplica):
+        (WebCore::RenderReplica::layout):
+        (WebCore::RenderReplica::calcPrefWidths):
+        (WebCore::RenderReplica::paint):
+        * rendering/RenderReplica.h: Added.
+        (WebCore::RenderReplica::renderName):
+        (WebCore::RenderReplica::requiresLayer):
+        * rendering/RenderStyle.cpp:
+        (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
+        (WebCore::StyleRareNonInheritedData::operator==):
+        (WebCore::StyleRareNonInheritedData::reflectionDataEquivalent):
+        (WebCore::RenderStyle::diff):
+        (WebCore::RenderStyle::applyTransform):
+        * rendering/RenderStyle.h:
+        (WebCore::TranslateTransformOperation::apply):
+        (WebCore::StyleReflection::StyleReflection):
+        (WebCore::StyleReflection::operator==):
+        (WebCore::StyleReflection::operator!=):
+        (WebCore::StyleReflection::direction):
+        (WebCore::StyleReflection::offset):
+        (WebCore::StyleReflection::mask):
+        (WebCore::StyleReflection::setDirection):
+        (WebCore::StyleReflection::setOffset):
+        (WebCore::StyleReflection::setMask):
+        (WebCore::RenderStyle::boxReflect):
+        (WebCore::RenderStyle::setBoxReflect):
+        (WebCore::RenderStyle::initialBoxReflect):
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::layout):
+        (WebCore::RenderTable::paintMask):
+        * rendering/RenderTableCell.cpp:
+        (WebCore::RenderTableCell::requiresLayer):
+        (WebCore::RenderTableCell::paintMask):
+
+2008-04-29  Beth Dakin  <bdakin@apple.com>
+
+        Reviewed by Alice.
+
+        Initial implementation of the following ARIA roles: button, 
+        checkbox, heading, link, radio, textbox.
+
+        * html/HTMLAttributeNames.in: Add 'role' to list of attributes.
+
+        * page/AccessibilityObject.cpp:
+         When an ARIA role is set, the role overrides whatever the actual 
+element is when the element reports itself to the screen reader. So all of these isBlah functions report based on their roleValue now.
+        (WebCore::AccessibilityObject::isWebArea):
+        (WebCore::AccessibilityObject::isImageButton):
+        (WebCore::AccessibilityObject::isAnchor):
+        (WebCore::AccessibilityObject::isTextControl):
+        (WebCore::AccessibilityObject::isImage):
+        (WebCore::AccessibilityObject::isAttachment):
+        (WebCore::AccessibilityObject::isPasswordField):
+        (WebCore::AccessibilityObject::isCheckboxOrRadio):
+        (WebCore::AccessibilityObject::isHeading):
+        (WebCore::AccessibilityObject::isLink):
+
+        Check for ARIA information:
+        (WebCore::AccessibilityObject::headingLevel):
+        (WebCore::AccessibilityObject::anchorElement):
+        (WebCore::AccessibilityObject::actionElement):
+        (WebCore::AccessibilityObject::hasIntValue):
+        (WebCore::AccessibilityObject::intValue):
+        (WebCore::AccessibilityObject::stringValue):
+        (WebCore::AccessibilityObject::title):
+        (WebCore::AccessibilityObject::accessibilityIsIgnored):
+        (WebCore::AccessibilityObject::roleValue):
+
+        There are a few places in the code where it is important to identify the difference between ARIA and non-ARIA.
+        (WebCore::AccessibilityObject::isNativeImage):
+        (WebCore::AccessibilityObject::isNativeTextControl):
+        (WebCore::isARIAInput):
+        (WebCore::isARIAControl):
+
+        A lot of spots in the code used to cast to RenderTextControl to get information about the text inside the element. Now that non-native text controls can run this code with the ARIA role 'textbox', it needs to be as general as possible. 
+        (WebCore::AccessibilityObject::text): Still calls into 
+        RenderTextControl's text() for native text controls. Uses Element's 
+        innerText() for ARIA textboxes.
+        (WebCore::AccessibilityObject::textLength): Call 
+        AccessibilityObject's text() instead of RenderTextControl's.
+        (WebCore::AccessibilityObject::ariaSelectedTextDOMRange):
+        (WebCore::AccessibilityObject::selectedText):
+        (WebCore::AccessibilityObject::selectedTextRange):
+        (WebCore::AccessibilityObject::selectionStart):
+        (WebCore::AccessibilityObject::selectionEnd):
+        (WebCore::AccessibilityObject::setSelectedTextRange):
+        (WebCore::AccessibilityObject::setValue):
+        (WebCore::AccessibilityObject::visiblePositionForIndex):
+        (WebCore::AccessibilityObject::indexForVisiblePosition):
+        (WebCore::AccessibilityObject::textMarkerRangeForRange):
+        (WebCore::AccessibilityObject::textMarkerForIndex):
+        (WebCore::AccessibilityObject::indexForTextMarker):
+        (WebCore::AccessibilityObject::doAXRangeForLine):
+        (WebCore::AccessibilityObject::doAXRangeForIndex):
+        (WebCore::AccessibilityObject::doAXStringForRange):
+        (WebCore::AccessibilityObject::doAXBoundsForRange):
+        
+        Reports ARIA role. If the role is not valid or simply not set, return UnknownRole.
+        (WebCore::AccessibilityObject::ariaRoleAttribute):
+        
+        Added several new functions. Most of them existed before but were static, or have been added to reduce the dependency on RenderTextControl for a lot of the text functionality.
+        * page/AccessibilityObject.h:
+
+        Eliminated dependency on RenderTextControl cast. The information is generalized now and available directly through the AccessibilityObject.
+        * page/mac/AccessibilityObjectWrapper.mm:
+        (-[AccessibilityObjectWrapper accessibilityAttributeValue:]):
+        (-[AccessibilityObjectWrapper doAXAttributedStringForRange:]):
+
+2008-04-29  Timothy Hatcher  <timothy@apple.com>
+
+        Make the exceptions that the InspectorController catches log the
+        original file and line number, if present on the exception object.
+
+        Reviewed by Adam Roben.
+
+        * page/InspectorController.cpp:
+        (WebCore::InspectorController::callFunction): Pass the context to HANDLE_EXCEPTION.
+        (WebCore::InspectorController::~InspectorController): Ditto.
+        (WebCore::InspectorController::scriptObjectReady): Ditto.
+        (WebCore::InspectorController::addScriptResource): Ditto.
+        (WebCore::InspectorController::updateScriptResourceRequest): Ditto.
+        (WebCore::InspectorController::updateScriptResourceResponse): Ditto.
+        (WebCore::InspectorController::updateScriptResource): Ditto.
+        (WebCore::InspectorController::addDatabaseScriptResource): Ditto.
+        (WebCore::InspectorController::addScriptConsoleMessage): Ditto.
+        (WebCore::InspectorController::handleException): Take a context. Pull the line
+        and sourceURL properties off the exception if it is an object.
+        * page/InspectorController.h: Change handleException to take a context.
+
+2008-04-29  Timothy Hatcher  <timothy@apple.com>
+
+        Fixes a regression where the Page's debugger would not be reattached
+        when a new JSDOMWindow is created.
+
+        Reviewed by Sam Weinig.
+
+        * bindings/js/kjs_proxy.cpp:
+        (WebCore::KJSProxy::clear): Call attachDebugger after creating the JSDOMWindow.
+        * history/CachedPage.cpp:
+        (WebCore::CachedPage::restore): For the case where the CachedPage doesn't
+        contain a window, reattach the debugger to the new JSDOMWindow by calling
+        proxy->attachDebugger. Also restore the setPageGroupIdentifier.
+
+2008-04-29  Anatoli Papirovski  <apapirovski@mac.com>
+
+        Reviewed by Darin Adler.
+
+        Fix for https://bugs.webkit.org/show_bug.cgi?id=18355
+        Fixed RGB and RGBA parsing to ignore the declaration when the value is not
+        "either three integer values or three percentage values."
+
+        * css/CSSParser.cpp:
+        (WebCore::CSSParser::parseColorParameters):
+
+2008-04-29  Holger Hans Peter Freyther  <zecke@selfish.org>
+
+        Reviewed by Simon.
+
+        Fix crash when setHtml gets called from slots connected to QWebPage::unsupportedContent
+
+        Ben found this crash in the demo browser.
+
+        In void MainResourceLoader::continueAfterContentPolicy(PolicyAction contentPolicy,
+
+        case PolicyDownload:
+        frameLoader()->client()->download(m_handle.get(), request(), m_handle.get()->request(), r);
+        receivedError(interruptionForPolicyChangeError());
+
+        We are in a policy check, the download() call will call setHtml, which will start loading
+        the data into a frame. The loading will cancel all policy checks and call ResourceLoader::releaseResources
+        which will set m_frame to 0. Then we return and invoke interruptionForPolicyChangeError() which
+        will use the m_frame->loader() but it is gone. Do not call into receivedError and
+        interruptionForPolicyChangeError if we are gone anyway...
+
+        * loader/MainResourceLoader.cpp:
+        (WebCore::MainResourceLoader::continueAfterContentPolicy):
+
+2008-04-29  Holger Hans Peter Freyther  <zecke@selfish.org>
+
+        Reviewed by Simon.
+
+        Rely on auto-boxing of C++ for the QCursor c'tor
+
+        * platform/qt/CursorQt.cpp:
+
+2008-04-29  Holger Hans Peter Freyther  <zecke@selfish.org>
+
+        Reviewed by Simon.
+
+        Add the remaining cursors that defaulted to PointerCursor
+
+        * Resources/WebKitResources.qrc:
+        * platform/qt/CursorQt.cpp:
+        (WebCore::verticalTextCursor):
+        (WebCore::cellCursor):
+        (WebCore::contextMenuCursor):
+        (WebCore::copyCursor):
+        (WebCore::progressCursor):
+        (WebCore::aliasCursor):
+
+2008-04-29  Alice Liu  <alice.liu@apple.com>
+
+        Reviewed by Beth Dakin.
+
+        Comply with HTML5 spec about parsing tabindex property according to
+        integer parsing rules
+
+        Test: fast/parser/tabindex-parsing.html
+
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::parseMappedAttribute):
+
+2008-04-29  Tor Arne Vestbø  <tavestbo@trolltech.com>
+
+        Reviewed by Simon.
+
+        Fixes: Fix timing problem where scrollbars in subframes were sometimes not property repainted.
+
+        https://bugs.webkit.org/show_bug.cgi?id=18482
+
+        We need to repaint scrollbars after a geometry change, and also make sure
+        the computed clipping rect for the corners between scrollbars is propagated
+        to the chrome client without beeing intersected by the visible content rect
+        of the frame.
+
+        * platform/ScrollView.h:
+        * platform/qt/ScrollViewQt.cpp:
+        (WebCore::ScrollView::geometryChanged):
+        (WebCore::ScrollView::suppressScrollbars):
+        (WebCore::ScrollView::invalidateScrollbars):
+
+2008-04-29  Holger Hans Peter Freyther  <zecke@selfish.org>
+
+        Reviewed by Simon.
+
+        Calling QWebView::setCursor will override the WebCore Cursor.
+        Calling QWebView::setCursor will override the WebCore Cursor using
+        QWidget::unsetCursor will revert to the WebCore Cursor.
+
+        For detecting the unset we have to compare the shape of the
+        cursor to the default arrow. Qt::WA_SetCursor can not be used
+        as it is set unconditionally but conditionally removed.
+
+        Calling QWidget::setCursor will immediately send the CursorChange
+        event. We listen to this event to decide if we currently use a
+        WebCore cursor, got a cursor from outside, or revert to the default.
+
+        This should be race free and work reliable, the manual test for this
+        is WebCore/manual-tests/cursor.html
+
+        * platform/qt/WidgetQt.cpp:
+        (WebCore::Widget::setCursor):
+
+2008-04-28  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        - fix https://bugs.webkit.org/show_bug.cgi?id=18795
+          REGRESSION (r32660): Text heavier with text-shadow
+
+        * rendering/InlineTextBox.cpp:
+        (WebCore::paintTextWithShadows): The loop was doing one extra pass
+        without shadow even in cases where the last pass with a shadow was
+        painting the text at the right position (rather than outside the clip).
+        Fixed that. The only case where a separate pass without shadow is needed
+        is when there is text-stroke, since in that case all shadow passes
+        paint the text outside the clip.
+
+2008-04-28  Brady Eidson <beidson@apple.com>
+
+        Reviewed by Sam Weinig
+
+        Add Storage.clear(), per updates to HTML5
+
+        Tests: storage/domstorage/localstorage/clear.html
+               storage/domstorage/sessionstorage/clear.html
+
+        * storage/LocalStorageArea.cpp:
+        (WebCore::LocalStorageArea::areaCleared):
+        * storage/LocalStorageArea.h:
+
+        * storage/SessionStorageArea.cpp:
+        (WebCore::SessionStorageArea::areaCleared):
+        * storage/SessionStorageArea.h:
+
+        * storage/Storage.cpp:
+        (WebCore::Storage::clear):
+        * storage/Storage.h:
+        * storage/Storage.idl:
+
+        * storage/StorageArea.cpp:
+        (WebCore::StorageArea::internalClear):
+        * storage/StorageArea.h:
+        (WebCore::StorageArea::clear):
+
+2008-04-28  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Dan Bernstein, Tim Hatcher, Anders Carlsson, and Darin Adler.
+
+        WebCore part of fix for <rdar://problem/3709505>
+        Safari should have a way to upload bundles from the file upload control (as zip)
+
+        * WebCore.base.exp: Added symbols.
+
+        * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::formData): Ask the application if a file will need to be replaced before it's uploaded.
+          It will also give the replacement filename which is used to determine the correct mime-type and to construct the correct header.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::submitForm): Asks the application to generate any files for the form data before a form submission starts.
+        (WebCore::FrameLoader::loadItem): ditto.
+        * loader/ResourceLoader.cpp:
+        (WebCore::ResourceLoader::didReceiveResponse): Tells the FormData from the request to remove any generated files if it needs to.
+        (WebCore::ResourceLoader::didCancel): ditto.
+        (WebCore::ResourceLoader::didFail): ditto.
+
+        * platform/network/FormData.cpp:
+        (WebCore::FormData::FormData): Initializes m_hasGeneratedFiles, which keeps track of whether there are files that will need to be removed.
+        (WebCore::FormData::~FormData): Added.  Assert that there are no files that need to be removed, but if there are, release builds will still remove them here.
+        (WebCore::FormData::appendFile): Passes along a shouldGenerateFile flag to the FormDataElement.
+        (WebCore::FormData::generateFiles): Added. Iterates through the FormDataElements, and using the ChromeClient pointer, asks the application to
+         create any compressed files so the FormDataElements can store the paths.
+        (WebCore::FormData::removeGeneratedFilesIfNeeded): Added.  Removes generated files and their directories (if empty).
+        * platform/network/FormData.h:
+        (WebCore::FormDataElement::FormDataElement): Added a boolean to track whether the file will need to be generated,
+         and a string to hold the path of the generated file.
+
+        * platform/network/mac/FormDataStreamMac.mm:
+        (WebCore::advanceCurrentStream): Uses the generated file path instead of the original file path when streaming the file.
+        (WebCore::setHTTPBody): Uses the generated file path when determining the size of the file to be uploaded.
+
+        * platform/FileSystem.h: Added directoryName.
+        * platform/posix/FileSystemPOSIX.cpp: (WebCore::directoryName): Added.
+        * platform/gtk/FileSystemGtk.cpp: (WebCore::directoryName): Added empty implementation.
+        * platform/qt/FileSystemQt.cpp: (WebCore::directoryName): ditto.
+        * platform/win/FileSystemWin.cpp: (WebCore::directoryName): ditto.
+        * platform/wx/FileSystemWx.cpp: (WebCore::directoryName): ditto.
+
+        Added new ChromeClient methods to give the application control over the file compression for uploading.
+        * page/Chrome.cpp:
+        (WebCore::ChromeClient::shouldReplaceWithGeneratedFileForUpload): Added a default implementation.
+        (WebCore::ChromeClient::generateReplacementFile): ditto.
+        * page/ChromeClient.h:
+
+2008-04-28  Anders Carlsson  <andersca@apple.com>
+
+        Reviewed by Sam, Mark, Adele and Darin.
+
+        Add a (currently not called) method for opening the application cache database.
+        
+        * WebCore.base.exp:
+        * loader/appcache/ApplicationCacheStorage.cpp:
+        (WebCore::ApplicationCacheStorage::setCacheDirectory):
+        (WebCore::ApplicationCacheStorage::openDatabase):
+        * loader/appcache/ApplicationCacheStorage.h:
+
+2008-04-28  Alice Liu  <alice.liu@apple.com>
+
+        Reviewed by Darin.
+
+        Fix <rdar://problem/4911289> Add tabindex property to all children 
+        of HTMLElement (7138)
+        http://bugs.webkit.org/show_bug.cgi?id=7138
+
+        Test: fast/events/tabindex-focus-blur-all.html
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * bindings/objc/DOMPrivate.h:
+        -DOMHTMLLabelElementPrivate.h and DOMHTMLLegendElementPrivate.h are no
+         longer needed
+
+        * bindings/objc/PublicDOMInterfaces.h:
+        -Moving focus, blur, tabindex to HTMLElement from its descendants.
+
+        * dom/Node.cpp:
+        (WebCore::Node::Node):
+        (WebCore::Node::isFocusable):
+        (WebCore::Node::isKeyboardFocusable):
+        -The concept of being focusable now needs to account for tabindex
+        attribute.
+
+        * dom/Node.h:
+        -Need to use a bit to keep track of whether tabindex was explicitly set
+         to 0 or was just initialized to 0.
+        (WebCore::Node::tabIndex):
+        -Make this virtual so that Anchors and GenericFormElements can determine
+         tabindex without accounting for focusability
+        (WebCore::Node::setTabIndexExplicitly):
+        -Renamed setTabIndex() to setTabIndexExplicitly() so as not to hide
+         behind and/or be confused for HTMLElement::setTabIndex
+
+        * html/HTMLAnchorElement.cpp:
+        * html/HTMLAnchorElement.h:
+        (WebCore::HTMLAnchorElement::tabIndex):
+        * html/HTMLGenericFormElement.cpp:
+        * html/HTMLGenericFormElement.h:
+        (WebCore::HTMLGenericFormElement::tabIndex):
+        -Anchors and form elements are normally focusable, and need to avert the
+         check for focusability in HTMLElement::tabIndex
+         because tabIndex could be queried before a first layout happens.
+
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::parseMappedAttribute):
+        -Function Node::setTabIndex changed to Node::setTabIndexExplicitly
+        (WebCore::HTMLElement::isFocusable):
+        -The concept of being focusable now needs to account for tabindex
+         attribute.
+        (WebCore::HTMLElement::tabIndex):
+        -HTML5 specifies that querying tabindex for elements that aren't
+         focusable shall return -1
+        (WebCore::HTMLElement::setTabIndex):
+        -New default implementation
+        * html/HTMLElement.h:
+
+        * html/HTMLLegendElement.cpp:
+        (WebCore::HTMLLegendElement::focus):
+        -Now with HTML5's enhanced specification of tabindex, legend elements
+         themselves shall focus (if they should), and not the first form element 
+         they encapsulate.  This matches Firefox behavior.  HTMLLabelElements
+         still forward focus to the encapsulated element.  This also matches
+         other browsers. 
+
+        * html/HTMLAreaElement.cpp:
+        (WebCore::HTMLAreaElement::isFocusable):
+        * html/HTMLAreaElement.h:
+        -HTMLAreaElement isn't subject to the same focusability requirements as
+         its parent, HTMLAnchorElement. Default HTMLElement implementation is
+         desired.  
+
+        * html/HTMLFieldSetElement.cpp:
+        (WebCore::HTMLFieldSetElement::isFocusable):
+        * html/HTMLLegendElement.cpp:
+        (WebCore::HTMLLegendElement::isFocusable):
+        * html/HTMLOptGroupElement.cpp:
+        (WebCore::HTMLOptGroupElement::isFocusable):
+        * html/HTMLOptionElement.cpp:
+        (WebCore::HTMLOptionElement::isFocusable):
+        -These elements aren't subject to the same focusability requirements as
+         their parent, HTMLGenericFormElement. Default HTMLElement 
+         implementation is desired.  
+
+        * html/HTMLAnchorElement.idl:
+        * html/HTMLAreaElement.idl:
+        * html/HTMLButtonElement.idl:
+        * html/HTMLElement.idl:
+        * html/HTMLInputElement.idl:
+        * html/HTMLLabelElement.idl:
+        * html/HTMLLegendElement.idl:
+        * html/HTMLObjectElement.idl:
+        * html/HTMLSelectElement.idl:
+        * html/HTMLTextAreaElement.idl:
+        -Moving tabindex attribute, focus and blur methods from descendants of
+         HTMLElement to HTMLElement
+
+2008-04-28  Dan Bernstein  <mitz@apple.com>
+
+        Reviewed by Dave Hyatt.
+
+        - support multiple box- and text-shadows
+
+        Tests: fast/css/shadow-multiple.html
+               fast/repaint/shadow-multiple-horizontal.html
+               fast/repaint/shadow-multiple-strict-horizontal.html
+               fast/repaint/shadow-multiple-strict-vertical.html
+               fast/repaint/shadow-multiple-vertical.html
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::valueForShadow): Changed to account for reversing the order
+        of the shadow values in the ShadowData list.
+
+        * css/CSSValueList.cpp:
+        (WebCore::CSSValueList::prepend): Added.
+        * css/CSSValueList.h:
+
+        * rendering/InlineFlowBox.cpp:
+        (WebCore::InlineFlowBox::placeBoxesHorizontally): Changed to account for
+        all shadows in overflow calculation.
+        (WebCore::InlineFlowBox::placeBoxesVertically): Ditto.
+        (WebCore::InlineFlowBox::paint): Changed to account for all shadows
+        when testing for intersection with the damage rect.
+        (WebCore::InlineFlowBox::paintTextDecorations): Changed to paint all
+        shadows.
+
+        * rendering/InlineTextBox.cpp:
+        (WebCore::paintTextWithShadows): Factored out from paint() and changed
+        to paint all shadows.
+        (WebCore::InlineTextBox::paint): Moved the text painting code out to
+        paintTextWithShadows(). Changed to not paint shadows for markers and
+        composition underlines and in "force black text" mode.
+        (WebCore::InlineTextBox::paintSelection):
+        (WebCore::InlineTextBox::paintCompositionBackground):
+        (WebCore::InlineTextBox::paintDecoration): Changed to paint all shadows.
+        * rendering/InlineTextBox.h: Changed some public methods to private
+        or protected.
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::overflowHeight): Changed to account for all
+        shadows.
+        (WebCore::RenderBlock::overflowWidth): Ditto.
+        (WebCore::RenderBlock::overflowLeft): Ditto.
+        (WebCore::RenderBlock::overflowTop): Ditto.
+        (WebCore::RenderBlock::overflowRect): Ditto.
+        (WebCore::RenderBlock::layoutBlock): Ditto.
+
+        * rendering/RenderFlexibleBox.cpp:
+        (WebCore::RenderFlexibleBox::layoutBlock): Ditto.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::calculateRects): Ditto.
+
+        * rendering/RenderObject.cpp:
+        (WebCore::RenderObject::paintBoxShadow): Changed to paint all shadows.
+        Changed to avoid clipping out the box if it has a fully opaque
+        background.
+        (WebCore::RenderObject::repaintAfterLayoutIfNeeded): Changed to account
+        for all shadows.
+        (WebCore::RenderObject::selectionForegroundColor): Cleaned up.
+        (WebCore::RenderObject::adjustRectForOutlineAndShadow): Changed to
+        account for all shadows.
+
+        * rendering/RenderReplaced.cpp:
+        (WebCore::RenderReplaced::adjustOverflowForBoxShadow): Ditto.
+
+        * rendering/RenderStyle.cpp:
+        (WebCore::RenderStyle::setTextShadow): Changed to prepend when adding
+        so that the stacking order of shadows when painting will be "first o
+        top".
+        (WebCore::RenderStyle::setBoxShadow): Ditto.
+
+        * rendering/RenderTable.cpp:
+        (WebCore::RenderTable::layout): Changed to account for all shadows.
+
 2008-04-28  Adam Roben  <aroben@apple.com>
 
         Fix some more Windows build errors in COMPtr