2012-06-22 Lucas Forschler <lforschler@apple.com> Rollout 121034 This was 120954 from trunk. 2012-06-22 Lucas Forschler <lforschler@apple.com> Merge 120954 2012-06-21 Brady Eidson <beidson@apple.com> <rdar://problem/11718988> and https://bugs.webkit.org/show_bug.cgi?id=89673 showModalDialog fix creates risk of never returning from RunLoop::performWork, potentially blocking other event sources In case handling a function on the queue places additional functions on the queue, we should limit the number of functions each invocation of performWork() performs so it can return and other event sources have a chance to spin. The showModalDialog fix in question is http://trac.webkit.org/changeset/120879 Reviewed by Darin Adler and Anders Carlson. * platform/RunLoop.cpp: (WebCore::RunLoop::performWork): If there are only N functions in the queue when performWork is called, only handle up to N functions before returning. Any additional functions will be handled the next time the runloop spins. 2012-06-20 Lucas Forschler <lforschler@apple.com> Merge 120879 2012-06-20 Brady Eidson <beidson@apple.com> <rdar://problem/11653784> and https://bugs.webkit.org/show_bug.cgi?id=89590 showModalDialog message handling is flaky in WebKit2 Because RunLoop::performWork() swaps the function queue to a temporary Vector before calling the functions an inner run-loop - such as we see with running a modal dialog - does not have a change to handle any of the functions that were queued after the WebPageProxy::RunModal message. By servicing the functions in the queue one at a time we can give the RunLoop a chance to pick up where it left off if RunLoop::performWork is re-entered. To guarantee RunLoop::performWork is re-entered to handle those functions we also need to signal its source before entering the modal run loop so our RunLoop is woken up. Reviewed by Darin Adler. * WebCore.exp.in: * platform/RunLoop.cpp: (WebCore::RunLoop::performWork): Take the first function off the queue one at a time so subsequent functions remain in the queue and can be handled by an inner modal run loop. * platform/RunLoop.h: (RunLoop): Change the function queue to be a Deque to efficiently support "takeFirst" 2012-06-12 Lucas Forschler <lforschler@apple.com> Merge 120364 2012-06-14 Andreas Kling <kling@webkit.org> Crashes below IconDatabase::performPendingRetainAndReleaseOperations(). <http://webkit.org/b/88846> <rdar://problem/11629106> Reviewed by Brady Eidson. Put isolatedCopy() strings in the retain/release operation queues to make sure it's safe for secondary threads to ref/deref them in performPendingRetainAndReleaseOperations(). Also added assertions as appropriate. * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::retainIconForPageURL): (WebCore::IconDatabase::releaseIconForPageURL): (WebCore::IconDatabase::performPendingRetainAndReleaseOperations): 2012-06-12 Lucas Forschler <lforschler@apple.com> Merge 120357 2012-06-14 Jia Pu <jpu@apple.com> Mark text with text alternative with blue underline. https://bugs.webkit.org/show_bug.cgi?id=83047 Reviewed by Enrica Casucci. Tests: platform/mac/editing/input/edit-dictated-text-with-alternative.html platform/mac/editing/input/insert-dictated-text.html This patch implements visual indication on dictated text with alternatives, and provides UI to show alternative text on OS X. Majority of the changes is for generalizing existing AlternativeTextController class to handle dictation alternatives. The two new classes, AlternativeTextUIController and TextAlternativeWithRange, are used by both WebKit and WK2. So WebCore seems to be the natural place for them. * WebCore.exp.in: * WebCore.xcodeproj/project.pbxproj: * editing/AlternativeTextController.cpp: Expanded exising class interface to support dictation alternatives. (DictationAlternativeDetails): Marker detail class for dictation alternative mark. (WebCore::DictationAlternativeDetails::create): (WebCore::DictationAlternativeDetails::dictationContext): (WebCore::DictationAlternativeDetails::DictationAlternativeDetails): (WebCore::markerTypesForAppliedDictationAlternative): (WebCore::AlternativeTextController::applyAlternativeTextToRange): Generalized existing applyAlternativeTextToRange() to handle dictation alternatives. (WebCore::AlternativeTextController::timerFired): Expanded existing code to handle dictation alternatives. (WebCore::AlternativeTextController::handleAlternativeTextUIResult): Expanded existing code to handle dictation alternatives. (WebCore::AlternativeTextController::respondToChangedSelection): Moved part of the function into respondToMarkerAtEndOfWord() to improve readability. (WebCore::AlternativeTextController::shouldStartTimerFor): (WebCore::AlternativeTextController::respondToMarkerAtEndOfWord): (WebCore::AlternativeTextController::markerDescriptionForAppliedAlternativeText): (WebCore::AlternativeTextController::removeDictationAlternativesForMarker): (WebCore::AlternativeTextController::dictationAlternativesForMarker): (WebCore::AlternativeTextController::applyDictationAlternative): * editing/AlternativeTextController.h: * editing/Editor.cpp: (WebCore::Editor::notifyComponentsOnChangedSelection): Renamed existing respondToChangedSelection() function to avoid naming collision. (WebCore::Editor::appliedEditing): (WebCore::Editor::unappliedEditing): (WebCore::Editor::reappliedEditing): (WebCore::Editor::updateMarkersForWordsAffectedByEditing): (WebCore::Editor::changeSelectionAfterCommand): (WebCore::Editor::respondToChangedSelection): (WebCore::Editor::dictationAlternativesForMarker): (WebCore::Editor::applyDictationAlternativelternative): * editing/Editor.h: * editing/FrameSelection.h: * editing/mac/AlternativeTextUIController.h: Added. WK1 and WK2 use this class to keep track of text alternatives objects. (AlternativeTextUIController): (WebCore::AlternativeTextUIController::AlternativeTextUIController): (AlernativeTextContextController): (WebCore::AlternativeTextUIController::AlernativeTextContextController::AlernativeTextContextController): * editing/mac/AlternativeTextUIController.mm: Added. (WebCore::AlternativeTextUIController::AlernativeTextContextController::addAlternatives): (WebCore::AlternativeTextUIController::AlernativeTextContextController::alternativesForContext): (WebCore::AlternativeTextUIController::AlernativeTextContextController::removeAlternativesForContext): (WebCore::AlternativeTextUIController::AlernativeTextContextController::clear): (WebCore::AlternativeTextUIController::addAlternatives): (WebCore::AlternativeTextUIController::alternativesForContext): (WebCore::AlternativeTextUIController::clear): (WebCore::AlternativeTextUIController::showAlternatives): (WebCore::AlternativeTextUIController::handleAcceptedAlternative): (WebCore::AlternativeTextUIController::dismissAlternatives): (WebCore::AlternativeTextUIController::removeAlternatives): * editing/mac/TextAlternativeWithRange.h: Added. A simple struct to make it easier to pass around a pair of text alternatives object and range. * editing/mac/TextAlternativeWithRange.mm: Added. (WebCore::TextAlternativeWithRange::TextAlternativeWithRange): (WebCore::collectDictationTextAlternatives): * page/AlternativeTextClient.h: * page/ContextMenuController.cpp: Added code to show alternative dictated text in context menu. (WebCore::ContextMenuController::contextMenuItemSelected): (WebCore::ContextMenuController::populate): (WebCore::ContextMenuController::checkOrEnableIfNeeded): * platform/ContextMenuItem.h: * rendering/HitTestResult.cpp: (WebCore::HitTestResult::dictationAlternatives): * rendering/HitTestResult.h: * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paintDocumentMarker): 2012-06-12 Lucas Forschler <lforschler@apple.com> Merge 119739 2012-06-07 Jer Noble <jer.noble@apple.com> sometimes all slaved videos don't start playing https://bugs.webkit.org/show_bug.cgi?id=88553 Reviewed by Darin Adler. Test: media/media-controller-time-clamp.html Some PlatformClock classes will occasionally return times < 0 and will always return times slightly > duration() when playback has ended. Clamp the value of currentTime() to the specified [0..duration] range. * html/MediaController.cpp: (MediaController::currentTime): 2012-06-12 Lucas Forschler <lforschler@apple.com> Merge 119644 2012-06-06 Brady Eidson <beidson@apple.com> <rdar://problem/11575112> and https://bugs.webkit.org/show_bug.cgi?id=88428 REGRESSION (r115654): Opening many non-English WebArchives shows obvious encoding issues Reviewed by Nate Chapin. Test: fast/loader/webarchive-encoding-respected.html * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::commitData): Properly set the main resource encoding from the webarchive. 2012-06-06 Mark Rowe <mrowe@apple.com> Merge r119548. 2012-06-05 Vitaly Buka <vitalybuka@chromium.org> Special layout handler should be done on top frame being printed. https://bugs.webkit.org/show_bug.cgi?id=88201 Reviewed by Brady Eidson. No new tests. Root case is already covered by tests. Case described in the issue can be reproduced only by direct call to Frame::setPrinting of subframe. Probably it's not possible with layout tests. * page/Frame.cpp: (WebCore::Frame::setPrinting): Use shouldUsePrintingLayout to choose proper version of forceLayout(). (WebCore::Frame::shouldUsePrintingLayout): Checks if current frame is the top frame being printed. * rendering/RenderView.cpp: (WebCore::RenderView::shouldUsePrintingLayout): Forward to Frame. 2012-06-06 Mark Rowe <mrowe@apple.com> Merge r119136. 2012-05-31 Brady Eidson <beidson@apple.com> <rdar://problem/11544454> and https://bugs.webkit.org/show_bug.cgi?id=87990 Crashes unregistering DOMWindowProperties while releasing CachedPages Reviewed by Jessie Berlin. This patch rewrites DOMWindowProperty to always keep direct track of the DOMWindow it has registered with and to only ever unregister from that very same DOMWindow. No new tests. (While the direct cause of the crash is understood, reproducing it is not) * page/DOMWindowProperty.cpp: (WebCore::DOMWindowProperty::DOMWindowProperty): (WebCore::DOMWindowProperty::~DOMWindowProperty): (WebCore::DOMWindowProperty::disconnectFrameForPageCache): (WebCore::DOMWindowProperty::reconnectFrameFromPageCache): (WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame): (WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame): (WebCore::DOMWindowProperty::willDetachGlobalObjectFromFrame): * page/DOMWindowProperty.h: (DOMWindowProperty): 2012-06-06 Mark Rowe <mrowe@apple.com> Merge r119274. 2012-06-01 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=87774 REGRESSION (r105515): reflection masks are truncated at zoom levels < 1 -and corresponding- <rdar://problem/11387506> Reviewed by Simon Fraser. paintNinePieceImage() expects un-zoomed results from calculateImageIntrinsicDimensions(). This was previously addressed by having paintNinePieceImage() divide the effective zoom out of the result from calculateImageIntrinsicDimensions(). However, that results in buggy behavior for generated images and images with percentage sizes. In the end it seems best to just send a parameter to calculateImageIntrinsicDimensions() indicating whether the caller wants the result to be scaled by the effective zoom when appropriate. * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::calculateImageIntrinsicDimensions): (WebCore::RenderBoxModelObject::calculateFillTileSize): (WebCore::RenderBoxModelObject::paintNinePieceImage): * rendering/RenderBoxModelObject.h: (RenderBoxModelObject): 2012-05-31 Tim Horton <timothy_horton@apple.com> Disable CSS regions and exclusions on the Ampere branch <rdar://problem/10887709> Reviewed by Alexey Proskuryakov. Fix mismerge of regions-disabling patch (broke -webkit-print-color-adjust) * css/CSSParser.cpp: (WebCore::isValidKeywordPropertyAndValue): * dom/Document.idl: 2012-05-31 Ojan Vafai <ojan@chromium.org> add back the ability to disable flexbox https://bugs.webkit.org/show_bug.cgi?id=87147 Reviewed by Tony Chang. * Configurations/FeatureDefines.xcconfig: * css/CSSParser.cpp: (WebCore::isValidKeywordPropertyAndValue): 2012-05-31 Tim Horton <timothy_horton@apple.com> Disable CSS3 flexbox <rdar://problem/11524921> Reviewed by John Sullivan. * Configurations/FeatureDefines.xcconfig: 2012-05-31 Tim Horton <timothy_horton@apple.com> ENABLE_CSS3_FLEXBOX is insufficient to disable all web-facing bits of the feature https://bugs.webkit.org/show_bug.cgi?id=87537 <rdar://problem/11524921> Reviewed by Simon Fraser. Allow the feature flag to disable more web-facing parts of the CSS3 flexbox implementation (primarily fallout from hiding it from computed style). * css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): * css/CSSParser.cpp: (WebCore::isValidKeywordPropertyAndValue): (WebCore::isKeywordPropertyID): (WebCore::CSSParser::parseValue): * css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): * css/CSSProperty.cpp: (WebCore::CSSProperty::isInheritedProperty): * css/CSSPropertyNames.in: * css/CSSValueKeywords.in: * css/StyleBuilder.cpp: (WebCore::StyleBuilder::StyleBuilder): * css/StylePropertySet.cpp: (WebCore::StylePropertySet::getPropertyValue): (WebCore::StylePropertySet::asText): * css/StylePropertyShorthand.cpp: (WebCore::shorthandForProperty): * css/StylePropertyShorthand.h: * css/StyleResolver.cpp: (WebCore::StyleResolver::collectMatchingRulesForList): * page/animation/CSSPropertyAnimation.cpp: (WebCore::CSSPropertyAnimation::ensurePropertyMap): * rendering/RenderObject.cpp: (WebCore::RenderObject::createObject): * rendering/style/RenderStyleConstants.h: 2012-05-31 Tim Horton <timothy_horton@apple.com> Add feature defines for web-facing parts of CSS Regions and Exclusions https://bugs.webkit.org/show_bug.cgi?id=87442 <rdar://problem/10887709> Reviewed by Dan Bernstein. * Configurations/FeatureDefines.xcconfig: * GNUmakefile.am: * bindings/generic/RuntimeEnabledFeatures.cpp: * bindings/generic/RuntimeEnabledFeatures.h: (RuntimeEnabledFeatures): (WebCore::RuntimeEnabledFeatures::setCSSExclusionsEnabled): (WebCore::RuntimeEnabledFeatures::cssExclusionsEnabled): * bindings/js/JSCSSRuleCustom.cpp: (WebCore::toJS): * bindings/objc/DOMCSS.mm: (kitClass): * css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): * css/CSSParser.cpp: (WebCore::isSimpleLengthPropertyID): (WebCore::isValidKeywordPropertyAndValue): (WebCore::isKeywordPropertyID): (WebCore::CSSParser::parseValue): (WebCore::CSSParser::detectAtToken): * css/CSSProperty.cpp: (WebCore::CSSProperty::isInheritedProperty): * css/CSSPropertyNames.in: * css/CSSRule.cpp: (WebCore::CSSRule::cssText): (WebCore::CSSRule::destroy): (WebCore::CSSRule::reattach): * css/CSSRule.h: (WebCore::CSSRule::isRegionRule): * css/CSSRule.idl: * css/StyleBuilder.cpp: (WebCore::StyleBuilder::StyleBuilder): * css/StylePropertySet.cpp: (WebCore::StylePropertySet::getPropertyValue): (WebCore::StylePropertySet::asText): * css/StylePropertyShorthand.cpp: (WebCore::shorthandForProperty): * css/StylePropertyShorthand.h: * css/StyleResolver.cpp: (WebCore::StyleResolver::collectMatchingRulesForList): * css/StyleRule.cpp: (WebCore::StyleRuleBase::destroy): (WebCore::StyleRuleBase::copy): (WebCore::StyleRuleBase::createCSSOMWrapper): * css/WebKitCSSRegionRule.cpp: * css/WebKitCSSRegionRule.h: * css/WebKitCSSRegionRule.idl: * dom/Document.cpp: * dom/Document.h: * dom/Document.idl: * page/DOMWindow.idl: * page/Settings.cpp: (WebCore::Settings::Settings): * page/Settings.h: (WebCore::Settings::setCSSRegionsEnabled): (WebCore::Settings::cssRegionsEnabled): 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118891 2012-05-29 Yoshifumi Inoue <yosin@chromium.org> REGRESSION(r111497): The "option" element doesn't match CSS pseudo class :enabled https://bugs.webkit.org/show_bug.cgi?id=87719 Reviewed by Kent Tamura. This patch added checking of "option" element for CSS pseudo class :enabled as same as :disabled to selector checker. Before r111497, it was done by using isFormControlElement. After that revision, HTMLOptionElement was no longer derived from HTMLFormControlElement. Test: fast/form/select/optgroup-rendering.html * css/SelectorChecker.cpp: (WebCore::SelectorChecker::checkOneSelector): Checking element is option element as same as PseudoDisabled in PseudoEnabled case. 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118883 2012-05-29 Eric Seidel <eric@webkit.org> Fix ENABLE_IFRAME_SEAMLESS to actually fully disable <iframe seamless> https://bugs.webkit.org/show_bug.cgi?id=87646 Reviewed by Adam Barth. In the process of moving the seamless feature out of github and into bugs.webkit.org multiple versions of the shouldDisplaySeamlessly function got written (and moved from HTMLIFrameElement to Document), but only one of them was wrapped in ENABLE_IFRAME_SEAMLESS. HTMLIFrameElement was checking mayDisplaySeamlessly directly (as was my original design), which got around the ENABLE_IFRAME_SEAMLESS check. I've fixed this oversight, and the feature is now off when we tell it to be off. This is covered by many existing tests. I've verified locally that all tests fail when ENABLE_IFRAME_SEAMLESS is disabled instead of only some of them. * dom/SecurityContext.h: (SecurityContext): * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::shouldDisplaySeamlessly): 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118820 2012-05-29 John Sullivan <sullivan@apple.com> Update label for blacklisted plug-in https://bugs.webkit.org/show_bug.cgi?id=87767 rdar://problem/11550048 Reviewed by Kevin Decker. * English.lproj/Localizable.strings: Regenerated. * platform/LocalizedStrings.cpp: (WebCore::insecurePluginVersionText): Changed this string. 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118553 2012-05-25 Dean Jackson <dino@apple.com> Unreviewed, rolling out r112155. http://trac.webkit.org/changeset/112155 https://bugs.webkit.org/show_bug.cgi?id=79389 Hitch (due to style recalc?) when starting CSS3 animation This caused a number of issues, including: https://bugs.webkit.org/show_bug.cgi?id=87146 https://bugs.webkit.org/show_bug.cgi?id=84194 <rdar://problem/11506629> <rdar://problem/11267408> <rdar://problem/11531859> 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118450 2012-05-24 Anders Carlsson <andersca@apple.com> Corrupted pages rendering when images are zoomed on Google+ https://bugs.webkit.org/show_bug.cgi?id=87439 <rdar://problem/11503078> Reviewed by Beth Dakin. The rect that's given to scrollContentsSlowPath is in frame view coordinates, but if we end up passing them to RenderLayer::setBackingNeedsRepaintInRect we need to account for the frame scale factor. * page/FrameView.cpp: (WebCore::FrameView::scrollContentsSlowPath): 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118411 2012-05-24 Jer Noble <jer.noble@apple.com> MediaControlTimelineElement is adjusting time 3 times per click https://bugs.webkit.org/show_bug.cgi?id=58160 Reviewed by Eric Carlson. No new tests; we intentionally throttle timeupdate events for the same movie time, so there is no way to write a layout test for this case. Only call setCurrentTime() on mousedown or mousemove events. * html/shadow/MediaControlElements.cpp: (WebCore::MediaControlTimelineElement::defaultEventHandler): 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118314 2012-05-23 Jer Noble <jer.noble@apple.com> REGRESSION: compositing/video/video-poster.html fails on Mac https://bugs.webkit.org/show_bug.cgi?id=87199 Reviewed by Maciej Stachowiak. No new tests; fixes failing compositing/video/video-poster.html test. Instead of creating the video layer directly, simply allow the layer to be created in updateStates() by changing the definition of isReadyForVideoSetup() to bypass the m_isAllowedToRender check if the player reports a video track is present. This causes the video layer to be created and for future calls to prepareForRendering() to result in calls to mediaPlayerRenderingModeChanged(). * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::isReadyForVideoSetup): (WebCore::MediaPlayerPrivateAVFoundation::metadataLoaded): 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 118087 2012-05-22 Jer Noble <jer.noble@apple.com> REGRESSION (r98359): Video does not render on http://panic.com/dietcoda/ https://bugs.webkit.org/show_bug.cgi?id=87171 Reviewed by Maciej Stachowiak. No new tests; behavior is very timing specific and only occurs on a subset of all platforms. Instead of calling prepareForRendering() from metadataLoaded(), which may fail and cause subsequent calls to prepareForRendering() to short circuit, call createVideoLayer() directly, which achieves the original goals of the fix for http://webkit.org/b/70448, but without breaking subsequent calls to prepareForRendering() if called at the wrong time. * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp: (WebCore::MediaPlayerPrivateAVFoundation::metadataLoaded): 2012-05-30 Lucas Forschler <lforschler@apple.com> Merge 116319 2012-05-07 Nat Duca <nduca@chromium.org> Unreviewed, rolling out r115525. http://trac.webkit.org/changeset/115525 https://bugs.webkit.org/show_bug.cgi?id=66683 Too many pages rely on DOMTimeStamp as first argument. Reverting while we consider next steps. * WebCore.exp.in: * bindings/js/JSRequestAnimationFrameCallbackCustom.cpp: (WebCore::JSRequestAnimationFrameCallback::handleEvent): * dom/Document.cpp: (WebCore::Document::serviceScriptedAnimations): * dom/Document.h: (Document): * dom/RequestAnimationFrameCallback.h: (RequestAnimationFrameCallback): * dom/RequestAnimationFrameCallback.idl: * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::ScriptedAnimationController): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): (WebCore::ScriptedAnimationController::animationTimerFired): * dom/ScriptedAnimationController.h: (ScriptedAnimationController): (WebCore::ScriptedAnimationController::displayRefreshFired): * page/FrameView.cpp: (WebCore::FrameView::serviceScriptedAnimations): * page/FrameView.h: (FrameView): * platform/graphics/DisplayRefreshMonitor.cpp: (WebCore::DisplayRefreshMonitor::DisplayRefreshMonitor): (WebCore::DisplayRefreshMonitor::notifyClients): * platform/graphics/DisplayRefreshMonitor.h: (DisplayRefreshMonitor): * platform/graphics/blackberry/DisplayRefreshMonitorBlackBerry.cpp: (WebCore::DisplayRefreshMonitor::displayLinkFired): * platform/graphics/mac/DisplayRefreshMonitorMac.cpp: (WebCore): (WebCore::DisplayRefreshMonitor::requestRefreshCallback): (WebCore::DisplayRefreshMonitor::displayLinkFired): 2012-05-30 Lucas Forschler <lforschler@apple.com> Rollout 115573 2012-04-26 Emil A Eklund <eae@chromium.org> and Levi Weintraub <leviw@chromium.org> Move Length and CSS length computation to float https://bugs.webkit.org/show_bug.cgi?id=84801 Reviewed by Eric Seidel. Change Length and CSS length computation to floating point. This gets us closer to the goal of supporting subpixel layout and improves precision for SVG which already uses floating point for its layout. This change makes computedStyle return fractional values for pixel values if a fraction is specified. It also changes the result of computations where two or more values with fractional precision. Prior to this change the result of Length(2.9) + Length(2.9) would be 4 as each value would be floored. With this change the result is 5 as the addition is done with floating point precision and then the result will be floored. Once we enable subpixel layout the resulting value in this example would be 5.8. Updated existing layout tests. * css/CSSComputedStyleDeclaration.cpp: (WebCore::zoomAdjustedPixelValue): * css/CSSPrimitiveValue.cpp: (WebCore::CSSPrimitiveValue::computeLength): * css/CSSPrimitiveValue.h: (WebCore): (WebCore::roundForImpreciseConversion): Add specialized float version of roundForImpreciseConversion that matches the int versions rounding logic. If a value is sufficiently close to the next integer round it up to ensure that a style rule such as "width: 4.999px" evaluates to 5px instead of 4px. This is needed as, although Lengths are using floating point, the layout system still uses integer precision and floors the Length values. This will change once we move to FractionalLayoutUnits but for now this is needed to ensure compatibility with the existing system and tests. Without this specialized rounding logic we fail a handful of tests including acid3. * platform/Length.h: (WebCore::Length::value): (Length): (WebCore::Length::intValue): * rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::styleOrColLogicalWidth): 2012-05-28 Lucas Forschler <lforschler@apple.com> Merge 118399 2012-05-24 Jessie Berlin <jberlin@apple.com> REGRESSION(r109663) All the the dom/html/level2/html/HTMLFrameElement* tests crash on Windows https://bugs.webkit.org/show_bug.cgi?id=87410 Reviewed by Anders Carlsson. Do not pass a reference type to va_start (see r75435). * platform/LocalizedStrings.cpp: (WebCore::formatLocalizedString): 2012-05-28 Lucas Forschler <lforschler@apple.com> Merge 118397 2012-05-24 Alexey Proskuryakov <ap@apple.com> [WK2] Let the client give local files universal access on a case by case basis https://bugs.webkit.org/show_bug.cgi?id=87174 <rdar://problem/11024330> Reviewed by Maciej Stachowiak. * dom/Document.cpp: (WebCore::Document::initSecurityContext): When settings->allowUniversalAccessFromFileURLs() is false, also try asking the client for an indulgence. * loader/FrameLoaderClient.h: (WebCore::FrameLoaderClient::shouldForceUniversalAccessFromLocalURL): Default implementation doesn't change anything. 2012-05-28 Lucas Forschler <lforschler@apple.com> Merge 118039 2012-05-22 Vitaly Buka <vitalybuka@chromium.org> Fix iframe printing. https://bugs.webkit.org/show_bug.cgi?id=85118 Reviewed by Darin Adler, Eric Seidel. Patch fixed two issues by disabling special handling of subframes for printing. 1. Regression. Division by zero when forceLayoutForPagination called for subframes and page sizes set to zero. 2. Old issue. RendererView adjusted layout of subframes for printing and set invalid dimensions. Sometimes it caused missing iframe when printed. Test: printing/iframe-print.html * page/Frame.cpp: (WebCore::Frame::setPrinting): Calls forceLayoutForPagination for root frames only. (WebCore::Frame::resizePageRectsKeepingRatio): Added ASSERTs to catch division by zero. * rendering/RenderView.cpp: Replaced printing() with shouldUsePrintingLayout() for most calls. (WebCore::RenderView::computeLogicalHeight): (WebCore::RenderView::computeLogicalWidth): (WebCore::RenderView::layout): (WebCore::RenderView::shouldUsePrintingLayout): Returns true only if printing enabled and it's a root frame. (WebCore::RenderView::viewRect): (WebCore::RenderView::viewHeight): (WebCore::RenderView::viewWidth): * rendering/RenderView.h: 2012-05-24 Lucas Forschler <lforschler@apple.com> Merge 118204 2012-05-22 Jer Noble <jer.noble@apple.com> PlatformClockCM has uninitialized m_rate member. https://bugs.webkit.org/show_bug.cgi?id=87217 Reviewed by Eric Carlson. Test: media/media-controller-time.html Initialize the m_rate member to a default of 1 (second-per-second), matching the implementation of ClockGeneric. * platform/mac/PlatformClockCM.mm: (PlatformClockCM::PlatformClockCM): 2012-05-24 Lucas Forschler <lforschler@apple.com> Merge 118086 2012-05-22 Tim Horton <timothy_horton@apple.com> Add a quirk for applications that depend on the relative ordering of progressCompleted/didFinishLoad https://bugs.webkit.org/show_bug.cgi?id=87178 <rdar://problem/11468434> Reviewed by Maciej Stachowiak. Some applications depend on the relative ordering of progressCompleted/didFinishLoad, which was changed to be more correct in http://trac.webkit.org/changeset/94105. For applications built before 94105, we can provide the old behavior. For the time being, this will only apply to Mail.app. No new tests, will not affect behavior for any application except Mail. * loader/FrameLoader.cpp: (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * page/Settings.cpp: (WebCore::Settings::Settings): * page/Settings.h: (WebCore::Settings::setNeedsDidFinishLoadOrderQuirk): (WebCore::Settings::needsDidFinishLoadOrderQuirk): 2012-05-24 Lucas Forschler <lforschler@apple.com> Merge 117471 2012-05-16 Andreas Kling <kling@webkit.org> Make PluginInfoStore properly thread-safe. <http://webkit.org/b/86648> <rdar://problem/11451178> Reviewed by Darin Adler. * plugins/PluginData.h: (WebCore::MimeClassInfo::isolatedCopy): (WebCore::PluginInfo::isolatedCopy): 2012-05-23 Lucas Forschler <lforschler@apple.com> Merge 117744 2012-05-18 Andreas Kling <kling@webkit.org> REGRESSION(r117501): IconDatabase asserts on startup in synchronousIconForPageURL(). <http://webkit.org/b/86935> <rdar://problem/11480012> Reviewed by Anders Carlsson. - Correctly set m_retainOrReleaseIconRequested to true in retainIconForPageURL(). This was causing the assertions, as we would end up doing nothing until the first icon release request came in. - Require that m_urlsToRetainOrReleaseLock be held when accessing m_retainOrReleaseIconRequested. This removes a possible race condition in double checked locking. - Swap over the retain/release work queues while holding m_urlsToRetainOrReleaseLock and release it right away to avoid sitting on the lock while updating the database. * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::synchronousIconForPageURL): (WebCore::IconDatabase::retainIconForPageURL): (WebCore::IconDatabase::releaseIconForPageURL): (WebCore::IconDatabase::retainedPageURLCount): (WebCore::IconDatabase::performURLImport): (WebCore::IconDatabase::syncThreadMainLoop): (WebCore::IconDatabase::performPendingRetainAndReleaseOperations): * loader/icon/IconDatabase.h: (IconDatabase): 2012-05-23 Lucas Forschler <lforschler@apple.com> Merge 117625 2012-05-18 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com> [Qt] REGRESSION(r117501): It made almost all tests assert in debug mode https://bugs.webkit.org/show_bug.cgi?id=86854 Reviewed by Andreas Kling. Initialize boolean flag in constructor and recheck the flag which can be modified by another thread under mutex. No new tests, fixes regression that caused layout test crash. * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::IconDatabase): (WebCore::IconDatabase::syncThreadMainLoop): 2012-05-23 Lucas Forschler <lforschler@apple.com> Merge 117501 2012-05-15 Andreas Kling <kling@webkit.org> IconDatabase: Move icon retain/release off of the main thread. <http://webkit.org/b/85799> <rdar://problem/9507113> Reviewed by Brady Eidson. Batch up the retain/release operations and execute them as part of the sync thread loop. The batch execution is guarded by a new mutex (m_urlsToRetainOrReleaseLock.) This avoids blocking the main thread on m_urlAndIconLock for basic retain/release. There is one exception; if there are pending retain/release operations in synchronousIconForPageURL, it will acquire the lock and flush the operations. There should be no behavior change, this is only meant to reduce lock contention. * loader/icon/PageURLRecord.h: (WebCore::PageURLRecord::retain): (WebCore::PageURLRecord::release): Added a 'count' argument to these so we can batch up the operations in IconDatabase. * loader/icon/IconDatabase.h: * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::performScheduleOrDeferSyncTimer): (WebCore::IconDatabase::performScheduleOrDeferSyncTimerOnMainThread): (WebCore::IconDatabase::scheduleOrDeferSyncTimer): Perform the the timer scheduling on the main thread as it can be done on a different thread by way of retainIconForPageURL or releaseIconForPageURL. (WebCore::IconDatabase::synchronousIconForPageURL): (WebCore::IconDatabase::retainIconForPageURL): (WebCore::IconDatabase::performRetainIconForPageURL): (WebCore::IconDatabase::releaseIconForPageURL): (WebCore::IconDatabase::performReleaseIconForPageURL): (WebCore::IconDatabase::retainedPageURLCount): (WebCore::IconDatabase::IconDatabase): (WebCore::IconDatabase::performURLImport): (WebCore::IconDatabase::syncThreadMainLoop): (WebCore::IconDatabase::performPendingRetainAndReleaseOperations): 2012-05-23 Lucas Forschler <lforschler@apple.com> Merge 116543 2012-05-03 Shawn Singh <shawnsingh@chromium.org> Hit testing is incorrect in some cases with perspective transforms https://bugs.webkit.org/show_bug.cgi?id=79136 Reviewed by Simon Fraser. Tests: transforms/3d/hit-testing/coplanar-with-camera.html transforms/3d/hit-testing/perspective-clipped.html * platform/graphics/transforms/TransformationMatrix.cpp: (WebCore::TransformationMatrix::projectPoint): Fix a divide-by-zero error so that values do not become Inf or Nan. Also fix an overflow error by using a large, but not-too-large constant to represent infinity. (WebCore::TransformationMatrix::projectQuad): Fix an error where incorrect quads were being returned. Incorrect quads can occur when projectPoint clamped==true after returning. 2012-05-23 Lucas Forschler <lforschler@apple.com> Merge 116486 2012-05-08 Benjamin Poulain <bpoulain@apple.com> [JSC] Regression: addEventListener() and removeEventListener() raise an exception on missing args https://bugs.webkit.org/show_bug.cgi?id=85928 Reviewed by Geoffrey Garen. The functions addEventListener() and removeEventListener() raise an exception if there are missin arguments. This behavior breaks existing content. This patch change the code generator of JavaScript core to have an exception for addEventListener() and removeEventListener(). For those function, we do not raise an exception on missin argument. This patch does not modify the V8 code generator because such exceptions are already in place there. Tests: fast/dom/Window/window-legacy-event-listener.html fast/dom/XMLHttpRequest-legacy-event-listener.html fast/dom/node-legacy-event-listener.html * bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation): 2012-05-23 Lucas Forschler <lforschler@apple.com> Merge 116319 2012-05-07 Nat Duca <nduca@chromium.org> Unreviewed, rolling out r115525. http://trac.webkit.org/changeset/115525 https://bugs.webkit.org/show_bug.cgi?id=66683 Too many pages rely on DOMTimeStamp as first argument. Reverting while we consider next steps. * WebCore.exp.in: * bindings/js/JSRequestAnimationFrameCallbackCustom.cpp: (WebCore::JSRequestAnimationFrameCallback::handleEvent): * dom/Document.cpp: (WebCore::Document::serviceScriptedAnimations): * dom/Document.h: (Document): * dom/RequestAnimationFrameCallback.h: (RequestAnimationFrameCallback): * dom/RequestAnimationFrameCallback.idl: * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::ScriptedAnimationController): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): (WebCore::ScriptedAnimationController::animationTimerFired): * dom/ScriptedAnimationController.h: (ScriptedAnimationController): (WebCore::ScriptedAnimationController::displayRefreshFired): * page/FrameView.cpp: (WebCore::FrameView::serviceScriptedAnimations): * page/FrameView.h: (FrameView): * platform/graphics/DisplayRefreshMonitor.cpp: (WebCore::DisplayRefreshMonitor::DisplayRefreshMonitor): (WebCore::DisplayRefreshMonitor::notifyClients): * platform/graphics/DisplayRefreshMonitor.h: (DisplayRefreshMonitor): * platform/graphics/blackberry/DisplayRefreshMonitorBlackBerry.cpp: (WebCore::DisplayRefreshMonitor::displayLinkFired): * platform/graphics/mac/DisplayRefreshMonitorMac.cpp: (WebCore): (WebCore::DisplayRefreshMonitor::requestRefreshCallback): (WebCore::DisplayRefreshMonitor::displayLinkFired): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117652 2012-05-18 Dan Bernstein <mitz@apple.com> Build fix after r117607. * platform/mac/WebCoreNSCellExtras.m: 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117607 2012-05-18 Dan Bernstein <mitz@apple.com> <rdar://problem/11467250> No focus ring around popup buttons Reviewed by Anders Carlsson. The exact same issue was fixed for buttons drawn in ThemeMac.mm in <rdar://problem/10542095>. This change extends the fix to also cover buttons drawn in RenderThemeMac.mm. * WebCore.xcodeproj/project.pbxproj: Added WebCoreNSCellExtras.{h.m}. * platform/mac/ThemeMac.mm: Removed the definitions of BUTTON_CELL_DRAW_WITH_FRAME_DRAWS_FOCUS_RING and -[NSCell _web_drawFocusRingWithFrame:inView:] from here. They are now in WebCoreNSCellExtras. * platform/mac/WebCoreNSCellExtras.h: Added. * platform/mac/WebCoreNSCellExtras.m: Added. (-[NSCell _web_drawFocusRingWithFrame:inView:]): Moved from ThemeMac.mm here. * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::paintMenuList): Changed to use -_web_drawFocusRingWithFrame:inView:. (WebCore::RenderThemeMac::setPopupButtonCellState): Removed call to updateFocusedState() when the focus ring is drawn separately. 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117537 2012-05-17 Dan Bernstein <mitz@apple.com> <rdar://problem/11419933> Problems with flipped writing modes and compositing https://bugs.webkit.org/show_bug.cgi?id=86032 Reviewed by Anders Carlsson. Test: compositing/bounds-in-flipped-writing-mode.html * rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateLayerBounds): Apply a writing-mode flip to the bounding box if needed. 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117502 2012-05-17 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=86266 r112643/r116697 break Webview form input fields -and corresponding- <rdar://problem/11400430> Reviewed by Dan Bernstein. There is a recent history of changes in this are that seem worth documenting. First was the change to switch to using NSTextFieldCell to draw text fields: http://trac.webkit.org/changeset/104240 That led to problems because of the clear background that I thought at the time were specific to MountainLion. To fix that, I made this change: http://trac.webkit.org/changeset/110480 But that change resulted in styled text fields getting an un-themed border, which led to this change on the branch: http://trac.webkit.org/changeset/112643 and a change on TOT that was identical for Lion and SnowLeopard but introduced new behavior for MountainLion: http://trac.webkit.org/changeset/116697 And that brings us to this bug, where it turns out the clear background is a problem on Lion and SnowLeopard too. This patch fixes the bug by using the original WebCoreSystemInterface function to paint all text fields on Lion and SnowLeopard that are styled. This is what we used to paint all text fields before r104240, which is the first change listed above. Un-styled text fields will still use NSTextFieldCell on these platforms, but with a hardcoded white background. * rendering/RenderThemeMac.h: (RenderThemeMac): * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::paintTextField): (WebCore::RenderThemeMac::textField): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117366 2012-05-16 Jon Lee <jonlee@apple.com> Animated GIFs in page cache get updated https://bugs.webkit.org/show_bug.cgi?id=86668 <rdar://problem/11395549> Reviewed by Brady Eidson. Test: fast/loader/image-in-page-cache.html * rendering/RenderImage.cpp: (WebCore::RenderImage::imageChanged): When we are notified by the CachedImage that the image has changed, we check to see if the document is in the page cache. If so, we should not be updating, so we bail out early. 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117365 2012-05-16 Tim Horton <timothy_horton@apple.com> Crash if SVG gradient stop has display: none set https://bugs.webkit.org/show_bug.cgi?id=86686 <rdar://problem/10751905> Reviewed by Dean Jackson. Create a renderer for SVGStopElement regardless of the "display" property. This matches the behavior of Opera and the SVG specification. Test: svg/custom/gradient-stop-display-none-crash.svg * svg/SVGStopElement.cpp: (WebCore::SVGStopElement::rendererIsNeeded): (WebCore): * svg/SVGStopElement.h: (SVGStopElement): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117326 2012-05-16 Jer Noble <jer.noble@apple.com> <video> elements with no video tracks report false for webkitSupportsFullscreen. https://bugs.webkit.org/show_bug.cgi?id=86650 Reviewed by Eric Carlson. No new tests; updated media/media-fullscreen-inline.html. With the new Full Screen API, the restriction that only video elements with video tracks can enter full screen seems arbitrary. Some media types will occasionally determine they have video tracks long after loadedmetadata, which breaks websites who check for webkitSupportsFullscreen(). Relax the restriction on webkitSupportsFullscreen() for ports where the Full Screen API is enabled and supported so as to no longer require hasVideo(). * html/HTMLVideoElement.cpp: (WebCore::HTMLVideoElement::supportsFullscreen): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117314 2012-05-16 Tim Horton <timothy_horton@apple.com> Scrollbar layers should respect accelerated drawing setting https://bugs.webkit.org/show_bug.cgi?id=86644 <rdar://problem/11462038> Reviewed by Simon Fraser. When creating scrollbar layers, pass through the accelerated drawing setting. No new tests. * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateOverflowControlsLayers): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117313 2012-05-16 Tim Horton <timothy_horton@apple.com> FrameView::scrollContentsFastPath should use painted area to determine whether to drop out of the fast path https://bugs.webkit.org/show_bug.cgi?id=86651 <rdar://problem/11459243> Reviewed by Simon Fraser. Previously, we decided to fall out of the fast scrolling path by the number of fixed-position elements on the page. This was less than ideal if a single fixed position element took up a significant portion of the page, or if there were many small, cheap-to-paint fixed elements. Instead, we should use the fast path if less than 50% of the page will be repainted by fixed-position elements, and otherwise fall back to the slow path. I've tested a few different thresholds with an internal test; 50% seems to work relatively well, but the ideal value is hard to determine and likely depends on hardware. No new tests, performance improvement with few large fixed-position objects or many small ones. * page/FrameView.cpp: (WebCore::FrameView::scrollContentsFastPath): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117336 2012-05-16 Jeffrey Pfau <jpfau@apple.com> ImageLoader can still dispatch beforeload events for ImageDocuments https://bugs.webkit.org/show_bug.cgi?id=86658 <rdar://problem/11465863> Reviewed by Brady Eidson. Prevent flags regarding sending beforeload events from being set on ImageDocuments. No new tests; testing framework doesn't allow for testing ImageDocuments with injected JavaScript. * loader/ImageLoader.cpp: (WebCore::ImageLoader::updateFromElement): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 117185 2012-05-15 Jeffrey Pfau <jpfau@apple.com> ImageDocuments erroneously trigger beforeload events for the main resource https://bugs.webkit.org/show_bug.cgi?id=86543 <rdar://problem/11309013> Reviewed by Brady Eidson. No new tests; testing framework doesn't allow for testing ImageDocuments with injected JavaScript. * loader/ImageLoader.cpp: (WebCore::ImageLoader::updateFromElement): 2012-05-21 Lucas Forschler <lforschler@apple.com> Merge 116864 2012-05-12 Abhishek Arya <inferno@chromium.org> Crash in HTMLSelectElement::setOption https://bugs.webkit.org/show_bug.cgi?id=85420 Reviewed by Eric Seidel RefPtr before option in HTMLSelectElement::setOption since it can get destroyed due to mutation events. Test: fast/dom/HTMLSelectElement/option-add-crash.html * html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::setOption): 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 116595 2012-05-09 Jessie Berlin <jberlin@apple.com> Crash using the new WKBundleDOMWindowExtensions APIs. https://bugs.webkit.org/show_bug.cgi?id=85888 Reviewed by Brady Eidson. WKBundlePageWillDestroyGlobalObjectForDOMWindowExtensionCallback was only being invoked when the WKPage was destroyed, and then only for the child frames. In addition, the DOMWindowExtension was holding onto a destroyed DOMWindow and attempting to unregister from when the WK2 wrapper object was attempting to destroy the DOMWindowExtension. The underlying issue here was that the DOMWindowProperties were getting disconnectFrame and willDetachPage called on them at the wrong times. Rename DOMWindowProperty::disconnectFrame and reconnectFrame to disconnectFrameForPageCache and reconnectFrameFromPageCache for clarity. Only invoke DOMWindowProperty::disconnectFrameForPageCache when the frame is going into the page cache. In the cases where the DOMWindow is getting destroyed, the frame is being destroyed, or the DOMWindow is getting cleared because the frame is being navigated, invoke DOMWindowProperty::willDestroyGlobalObjectInFrame instead of disconnectFrame. Invoke DOMWindowProperty::willDetachGlobalObjectFromFrame when a document is being detached because the frame has been detached (e.g. fast/storage/storage-detached-iframe.html) and won't be immediately destroyed. Invoke DOMWindowProperty::willDestroyGlobalObjectInCachedFrame when a cached frame is being destroyed. New WK2 API Test: DOMWindowExtensionNoCache. * Modules/indexeddb/DOMWindowIndexedDatabase.cpp: (WebCore::DOMWindowIndexedDatabase::disconnectFrameForPageCache): Updated for disconnectFrame rename. (WebCore::DOMWindowIndexedDatabase::reconnectFrameFromPageCache): Updated for reconnectFrame rename. (WebCore::DOMWindowIndexedDatabase::willDestroyGlobalObjectInCachedFrame): Get rid of the suspended IDBFactory. (WebCore::DOMWindowIndexedDatabase::willDestroyGlobalObjectInFrame): Get rid of the IDBFactory. (WebCore::DOMWindowIndexedDatabase::willDetachGlobalObjectFromFrame): Ditto. * Modules/indexeddb/DOMWindowIndexedDatabase.h: * dom/Document.cpp: (WebCore::Document::prepareForDestruction): Tell the DOMWindow before detaching the Document. * dom/Document.h: * history/CachedFrame.cpp: (WebCore::CachedFrame::destroy): Tell the DOMWindow. * loader/FrameLoader.cpp: (WebCore::FrameLoader::clear): Use Document::prepareForDestruction so that the DOMWindow is told about the main frame navigation before detaching the Document. * loader/appcache/DOMApplicationCache.cpp: (WebCore::DOMApplicationCache::disconnectFrameForPageCache): Updated for the disconnectFrame rename. (WebCore::DOMApplicationCache::reconnectFrameFromPageCache): Updated for the reconnectFrame rename. (WebCore::DOMApplicationCache::willDestroyGlobalObjectInFrame): Cover the cases formerly covered by disconnectFrame (which was sometimes being called when called when the frame was destroyed). * loader/appcache/DOMApplicationCache.h: * notifications/DOMWindowNotifications.cpp: (WebCore::DOMWindowNotifications::disconnectFrameForPageCache): Updated for the disconnectFrame rename. (WebCore::DOMWindowNotifications::reconnectFrameFromPageCache): Updated for the reconnectFrame rename. (WebCore::DOMWindowNotifications::willDestroyGlobalObjectInCachedFrame): Get rid of the suspended notification center. (WebCore::DOMWindowNotifications::willDestroyGlobalObjectInFrame): Get rid of the notification center. (WebCore::DOMWindowNotifications::willDetachGlobalObjectFromFrame): Do not allow use of the notification center by detached frames. * notifications/DOMWindowNotifications.h: * page/DOMWindow.cpp: (WebCore::DOMWindow::clearDOMWindowProperties): Do not call disconnectDOMWindowProperties. It is now the responsibility of the callers to tell the DOMWindowProperties the correct cause of being cleared. (WebCore::DOMWindow::~DOMWindow): Make sure the DOMWindowProperties still know that the DOMWindow is going away. (WebCore::DOMWindow::frameDestroyed): Invoke willDestroyGlobalObjectInFrame on the DOMWindowProperties. (WebCore::DOMWindow::willDetachPage): It is no longer necessary to tell the DOMWindowProperties anything here. (WebCore::DOMWindow::willDestroyCachedFrame): Tell the DOMWindowProperties. (WebCore::DOMWindow::willDestroyDocumentInFrame): Ditto. (WebCore::DOMWindow::willDetachDocumentFromFrame): Ditto. (WebCore::DOMWindow::clear): Ditto. (WebCore::DOMWindow::disconnectDOMWindowProperties): Updated for the disconnectFrame rename. (WebCore::DOMWindow::reconnectDOMWindowProperties): Ditto. * page/DOMWindow.h: * page/DOMWindowExtension.cpp: (WebCore::DOMWindowExtension::DOMWindowExtension): Move the responsibility for tracking the disconnected DOMWindow to DOMWindowProperty, since DOMWindowProperty will need it to unregister the property when a cached frame is destroyed. (WebCore::DOMWindowExtension::disconnectFrameForPageCache): Remove the code to check for disconnectFrame being called twice - it is now only called when a frame goes into the page cache. Let the DOMWindowProperty keep track of the disconnected DOMWindow. (WebCore::DOMWindowExtension::reconnectFrameFromPageCache): Let the DOMWindowProperty keep track of the disconnected DOMWindow. (WebCore::DOMWindowExtension::willDestroyGlobalObjectInCachedFrame): Dispatch the willDestroyGlobalObjectForDOMWindowExtension callback. (WebCore::DOMWindowExtension::willDestroyGlobalObjectInFrame): Ditto, but only if the callback hasn't already been sent because the frame has been detached. (WebCore::DOMWindowExtension::willDetachGlobalObjectFromFrame): Send the callback because nothing interesting can be done in the frame once it has been detached. * page/DOMWindowExtension.h: * page/DOMWindowProperty.cpp: (WebCore::DOMWindowProperty::DOMWindowProperty): Keep track of the disconnected DOMWindow so it can be used to unregister the property when a cached frame is destroyed. (WebCore::DOMWindowProperty::~DOMWindowProperty): Also unregister the property when a DOMWindowProperty for a cached frame is destroyed. (WebCore::DOMWindowProperty::disconnectFrameForPageCache): Keep track of the disconnected DOMWindow. (WebCore::DOMWindowProperty::reconnectFrameFromPageCache): Ditto. (WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame): Unregister the property from the disconnected DOMWindow. (WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame): Unregister the property from the DOMWindow and stop keeping track of the frame. (WebCore::DOMWindowProperty::willDetachGlobalObjectFromFrame): Do not set m_frame to 0 because detached frames still have access to the DOMWindow, even if they can't do anything meaningful with it. * page/DOMWindowProperty.h: * page/Frame.cpp: (WebCore::Frame::setView): Tell the DOMWindow that the Document is being detached so it can tell the DOMWindowProperties. * page/PointerLock.cpp: (WebCore::PointerLock::disconnectFrameForPageCache): Updated for disconnectFrame rename. (WebCore::PointerLock::willDestroyGlobalObjectInFrame): Cover the cases formerly covered by disconnectFrame (which was sometimes being called when called when the frame was destroyed). * page/PointerLock.h: 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117196 2012-05-15 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=86549 Page Scale + Tiled Drawing: Twitter sign in page content disappears after typing into name and enabling password field -and corresponding- <rdar://problem/11415352> Reviewed by Oliver Hunt. The enormous rect we used to use would overflow in CA and do nothing when there was any scale > 1 on the context. Instead, just call setNeedsDisplay on each tile. * platform/graphics/ca/mac/TileCache.mm: (WebCore::TileCache::setNeedsDisplay): 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117165 2012-05-15 Jer Noble <jer.noble@apple.com> r117147 causes a null-deref crash in DOMImplementation::createDocument() https://bugs.webkit.org/show_bug.cgi?id=86532 Reviewed by James Robinson. No new tests, but fixes many crashing tests. Protect against the possibility of being passed a NULL frame in DOMImplementation::createDocument(). * dom/DOMImplementation.cpp: (WebCore::DOMImplementation::createDocument): 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117158 2012-05-15 Jer Noble <jer.noble@apple.com> Unreviewed build fix [Qt]. Protect the definition of DOMImplementationSupportsTypeClient class with #if ENABLE(VIDEO) so as not to cause compilation errors on ports with VIDEO disabled. * dom/DOMImplementation.cpp: 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117147 2012-05-14 Jer Noble <jer.noble@apple.com> Site-specific hack: Disclaim WebM as a supported type on Mac for YouTube. https://bugs.webkit.org/show_bug.cgi?id=86409 Reviewed by Darin Adler. No new tests; site specific hack. Add a Mac-only site-specific hack which disclaims both video/webm and video/x-flv as supported types when the media element's document has a host of youtube.com. Add a new, pure-virtual prototype class for use by MediaPlayer::supportsType: * platform/graphics/MediaPlayer.h: (MediaPlayerSupportsTypeClient): (WebCore::MediaPlayerSupportsTypeClient::~MediaPlayerSupportsTypeClient): (WebCore::MediaPlayerSupportsTypeClient::mediaPlayerNeedsSiteSpecificHacks): (WebCore::MediaPlayerSupportsTypeClient::mediaPlayerDocumentHost): Use these new client calls to determine whether to apply the site-specific hack: * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::supportsType): Add this prototype class as a superclass of HTMLMediaElement. Pass in the HTMLMediaElement's this pointer when calling MediaPlayer::supportsType(): * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::canPlayType): (WebCore::HTMLMediaElement::selectNextSourceChild): (WebCore::HTMLMediaElement::mediaPlayerNeedsSiteSpecificHacks): (WebCore::HTMLMediaElement::mediaPlayerDocumentHost): * html/HTMLMediaElement.h: As is HTMLMediaElement, a MediaPlayerSupportsTypeClient class is needed. Add a new class DOMImplementationSupportsTypeClient, an instance of which will be passed to MediaPlayer::supportsType(): * dom/DOMImplementation.cpp: (DOMImplementationSupportsTypeClient): (WebCore::DOMImplementationSupportsTypeClient::DOMImplementationSupportsTypeClient): (WebCore::DOMImplementation::createDocument): (WebCore::DOMImplementation::mediaPlayerNeedsSiteSpecificHacks): (WebCore::DOMImplementation::mediaPlayerDocumentHost): * dom/DOMImplementation.h: 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117129 2012-05-15 Anders Carlsson <andersca@apple.com> Use unaccelerated scrolling deltas when rubber-banding https://bugs.webkit.org/show_bug.cgi?id=86503 <rdar://problem/11378742> Reviewed by Sam Weinig. * WebCore.exp.in: * platform/PlatformWheelEvent.h: (WebCore::PlatformWheelEvent::PlatformWheelEvent): (PlatformWheelEvent): (WebCore::PlatformWheelEvent::scrollCount): (WebCore::PlatformWheelEvent::unacceleratedScrollingDeltaX): (WebCore::PlatformWheelEvent::unacceleratedScrollingDeltaY): Add scroll count and unaccelerated scrolling deltas. * platform/mac/ScrollElasticityController.mm: (WebCore::elasticDeltaForTimeDelta): (WebCore::elasticDeltaForReboundDelta): (WebCore::reboundDeltaForElasticDelta): Call the new WKSI functions. (WebCore::ScrollElasticityController::handleWheelEvent): Use the unaccelerated scrolling deltas when needed. * platform/mac/WebCoreSystemInterface.h: * platform/mac/WebCoreSystemInterface.mm: Add new WKSI functions. 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117113 2012-05-15 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=86506 REGRESSION (tiled drawing): No scrollbar while page is loading -and corresponding <rdar://problem/11444589> Reviewed by Anders Carlsson. We have always had a mechanism in place to suppress painting overlay scrollbars while the page is loading. However, that mechaism is overriden if the page has been scrolled. It should be, anyway. It was not being overriden when the scrolling was handled as a wheel event by the scrolling tree. This patch takes advantage of the fact that ScrollingTree::handleWheelEvent() already calls back to the main thread for handleWheelEventPhase() and just patches handleWheelEventPhase to mark m_haveScrolledSincePageLoad as true. * platform/mac/ScrollAnimatorMac.mm: (WebCore::ScrollAnimatorMac::handleWheelEventPhase): 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117108 2012-05-15 Andreas Kling <kling@webkit.org> Deep copy PluginModuleInfo before passing across thread boundary. <http://webkit.org/b/86491> <rdar://problem/11451178> Reviewed by Anders Carlsson. * plugins/PluginData.h: (MimeClassInfo): (WebCore::MimeClassInfo::isolatedCopy): (PluginInfo): (WebCore::PluginInfo::isolatedCopy): 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117032 2012-05-14 Tim Horton <timothy_horton@apple.com> RenderLayer::repaintRectIncludingDescendants shouldn't include repaint rects of composited descendants https://bugs.webkit.org/show_bug.cgi?id=86429 <rdar://problem/11445132> Reviewed by Simon Fraser. Change repaintRectIncludingDescendants to not include repaint rects for composited child layers, and rename the function to make it more clear that that's what it does now. No new tests, scrolling performance optimization. * page/FrameView.cpp: (WebCore::FrameView::scrollContentsFastPath): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::repaintRectIncludingNonCompositingDescendants): * rendering/RenderLayer.h: (RenderLayer): 2012-05-16 Lucas Forschler <lforschler@apple.com> Merge 117021 2012-05-14 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=86420 ScrollbarPainter should support expansionTransitionProgress Reviewed by Sam Weinig. expansionTransitionProgress works the same as uiStateTransitionProgress. This code just echoes that code, but for expansion instead of uiState. * platform/mac/NSScrollerImpDetails.h: * platform/mac/ScrollAnimatorMac.mm: (supportsExpansionTransitionProgress): (-[WebScrollbarPartAnimation setCurrentProgress:]): (-[WebScrollbarPainterDelegate cancelAnimations]): (-[WebScrollbarPainterDelegate scrollerImp:animateExpansionTransitionWithDuration:]): (-[WebScrollbarPainterDelegate invalidate]): 2012-05-15 Lucas Forschler <lforschler@apple.com> rollout 116009 2012-05-15 Lucas Forschler <lforschler@apple.com> rollout 116013 2012-05-15 Sam Weinig <sam@webkit.org> <rdar://problem/11401642> ENABLE_IFRAME_SEAMLESS should be turned off on the branch Reviewed by Andy Estes. * Configurations/FeatureDefines.xcconfig: Disable ENABLE_IFRAME_SEAMLESS. 2012-05-15 Sam Weinig <sam@webkit.org> Disable CSS regions <rdar://problem/10887709> Reviewed by Anders Carlsson. * dom/Document.idl: #ifdef out webkitGetFlowByName. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116960 2012-05-14 Eric Carlson <eric.carlson@apple.com> <video> won't load when URL ends with .php https://bugs.webkit.org/show_bug.cgi?id=86308 Reviewed by Darin Adler. Test: http/tests/media/video-query-url.html * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::MediaPlayer): Initialize m_typeInferredFromExtension. (WebCore::MediaPlayer::load): Set m_typeInferredFromExtension appropriately. (WebCore::MediaPlayer::loadWithNextMediaEngine): If we don't find a media engine registered for a MIME type, and the type was inferred from the extension, give the first registered media engine a chance anwyay just as we do when there is no MIME type at all. * platform/graphics/MediaPlayer.h: Add m_typeInferredFromExtension. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116831 2012-05-11 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=86278 Composited layers should only run the overlay scrollbars painting pass if necessary Reviewed by Dan Bernstein. It's not enough that the rootLayer has dirty scrollbars; we also have to actually be doing the overlay scrollbars painting pass to skip the early return. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintLayer): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116830 2012-05-11 Anders Carlsson <andersca@apple.com> Comcast website displays bottom of page when loaded https://bugs.webkit.org/show_bug.cgi?id=86277 <rdar://problem/11426887> Reviewed by Beth Dakin. There were two bugs here. The first bug was that FrameView::setScrollPosition didn't end up calling into the scrolling coordinator to update the scroll position. The second bug was that ScrollingTreeNodeMac::setScrollPosition didn't constrain the scroll position to the edge of the page. * page/FrameView.cpp: (WebCore::FrameView::setScrollPosition): Call requestScrollPositionUpdate. * page/scrolling/ScrollingTree.cpp: * page/scrolling/ScrollingTree.h: Remove setMainFrameScrollPosition, it is not called by anyone. * page/scrolling/mac/ScrollingTreeNodeMac.h: * page/scrolling/mac/ScrollingTreeNodeMac.mm: (WebCore::ScrollingTreeNodeMac::setScrollPosition): Clamp to the page size and call setScrollPositionWithoutContentEdgeConstraints. (WebCore::ScrollingTreeNodeMac::setScrollPositionWithoutContentEdgeConstraints): Update the scroll layer position and call back to the main thread. (WebCore::ScrollingTreeNodeMac::scrollBy): Call setScrollPosition. (WebCore::ScrollingTreeNodeMac::scrollByWithoutContentEdgeConstraints): Call setScrollPositionWithoutContentEdgeConstraints. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116824 2012-05-11 Anders Carlsson <andersca@apple.com> Can't scroll on webpage after following links from Blogger https://bugs.webkit.org/show_bug.cgi?id=86274 <rdar://problem/11431352> Reviewed by Beth Dakin. When committing a new scroll layer, make sure to reset the scroll position. * page/scrolling/ScrollingTree.cpp: (WebCore::ScrollingTree::commitNewTreeState): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116821 2012-05-10 Timothy Hatcher <timothy@apple.com> Instrument timer function calls so they show up in the Web Inspector Timeline. https://webkit.org/b/86173 Reviewed by Pavel Feldman. Test: inspector/timeline/timeline-timer.html * bindings/js/ScheduledAction.cpp: (WebCore::ScheduledAction::executeFunctionInContext): Wrap the call with JSMainThreadExecState::instrumentFunctionCall and InspectorInstrumentation::didCallFunction. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116799 2012-05-11 Tim Horton <timothy_horton@apple.com> FrameView->m_lastPaintTime is not updated in the tiled drawing case https://bugs.webkit.org/show_bug.cgi?id=86246 <rdar://problem/11248475> Reviewed by Simon Fraser. Update FrameView's m_lastPaintTime from RenderLayerBacking::paintContents if the RenderLayerBacking is backing a tiled drawing layer. In the future we might want to consider updating m_lastPaintTime when any compositing layer is painted into, but this change gets us on par with the non-tiled-drawing case as it stands now. No new tests. * page/FrameView.h: (WebCore::FrameView::setLastPaintTime): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::paintContents): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116832 2012-05-11 Jeffrey Pfau <jpfau@apple.com> REGRESSION (r114170): Scroll areas in nested frames improperly placed when tiled drawing is enabled https://bugs.webkit.org/show_bug.cgi?id=86239 Reviewed by Anders Carlsson. Fixes a regression introduced in r114170 by recursively adding positions of parent frames to placement of nested frame scroll areas. Manual tests: ManualTests/scrollable-positioned-frame.html ManualTests/scrollable-positioned-nested-frame.html * page/scrolling/ScrollingCoordinator.cpp: (WebCore::computeNonFastScrollableRegion): (WebCore::ScrollingCoordinator::frameViewLayoutUpdated): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116720 2012-05-10 Anders Carlsson <andersca@apple.com> PDF files won't scroll in Safari when using Adobe plug-in https://bugs.webkit.org/show_bug.cgi?id=86167 <rdar://problem/11389719> Reviewed by Sam Weinig. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::computeNonFastScrollableRegion): Loop over the frame view children looking for plug-in views that want wheel events and add them to the non-fast scrollable region. Ideally, the plug-ins should be added to the set of scrollable areas, but PluginView in WebKit2 is not a ScrollableArea yet. * plugins/PluginViewBase.h: (PluginViewBase): (WebCore::PluginViewBase::wantsWheelEvents): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116720 2012-05-10 Anders Carlsson <andersca@apple.com> PDF files won't scroll in Safari when using Adobe plug-in https://bugs.webkit.org/show_bug.cgi?id=86167 <rdar://problem/11389719> Reviewed by Sam Weinig. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::computeNonFastScrollableRegion): Loop over the frame view children looking for plug-in views that want wheel events and add them to the non-fast scrollable region. Ideally, the plug-ins should be added to the set of scrollable areas, but PluginView in WebKit2 is not a ScrollableArea yet. * plugins/PluginViewBase.h: (PluginViewBase): (WebCore::PluginViewBase::wantsWheelEvents): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116711 2012-05-10 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=86158 Overlay scrollbars without layers never paint in overflow regions in tiled drawing mode -and corresponding- <rdar://problem/11289546> Reviewed by Darin Adler. RenderLayers paint scrollbars that do not have their own layers by running a second pass through the layer tree after the layer tree has painted. This ensures that the scrollbars always paint on top of content. However, this mechanism was relying on FrameView::paintContents() as a choke-point for all painting to trigger the second painting pass. That is not a reasonable choke-point in tiled drawing, so this patch adds similar code to RenderLayerBacking. Only opt into the second painting pass for scrollbars that do not have their own layers. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintOverflowControls): A layer that paints into its backing cannot return early here if it has overlay scrollbars to paint. (WebCore::RenderLayer::paintLayer): This replicates code in FrameView::paintContents(). After painting the owning layer, do a second pass if there are overlay scrollbars to paint. * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::paintIntoLayer): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116697 2012-05-10 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=82131 [Mac] REGRESSION (r110480): Text field that specifies background-color (or is auto-filled) gets un-themed border -and corresponding- <rdar://problem/11115221> Reviewed by Maciej Stachowiak. This change rolls out r110480 which is what caused styled text fields to get the un-themed border, and it does a bunch of work to make sure we get the pretty, new version of the NSTextField art whenever possible. We do this differently for post-Lion OS's since there is now a way to opt into it all the time. Lion and SnowLeopard can only use the new art in HiDPI mode when the background color of the text field is just white. RenderThemeMac::textField() takes a boolean paramter used to determine if the new gradient will be used. * rendering/RenderThemeMac.h: (RenderThemeMac): This is the post-Lion workaround. This code has no effect on Lion and SnowLeopard. This allows up to opt into a version of [NSTextField drawWithFrame:] that will only draw the frame of the text field; without this, it will draw the frame and the background, which creates a number of problems with styled text fields and text fields in HiDPI. There is a less comprehesive workaround for Lion and SnowLeopard in place in RenderThemeMac::textField(). * rendering/RenderThemeMac.mm: (-[WebCoreTextFieldCell _coreUIDrawOptionsWithFrame:inView:includeFocus:]): This is the roll-out of r110480. (WebCore::RenderThemeMac::isControlStyled): See the comments for a full explanation, but this is mostly code for Lion and SnowLeopard to determine if we can opt into the new artwork. (WebCore::RenderThemeMac::paintTextField): (WebCore::RenderThemeMac::textField): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116794 2012-05-11 Anders Carlsson <andersca@apple.com> REGRESSION(r116687): [Chromium] plugins/embed-attributes-style.html shows a garbled string https://bugs.webkit.org/show_bug.cgi?id=86170 Reviewed by Andreas Kling. The string we are passing to the TextRun constructor needs to stay alive for longer so revert back to the old behavior where we store it as a member variable. * rendering/RenderEmbeddedObject.cpp: (WebCore::unavailablePluginReplacementText): (WebCore): (WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason): (WebCore::RenderEmbeddedObject::getReplacementTextGeometry): * rendering/RenderEmbeddedObject.h: (RenderEmbeddedObject): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116695 2012-05-10 Anders Carlsson <andersca@apple.com> WebKit1: Add a way to blacklist specific plug-ins/plug-in versions https://bugs.webkit.org/show_bug.cgi?id=86150 <rdar://problem/9551196> Reviewed by Sam Weinig. * English.lproj/Localizable.strings: Update. * loader/SubframeLoader.cpp: (WebCore::SubframeLoader::loadPlugin): It is possible that the client has already set the unavailability reason so don't try to set it twice. * platform/LocalizedStrings.cpp: (WebCore::insecurePluginVersionText): * platform/LocalizedStrings.h: Add insecure plug-in version text. * rendering/RenderEmbeddedObject.cpp: (WebCore::RenderEmbeddedObject::unavailablePluginReplacementText): * rendering/RenderEmbeddedObject.h: Add InsecurePluginVersion unavailability reason. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116687 2012-05-10 Anders Carlsson <andersca@apple.com> Rename the missing plug-in indicator to the unavailable plug-in indicator https://bugs.webkit.org/show_bug.cgi?id=86136 Reviewed by Sam Weinig. Since the indicator is shown for more than just missing plug-ins, generalize it and use a plug-in unavailability reason enum to make it easier to extend. Also, pass the unavailability reason to the ChromeClient member functions. * WebCore.exp.in: * html/HTMLEmbedElement.cpp: (WebCore::HTMLEmbedElement::updateWidget): * html/HTMLObjectElement.cpp: (WebCore::HTMLObjectElement::updateWidget): * html/HTMLPlugInElement.cpp: (WebCore::HTMLPlugInElement::defaultEventHandler): * html/HTMLPlugInImageElement.cpp: (WebCore::HTMLPlugInImageElement::updateWidgetIfNecessary): * loader/SubframeLoader.cpp: (WebCore::SubframeLoader::loadPlugin): * page/ChromeClient.h: (WebCore::ChromeClient::shouldUnavailablePluginMessageBeButton): (WebCore::ChromeClient::unavailablePluginButtonClicked): * page/FrameView.cpp: (WebCore::FrameView::updateWidget): * rendering/RenderEmbeddedObject.cpp: (WebCore::RenderEmbeddedObject::RenderEmbeddedObject): (WebCore::RenderEmbeddedObject::setPluginUnavailabilityReason): (WebCore::RenderEmbeddedObject::showsUnavailablePluginIndicator): (WebCore::RenderEmbeddedObject::setUnavailablePluginIndicatorIsPressed): (WebCore::RenderEmbeddedObject::paint): (WebCore::RenderEmbeddedObject::paintReplaced): (WebCore::RenderEmbeddedObject::getReplacementTextGeometry): (WebCore::RenderEmbeddedObject::unavailablePluginReplacementText): (WebCore): (WebCore::RenderEmbeddedObject::isInUnavailablePluginIndicator): (WebCore::shouldUnavailablePluginMessageBeButton): (WebCore::RenderEmbeddedObject::handleUnavailablePluginIndicatorEvent): (WebCore::RenderEmbeddedObject::getCursor): * rendering/RenderEmbeddedObject.h: (RenderEmbeddedObject): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116685 2012-05-10 Brady Eidson <beidson@apple.com> <rdar://problem/10972577> and https://bugs.webkit.org/show_bug.cgi?id=80170 Contents of noscript elements turned into strings in WebArchives Reviewed by Andy Estes. There's a much deeper question about how innerHTML of <noscript> is expected to work in both a scripting and non-scripting environment that we should pursue separately. But for webarchives, we can solve this by filtering out the <noscript> elements completely if scripting is enabled. Test: webarchive/ignore-noscript-if-scripting-enabled.html * WebCore.exp.in: Add arguments to createMarkup and MarkupAccumulator methods to pass a Vector of QualifiedNames that should be filtered from the resulting markup: * editing/MarkupAccumulator.cpp: (WebCore::MarkupAccumulator::serializeNodes): (WebCore::MarkupAccumulator::serializeNodesWithNamespaces): * editing/MarkupAccumulator.h: * editing/markup.cpp: (WebCore::createMarkup): * editing/markup.h: If scripting is enabled, add the noscriptTag to the tag names to filter: * loader/archive/cf/LegacyWebArchive.cpp: (WebCore::LegacyWebArchive::create): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116579 2012-05-09 Anders Carlsson <andersca@apple.com> Speed up some parts of TileCache drawing https://bugs.webkit.org/show_bug.cgi?id=86033 <rdar://problem/10919373> Reviewed by Sam Weinig. * platform/graphics/ca/mac/TileCache.mm: (WebCore::TileCache::tileCoverageRect): If we can't have scrollbars, there's not much need to extend the tile coverage rect outside of the visible rect, since it's unlikely that we'll do any form of scrolling here. (WebCore::TileCache::revalidateTiles): Don't update the tile layer frame if it's big enough to contain the tile size. Also, if there are no new tiles created, don't call platformCALayerDidCreateTiles since that will trigger an extra layer flush. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116570 2012-05-09 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=86025 RTL and vertical text documents do no scroll properly with the new tiled scrolling model -and corresponding- <rdar://problem/11077589> Reviewed by Dan Bernstein. Most of the fix here is just to teach the scrolling tree about the scroll origin. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::ScrollingCoordinator::frameViewLayoutUpdated): (WebCore::ScrollingCoordinator::setScrollParameters): * page/scrolling/ScrollingCoordinator.h: (ScrollParameters): * page/scrolling/ScrollingTreeNode.cpp: (WebCore::ScrollingTreeNode::update): * page/scrolling/ScrollingTreeNode.h: (WebCore::ScrollingTreeNode::scrollOrigin): (ScrollingTreeNode): * page/scrolling/ScrollingTreeState.cpp: (WebCore::ScrollingTreeState::setScrollOrigin): (WebCore): * page/scrolling/ScrollingTreeState.h: (WebCore::ScrollingTreeState::scrollOrigin): (ScrollingTreeState): * page/scrolling/mac/ScrollingTreeNodeMac.mm: (WebCore::ScrollingTreeNodeMac::scrollPosition): (WebCore::ScrollingTreeNodeMac::setScrollLayerPosition): (WebCore::ScrollingTreeNodeMac::minimumScrollPosition): (WebCore::ScrollingTreeNodeMac::maximumScrollPosition): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::frameViewDidScroll): Teaching the scrolling tree about the scroll origin revealed this pre- existing bug. layoutOverflowRect() is not the right rect to use since it is not writing-mode savvy. unscaledDocumentRect() is the right rect for the view's bounds. * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateCompositedBounds): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116473 2012-05-08 Jon Lee <jonlee@apple.com> Safari warns that it needs to resend the form in an iFrame when going back https://bugs.webkit.org/show_bug.cgi?id=82658 <rdar://problem/11292558> Reviewed by Darin Adler. Test: http/tests/loading/post-in-iframe-with-back-navigation.html * WebCore.exp.in: Add _wkCFURLRequestAllowAllPostCaching. * platform/mac/WebCoreSystemInterface.h: Add wkCFURLRequestAllowAllPostCaching. * platform/mac/WebCoreSystemInterface.mm: Add wkCFURLRequestAllowAllPostCaching. * platform/network/cf/ResourceRequestCFNet.cpp: (WebCore::ResourceRequest::doUpdatePlatformRequest): Set the bit to cache all POST responses. * platform/network/mac/ResourceRequestMac.mm: (WebCore::ResourceRequest::doUpdatePlatformRequest): Set the bit to cache all POST responses. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116458 2012-05-08 Philip Rogers <pdr@google.com> Prevent crash in animated lists https://bugs.webkit.org/show_bug.cgi?id=85382 Reviewed by Nikolas Zimmermann. Animated lists blindly assign the last list value to m_toAtEndOfDurationType in SVGAnimationElement::startedActiveInterval. If the last list value's length is larger or smaller than the animated "to" length, we crash. This change prevents accessing values off the end of toAtEndOfDuration by adding a check for this case. It may seem inefficient to perform this check on every animation update but the "to" value can change (in cardinality) while animating. I checked each of the other animation types (e.g., SVGAnimatedAngle, SVGAnimatedBoolean, etc.) and was only able to hit this style of crash in the three types modified in this change: SVGAnimatedLengthList, SVGAnimatedNumberList, and SVGAnimatedPointList. Tests: svg/animations/animate-linear-discrete-additive-b-expected.svg svg/animations/animate-linear-discrete-additive-b.svg svg/animations/animate-linear-discrete-additive-c-expected.svg svg/animations/animate-linear-discrete-additive-c.svg svg/animations/animate-linear-discrete-additive-expected.svg svg/animations/animate-linear-discrete-additive.svg svg/animations/animate-list-crash.svg * svg/SVGAnimatedLengthList.cpp: (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): * svg/SVGAnimatedPointList.cpp: (WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116449 2012-05-08 Timothy Hatcher <timothy@apple.com> Fix the SOFT_LINK_STAGED_FRAMEWORK_OPTIONAL macro so it passes the full path to dlopen. dyld only considers libraries in the versioned framework path if their install name matches the library that it is attempting to load. The path we were passing to dlopen lacked the Versions/A component of the path so dyld did not recognize that we wanted it to use the staged version if it is newer. <rdar://problem/11406517> Reviewed by Mark Rowe. * platform/mac/SoftLinking.h: Have SOFT_LINK_STAGED_FRAMEWORK_OPTIONAL take the framework version as an argument and use it when constructing the path to dlopen. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116427 2012-05-08 Stephen Chenney <schenney@chromium.org> Shrink ElementAttributeData by factoring out Attr object count. https://bugs.webkit.org/show_bug.cgi?id=85825 Unreviewed build fix. * dom/ElementAttributeData.cpp: (WebCore::attrListForElement): Was returning false instead of 0 for a pointer value. Now returns 0. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116419 2012-05-08 Andreas Kling <kling@webkit.org> Shrink ElementAttributeData by factoring out Attr object count. <http://webkit.org/b/85825> Reviewed by Antti Koivisto. Stop tracking the number of Attr objects that point to a given Element on the Element itself and manage this by having a global hashmap of Element => AttrList, where AttrList is a vector of (pointers to) the associated Attr objects. This shrinks ElementAttributeData by one integer, effectively reducing memory consumption by ~530kB when viewing the full HTML5 spec at <http://whatwg.org/c>. * dom/ElementAttributeData.h: (ElementAttributeData): Remove m_attrCount... * dom/Node.h: (WebCore::Node::hasAttrList): (WebCore::Node::setHasAttrList): (WebCore::Node::clearHasAttrList): ...replacing it with a Node flag that tells us whether there's an Attr object map for this Node (only applies to Elements.) * dom/ElementAttributeData.cpp: (WebCore::attrListMap): (WebCore::attrListForElement): (WebCore::ensureAttrListForElement): (WebCore::removeAttrListForElement): (WebCore::ElementAttributeData::attrIfExists): (WebCore::ElementAttributeData::ensureAttr): (WebCore::ElementAttributeData::setAttr): (WebCore::ElementAttributeData::removeAttr): (WebCore::ElementAttributeData::detachAttributesFromElement): Map Element => per-Element AttrList in a global hash. 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116395 2012-05-07 Simon Fraser <simon.fraser@apple.com> Compositing layers with transformed children not large enough to show contents https://bugs.webkit.org/show_bug.cgi?id=85855 Reviewed by Dan Bernstein. r114518 added a code path to RenderLayer::calculateLayerBounds() which does an early return if the layer has clipping. However, this code path omitted to take local transforms into account. Fix is to handle transforms as we do in the non-clipped case. Test: compositing/geometry/bounds-clipped-composited-child.html * rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateLayerBounds): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116368 2012-05-07 Enrica Casucci <enrica@apple.com> REGRESSION (r101575): Chinese input is broken when composing mail in iCloud using Safari. https://bugs.webkit.org/show_bug.cgi?id=85840 <rdar://problem/11115520> Reviewed by Alexey Proskuryakov. The revision that broke this, introduced a way to sanitize the markup when deleting a range selection. iCloud listens for DOM modification events and clears the selection, altering the input method state. The fix consists in adding a paramenter to DeleteSelectionCommand to control when we sanitize the markup. * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::deleteSelection): * editing/CompositeEditCommand.h: * editing/DeleteSelectionCommand.cpp: (WebCore::DeleteSelectionCommand::DeleteSelectionCommand): (WebCore::DeleteSelectionCommand::doApply): * editing/DeleteSelectionCommand.h: (WebCore::DeleteSelectionCommand::create): * editing/InsertTextCommand.cpp: (WebCore::InsertTextCommand::doApply): 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116367 2012-05-07 Andy Estes <aestes@apple.com> ENABLE_IFRAME_SEAMLESS should be part of FEATURE_DEFINES. * Configurations/FeatureDefines.xcconfig: 2012-05-15 Lucas Forschler <lforschler@apple.com> Merge 116356 2012-05-07 Eric Seidel <eric@webkit.org> Add ENABLE_IFRAME_SEAMLESS so Apple can turn off SEAMLESS if needed https://bugs.webkit.org/show_bug.cgi?id=85822 Reviewed by Adam Barth. * Configurations/FeatureDefines.xcconfig: * dom/Document.cpp: (WebCore::Document::shouldDisplaySeamlesslyWithParent): 2012-05-04 Ilya Tikhonovsky <loislo@chromium.org> Web Inspector: annotate ProfilerAgent. https://bugs.webkit.org/show_bug.cgi?id=85630 Reviewed by Pavel Feldman. * inspector/Inspector.json: * inspector/InspectorProfilerAgent.cpp: (WebCore::InspectorProfilerAgent::createProfileHeader): (WebCore::InspectorProfilerAgent::createSnapshotHeader): (WebCore::InspectorProfilerAgent::getProfileHeaders): (WebCore): (WebCore::InspectorProfilerAgent::getProfile): * inspector/InspectorProfilerAgent.h: (InspectorProfilerAgent): * inspector/front-end/CSSSelectorProfileView.js: * inspector/front-end/HeapSnapshotView.js: (WebInspector.HeapSnapshotProfileType.prototype.createProfile): * inspector/front-end/ProfileView.js: * inspector/front-end/ProfilesPanel.js: (WebInspector.ProfilesPanel.prototype.addProfileHeader): (WebInspector.ProfilesPanel.prototype._addHeapSnapshotChunk): (WebInspector.ProfilerDispatcher.prototype.resetProfiles): 2012-05-04 Gustavo Noronha Silva <gns@gnome.org> [GTK] Simplify how libWebCoreModules is linked in, and fix WebKit2 build https://bugs.webkit.org/show_bug.cgi?id=85691 * GNUmakefile.am: link libWebCoreModules into libWebCore. 2012-05-04 Kent Tamura <tkent@chromium.org> Rename ICULocale to LocaleICU, part 1 https://bugs.webkit.org/show_bug.cgi?id=85688 Reviewed by Kentaro Hara. Rename it for consistency. Our convention is Foo<Platform>.{cpp,h}. This patch changes only file names. We'll rename ICULocale class by a following patch. No behavior changes. * WebCore.gypi: * platform/text/LocaleICU.cpp: Renamed from Source/WebCore/platform/text/ICULocale.cpp. * platform/text/LocaleICU.h: Renamed from Source/WebCore/platform/text/ICULocale.h. * platform/text/LocalizedDateICU.cpp: Rename ICULocale.h to LocaleICU.h. * platform/text/LocalizedNumberICU.cpp: ditto. 2012-05-04 Julien Chaffraix <jchaffraix@webkit.org> Leaf non self-painting layers should bail out early in RenderLayer::paintLayer https://bugs.webkit.org/show_bug.cgi?id=85678 Reviewed by Darin Adler. Performance optimization, no expected change in behavior. The gist of the change is that leaf non self-painting layers don't need to be painted as their associated RenderBoxModelObject should properly paint itself without any help. For RenderLayer trees that have a large number of leafs nodes (like a table with a leaf RenderLayer for each cells), not bailing out is a big overhead as it ends up doing a lot of computation for no real painting. See http://dglazkov.github.com/performance-tests/biggrid.html for a benchmark for that. On my machine, it reduces the paint time when scrolling to 70ms from 120ms (45% speedup). * rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintLayer): 2012-05-04 Rob Buis <rbuis@rim.com> Remove InlineBox::next() https://bugs.webkit.org/show_bug.cgi?id=85668 Reviewed by Nikolas Zimmermann. InlineBox::next() not needed since nextOnLine() does the same. * rendering/InlineBox.h: (InlineBox): * rendering/InlineFlowBox.h: (WebCore::InlineFlowBox::setConstructed): 2012-05-04 Chris Rogers <crogers@google.com> Oscillator must implement noteOn() and noteOff() https://bugs.webkit.org/show_bug.cgi?id=85236 Reviewed by Kenneth Russell. Test: webaudio/oscillator-scheduling.html to be landed separately to get proper platform baselines * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore::AudioBufferSourceNode::process): Simplify/remove zeroing-out silence at end of buffer, since it's now handled in the base-class AudioScheduledSourceNode::updateSchedulingInfo(). * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::createBufferSource): Improve comment about ownership and dynamic-lifetime of AudioBufferSourceNode. (WebCore::AudioContext::createOscillator): AudioContext keeps a reference to the Oscillator and that reference is released in AudioScheduledSourceNode, when it has finished playing. * Modules/webaudio/AudioScheduledSourceNode.h: * Modules/webaudio/AudioScheduledSourceNode.cpp: (WebCore::AudioScheduledSourceNode::updateSchedulingInfo): updateSchedulingInfo() is now responsible for zeroing out the very start (before a note starts) and the very end (after note ends) of the output AudioBus. We've also simplified the number of arguments passed to this method, because of this. It now handles playbackState transition to FINISHED_STATE. * Modules/webaudio/Oscillator.cpp: (WebCore::Oscillator::Oscillator): (WebCore::Oscillator::calculateSampleAccuratePhaseIncrements): The frequency value needs to snap immediately to its correct value the very first time. This bug needs to be fixed here so that the Oscillator layout scheduling test works correctly. (WebCore::Oscillator::process): Since Oscillator in now changing to be a AudioScheduledSourceNode, we need to call AudioScheduledSourceNode::updateSchedulingInfo() to handle playbackState for us. (WebCore::Oscillator::propagatesSilence): Add scheduling logic for propagatesSilence(). (Oscillator): * Modules/webaudio/Oscillator.idl: Add noteOn(), noteOff() methods and playbackState according to specification. 2012-05-04 Andy Estes <aestes@apple.com> Remove uses of ASSERT(false) https://bugs.webkit.org/show_bug.cgi?id=85686 Reviewed by Dean Jackson. Replace uses of ASSERT(false) with ASSERT_NOT_REACHED(). Also, in two places, there was code structured like: if (expr) { // do something } else { ASSERT(false); } Replace this with: ASSERT(expr); if (!expr) return; // do something * Modules/webdatabase/DatabaseTracker.cpp: (WebCore::DatabaseTracker::deleteOrigin): (WebCore::DatabaseTracker::doneCreatingDatabase): (WebCore::DatabaseTracker::doneDeletingDatabase): (WebCore::DatabaseTracker::deleteDatabase): * bridge/objc/objc_instance.mm: (ObjcInstance::invokeObjcMethod): * bridge/objc/objc_utility.mm: (JSC::Bindings::convertObjcValueToValue): (JSC::Bindings::objcValueTypeForType): * dom/Node.cpp: (WebCore::Node::createRenderer): * loader/icon/IconDatabase.cpp: (WebCore::IconDatabase::setIconURLForPageURLInSQLDatabase): (WebCore::IconDatabase::setIconIDForPageURLInSQLDatabase): * platform/graphics/GraphicsContext3D.cpp: (WebCore::doPacking): * platform/text/BidiResolver.h: (WebCore::::createBidiRunsForLine): 2012-05-04 Noel Gordon <noel.gordon@gmail.com> [CG] Minor refactor of ImageBuffer::CGImageToDataURL and its callers https://bugs.webkit.org/show_bug.cgi?id=85280 Reviewed by Kenneth Russell. This patch means to simplify the diff of an upcoming patch. Refactoring here in preparation for that patch. No new tests. No behavioral change. Covered by canvas 2d and 3d tests: canvas/philip/tests/*toDataURL*.html fast/canvas/webgl/premultiplyalpha-test.html * platform/graphics/cg/ImageBufferCG.cpp: (WebCore::CGImageToDataURL): Move the invalid image (!image) test here. The comments are about JPEG images; say that. Rename out to base64Data. (WebCore::ImageBuffer::toDataURL): Remove the !image test. (WebCore::ImageDataToDataURL): Move and define variables where used and make the code flow read similarly to toDataURL. Remove the !image test. 2012-05-04 Shawn Singh <shawnsingh@chromium.org> [chromium] Changes to layer tree structure need to be tracked properly https://bugs.webkit.org/show_bug.cgi?id=85421 Reviewed by Adrienne Walker. Unit test added: TreeSynchronizerTest.syncSimpleTreeAndTrackStackingOrderChange Earlier, we were relying on WebCore behavior that always called setNeedsDisplay whenever the layer tree structure changed. However, in general it is more correct to consider layer tree changes even when things don't need repainting; for example Aura code is encountring this bug now. This patch corrects the compositor so that layer tree structural changes are considered property changes, without requiring that layers needed to be repainted. * platform/graphics/chromium/LayerChromium.cpp: (WebCore::LayerChromium::LayerChromium): (WebCore::LayerChromium::insertChild): (WebCore::LayerChromium::pushPropertiesTo): * platform/graphics/chromium/LayerChromium.h: (LayerChromium): * platform/graphics/chromium/cc/CCLayerImpl.cpp: (WebCore::CCLayerImpl::setStackingOrderChanged): (WebCore): * platform/graphics/chromium/cc/CCLayerImpl.h: (CCLayerImpl): 2012-05-04 Jeffrey Pfau <jpfau@apple.com> Unreviewed; build fix after r116191. * bindings/js/JSEventListener.h: 2012-05-04 Enrica Casucci <enrica@apple.com> REGRESSION: Cursor jumps to the first line after deleting the last word. https://bugs.webkit.org/show_bug.cgi?id=85334 <rdar://problem/11210059> Reviewed by Ryosuke Niwa. This regression was introduced with the work to remove redundant divs. When we decide to remove a DIV, we need to adjust the selection, if it is expressed in terms of the node being removed. The new position was computed using updatePositionForNodeRemoval that was not designed for the case where we remove preserving children. This patch adds a new method to CompositeEditCommand to do this properly. Test: editing/deleting/delete-word-from-unstyled-div.html * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::isRemovableBlock): Code clenup. (WebCore::CompositeEditCommand::updatePositionForNodeRemovalPreservingChildren): Added. * editing/CompositeEditCommand.h: * editing/DeleteSelectionCommand.cpp: (WebCore::DeleteSelectionCommand::removeRedundantBlocks): Uses updatePositionForNodeRemovalPreservingChildren. 2012-05-04 Jeffrey Pfau <jpfau@apple.com> Prevent early EventListener deletion https://bugs.webkit.org/show_bug.cgi?id=73970 Reviewed by Oliver Hunt. Test: fast/events/attribute-listener-deletion-crash.html * bindings/js/JSEventListener.h: (WebCore::JSEventListener::jsFunction): 2012-05-04 Yongjun Zhang <yongjun_zhang@apple.com> Add "combining short stroke overlay character (u0335)" to lookalike characters blacklist. https://bugs.webkit.org/show_bug.cgi?id=85440 Reviewed by David Kilzer. We should add u0335 to the characters blacklist. * platform/mac/WebCoreNSURLExtras.mm: (WebCore::isLookalikeCharacter): 2012-05-04 Satoru Takabayashi <satorux@chromium.org> [chromium] Add plumbing for file display names for drag and drop https://bugs.webkit.org/show_bug.cgi?id=85673 Reviewed by Darin Fisher. No new tests: this change itself shouldn't change existing behavior. * platform/chromium/ChromiumDataObject.cpp: (WebCore::ChromiumDataObject::addFilename): * platform/chromium/ChromiumDataObject.h: (ChromiumDataObject): 2012-05-04 Levi Weintraub <leviw@chromium.org> Correct pixel snapping in RenderSVGRoot::paintReplaced https://bugs.webkit.org/show_bug.cgi?id=85671 Reviewed by Eric Seidel. SVG root elements are still painted on pixel boundaries, so their children should apply transforms based on their actual painted location, not their sub-pixel one. This corrects a clipping and painting issue where these sub-pixel units are incorrectly applied to the graphics context. Covered by existing tests when sub-pixel layout is enabled. * rendering/svg/RenderSVGRoot.cpp: (WebCore::RenderSVGRoot::paintReplaced): 2012-05-04 Adam Barth <abarth@webkit.org> Refactor CSP state to prepare for having both a ReportOnly and an Enforced policy https://bugs.webkit.org/show_bug.cgi?id=85662 Reviewed by Eric Seidel. This patch refactors the ContentSecurityPolicy state into a separate DirectiveList class to prepare for https://bugs.webkit.org/show_bug.cgi?id=85561, which will cause us to need two directive lists: one for enforcement and one for monitoring. This patch shouldn't cause any change in behavior. * page/ContentSecurityPolicy.cpp: (CSPDirectiveList): (WebCore::CSPDirectiveList::header): (WebCore::CSPDirectiveList::headerType): (WebCore::CSPDirectiveList::denyIfEnforcingPolicy): (WebCore): (WebCore::CSPDirectiveList::CSPDirectiveList): (WebCore::CSPDirectiveList::create): (WebCore::CSPDirectiveList::reportViolation): (WebCore::CSPDirectiveList::logUnrecognizedDirective): (WebCore::CSPDirectiveList::checkEval): (WebCore::CSPDirectiveList::operativeDirective): (WebCore::CSPDirectiveList::checkInlineAndReportViolation): (WebCore::CSPDirectiveList::checkEvalAndReportViolation): (WebCore::CSPDirectiveList::checkSourceAndReportViolation): (WebCore::CSPDirectiveList::allowJavaScriptURLs): (WebCore::CSPDirectiveList::allowInlineEventHandlers): (WebCore::CSPDirectiveList::allowInlineScript): (WebCore::CSPDirectiveList::allowInlineStyle): (WebCore::CSPDirectiveList::allowEval): (WebCore::CSPDirectiveList::allowScriptFromSource): (WebCore::CSPDirectiveList::allowObjectFromSource): (WebCore::CSPDirectiveList::allowChildFrameFromSource): (WebCore::CSPDirectiveList::allowImageFromSource): (WebCore::CSPDirectiveList::allowStyleFromSource): (WebCore::CSPDirectiveList::allowFontFromSource): (WebCore::CSPDirectiveList::allowMediaFromSource): (WebCore::CSPDirectiveList::allowConnectFromSource): (WebCore::CSPDirectiveList::parse): (WebCore::CSPDirectiveList::parseDirective): (WebCore::CSPDirectiveList::parseReportURI): (WebCore::CSPDirectiveList::createCSPDirective): (WebCore::CSPDirectiveList::applySandboxPolicy): (WebCore::CSPDirectiveList::addDirective): (WebCore::ContentSecurityPolicy::ContentSecurityPolicy): (WebCore::ContentSecurityPolicy::~ContentSecurityPolicy): (WebCore::ContentSecurityPolicy::copyStateFrom): (WebCore::ContentSecurityPolicy::didReceiveHeader): (WebCore::ContentSecurityPolicy::setOverrideAllowInlineStyle): (WebCore::ContentSecurityPolicy::header): (WebCore::ContentSecurityPolicy::headerType): (WebCore::ContentSecurityPolicy::allowJavaScriptURLs): (WebCore::ContentSecurityPolicy::allowInlineEventHandlers): (WebCore::ContentSecurityPolicy::allowInlineScript): (WebCore::ContentSecurityPolicy::allowInlineStyle): (WebCore::ContentSecurityPolicy::allowEval): (WebCore::ContentSecurityPolicy::allowScriptFromSource): (WebCore::ContentSecurityPolicy::allowObjectFromSource): (WebCore::ContentSecurityPolicy::allowChildFrameFromSource): (WebCore::ContentSecurityPolicy::allowImageFromSource): (WebCore::ContentSecurityPolicy::allowStyleFromSource): (WebCore::ContentSecurityPolicy::allowFontFromSource): (WebCore::ContentSecurityPolicy::allowMediaFromSource): (WebCore::ContentSecurityPolicy::allowConnectFromSource): * page/ContentSecurityPolicy.h: (WebCore): * workers/WorkerMessagingProxy.cpp: (WebCore::WorkerMessagingProxy::startWorkerContext): 2012-05-04 Abhishek Arya <inferno@chromium.org> ASSERT(beforeChildAnonymousContainer->isTable()); fails in RenderBlock::addChildIgnoringAnonymousColumnBlocks. https://bugs.webkit.org/show_bug.cgi?id=84606 Reviewed by Julien Chaffraix. RenderBlock::removeChild forgot to set display on the anonymous block, causing it to display as INLINE. To prevent this kind of failure in future, we replace createAnonymousStyle with createAnonymousStyleWithDisplay to make everyone explictly pass display as the argument. Test: fast/block/block-add-child-crash.html * rendering/RenderBlock.cpp: (WebCore::RenderBlock::removeChild): (WebCore::RenderBlock::createAnonymousWithParentRendererAndDisplay): (WebCore::RenderBlock::createAnonymousColumnsWithParentRenderer): (WebCore::RenderBlock::createAnonymousColumnSpanWithParentRenderer): * rendering/RenderInline.cpp: (WebCore::updateStyleOfAnonymousBlockContinuations): (WebCore::RenderInline::addChildIgnoringContinuation): * rendering/RenderObject.cpp: (WebCore::RenderObject::propagateStyleToAnonymousChildren): * rendering/RenderRuby.cpp: (WebCore::createAnonymousRubyInlineBlock): * rendering/RenderRubyRun.cpp: (WebCore::RenderRubyRun::createRubyBase): (WebCore::RenderRubyRun::staticCreateRubyRun): * rendering/RenderTable.cpp: (WebCore::RenderTable::createAnonymousWithParentRenderer): * rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::createAnonymousWithParentRenderer): * rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::createAnonymousWithParentRenderer): * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::createAnonymousWithParentRenderer): * rendering/mathml/RenderMathMLBlock.cpp: (WebCore::RenderMathMLBlock::createAlmostAnonymousBlock): * rendering/mathml/RenderMathMLRow.cpp: (WebCore::RenderMathMLRow::createAnonymousWithParentRenderer): * rendering/mathml/RenderMathMLSubSup.cpp: (WebCore::RenderMathMLSubSup::addChild): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::createAnonymousStyleWithDisplay): * rendering/style/RenderStyle.h: 2012-04-27 Erik Arvidsson <arv@chromium.org> WebKit IDL does not use exception syntax https://bugs.webkit.org/show_bug.cgi?id=85100 Reviewed by Dimitri Glazkov. This adds support for exception ExceptionName { ... } which currently sets a flag on the domClass. Binding tests updated. * Modules/indexeddb/IDBDatabaseException.idl: * Modules/webdatabase/SQLException.idl: * bindings/scripts/IDLParser.pm: (ParseInterface): (DetermineParseMode): (ProcessSection): * bindings/scripts/IDLStructure.pm: * bindings/scripts/test/CPP/WebDOMTestException.cpp: Added. (WebDOMTestException::WebDOMTestExceptionPrivate::WebDOMTestExceptionPrivate): (WebDOMTestException::WebDOMTestExceptionPrivate): (WebDOMTestException::WebDOMTestException): (WebDOMTestException::operator=): (WebDOMTestException::impl): (WebDOMTestException::~WebDOMTestException): (WebDOMTestException::name): (toWebCore): (toWebKit): * bindings/scripts/test/CPP/WebDOMTestException.h: Added. (WebCore): (WebDOMTestException): * bindings/scripts/test/GObject/WebKitDOMTestException.cpp: Added. (WebKit): (WebKit::kit): (WebKit::core): (WebKit::wrapTestException): (webkit_dom_test_exception_finalize): (webkit_dom_test_exception_set_property): (webkit_dom_test_exception_get_property): (webkit_dom_test_exception_constructed): (webkit_dom_test_exception_class_init): (webkit_dom_test_exception_init): (webkit_dom_test_exception_get_name): * bindings/scripts/test/GObject/WebKitDOMTestException.h: Added. (_WebKitDOMTestException): (_WebKitDOMTestExceptionClass): * bindings/scripts/test/GObject/WebKitDOMTestExceptionPrivate.h: Added. (WebKit): * bindings/scripts/test/JS/JSTestException.cpp: Added. (WebCore): (WebCore::JSTestExceptionConstructor::JSTestExceptionConstructor): (WebCore::JSTestExceptionConstructor::finishCreation): (WebCore::JSTestExceptionConstructor::getOwnPropertySlot): (WebCore::JSTestExceptionConstructor::getOwnPropertyDescriptor): (WebCore::JSTestExceptionPrototype::self): (WebCore::JSTestException::JSTestException): (WebCore::JSTestException::finishCreation): (WebCore::JSTestException::createPrototype): (WebCore::JSTestException::destroy): (WebCore::JSTestException::~JSTestException): (WebCore::JSTestException::getOwnPropertySlot): (WebCore::JSTestException::getOwnPropertyDescriptor): (WebCore::jsTestExceptionName): (WebCore::jsTestExceptionConstructor): (WebCore::JSTestException::getConstructor): (WebCore::isObservable): (WebCore::JSTestExceptionOwner::isReachableFromOpaqueRoots): (WebCore::JSTestExceptionOwner::finalize): (WebCore::toJS): (WebCore::toTestException): * bindings/scripts/test/JS/JSTestException.h: Added. (WebCore): (JSTestException): (WebCore::JSTestException::create): (WebCore::JSTestException::createStructure): (WebCore::JSTestException::impl): (WebCore::JSTestException::releaseImpl): (WebCore::JSTestException::releaseImplIfNotNull): (JSTestExceptionOwner): (WebCore::wrapperOwner): (WebCore::wrapperContext): (JSTestExceptionPrototype): (WebCore::JSTestExceptionPrototype::create): (WebCore::JSTestExceptionPrototype::createStructure): (WebCore::JSTestExceptionPrototype::JSTestExceptionPrototype): (JSTestExceptionConstructor): (WebCore::JSTestExceptionConstructor::create): (WebCore::JSTestExceptionConstructor::createStructure): * bindings/scripts/test/ObjC/DOMTestException.h: Added. * bindings/scripts/test/ObjC/DOMTestException.mm: Added. (-[DOMTestException dealloc]): (-[DOMTestException finalize]): (-[DOMTestException name]): (core): (kit): * bindings/scripts/test/ObjC/DOMTestExceptionInternal.h: Added. (WebCore): * bindings/scripts/test/TestException.idl: Copied from Source/WebCore/xml/XPathException.idl. * bindings/scripts/test/V8/V8TestException.cpp: Added. (WebCore): (TestExceptionV8Internal): (WebCore::TestExceptionV8Internal::V8_USE): (WebCore::TestExceptionV8Internal::nameAttrGetter): (WebCore::ConfigureV8TestExceptionTemplate): (WebCore::V8TestException::GetRawTemplate): (WebCore::V8TestException::GetTemplate): (WebCore::V8TestException::HasInstance): (WebCore::V8TestException::wrapSlow): (WebCore::V8TestException::derefObject): * bindings/scripts/test/V8/V8TestException.h: Added. (WebCore): (V8TestException): (WebCore::V8TestException::toNative): (WebCore::V8TestException::wrap): (WebCore::toV8): * dom/DOMCoreException.idl: * dom/EventException.idl: * dom/RangeException.idl: * fileapi/FileException.idl: * fileapi/OperationNotAllowedException.idl: * svg/SVGException.idl: * xml/XMLHttpRequestException.idl: * xml/XPathException.idl: 2012-05-04 Rafael Weinstein <rafaelw@chromium.org> V8RecursionScope not declared in V8Proxy::newInstance which causes ASSERT() failure from NPAPI https://bugs.webkit.org/show_bug.cgi?id=85659 Reviewed by Ojan Vafai. Added a stack-allocted V8RecursionScope to the newInstance call. No new tests. No change in observable behavior. * bindings/v8/V8Proxy.cpp: (WebCore::V8Proxy::newInstance): 2012-05-04 Joshua Bell <jsbell@chromium.org> IndexedDB: Remove all index metadata records when deleting an index https://bugs.webkit.org/show_bug.cgi?id=85557 Reviewed by Tony Chang. An assert is hit when re-loading database from backing store due to stale index metadata entry. Do a range delete to clear all metadata entries when deleting an index. Define metadata entries as enum and limits as consts instead of hardcoded ints. No new tests - issue does not repro as layout test. Will land test in Chromium. * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore::getBool): Helper functions; replaces pattern of putInt()/read only lead byte. (WebCore): (WebCore::putBool): (WebCore::IDBLevelDBBackingStore::getObjectStores): Skip stale data. Use enums, helpers. (WebCore::IDBLevelDBBackingStore::createObjectStore): Use enums. (WebCore::IDBLevelDBBackingStore::deleteObjectStore): Use enums. (WebCore::getNewVersionNumber): Use enums. (WebCore::IDBLevelDBBackingStore::getIndexes): Skip stale data. Use enums, helpers. (WebCore::getNewIndexId): Use enums. (WebCore::IDBLevelDBBackingStore::createIndex): Use enums. (WebCore::IDBLevelDBBackingStore::deleteIndex): Delete metadata by range. * Modules/indexeddb/IDBLevelDBCoding.cpp: (IDBLevelDBCoding): Add constants for metadata maximum values. (WebCore::IDBLevelDBCoding::encodeBool): (WebCore::IDBLevelDBCoding::decodeBool): (WebCore::IDBLevelDBCoding::ObjectStoreMetaDataKey::encodeMaxKey): Use consts. (WebCore::IDBLevelDBCoding::IndexMetaDataKey::encodeMaxKey): Use consts. * Modules/indexeddb/IDBLevelDBCoding.h: (IDBLevelDBCoding): Expose enums for metadata types. 2012-05-04 Anders Carlsson <andersca@apple.com> Move markPagesForFullStyleRecalc to PageCache https://bugs.webkit.org/show_bug.cgi?id=85664 Reviewed by Dan Bernstein. Instead of going through all the history items in the back/forward list looking for cached pages, just iterate over the cached pages in the page. * history/BackForwardController.cpp: * history/BackForwardController.h: * history/HistoryItem.cpp: * history/HistoryItem.h: * history/PageCache.cpp: (WebCore::PageCache::markPagesForFullStyleRecalc): (WebCore): * history/PageCache.h: (PageCache): * page/Frame.cpp: (WebCore::Frame::setPageAndTextZoomFactors): * page/Page.cpp: (WebCore::Page::setDeviceScaleFactor): (WebCore::Page::setPagination): 2012-05-04 Tony Chang <tony@chromium.org> The computed style of flex-item-align should never be auto. https://bugs.webkit.org/show_bug.cgi?id=85656 Reviewed by Ojan Vafai. If the node lacks a parent and flex-item-align is auto, we should return stretch. This was recently clarified in the spec. New testcase in css3/flexbox/css-properties.html. * css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): 2012-05-04 Christophe Dumez <christophe.dumez@intel.com> [soup] URL of the ResourceResponse passed to willSendRequest is incorrect https://bugs.webkit.org/show_bug.cgi?id=85072 Reviewed by Gustavo Noronha Silva. Store the response message by catching the "got-headers" signal so that it can be passed later to willSendRequest() in case of redirection. This is required because the SoupMessage headers and URL have already been updated once restartedCallback() is called. * platform/network/soup/ResourceHandleSoup.cpp: (WebCore): (WebCore::gotHeadersCallback): (WebCore::restartedCallback): (WebCore::sendRequestCallback): (WebCore::startHTTPRequest): 2012-05-04 Ian Vollick <vollick@chromium.org> [chromium] CCProxy's shouldn't try to draw if there is no layer renderer https://bugs.webkit.org/show_bug.cgi?id=85218 Reviewed by Adrienne Walker. * platform/graphics/chromium/cc/CCThreadProxy.cpp: (WebCore::CCThreadProxy::scheduledActionDrawAndSwapInternal): 2012-05-04 Rob Buis <rbuis@rim.com> [BlackBerry] Rendering bmp file as text file when Content-Type:image/x-ms-bmp from apache web server. https://bugs.webkit.org/show_bug.cgi?id=85036 Reviewed by Antonio Gomes. Move getNormalizedMIMEType from WebKit into MIMETypeRegistry. This way we support uncommon mime types like image/pjpeg and image/x-ms-bmp out of the box since we map to the more common image/jpeg and image/bmp respectively. * platform/MIMETypeRegistry.cpp: (WebCore::initializeSupportedImageMIMETypes): (WebCore::MIMETypeRegistry::isSupportedImageMIMEType): (WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType): (WebCore): (WebCore::mimeTypeAssociationMap): (WebCore::MIMETypeRegistry::getNormalizedMIMEType): * platform/MIMETypeRegistry.h: (MIMETypeRegistry): 2012-05-04 Sami Kyostila <skyostil@chromium.org> [chromium] Revert compositor layer scrolling https://bugs.webkit.org/show_bug.cgi?id=85644 Reviewed by Steve Block. This patch reverts the following commits because they were found to trigger crashes. See discussion at http://code.google.com/p/chromium/issues/detail?id=124393. [chromium] Allow scrolling non-root layers in the compositor thread http://trac.webkit.org/changeset/114651 [chromium] Don't crash when scrolling empty layer tree http://trac.webkit.org/changeset/114761 [chromium] Don't keep pointers to released layer tree http://trac.webkit.org/changeset/115080 * platform/graphics/chromium/ContentLayerChromium.cpp: * platform/graphics/chromium/ContentLayerChromium.h: (ContentLayerChromium): * platform/graphics/chromium/GraphicsLayerChromium.h: (GraphicsLayerChromium): * platform/graphics/chromium/LayerChromium.cpp: (WebCore::LayerChromium::pushPropertiesTo): * platform/graphics/chromium/LayerChromium.h: (LayerChromium): * platform/graphics/chromium/cc/CCLayerImpl.cpp: * platform/graphics/chromium/cc/CCLayerImpl.h: * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: (WebCore::CCLayerTreeHost::applyScrollAndScale): * platform/graphics/chromium/cc/CCLayerTreeHostCommon.h: (CCLayerTreeHostCommon): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::CCLayerTreeHostImpl): (WebCore::CCLayerTreeHostImpl::startPageScaleAnimation): (WebCore::CCLayerTreeHostImpl::calculateRenderSurfaceLayerList): (WebCore::CCLayerTreeHostImpl::contentSize): (WebCore::CCLayerTreeHostImpl::prepareToDraw): (WebCore::findScrollLayer): (WebCore::CCLayerTreeHostImpl::setRootLayer): (WebCore::CCLayerTreeHostImpl::setPageScaleFactorAndLimits): (WebCore): (WebCore::CCLayerTreeHostImpl::adjustScrollsForPageScaleChange): (WebCore::CCLayerTreeHostImpl::setPageScaleDelta): (WebCore::CCLayerTreeHostImpl::applyPageScaleDeltaToScrollLayer): (WebCore::CCLayerTreeHostImpl::updateMaxScrollPosition): (WebCore::CCLayerTreeHostImpl::scrollBegin): (WebCore::CCLayerTreeHostImpl::scrollBy): (WebCore::CCLayerTreeHostImpl::scrollEnd): (WebCore::CCLayerTreeHostImpl::pinchGestureUpdate): (WebCore::CCLayerTreeHostImpl::computePinchZoomDeltas): (WebCore::CCLayerTreeHostImpl::makeScrollAndScaleSet): (WebCore::CCLayerTreeHostImpl::processScrollDeltas): (WebCore::CCLayerTreeHostImpl::animatePageScale): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (WebCore::CCLayerTreeHostImpl::releaseRootLayer): (WebCore::CCLayerTreeHostImpl::scrollLayer): (CCLayerTreeHostImpl): 2012-05-04 Ojan Vafai <ojan@chromium.org> Remove file that was deleted in http://trac.webkit.org/changeset/116085/. For some reason, this was breaking the chromium build (probably a gyp bug since chromium shouldn't be pulling in this file). * WebCore.gypi: 2012-05-04 Tony Chang <tony@chromium.org> fix bit packing in FillLayer on Windows https://bugs.webkit.org/show_bug.cgi?id=85636 Reviewed by Ryosuke Niwa. Use unsigned for all bit packed types. I manually verified that the current uses of these member variables always assign true or false. No new tests, adding a compile assert to verify bit packing. * rendering/style/FillLayer.cpp: (SameSizeAsFillLayer): Added compile assert. (WebCore): (WebCore::FillLayer::FillLayer): Reorder m_sizeLength so bit packed fields are adjacent. (WebCore::FillLayer::operator=): Ditto. * rendering/style/FillLayer.h: (FillLayer): Convert bools to unsigned to match other bit packed fields. 2012-05-04 Tommy Widenflycht <tommyw@google.com> MediaStream API: Make PeerConnection00's API fully compliant with the draft https://bugs.webkit.org/show_bug.cgi?id=85491 Reviewed by Adam Barth. Mainly making the relevant API's use objects (aka Dictionaries) instead of the temporary strings, but also making a few API's exception aware and changing the name of a flag. Test: fast/mediastream/peerconnection-iceoptions.html * Modules/mediastream/PeerConnection00.cpp: (WebCore::PeerConnection00::createMediaHints): (WebCore::PeerConnection00::createOffer): (WebCore): (WebCore::PeerConnection00::createAnswer): (WebCore::PeerConnection00::createIceOptions): (WebCore::PeerConnection00::createDefaultIceOptions): (WebCore::PeerConnection00::startIce): (WebCore::PeerConnection00::addStream): (WebCore::PeerConnection00::changeReadyState): * Modules/mediastream/PeerConnection00.h: (WebCore): (PeerConnection00): * Modules/mediastream/PeerConnection00.idl: * platform/mediastream/chromium/PeerConnection00HandlerInternal.cpp: (WebCore::PeerConnection00HandlerInternal::startIce): 2012-05-04 David Tseng <dtseng@google.com> Chromium should include MenuListPopups' and MenuListOptions' within the ax tree. https://bugs.webkit.org/show_bug.cgi?id=85541 Reviewed by Chris Fleizach. Covered by existing tests. LayoutTests/accessibility/menu-list-sends-change-notification.html * accessibility/AccessibilityMockObject.h: (WebCore::AccessibilityMockObject::accessibilityIsIgnored): * accessibility/chromium/AccessibilityObjectChromium.cpp: (WebCore::AccessibilityObject::accessibilityPlatformIncludesObject): 2012-05-04 Levi Weintraub <leviw@chromium.org> Unreviewed. Fixing ChangeLog conflict markers after 116009. 2012-05-04 Dan Winship <danw@gnome.org> [GTK] ASSERTION FAILED: shouldLoadAsEmptyDocument(r.url()) || !defersLoading() in MainResourceLoader.cpp:382 Remove a soup_session_pause_message() call that got left behind, update the defersLoading stuff to handle this case. https://bugs.webkit.org/show_bug.cgi?id=85159 Reviewed by Martin Robinson. No new tests. Now passes loader/load-defer-resume-crash.html under debug build. * platform/network/soup/ResourceHandleSoup.cpp: (WebCore::sendRequestCallback): (WebCore::ResourceHandle::platformSetDefersLoading): 2012-05-03 Martin Robinson <mrobinson@igalia.com> [GTK] Rework IME handling to fix bugs and prepare for WebKit2 https://bugs.webkit.org/show_bug.cgi?id=84556 Reviewed by Gustavo Noronha Silva. No new tests. This change is already covered by a suite of keyboard handling unit tests in WebKitGTK+. There are some changes in behavior, but they are difficult to test without mocking out an entire GtkIMContext. Add a struct, CompositionResults, which is used by PlatformKeyboardEvent to package composition information with a keyboard event. Also add some logic to PlatformKeyboardEvent to give the right information when it has composition results. * GNUmakefile.list.am: Added new sources to the list. * platform/PlatformKeyboardEvent.h: Added a new CompositionResults member, getter, and argument to the constructor. * platform/gtk/CompositionResults.h: Added. * platform/gtk/GtkInputMethodFilter.cpp: Added. * platform/gtk/GtkInputMethodFilter.h: Added. * platform/gtk/PlatformKeyboardEventGtk.cpp: (WebCore::PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode): When the key value is void return the VK_PROCESS keycode, which is the keycode that web content expects with keystrokes that trigger composition events. (WebCore::eventTypeForGdkKeyEvent): Abstract out this helper. (WebCore::modifiersForGdkKeyEvent): Abstract out this helper. (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent): When a PlatformKeyEvent has composition results, use VK_PROCESS as the keycode for this event. (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent): When this event is transformed into a Char event, the PlatformKeyboardEvent used for DOM keypress events, and it has composition results clear the text members. This forces the EventHandler code to drop the keypress event. Platform events that change the composition states do not have corresponding keypress DOM events (only keydown and keyup events), so this is necessary to ensure web compatibility. 2012-05-04 Jochen Eisinger <jochen@chromium.org> Correctly update the outgoing referrer when navigating back from an history item created by pushState/replaceState https://bugs.webkit.org/show_bug.cgi?id=85374 Reviewed by Nate Chapin. Test: http/tests/history/history-navigations-set-referrer.html * loader/FrameLoader.cpp: (WebCore::FrameLoader::loadInSameDocument): 2012-05-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> [Qt] Clean up and split features.prf into a static list of defaults The static list of feature defaults is used as a fallback for any feature that's not dynamically detected or overriden on the command line (though build-webkit or passing DEFINES+= to qmake). The static list is complete, which allows for auto-generation based on Features.py (see bug https://bugs.webkit.org/show_bug.cgi?id=85456) https://bugs.webkit.org/show_bug.cgi?id=85611 Reviewed by Simon Hausmann. * Target.pri: 2012-05-04 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r116085, r116091, and r116095. http://trac.webkit.org/changeset/116085 http://trac.webkit.org/changeset/116091 http://trac.webkit.org/changeset/116095 https://bugs.webkit.org/show_bug.cgi?id=85628 We are not ready with dependencies on all platform yet (mac) + problems with debug builds. (Requested by Zoltan on #webkit). * Target.pri: * WebCore.pri: * platform/MIMETypeRegistry.cpp: (WebCore::initializeSupportedImageMIMETypes): (WebCore::initializeSupportedImageMIMETypesForEncoding): * platform/graphics/ImageSource.cpp: * platform/graphics/ImageSource.h: (WebCore): * platform/graphics/qt/ImageDecoderQt.cpp: (WebCore::ImageDecoder::create): (WebCore): (WebCore::ImageDecoderQt::filenameExtension): (WebCore::ImageDecoderQt::internalHandleCurrentImage): (WebCore::ImageDecoderQt::clearPointers): * platform/image-decoders/ImageDecoder.cpp: (WebCore::ImageDecoder::create): * platform/image-decoders/ImageDecoder.h: (WebCore::ImageFrame::getAddr): (ImageFrame): * platform/image-decoders/qt/ImageFrameQt.cpp: Added. (WebCore): (WebCore::ImageFrame::ImageFrame): (WebCore::ImageFrame::operator=): (WebCore::ImageFrame::clearPixelData): (WebCore::ImageFrame::zeroFillPixelData): (WebCore::ImageFrame::copyBitmapData): (WebCore::ImageFrame::setSize): (WebCore::ImageFrame::asNewNativeImage): (WebCore::ImageFrame::hasAlpha): (WebCore::ImageFrame::setHasAlpha): (WebCore::ImageFrame::setColorProfile): (WebCore::ImageFrame::setStatus): (WebCore::ImageFrame::setPixmap): (WebCore::ImageFrame::width): (WebCore::ImageFrame::height): 2012-05-04 Ilya Tikhonovsky <loislo@chromium.org> Web Inspector: eliminate temporaryProfile property from ProfilesPanel. https://bugs.webkit.org/show_bug.cgi?id=85623 We can run different profilers at the same time therefore we have to keep temorary profile per profiler type. Reviewed by Yury Semikhatsky. * inspector/front-end/CSSSelectorProfileView.js: (WebInspector.CSSSelectorProfileType.prototype.createView): (WebInspector.CSSSelectorProfileType.prototype.createTemporaryProfile): (WebInspector.CSSSelectorProfileType.prototype.createProfile): * inspector/front-end/HeapSnapshotView.js: (WebInspector.HeapSnapshotProfileType.prototype.createView): (WebInspector.HeapSnapshotProfileType.prototype.createTemporaryProfile): (WebInspector.HeapSnapshotProfileType.prototype.createProfile): * inspector/front-end/ProfileView.js: (WebInspector.CPUProfileType.prototype.startRecordingProfile): (WebInspector.CPUProfileType.prototype.createView): (WebInspector.CPUProfileType.prototype.createTemporaryProfile): (WebInspector.CPUProfileType.prototype.createProfile): * inspector/front-end/ProfilesPanel.js: (WebInspector.ProfileType.prototype.createSidebarTreeElementForProfile): (WebInspector.ProfileType.prototype.createTemporaryProfile): (WebInspector.ProfileType.prototype.createProfile): (WebInspector.ProfileHeader): (WebInspector.HeapProfileHeader): (WebInspector.ProfilesPanel.prototype.addProfileHeader): (WebInspector.ProfilesPanel.prototype.findTemporaryProfile): (WebInspector.ProfilesPanel.prototype._removeTemporaryProfile): (WebInspector.ProfilesPanel.prototype._populateProfiles.populateCallback.var): (WebInspector.ProfilesPanel.prototype._populateProfiles.populateCallback): (WebInspector.ProfilesPanel.prototype._populateProfiles): (WebInspector.ProfilesPanel.prototype.setRecordingProfile): (WebInspector.ProfilesPanel.prototype.takeHeapSnapshot): (WebInspector.ProfilesPanel.prototype._reportHeapSnapshotProgress): (WebInspector.ProfilerDispatcher.prototype.addProfileHeader): 2012-05-04 Ilya Tikhonovsky <loislo@chromium.org> Web Inspector: [chromium] ScriptGCEvent should not be static. https://bugs.webkit.org/show_bug.cgi?id=80788 The static members of ScriptGCEvent were moved into per isolate data structure. Drive by fix: Sometimes the used heap size after a GC is slightly more than it was before. Reviewed by Yury Semikhatsky. * bindings/v8/ScriptGCEvent.cpp: (WebCore::ScriptGCEvent::gcPrologueCallback): (WebCore::ScriptGCEvent::gcEpilogueCallback): * bindings/v8/V8Binding.h: (WebCore::GCEventData::GCEventData): (WebCore::GCEventData::clear): (GCEventData): (WebCore): (WebCore::V8BindingPerIsolateData::gcEventData): (V8BindingPerIsolateData): 2012-05-04 Kent Hansen <kent.hansen@nokia.com> [Qt] Update Qt bridge after changes to QMetaMethod https://bugs.webkit.org/show_bug.cgi?id=85478 Reviewed by Tor Arne Vestbø. QMetaMethod::signature() has been renamed to methodSignature() and returns a QByteArray. The new function QMetaMethod::name() gives direct access to a method's name. returnType(), parameterCount(), and parameterType() give direct access to type information. Ported the custom QtConnectionObject meta-object to revision 7; revision 6 and below aren't supported (and don't compile) with Qt5. * Target.pri: * bridge/qt/qt_class.cpp: (JSC::Bindings::QtClass::fallbackObject): * bridge/qt/qt_instance.cpp: (JSC::Bindings::QtInstance::getPropertyNames): * bridge/qt/qt_runtime.cpp: (JSC::Bindings::findMethodIndex): (Bindings): (qt_meta_stringdata_QtConnectionObject_t): (JSC::Bindings::QtConnectionObject::qt_static_metacall): (JSC::Bindings::QtConnectionObject::qt_metacast): (JSC::Bindings::QtConnectionObject::qt_metacall): (JSC::Bindings::QtConnectionObject::execute): * bridge/qt/qt_runtime.h: (QtConnectionObject): * bridge/qt/qt_runtime_qt4.cpp: Copied from Source/WebCore/bridge/qt/qt_runtime.cpp. (Bindings): (QWKNoDebug): (JSC::Bindings::QWKNoDebug::QWKNoDebug): (JSC::Bindings::QWKNoDebug::~QWKNoDebug): (JSC::Bindings::QWKNoDebug::operator<<): (JSC::Bindings::operator<<): (RuntimeConversion): (JSC::Bindings::registerCustomType): (JSC::Bindings::isJSUint8ClampedArray): (JSC::Bindings::valueRealType): (JSC::Bindings::convertValueToQVariantMap): (JSC::Bindings::convertValueToQVariant): (JSC::Bindings::convertQVariantToValue): (JSC::Bindings::QtRuntimeMethod::QtRuntimeMethod): (JSC::Bindings::QtRuntimeMethod::finishCreation): (JSC::Bindings::QtRuntimeMethod::~QtRuntimeMethod): (JSC::Bindings::QtRuntimeMethod::destroy): (JSC::Bindings::QtRuntimeMethodData::~QtRuntimeMethodData): (JSC::Bindings::QtRuntimeMethodData::finalize): (JSC::Bindings::QtRuntimeMetaMethodData::~QtRuntimeMetaMethodData): (JSC::Bindings::QtRuntimeConnectionMethodData::~QtRuntimeConnectionMethodData): (QtMethodMatchType): (JSC::Bindings::QtMethodMatchType::QtMethodMatchType): (JSC::Bindings::QtMethodMatchType::kind): (JSC::Bindings::QtMethodMatchType::isValid): (JSC::Bindings::QtMethodMatchType::isVariant): (JSC::Bindings::QtMethodMatchType::isMetaType): (JSC::Bindings::QtMethodMatchType::isUnresolved): (JSC::Bindings::QtMethodMatchType::isMetaEnum): (JSC::Bindings::QtMethodMatchType::enumeratorIndex): (JSC::Bindings::QtMethodMatchType::variant): (JSC::Bindings::QtMethodMatchType::metaType): (JSC::Bindings::QtMethodMatchType::metaEnum): (JSC::Bindings::QtMethodMatchType::unresolved): (JSC::Bindings::QtMethodMatchType::typeId): (JSC::Bindings::QtMethodMatchType::name): (QtMethodMatchData): (JSC::Bindings::QtMethodMatchData::QtMethodMatchData): (JSC::Bindings::QtMethodMatchData::isValid): (JSC::Bindings::QtMethodMatchData::firstUnresolvedIndex): (JSC::Bindings::indexOfMetaEnum): (JSC::Bindings::findMethodIndex): (JSC::Bindings::findSignalIndex): (JSC::Bindings::QtRuntimeMetaMethod::QtRuntimeMetaMethod): (JSC::Bindings::QtRuntimeMetaMethod::finishCreation): (JSC::Bindings::QtRuntimeMetaMethod::visitChildren): (JSC::Bindings::QtRuntimeMetaMethod::call): (JSC::Bindings::QtRuntimeMetaMethod::getCallData): (JSC::Bindings::QtRuntimeMetaMethod::getOwnPropertySlot): (JSC::Bindings::QtRuntimeMetaMethod::getOwnPropertyDescriptor): (JSC::Bindings::QtRuntimeMetaMethod::getOwnPropertyNames): (JSC::Bindings::QtRuntimeMetaMethod::lengthGetter): (JSC::Bindings::QtRuntimeMetaMethod::connectGetter): (JSC::Bindings::QtRuntimeMetaMethod::disconnectGetter): (JSC::Bindings::QtRuntimeConnectionMethod::QtRuntimeConnectionMethod): (JSC::Bindings::QtRuntimeConnectionMethod::finishCreation): (JSC::Bindings::QtRuntimeConnectionMethod::call): (JSC::Bindings::QtRuntimeConnectionMethod::getCallData): (JSC::Bindings::QtRuntimeConnectionMethod::getOwnPropertySlot): (JSC::Bindings::QtRuntimeConnectionMethod::getOwnPropertyDescriptor): (JSC::Bindings::QtRuntimeConnectionMethod::getOwnPropertyNames): (JSC::Bindings::QtRuntimeConnectionMethod::lengthGetter): (JSC::Bindings::QtConnectionObject::QtConnectionObject): (JSC::Bindings::QtConnectionObject::~QtConnectionObject): (JSC::Bindings::QtConnectionObject::metaObject): (JSC::Bindings::QtConnectionObject::qt_metacast): (JSC::Bindings::QtConnectionObject::qt_metacall): (JSC::Bindings::isJavaScriptFunction): (JSC::Bindings::QtConnectionObject::execute): (JSC::Bindings::QtConnectionObject::match): (JSC::Bindings::QtConnectionObject::createWithInternalJSC): (JSC::Bindings::::QtArray): (JSC::Bindings::::~QtArray): (JSC::Bindings::::rootObject): (JSC::Bindings::::setValueAt): (JSC::Bindings::::valueAt): 2012-05-04 Yury Semikhatsky <yurys@chromium.org> Web Inspector: use single method for retrieving evaluation context in the runtime agent https://bugs.webkit.org/show_bug.cgi?id=85621 Reviewed by Pavel Feldman. Merged two script state retrieval methods into one. Moved Page specific logic into PageRuntimeAgent. * inspector/InspectorRuntimeAgent.cpp: (WebCore::InspectorRuntimeAgent::evaluate): * inspector/InspectorRuntimeAgent.h: (InspectorRuntimeAgent): * inspector/PageRuntimeAgent.cpp: (WebCore::PageRuntimeAgent::scriptStateForEval): * inspector/PageRuntimeAgent.h: (PageRuntimeAgent): * inspector/WorkerRuntimeAgent.cpp: (WebCore::WorkerRuntimeAgent::scriptStateForEval): * inspector/WorkerRuntimeAgent.h: (WorkerRuntimeAgent): 2012-05-04 Jochen Eisinger <jochen@chromium.org> Unreviewed, rolling out r115549. http://trac.webkit.org/changeset/115549 https://bugs.webkit.org/show_bug.cgi?id=83894 The newly added CRASH() statements are triggered too often * loader/FrameLoader.cpp: (WebCore::FrameLoader::init): (WebCore::FrameLoader::setupForReplace): (WebCore::FrameLoader::stopAllLoaders): (WebCore::FrameLoader::clearProvisionalLoad): (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy): (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): 2012-05-04 Zoltan Horvath <zoltan@webkit.org> [Qt] Error message fix after r116091 https://bugs.webkit.org/show_bug.cgi?id=85614 Reviewed by Alexis Menard. No new tests : error message fix. * WebCore.pri: 2012-05-04 Alexis Menard <alexis.menard@openbossa.org> [Qt] Build fix when using libpng version > 1.2. https://bugs.webkit.org/show_bug.cgi?id=85614 Reviewed by Tor Arne Vestbø. Don't enforce the version of libpng when passing the option to the linker. No new tests : build fix. * WebCore.pri: 2012-05-04 Simon Hausmann <simon.hausmann@nokia.com> [Qt] Images are scaled badly in WebKit2 https://bugs.webkit.org/show_bug.cgi?id=85610 Reviewed by Jocelyn Turcotte. Enable smooth pixmap transforms when rendering into the GraphicsSurface image. This class is only used in WK2. * platform/graphics/surfaces/qt/GraphicsSurfaceQt.cpp: (WebCore::GraphicsSurface::platformBeginPaint): 2012-05-04 Zoltan Horvath <zoltan@webkit.org> [Qt] Remove unnecessary executeable bits after r116085 No new tests. * Target.pri: * WebCore.pri: * platform/graphics/ImageSource.cpp: * platform/graphics/ImageSource.h: * platform/graphics/qt/ImageDecoderQt.cpp: * platform/graphics/qt/ImageDecoderQt.h: * platform/image-decoders/ImageDecoder.cpp: * platform/image-decoders/ImageDecoder.h: 2012-05-04 Zoltan Horvath <zoltan@webkit.org> [Qt] Set WebCore imagedecoders as default and add fallback to QImageDecoder https://bugs.webkit.org/show_bug.cgi?id=80400 This change modifies the default ImageDecoder for Qt-port from QImageDecoder to WebCore ImageDecoder. The new behavior is to use QImageDecoder only if WebCoreImageDecoder doesn't support the requested image type. The WTF_USE_QT_IMAGE_DECODER macro has been removed, since it is no longer needed. This change adds build depedency for libpng-dev and libjpeg-dev packages, becuase PNG and JPEG imagedecoders need not only these libraries, but their headers also. Qmake-config tests for these libraries were introduced in r110045. Reviewed by Simon Hausmann. No new tests needed. * Target.pri: Move WebCore ImageDecoder files out of guards. Remove ImageFrameQt.cpp from sources. * WebCore.pri: Move WebCore ImageDecoder include paths out of guards. * platform/MIMETypeRegistry.cpp: (WebCore::initializeSupportedImageMIMETypes): Add WebCore supported and Qt supported MIME types. (WebCore::initializeSupportedImageMIMETypesForEncoding): Use Qt supported MIME types. * platform/graphics/ImageSource.cpp: Remove unnecessary includes. * platform/graphics/ImageSource.h: Remove unnecessary typedefs. (WebCore): * platform/graphics/qt/ImageDecoderQt.cpp: (WebCore::ImageDecoderQt::filenameExtension): Remove unnecessary semicolon. (WebCore::ImageDecoderQt::internalHandleCurrentImage): Use QImage and ImageFrame instead of QPixmap. (WebCore): (WebCore::ImageFrame::asNewNativeImage): Moved here from removed ImageFrameQt.cpp. * platform/image-decoders/ImageDecoder.cpp: Reorganize the includes of the header. (WebCore::ImageDecoder::create): Add platform macro guarded fallback case for QImageDecoder. * platform/image-decoders/ImageDecoder.h: Remove Qt-specific codes. (WebCore::ImageFrame::getAddr): Remove Qt-specific case, since it is no longer needed. (ImageFrame): * platform/image-decoders/qt/ImageFrameQt.cpp: Removed. Dead code, other code has been moved to ImageDecoderQt.cpp. 2012-05-03 Ilya Tikhonovsky <loislo@chromium.org> Web Inspector: createRawLocationByURL is too slow if a big number of evals happen. https://bugs.webkit.org/show_bug.cgi?id=85477 It iterates through all the _scripts even they have no url. We can keep a separate map of scripts with url. Reviewed by Yury Semikhatsky. * inspector/front-end/DebuggerModel.js: (WebInspector.DebuggerModel): (WebInspector.DebuggerModel.prototype._globalObjectCleared): (WebInspector.DebuggerModel.prototype._resetScriptsMap): (WebInspector.DebuggerModel.prototype._parsedScriptSource): (WebInspector.DebuggerModel.prototype.createRawLocationByURL): 2012-05-03 David Barr <davidbarr@chromium.org> Antialias single-edge solid borders https://bugs.webkit.org/show_bug.cgi?id=85031 Reviewed by Simon Fraser. Antialiasing is avoided for adjacent edges due to artifacts at the seam. There are no such artifacts for single-edge borders so enable antialiasing. Test: fast/css/border-solid-single-edge-antialias.html * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::paintBorder): 2012-05-03 Adam Barth <abarth@webkit.org> CSP: Eval isn't blocked in about:blank subframes https://bugs.webkit.org/show_bug.cgi?id=85553 Reviewed by Eric Seidel. ContentSecurityPolicy has a back pointer to ScriptExecutionContext. That means we shouldn't share a single ContentSecurityPolicy object between multiple ScriptExecutionContexts. This patch copies the state from one ScriptExecutionContext to another rather than sharing the ContentSecurityPolicy object itself. This resulted in a subtle but w.r.t. blocking eval. Because we block eval by setting a bit in the JavaScript engine when enforcing the policy, that bit wasn't copied along with the rest of the state when we were sharing the ContentSecurityPolicy object. Now that we use the more robust ContentSecurityPolicy::copyStateFrom function, we don't have that bug. Test: http/tests/security/contentSecurityPolicy/eval-blocked-in-about-blank-iframe.html * dom/Document.cpp: (WebCore::Document::initSecurityContext): (WebCore): (WebCore::Document::initContentSecurityPolicy): * dom/Document.h: (Document): * dom/SecurityContext.cpp: (WebCore::SecurityContext::setContentSecurityPolicy): * dom/SecurityContext.h: (SecurityContext): * loader/FrameLoader.cpp: (WebCore::FrameLoader::didBeginDocument): * page/ContentSecurityPolicy.h: (WebCore::ContentSecurityPolicy::create): 2012-05-03 Abhishek Arya <inferno@chromium.org> Regression(r113769): Crash in AudioNodeOutput::disconnectAllParams. https://bugs.webkit.org/show_bug.cgi?id=85196 Reviewed by Chris Rogers. RefPtr the AudioParam hashset in AudioNodeOutput to prevent accessing destroyed entries. No new tests. Unable to reproduce it in DRT. * Modules/webaudio/AudioNodeOutput.cpp: (WebCore::AudioNodeOutput::disconnectAllParams): * Modules/webaudio/AudioNodeOutput.h: (AudioNodeOutput): 2012-05-03 Noel Gordon <noel.gordon@gmail.com> PNGImageDecoder: Clean up rowAvailable() some more https://bugs.webkit.org/show_bug.cgi?id=85464 Reviewed by Eric Seidel. No new tests. Covered by existing tests: fast/images/png-extra-row-crash.html in particular. * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageDecoder::rowAvailable): Use colorChannels consistently. Split the useful libpng comments in two, then place the early-out code and conditions inbetween. The png variable is only used in one place so move it there. 2012-05-03 Ojan Vafai <ojan@chromium.org> Histogram total allocated bytes in the arena in addition to the render tree size https://bugs.webkit.org/show_bug.cgi?id=85537 Reviewed by Eric Seidel. We only free bytes allocated to a RenderArena when destroying the Document. Histogram both the render tree size and the total bytes allocated. This gives a better sense of the overhead of RenderArena as well as giving a more accurate number for the amount of actual memory used by the render tree. No new tests. This is not webfacing, so this can't be tested without adding API to layout test controller, which doesn't seem worth it for this code. * page/Page.cpp: (WebCore::Page::renderTreeSize): (WebCore::Page::setVisibilityState): * page/Page.h: (Page): * platform/Arena.cpp: (WebCore::ArenaAllocate): * platform/Arena.h: (WebCore): * rendering/RenderArena.cpp: (WebCore::RenderArena::allocate): * rendering/RenderArena.h: (WebCore::RenderArena::totalRenderArenaAllocatedBytes): (RenderArena): 2012-05-03 Mary Wu <mary.wu@torchmobile.com.cn> [BlackBerry] Add missed member in CrossThreadResourceRequestData https://bugs.webkit.org/show_bug.cgi?id=85448 Reviewed by Antonio Gomes. * platform/network/blackberry/ResourceRequest.h: (CrossThreadResourceRequestData): * platform/network/blackberry/ResourceRequestBlackBerry.cpp: (WebCore::ResourceRequest::doPlatformCopyData): (WebCore::ResourceRequest::doPlatformAdopt): 2012-05-03 Adam Barth <abarth@webkit.org> CSP shouldn't block about:blank for iframes https://bugs.webkit.org/show_bug.cgi?id=85233 Reviewed by Eric Seidel. As discussed at the W3C WebAppSec face-to-face meeting, there's no point in blocking about:blank iframes or objects because blocking a frame or object just results in displaying about:blank anyway. This patch just removes the spurious console message and violation report. Test: http/tests/security/contentSecurityPolicy/frame-src-about-blank-allowed-by-default.html * page/ContentSecurityPolicy.cpp: (WebCore::ContentSecurityPolicy::allowObjectFromSource): (WebCore::ContentSecurityPolicy::allowChildFrameFromSource): 2012-05-03 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r116040. http://trac.webkit.org/changeset/116040 https://bugs.webkit.org/show_bug.cgi?id=85559 Broke a few IndexedDB browsertests (Requested by zhenyao on #webkit). * Modules/indexeddb/IDBCursor.cpp: (WebCore::IDBCursor::direction): * Modules/indexeddb/IDBCursor.h: (IDBCursor): * Modules/indexeddb/IDBCursor.idl: * Modules/indexeddb/IDBDatabase.cpp: (WebCore::IDBDatabase::transaction): (WebCore): * Modules/indexeddb/IDBDatabase.h: * Modules/indexeddb/IDBDatabase.idl: * Modules/indexeddb/IDBIndex.cpp: (WebCore::IDBIndex::openCursor): (WebCore::IDBIndex::openKeyCursor): * Modules/indexeddb/IDBIndex.h: (WebCore::IDBIndex::openCursor): (WebCore::IDBIndex::openKeyCursor): * Modules/indexeddb/IDBIndex.idl: * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::openCursor): * Modules/indexeddb/IDBObjectStore.h: (WebCore::IDBObjectStore::openCursor): (IDBObjectStore): * Modules/indexeddb/IDBObjectStore.idl: * Modules/indexeddb/IDBRequest.cpp: (WebCore::IDBRequest::IDBRequest): (WebCore::IDBRequest::readyState): (WebCore::IDBRequest::markEarlyDeath): (WebCore::IDBRequest::resetReadyState): (WebCore::IDBRequest::abort): (WebCore::IDBRequest::finishCursor): (WebCore::IDBRequest::onSuccess): (WebCore::IDBRequest::stop): * Modules/indexeddb/IDBRequest.h: * Modules/indexeddb/IDBRequest.idl: * Modules/indexeddb/IDBTransaction.cpp: (WebCore::IDBTransaction::mode): * Modules/indexeddb/IDBTransaction.h: (IDBTransaction): * Modules/indexeddb/IDBTransaction.idl: 2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org> [CMake] Rewrite FindCairo.cmake. https://bugs.webkit.org/show_bug.cgi?id=84895 Reviewed by Daniel Bates. The old approach relied on pkg-config for finding Cairo (which introduced a dependency on pkg-config that could be avoided), used the LibFindMacros code that we should probably remove in the future and did not use the FindPackageHandleStandardArguments module. Change all that by rewriting the module. - Use the pkg-config output optionally instead of requiring it like LibFindMacros did. - Remove the implicit dependency on FreeType which often found it the wrong way via pkg-config and without considering CMAKE_PREFIX_PATH. - Retrieve the Cairo version by looking at cairo-version.h instead of relying on pkg-config. It requires some additional code for checking if the desired version has been found, but that will not be needed once we start depending on CMake 2.8.3 or later. The only downside is that FPHSA sets <UPPERCASED_NAME>_FOUND instead of <Name>_FOUND, and to keep things consistent Cairo_LIBRARIES and Cairo_INCLUDE_DIRS have become CAIRO_LIBRARIES and CAIRO_INCLUDE_DIRS. No new tests, build system change. * PlatformEfl.cmake: Use CAIRO_FOO instead of Cairo_FOO. 2012-05-03 Anders Carlsson <andersca@apple.com> Focus ring only appears in top-left tile https://bugs.webkit.org/show_bug.cgi?id=85556 <rdar://problem/11359656> Reviewed by Simon Fraser. It is sufficient to just apply the current CTM to the clip rect and set that as the focus ring clip rect. * platform/graphics/mac/WebLayer.mm: (drawLayerContents): 2012-05-03 Alec Flett <alecflett@chromium.org> IndexedDB: Replace numeric constants with strings https://bugs.webkit.org/show_bug.cgi?id=84894 Reviewed by Tony Chang. Test: storage/indexeddb/legacy-constants.html Update IDBObjectStore.openCursor, IDBIndex.openCursor, IDBIndex.openKeyCursor, IDBDatabase.transaction, IDBCursor.direction, IDBTransaction.mode, and IDBRequest.readyState to meet the latest spec. All of these APIs now support string-based values in addition to the legacy/deprecated enum-based values. * Modules/indexeddb/IDBCursor.cpp: (WebCore): (WebCore::IDBCursor::direction): (WebCore::IDBCursor::stringToDirection): (WebCore::IDBCursor::directionToString): * Modules/indexeddb/IDBCursor.h: (IDBCursor): * Modules/indexeddb/IDBCursor.idl: * Modules/indexeddb/IDBDatabase.cpp: (WebCore::IDBDatabase::transaction): (WebCore): * Modules/indexeddb/IDBDatabase.h: (IDBDatabase): * Modules/indexeddb/IDBDatabase.idl: * Modules/indexeddb/IDBIndex.cpp: (WebCore::IDBIndex::openCursor): (WebCore): (WebCore::IDBIndex::openKeyCursor): * Modules/indexeddb/IDBIndex.h: (WebCore::IDBIndex::openCursor): (IDBIndex): (WebCore::IDBIndex::openKeyCursor): * Modules/indexeddb/IDBIndex.idl: * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::openCursor): (WebCore): * Modules/indexeddb/IDBObjectStore.h: (WebCore::IDBObjectStore::openCursor): (IDBObjectStore): * Modules/indexeddb/IDBObjectStore.idl: * Modules/indexeddb/IDBRequest.cpp: (WebCore::IDBRequest::IDBRequest): (WebCore::IDBRequest::readyState): (WebCore::IDBRequest::markEarlyDeath): (WebCore::IDBRequest::resetReadyState): (WebCore::IDBRequest::abort): (WebCore::IDBRequest::finishCursor): (WebCore::IDBRequest::onSuccess): (WebCore::IDBRequest::stop): * Modules/indexeddb/IDBRequest.h: * Modules/indexeddb/IDBRequest.idl: * Modules/indexeddb/IDBTransaction.cpp: (WebCore): (WebCore::IDBTransaction::mode): (WebCore::IDBTransaction::stringToMode): (WebCore::IDBTransaction::modeToString): * Modules/indexeddb/IDBTransaction.h: (IDBTransaction): * Modules/indexeddb/IDBTransaction.idl: 2012-05-03 Sam Weinig <sam@webkit.org> Add an eventPhase NONE constant https://bugs.webkit.org/show_bug.cgi?id=85397 Reviewed by Anders Carlsson. Updates existing tests. * dom/Event.h: * dom/Event.idl: Add NONE constant. 2012-05-03 Tony Chang <tony@chromium.org> Height overflow when nesting multiple new Flexbox'es. https://bugs.webkit.org/show_bug.cgi?id=83572 Reviewed by Ojan Vafai. Test: css3/flexbox/nested-stretch.html * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::computeAvailableFreeSpace): 2012-05-03 Julien Chaffraix <jchaffraix@webkit.org> ASSERT(!m_zOrderListsDirty) is triggering in Safari https://bugs.webkit.org/show_bug.cgi?id=85512 Reviewed by Simon Fraser. Unfortunately no test as I don't think the 2 cases are testable reliably. A better fix would be to introduce some iterator that handle updating the lists for you. For now, just adding the missing updateLayerListsIfNeeded() calls. * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::hasVisibleNonCompositingDescendantLayers): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::layerHas3DContent): 2012-05-03 Philip Rogers <pdr@google.com> Fix numeric precision issue in SVG animations https://bugs.webkit.org/show_bug.cgi?id=85502 Reviewed by Dirk Schulze. r93938 had a bug where floating point numbers where compared exactly, exposing a bug when floating point precision was not sufficient. This change compares against an epsilon value to get around these precision issues. Test: svg/animations/animate-end-attribute-numeric-precision.html * svg/animation/SVGSMILElement.cpp: (WebCore::SVGSMILElement::calculateAnimationPercentAndRepeat): 2012-05-03 Joshua Bell <jsbell@chromium.org> Fix coding style issues in IDBLevelDBCoding.cpp https://bugs.webkit.org/show_bug.cgi?id=85536 Reviewed by Tony Chang. No tests - just code formatting changes. * Modules/indexeddb/IDBLevelDBCoding.cpp: (WebCore::IDBLevelDBCoding::encodeIDBKey): (WebCore::IDBLevelDBCoding::decodeIDBKey): (WebCore::IDBLevelDBCoding::extractEncodedIDBKey): (WebCore::IDBLevelDBCoding::compareEncodedIDBKeys): 2012-04-30 Filip Pizlo <fpizlo@apple.com> PageCache autorelease should not wait until 3 seconds and 42 pages https://bugs.webkit.org/show_bug.cgi?id=85254 <rdar://problem/11349613> Reviewed by Geoffrey Garen. No new tests, since there is no change in behavior. * history/PageCache.cpp: (WebCore): (WebCore::PageCache::PageCache): (WebCore::PageCache::releaseAutoreleasedPagesNowDueToTimer): * history/PageCache.h: (PageCache): 2012-05-03 Levi Weintraub <leviw@chromium.org> Unreviewed build fix for Mac WK2. Adding a mistakenly removed symbol back to WebCore.exp.in. * WebCore.exp.in: 2012-05-03 Levi Weintraub <leviw@chromium.org> Unreviewed build fix for Qt after 116009. No changes in behavior. * rendering/RenderTreeAsText.cpp: (WebCore::RenderTreeAsText::writeRenderObject): 2012-05-03 W. James MacLean <wjmaclean@chromium.org> [chromium] Revise touchpad fling curve to use exponential curve, to improve feel and small fling performance. https://bugs.webkit.org/show_bug.cgi?id=85530 Reviewed by Kenneth Russell. Existing unit tests updated for new curve. Modifies TouchpadFLingGestureCurve to use an exponential, rather than polynomial, curve. This change appears to improve the overall feel of touchpad fling, and substantially improves small-fling performance. * platform/TouchpadFlingPlatformGestureCurve.cpp: (WebCore::TouchpadFlingPlatformGestureCurve::create): (WebCore): (WebCore::position): (WebCore::velocity): (WebCore::TouchpadFlingPlatformGestureCurve::TouchpadFlingPlatformGestureCurve): 2012-04-23 Levi Weintraub <leviw@chromium.org> and Emil A Eklund <eae@chromium.org> [meta] Switch away from integers representing pixels for layout/event handling/rendering https://bugs.webkit.org/show_bug.cgi?id=60318 Reviewed by Eric Seidel. Swapping the LayoutUnit backend to FractionalLayoutUnit from int. FractionalLayoutUnit is a new type that uses an integer to represent a fraction of a pixel. We're also adding a feature flag -- ENABLE_SUBPIXEL_LAYOUT -- that toggles this fraction between 1/1 and 1/60. Initially, all platforms will default to subpixel layout being off, so FractionalLayoutUnits will effectively continue to act as integers. With ENABLE_SUBPIXEL_LAYOUT turned on, FractionalLayoutUnits accumulate error from sub-pixel CSS values and applied zooming, and painting uses pixel-snapping to align these values to pixels. See http://trac.webkit.org/wiki/LayoutUnit for details. In a number of previous patches, LayoutUnits were plumbed throughout the rendering tree to prepare for this change. This included a number of functions in LayoutTypes.h and the IntRect/Point/Size classes that were effectively no-ops while LayoutUnits were integers. Subsequent patches will remove unnecessary versions of these functions; see http://webkit.org/b/84616 for tracking these changes. Tests: fast/sub-pixel/client-width-height-snapping.html fast/sub-pixel/layout-boxes-with-zoom.html fast/sub-pixel/size-of-box-with-zoom.html * WebCore.exp.in: Updating function signatures that expose FractionalLayoutUnits. * WebCore.xcodeproj/project.pbxproj: Adding missing FractionalLayoutPoint.h header. * css/CSSComputedStyleDeclaration.cpp: (WebCore::zoomAdjustedPixelValue): Using adjustFloatForAbsoluteZoom instead of int to make use of extra precision before returning the pixel value. * css/CSSPrimitiveValue.cpp: (WebCore::CSSPrimitiveValue::computeLength): No longer rounds for imprecise conversion when sub-pixel layout is enabled. (WebCore::CSSPrimitiveValue::customCssText): Returning integer values for pixels. * dom/Element.cpp: (WebCore::adjustForLocalZoom): Using rounding instead of incrementing the value before adjusting to account for truncation when sub-pixel layout is enabled. * page/SpatialNavigation.cpp: (WebCore::distanceDataForNode): Using FractionalLayoutUnit::abs instead of std::abs. * platform/FractionalLayoutUnit.h: Adding some missing operators and a flag around the constant denominator to switch it between 1/1 and 1/60 depending on the feature flag. * platform/Length.h: Changing the default type for value to float, and adding intValue since this more closely matches usage in a sub-pixel layout world. * platform/win/PopupMenuWin.cpp: (WebCore::PopupMenuWin::paint): Using minimumIntValueForLength in this platform code instead of LayoutUnits. * rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::placeBoxesInBlockDirection): * rendering/LayoutTypes.h: This file contains the actual switch for changing LayoutUnits to be FractionalLayoutUnits. Also updating stub methods with their proper implementations. * rendering/PaintInfo.h: (WebCore::PaintInfo::infiniteRect): Ensuring the infiniteRect doesn't overflow the FractionalLayoutUnit bounds. * rendering/RenderBlockLineLayout.cpp: (WebCore::RenderBlock::checkPaginationAndFloatsAtEndLine): Switch to FractionalLayoutUnit's abs function instead of std::abs. * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry): Add rounding for setting the phase of the background geometry before applying modulo from the tile size. * rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox): Stop applying flex when we have less than a pixel to distribute. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::backgroundClipRect): Replace PaintInfo::infiniteRect with the LayoutRect equivalent. * rendering/RenderLineBoxList.cpp: (WebCore::RenderLineBoxList::rangeIntersectsRect): Using FractionalLayoutUnit::abs instead of std::abs. * rendering/RenderObject.cpp: (WebCore::RenderObject::repaintAfterLayoutIfNeeded): Ditto. * rendering/RenderObject.h: (WebCore): Removing unnecessary adjustForAbsoluteZoom function. (WebCore::RenderObject::outlineSize): Outlines remain ints. * rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::styleOrColLogicalWidth): Build fix. Using floats because colWidthSum is a Length which uses floats. * rendering/RenderThemeChromiumSkia.cpp: (WebCore::RenderThemeChromiumSkia::paintSearchFieldResultsButton): Explicit templatization for max. * rendering/RenderTreeAsText.cpp: Adding code to minimize test expectation churn. It may be worth outputting float values in test expectations, but this isn't done with the inline box tree yet, either. * rendering/RenderTreeAsText.h: (WebCore): Adding a FractionalLayoutPoint operator. * rendering/RenderWidget.cpp: (WebCore::RenderWidget::updateWidgetGeometry): Adding missing pixel snapping, and switching absoluteContentBox to an IntRect, as this is what boundingBox returns. * rendering/svg/SVGRenderTreeAsText.cpp: (WebCore::writePositionAndStyle): Adding an enclosingIntRect for consistency with old results. 2012-05-03 Levi Weintraub <leviw@chromium.org> and Emil A Eklund <eae@chromium.org> [meta] Switch away from integers representing pixels for layout/event handling/rendering https://bugs.webkit.org/show_bug.cgi?id=60318 Reviewed by Eric Seidel. Swapping the LayoutUnit backend to FractionalLayoutUnit from int. FractionalLayoutUnit is a new type that uses an integer that can represent a fraction of a pixel. The ENABLE_SUBPIXEL_LAYOUT feature flags toggles this fraction between 1/1 and 1/60. Initially, all platforms will default to subpixel layout being off, so FractionalLayoutUnits will effectively continue to act as integers. With ENABLE_SUBPIXEL_LAYOUT turned on, FractionalLayoutUnits accumulate error from sub-pixel CSS values and applied zooming, and painting uses pixel-snapping to align these values to pixels and prevent unwanted anti-aliasing. See http://trac.webkit.org/wiki/LayoutUnit for details. In a number of previous patches, LayoutUnits were plumbed throughout the rendering tree to prepare for this change. This included a number of functions in LayoutTypes.h and the IntRect/Point/Size classes that were effectively no-ops while LayoutUnits were integers. See http://webkit.org/b/60318 for the exhaustive list of changes that were done in preparation for this. Subsequent patches will remove unnecessary versions of these functions. http://webkit.org/b/84616 tracks these changes. Tests: fast/sub-pixel/client-width-height-snapping.html fast/sub-pixel/layout-boxes-with-zoom.html fast/sub-pixel/size-of-box-with-zoom.html * WebCore.exp.in: Updating function signatures that expose FractionalLayoutUnits. * WebCore.order: Ditto. * WebCore.xcodeproj/project.pbxproj: Adding missing FractionalLayoutPoint.h header. * css/CSSPrimitiveValue.cpp: (WebCore::CSSPrimitiveValue::computeLength): No longer rounds for imprecise conversion when sub-pixel layout is enabled. * dom/Element.cpp: (WebCore::adjustForLocalZoom): Using rounding instead of incrementing the value before adjusting to account for truncation when sub-pixel layout is enabled. * rendering/mathml/RenderMathMLBlock.cpp: (WebCore): Fixing a static initializer build error by moving an integer constant to be an int. * rendering/LayoutTypes.h: This file contains the actual switch for changing LayoutUnits to be FractionalLayoutUnits. Also updating stub methods with their proper implementations. * rendering/PaintInfo.h: (WebCore::PaintInfo::infiniteRect): Ensuring the infiniteRect doesn't overflow the FractionalLayoutUnit bounds. LayoutRect::infiniteRect() is the largest rectangle that can be represented using LayoutUnits. * rendering/RenderLayer.h: (WebCore::ClipRect::operator!=): Add overload of != to fix complaining compilers when * rendering/RenderTreeAsText.cpp: Adding code to minimize test expectation churn. It may be worth outputting float values in test expectations, but this isn't done with the inline box tree yet, either. * rendering/RenderTreeAsText.h: (WebCore): Adding a FractionalLayoutPoint operator. * rendering/svg/SVGRenderTreeAsText.cpp: (WebCore::writePositionAndStyle): (WebCore): Adding a FractionalLayoutPoint operator. 2012-05-03 Anders Carlsson <andersca@apple.com> Move repaint counter drawing code out into a separate function https://bugs.webkit.org/show_bug.cgi?id=85539 Reviewed by Simon Fraser. The majority of code in TileCache::drawLayer deals with drawing the repaint counter. Move this code out into a separate function to make it more clear what drawLayer does. * platform/graphics/ca/mac/TileCache.h: (TileCache): * platform/graphics/ca/mac/TileCache.mm: (WebCore::TileCache::drawLayer): (WebCore::TileCache::drawRepaintCounter): (WebCore): 2012-05-03 Simon Fraser <simon.fraser@apple.com> Compositing 'requiresOwnBackingStore' logic caused new clip rect assertions https://bugs.webkit.org/show_bug.cgi?id=85455 Reviewed by Dean Jackson. r114283 added logic that allows compositing layers to avoid allocating their own backing store and to paint into an ancestor instead. However, that caused assertions in RenderLayer::updateClipRects() about m_clipRectsRoot being incorrect, because clip rect code assumed that compositing layers always painted themselves. Fixed by calling paintsIntoCompositedAncestor() in RenderLayer::clippingRoot(), so that clip rect computation matches painting. I wasn't able to easily make a test that reproduces the assertion in DRT. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::clippingRoot): 2012-05-03 Tim Horton <timothy_horton@apple.com> REGRESSION(99539): SVG <img> disregards page scale and device scale https://bugs.webkit.org/show_bug.cgi?id=77237 <rdar://problem/10767413> Reviewed by Simon Fraser. Rename SVGImageCache::SizeAndZoom to SVGImageCache::SizeAndScales, as it carries more than just zoom now. Pass the product of the device and page scales through everything that takes a SVGImageCache::SizeAndScales, using it to inflate the size of the buffer created in lookupOrCreateBitmapImageForRenderer, and to inflate the destination rectangle passed to SVGImage::draw, which will cause a transformation on the context being drawn into. Invalidate the SVGImageCache entry on device/page scale changes in addition to zoom changes. This patch does not cause SVGImageCache to take into account scale caused by CSS transforms; that is tracked separately by https://bugs.webkit.org/show_bug.cgi?id=85335. Tests: svg/as-image/image-respects-deviceScaleFactor.html svg/as-image/image-respects-pageScaleFactor.html * loader/cache/CachedImage.cpp: (WebCore::CachedImage::setContainerSizeForRenderer): (WebCore::CachedImage::imageSizeForRenderer): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::drawSVGToImageBuffer): * svg/graphics/SVGImage.h: * svg/graphics/SVGImageCache.cpp: (WebCore::SVGImageCache::~SVGImageCache): (WebCore::SVGImageCache::removeRendererFromCache): (WebCore::SVGImageCache::setRequestedSizeAndScales): (WebCore::SVGImageCache::requestedSizeAndScales): (WebCore::SVGImageCache::redraw): (WebCore::SVGImageCache::lookupOrCreateBitmapImageForRenderer): * svg/graphics/SVGImageCache.h: (WebCore::SVGImageCache::SizeAndScales::SizeAndScales): (SizeAndScales): (SVGImageCache): (WebCore::SVGImageCache::ImageData::ImageData): (ImageData): 2012-05-03 Fady Samuel <fsamuel@chromium.org> Removing line in computeViewportAttributes that enforces a minimum scale factor to never allow zooming out more than viewport https://bugs.webkit.org/show_bug.cgi?id=70609 Reviewed by Kenneth Rohde Christiansen. Make Viewport Attributes' layoutSize be a FloatRect to avoid rounding too early, and the occasional off by one fixed layout dimensions. * dom/ViewportArguments.cpp: (WebCore::computeViewportAttributes): * dom/ViewportArguments.h: (ViewportAttributes): 2012-05-03 Joshua Bell <jsbell@chromium.org> IndexedDB: Handle generated keys up to 2^53 https://bugs.webkit.org/show_bug.cgi?id=85114 The spec defines the behavior for generated keys up to 2^53 (the maximum integer storable as an ECMAScript number) and the error case when going beyond that. Ensure that we can handle values up to that point and generate errors beyond. Reviewed by Tony Chang. Test: storage/indexeddb/key-generator.html * Modules/indexeddb/IDBBackingStore.h: (IDBBackingStore): * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore::IDBLevelDBBackingStore::nextAutoIncrementNumber): * Modules/indexeddb/IDBLevelDBBackingStore.h: (IDBLevelDBBackingStore): * Modules/indexeddb/IDBObjectStoreBackendImpl.cpp: (WebCore::IDBObjectStoreBackendImpl::putInternal): (WebCore::IDBObjectStoreBackendImpl::genAutoIncrementKey): * Modules/indexeddb/IDBObjectStoreBackendImpl.h: (IDBObjectStoreBackendImpl): 2012-05-03 Simon Fraser <simon.fraser@apple.com> Remove RenderLayerCompositor::didStartAcceleratedAnimation() https://bugs.webkit.org/show_bug.cgi?id=85514 Reviewed by Antti Koivisto. Remove RenderLayerCompositor::didStartAcceleratedAnimation(), which is no longer needed. Code removal, no new tests. * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::startTransition): * rendering/RenderLayerCompositor.cpp: * rendering/RenderLayerCompositor.h: 2012-05-03 Andreas Kling <kling@webkit.org> REGRESSION(r111387): CSSOM representation of 'background-image' values should be CSSPrimitiveValue. <http://webkit.org/b/85500> Reviewed by Antti Koivisto. Use the cloneForCSSOM() mechanism in CSSValue to expose CSSImageValue to bindings as a URI primitive value. This matches the specced behavior of computed image values, and restores our previous behavior without having CSSImageValue subclass CSSPrimitiveValue. Also added a failsafe return after the isCSSOMSafe() assertion in the JSC bindings, since it's better to expose an incorrect return value than an insecurely shared one, should we have or add bugs in this code. * bindings/js/JSCSSValueCustom.cpp: (WebCore::toJS): * css/CSSImageValue.cpp: (WebCore::CSSImageValue::cloneForCSSOM): * css/CSSImageValue.h: * css/CSSValue.cpp: (WebCore::CSSValue::cloneForCSSOM): 2012-05-03 Keishi Hattori <keishi@webkit.org> Crash in HTMLFormControlElement::m_fieldSetAncestor https://bugs.webkit.org/show_bug.cgi?id=85453 Reviewed by Kent Tamura. Modified tests: fast/forms/datalist/datalist-child-validation.html fast/forms/form-control-element-crash.html * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::removedFrom): Only set the invalid ancestor flag. The element will be detached from the document so there is no need to update the style. And the validation message will be hidden by the blur event. (WebCore::HTMLFormControlElement::willValidate): Because of the change to removedFrom, m_ancestorsValid may be false. 2012-05-03 Simon Fraser <simon.fraser@apple.com> Keep overlap testing for compositing on pages with 3d transforms when possible https://bugs.webkit.org/show_bug.cgi?id=62487 Reviewed by Antti Koivisto. Change RenderLayerCompositor to always use overlap testing when possible. Rather than turn off overlap testing wholesale when encountering a non-affine transform, or starting an accelerated transform animation, we constrain the disabling of overlap testing to within overflow:hidden areas when possible. Tests: compositing/layer-creation/overlap-animation.html compositing/layer-creation/overlap-transforms.html * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::setCompositedBounds): Whitespace fix. * rendering/RenderLayerCompositor.cpp: (WebCore::CompositingState::CompositingState): (CompositingState): Add a member boolean to track whether we're testing overlap. Add a copy constructor. (WebCore::RenderLayerCompositor::updateCompositingLayers): Initialize the 'testing overlap' setting based on m_compositingConsultsOverlap (though this will always be true until removed in a future commit). (WebCore::RenderLayerCompositor::updateBacking): No longer turn off overlap testing when we see a non-affine transform. (WebCore::RenderLayerCompositor::computeCompositingRequirements): No need for the 'struct' in the arguments. Consult compositingState.m_testingOverlap to see if we want to test overlap. Use the new CompositingState copy ctor for childState, but set m_subtreeIsCompositing to false as before. If this layer is composited, look to see if need to disable over lap testing based on the transform or an animation. Just as we propagate m_subtreeIsCompositing, we have to propagate m_testingOverlap=false for the rest of the traverse. If we've just processed a layer which clips compositing descendants, we can go back to testing for overlap. (WebCore::RenderLayerCompositor::didStartAcceleratedAnimation): No need to do anything here now. It will be removed in future. (WebCore::RenderLayerCompositor::hasNonAffineTransform): No longer check perspective here, since that doesn't affect whether _this_ layer should disable overlap testing. Checking for a non-affine transform is sufficient. (WebCore::RenderLayerCompositor::isRunningAcceleratedTransformAnimation): New method to check if AnimationController is running a transform animation. * rendering/RenderLayerCompositor.h: (RenderLayerCompositor): 2012-05-03 Chris Fleizach <cfleizach@apple.com> accessibility/misspelled-attributed-string.html test sometimes throws exceptions https://bugs.webkit.org/show_bug.cgi?id=85081 Reviewed by Darin Adler. Add in more range checking in case we get back ranges from spell checking that are wrong. * accessibility/mac/WebAccessibilityObjectWrapper.mm: (AXAttributeStringSetFont): (AXAttributeStringSetColor): (AXAttributeStringSetNumber): (AXAttributeStringSetBlockquoteLevel): (AXAttributeStringSetHeadingLevel): (AXAttributeStringSetElement): 2012-05-03 Pavel Feldman <pfeldman@chromium.org> Web Inspector: move canonical mime type calculation to Resource https://bugs.webkit.org/show_bug.cgi?id=85507 Reviewed by Yury Semikhatsky. Drive-by: small refactoring that prepares code for formatter extraction. * inspector/front-end/BreakpointsSidebarPane.js: * inspector/front-end/DebuggerModel.js: (WebInspector.DebuggerModel.prototype.createLiveLocation): (WebInspector.DebuggerModel.prototype.rawLocationToUILocation): * inspector/front-end/DebuggerPresentationModel.js: (WebInspector.DebuggerPresentationModelResourceBinding.prototype._uiSourceCodeForResource): * inspector/front-end/NetworkManager.js: (WebInspector.NetworkDispatcher.prototype._createNetworkRequest): (get WebInspector): * inspector/front-end/Resource.js: (WebInspector.Resource.prototype.requestContent): (WebInspector.Resource.prototype.canonicalMimeType): (WebInspector.Resource.prototype._innerRequestContent.callback): (WebInspector.Resource.prototype._innerRequestContent): * inspector/front-end/ResourceView.js: (WebInspector.ResourceSourceFrame.prototype.requestContent): (WebInspector.ResourceSourceFrame.prototype._contentChanged): 2012-05-03 Yury Semikhatsky <yurys@chromium.org> Web Inspector: 'expires' value is incorrect for cookies https://bugs.webkit.org/show_bug.cgi?id=85489 Reviewed by Pavel Feldman. Fixed cookie 'expires' property type from integer to number so that we don't lose precision when assembling Cookie parameter in InspectorResourceAgent. * inspector/Inspector.json: 2012-05-03 Dan Bernstein <mitz@apple.com> highlight for Ruby text is mispositioned in the Web Inspector https://bugs.webkit.org/show_bug.cgi?id=82684 Reviewed by Simon Fraser. Tests: fast/writing-mode/flipped-blocks-inline-map-local-to-container-expected.html fast/writing-mode/flipped-blocks-inline-map-local-to-container.html In flipped blocks writing modes, flipping was being applied twice to box descendants of inline children of the flipped block, once during RenderBox::mapLocalToContainer, and then again by RenderInline::mapLocalToContainer. The fix is to make the latter only apply the flip to local coordinates originating in the inline or a descendant inline. This is done by adding a parameter of type ApplyContainerFlipOrNot, which defaults to ApplyContainerFlip but is reset to DoNotApplyContainerFlip in recursive calls into mapLocalToContainer(). * rendering/RenderBox.cpp: (WebCore::RenderBox::mapLocalToContainer): Added ApplyContainerFlipOrNot parameter, passing DoNotApplyContainerFlip when recursing into the container. * rendering/RenderBox.h: * rendering/RenderInline.cpp: (WebCore::RenderInline::mapLocalToContainer): Added ApplyContainerFlipOrNot paramerer, and made the flipping conditional on its value. * rendering/RenderInline.h: * rendering/RenderObject.cpp: (WebCore::RenderObject::mapLocalToContainer): Added ApplyContainerFlipOrNot parameter, passing DoNotApplyContainerFlip when recursing into the container. (WebCore::RenderObject::localToContainerQuad): Pass ApplyContainerFlip. (WebCore::RenderObject::localToContainerPoint): Ditto. * rendering/RenderObject.h: * rendering/RenderView.cpp: (WebCore::RenderView::mapLocalToContainer): Added ApplyContainerFlipOrNot parameter. * rendering/RenderView.h: * rendering/svg/RenderSVGForeignObject.cpp: (WebCore::RenderSVGForeignObject::mapLocalToContainer): Ditto. * rendering/svg/RenderSVGForeignObject.h: * rendering/svg/RenderSVGInline.cpp: (WebCore::RenderSVGInline::mapLocalToContainer): Ditto. * rendering/svg/RenderSVGInline.h: * rendering/svg/RenderSVGModelObject.cpp: (WebCore::RenderSVGModelObject::mapLocalToContainer): Ditto. * rendering/svg/RenderSVGModelObject.h: * rendering/svg/RenderSVGRoot.cpp: (WebCore::RenderSVGRoot::mapLocalToContainer): Ditto. * rendering/svg/RenderSVGRoot.h: * rendering/svg/RenderSVGText.cpp: (WebCore::RenderSVGText::mapLocalToContainer): Ditto. * rendering/svg/RenderSVGText.h: * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::mapLocalToContainer): Pass DoNotApplyContainerFlip when recursing into the parent. 2012-05-03 Pavel Feldman <pfeldman@chromium.org> Web Inspector: make Script a ContentProvider. https://bugs.webkit.org/show_bug.cgi?id=85486 Reviewed by Yury Semikhatsky. This allows us to get rid of the corresponding content provider wrapper. * inspector/front-end/ContentProviders.js: * inspector/front-end/RawSourceCode.js: (WebInspector.RawSourceCode.prototype._createContentProvider): * inspector/front-end/Script.js: (WebInspector.Script.prototype.contentURL): (WebInspector.Script.prototype.requestContent.didGetScriptSource): (WebInspector.Script.prototype.requestContent): * inspector/front-end/SnippetsModel.js: (WebInspector.SnippetsScriptMapping.prototype._createUISourceCodeForScript): 2012-05-03 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> Remove extra checks for empty string when parsing CSS value https://bugs.webkit.org/show_bug.cgi?id=85480 Reviewed by Alexis Menard. Each parse value helper function was checking whether the value string was empty. For the common case this check is already done by StylePropertySet::setProperty(). So this patch make CSSParser::parseValue() assume the value string is not empty, and fix the other two clients. Test: fast/html/font-face-empty-should-not-crash.html * css/CSSParser.cpp: (WebCore::parseColorValue): Replace the string empty check by an ASSERT() to document function's expectations. (WebCore::parseSimpleLengthValue): Ditto. (WebCore::parseKeywordValue): Ditto. (WebCore::CSSParser::parseFontFaceValue): This will be covered by the added test. (WebCore::CSSParser::parseValue): * css/WebKitCSSMatrix.cpp: (WebCore::WebKitCSSMatrix::setMatrixValue): This is already covered by transforms/cssmatrix-2d-interface.xhtml. 2012-05-03 Arpita Bahuguna <arpitabahuguna@gmail.com> Broken handling of pseudo-elements in selectors API https://bugs.webkit.org/show_bug.cgi?id=83446 Reviewed by Antti Koivisto. Test: fast/dom/Window/querySelectorAll-with-pseudo-elements.html * css/SelectorChecker.cpp: (WebCore::SelectorChecker::SelectorChecker): Setting the default value for the enum member m_mode to ResolvingStyle. (WebCore::SelectorChecker::checkSelector): Instead of verifying against the bool m_isCollectingRulesOnly, we now check whether or not m_mode is set to ResolvingStyle. (WebCore::SelectorChecker::checkOneSelector): Instead of verifying against the bool m_isCollectingRulesOnly, we now check whether or not m_mode is set to ResolvingStyle. Also, for the pseudo-elements case we check if its value is set to QueryingRules in which case we return false. * css/SelectorChecker.h: (WebCore::SelectorChecker::mode): Returns the mode (m_mode) value. (WebCore::SelectorChecker::setMode): Sets the mode (m_mode) to the passed enum value. * css/StyleResolver.cpp: (WebCore::StyleResolver::sortAndTransferMatchedRules): (WebCore::StyleResolver::collectMatchingRulesForList): Retrieves SelectorChecker's mode value. * dom/SelectorQuery.cpp: (WebCore::SelectorQuery::SelectorQuery): Sets SelectorChecker's mode to QueryingRules. * html/shadow/ContentSelectorQuery.cpp: (WebCore::ContentSelectorQuery::ContentSelectorQuery): Sets SelectorChecker's mode to CollectingRules. 2012-05-03 Pavel Feldman <pfeldman@chromium.org> Web Inspector: EXC_BAD_ACCESS in DOM breakpoint processing code. https://bugs.webkit.org/show_bug.cgi?id=85482 Reviewed by Yury Semikhatsky. 0 check added since we are guaranteed to get immediate parent, but not the whole ancestor tree. * inspector/InspectorDOMDebuggerAgent.cpp: (WebCore::InspectorDOMDebuggerAgent::descriptionForDOMEvent): 2012-05-03 Ilya Tikhonovsky <loislo@chromium.org> Web Inspector: compile time ambiguity happens when I try to assign a TypeBuilder object to an out argument. https://bugs.webkit.org/show_bug.cgi?id=85462 It happens because we have type casting operators for both types RefPtr<*Type*> and PassRefPtr<*Type*>. I think we can drop PassRefPtr type casting operator and use a named function 'release'. Reviewed by Yury Semikhatsky. * inspector/CodeGeneratorInspector.py: * inspector/ContentSearchUtils.cpp: (WebCore::ContentSearchUtils::buildObjectForSearchMatch): * inspector/InspectorApplicationCacheAgent.cpp: (WebCore::InspectorApplicationCacheAgent::buildObjectForApplicationCache): * inspector/InspectorPageAgent.cpp: (WebCore::buildObjectForCookie): (WebCore::buildObjectForSearchResult): * inspector/InspectorResourceAgent.cpp: (WebCore::buildObjectForTiming): (WebCore::InspectorResourceAgent::buildInitiatorObject): * inspector/ScriptCallFrame.cpp: (WebCore::ScriptCallFrame::buildInspectorObject): 2012-05-03 Yury Semikhatsky <yurys@chromium.org> Web Inspector: crash in InspectorResourceAgent::didReceiveWebSocketFrame https://bugs.webkit.org/show_bug.cgi?id=85394 Reviewed by Pavel Feldman. Pass string length explicitely when creating String object from non-null-terminated char* strings. * inspector/InspectorResourceAgent.cpp: (WebCore): (WebCore::InspectorResourceAgent::didReceiveWebSocketFrame): (WebCore::InspectorResourceAgent::didSendWebSocketFrame): 2012-05-03 'Pavel Feldman' <pfeldman@chromium.org> Not reviewed: never surround InspectorInstrumentation:: with ENABLED(INSPECTOR) * dom/ContainerNode.cpp: (WebCore::ContainerNode::insertBefore): (WebCore::ContainerNode::replaceChild): (WebCore::ContainerNode::appendChild): (WebCore::dispatchChildRemovalEvents): 2012-04-30 Pavel Feldman <pfeldman@chromium.org> Web Inspector: migrate breakpoint manager to live locations. https://bugs.webkit.org/show_bug.cgi?id=85136 Reviewed by Yury Semikhatsky. - Merges Breakpoint and UIBreakpoint to have single instance - Extracts storage from the breakpoint manager - Makes breakpoint manager use source mapping from the script, not the presentation model - Removes breakpoints collection from the UISourceCode Unfortunately, there are too many inter-dependencies that require that these changes are done simultaneously. * inspector/front-end/BreakpointManager.js: (WebInspector.BreakpointManager): (WebInspector.BreakpointManager.prototype.setBreakpoint): (WebInspector.BreakpointManager.prototype.breakpoint): (WebInspector.BreakpointManager.prototype.breakpointLocationsForUISourceCode): (WebInspector.BreakpointManager.prototype.removeAllBreakpoints): (WebInspector.BreakpointManager.prototype.reset): (WebInspector.BreakpointManager.prototype.debuggerReset): (WebInspector.BreakpointManager.prototype._breakpointResolved): (WebInspector.BreakpointManager.prototype._removeBreakpoint): (WebInspector.BreakpointManager.prototype._uiLocationAdded): (WebInspector.BreakpointManager.prototype._uiLocationRemoved): (WebInspector.BreakpointManager.prototype.storage): (WebInspector.BreakpointManager.Breakpoint): (WebInspector.BreakpointManager.Breakpoint.prototype.primaryUILocation): (WebInspector.BreakpointManager.Breakpoint.prototype._addResolvedLocation): (WebInspector.BreakpointManager.Breakpoint.prototype.enabled): (WebInspector.BreakpointManager.Breakpoint.prototype.setEnabled): (WebInspector.BreakpointManager.Breakpoint.prototype.condition): (WebInspector.BreakpointManager.Breakpoint.prototype.setCondition): (WebInspector.BreakpointManager.Breakpoint.prototype._updateBreakpoint): (WebInspector.BreakpointManager.Breakpoint.prototype.remove): (WebInspector.BreakpointManager.Breakpoint.prototype._setInDebugger.didSetBreakpoint): (WebInspector.BreakpointManager.Breakpoint.prototype._setInDebugger): (WebInspector.BreakpointManager.Breakpoint.prototype._removeFromDebugger): (WebInspector.BreakpointManager.Breakpoint.prototype._resetLocations): (WebInspector.BreakpointManager.Breakpoint.prototype._breakpointStorageId): (WebInspector.BreakpointManager.Breakpoint.prototype._fakeBreakpointAtPrimaryLocation): (WebInspector.BreakpointManager.Storage.get this): (WebInspector.BreakpointManager.Storage): (WebInspector.BreakpointManager.Storage.prototype.restoreBreakpoints): (WebInspector.BreakpointManager.Storage.prototype._updateBreakpoint): (WebInspector.BreakpointManager.Storage.prototype._removeBreakpoint): (WebInspector.BreakpointManager.Storage.prototype._save): (set WebInspector.BreakpointManager.Storage.Item): * inspector/front-end/BreakpointsSidebarPane.js: (WebInspector.JavaScriptBreakpointsSidebarPane): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointAdded.didRequestContent): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointAdded): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointRemoved): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype.highlightBreakpoint): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._createBreakpointItemId): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointClicked): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointCheckboxClicked): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointContextMenu): * inspector/front-end/DebuggerModel.js: (WebInspector.DebuggerModel): (WebInspector.DebuggerModel.prototype.breakpointsActive): (WebInspector.DebuggerModel.prototype.createLiveLocation): * inspector/front-end/DebuggerPresentationModel.js: (WebInspector.DebuggerPresentationModel.prototype._handleUISourceCodeListChanged): (WebInspector.DebuggerPresentationModelResourceBinding.prototype._setContentWithInitialContent): * inspector/front-end/JavaScriptSource.js: (WebInspector.JavaScriptSource): (WebInspector.JavaScriptSource.prototype.consoleMessagesCleared): * inspector/front-end/JavaScriptSourceFrame.js: (WebInspector.JavaScriptSourceFrame): (WebInspector.JavaScriptSourceFrame.prototype.canEditSource): (WebInspector.JavaScriptSourceFrame.prototype.editContent): (WebInspector.JavaScriptSourceFrame.prototype._onContentChanged): (WebInspector.JavaScriptSourceFrame.prototype.populateLineGutterContextMenu): (WebInspector.JavaScriptSourceFrame.prototype.beforeTextChanged): (WebInspector.JavaScriptSourceFrame.prototype.didEditContent): (WebInspector.JavaScriptSourceFrame.prototype._addBreakpointDecoration): (WebInspector.JavaScriptSourceFrame.prototype._onMouseDown): (WebInspector.JavaScriptSourceFrame.prototype._editBreakpointCondition.finishEditing): (WebInspector.JavaScriptSourceFrame.prototype._editBreakpointCondition): (WebInspector.JavaScriptSourceFrame.prototype._breakpointAdded): (WebInspector.JavaScriptSourceFrame.prototype._breakpointRemoved): (WebInspector.JavaScriptSourceFrame.prototype.onTextViewerContentLoaded): (WebInspector.JavaScriptSourceFrame.prototype._setBreakpoint): (WebInspector.JavaScriptSourceFrame.prototype._continueToLine): (WebInspector.JavaScriptSourceFrame.prototype._updateBreakpointsAfterLiveEdit): * inspector/front-end/Script.js: (WebInspector.Script.prototype.rawLocationToUILocation): * inspector/front-end/ScriptsPanel.js: (WebInspector.ScriptsPanel.prototype._uiSourceCodeAdded): (WebInspector.ScriptsPanel.prototype._uiSourceCodeRemoved): (WebInspector.ScriptsPanel.prototype._debuggerPaused.else.didGetUILocation): (WebInspector.ScriptsPanel.prototype._debuggerPaused): (WebInspector.ScriptsPanel.prototype._uiSourceCodeReplaced): * inspector/front-end/UISourceCode.js: (WebInspector.UISourceCode.prototype.contentChanged): 2012-05-03 Andrey Kosyakov <caseq@chromium.org> Unreviewed attemp to fix chromium win build broken at r115943. * notifications/NotificationClient.h: (WebCore): 2012-05-03 Vivek Galatage <vivekgalatage@gmail.com> Linker warnings due to duplicate symbols for SimplifyMarkupCommand.cpp on Windows https://bugs.webkit.org/show_bug.cgi?id=85467 Reviewed by Ryosuke Niwa. Removed the multiple inclusion of the file SimplifyMarkupCommand.cpp No new tests required. * WebCore.vcproj/WebCore.vcproj: 2012-05-03 Uday Kiran <udaykiran@motorola.com> CSS clip: auto clips to box borders instead of removing clipping https://bugs.webkit.org/show_bug.cgi?id=36772 Reviewed by Andreas Kling. According to CSS 2.1 spec, http://www.w3.org/TR/CSS2/visufx.html#propdef-clip, clip property with value 'auto' the element does not clip. Also getPropertyValue for clip when auto is specified should return "auto" and not "rect(0px 0px 0px 0px)". Tests: css2.1/20110323/clip-001-expected.html css2.1/20110323/clip-001.html * css/StyleBuilder.cpp: (WebCore::ApplyPropertyClip::applyValue): 2012-05-02 Antti Koivisto <antti@apple.com> Add temporary feature define for parsed stylesheet caching https://bugs.webkit.org/show_bug.cgi?id=85413 Rubber-stamped by Nikolas Zimmermann. While not an externally visible feature this is still a significant internal change. It is good to have define in case someone has an urgent need to turn it off. Caching is enabled by default on all platforms. The define should be removed after some bake time. * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setCSSStyleSheet): 2012-05-03 Nikolas Zimmermann <nzimmermann@rim.com> Accumulation for values-animation is broken https://bugs.webkit.org/show_bug.cgi?id=85158 Reviewed by Zoltan Herczeg. Follow-up patch: Add const Foo& foo() const accessors to SVGAnimatedType, to avoid the "Foo& foo = animated->foo()" idiom in all cases where we don't need to mutate 'foo'. Use "const Foo& foo = animated->foo()" instead. Inline all of these methods to avoid the function call overhead. For to-animations we actually mutated the from value before, but it wasn't a problem in practive, as we did that on every animation step. Fully avoid these inconsitencies by never mutating the from/to types stored in SVGAnimateElement. Cache toAtEndOfDurationType just like m_toType/m_fromType in SVGAnimateElement, to avoid reconstructing it on every animation step. No new tests, only design/performance fixes. * svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::calculateAnimatedValue): (WebCore::SVGAnimateElement::calculateToAtEndOfDurationValue): (WebCore::SVGAnimateElement::targetElementWillChange): * svg/SVGAnimateElement.h: (SVGAnimateElement): * svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::SVGAnimateMotionElement): (WebCore::SVGAnimateMotionElement::calculateToAtEndOfDurationValue): (WebCore::SVGAnimateMotionElement::calculateFromAndToValues): (WebCore::SVGAnimateMotionElement::calculateFromAndByValues): (WebCore::SVGAnimateMotionElement::calculateAnimatedValue): * svg/SVGAnimateMotionElement.h: (SVGAnimateMotionElement): * svg/SVGAnimatedAngle.cpp: (WebCore::SVGAnimatedAngleAnimator::addAnimatedTypes): (WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue): * svg/SVGAnimatedBoolean.cpp: (WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue): * svg/SVGAnimatedColor.cpp: (WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue): * svg/SVGAnimatedEnumeration.cpp: (WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue): * svg/SVGAnimatedInteger.cpp: (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedIntegerOptionalInteger.cpp: (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::addAnimatedTypes): (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedLength.cpp: (WebCore::SVGAnimatedLengthAnimator::addAnimatedTypes): (WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue): * svg/SVGAnimatedLengthList.cpp: (WebCore::SVGAnimatedLengthListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumber.cpp: (WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberOptionalNumber.cpp: (WebCore::SVGAnimatedNumberOptionalNumberAnimator::addAnimatedTypes): (WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedPath.cpp: (WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue): * svg/SVGAnimatedPointList.cpp: (WebCore::SVGAnimatedPointListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue): * svg/SVGAnimatedPreserveAspectRatio.cpp: (WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue): * svg/SVGAnimatedRect.cpp: (WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue): * svg/SVGAnimatedString.cpp: (WebCore::SVGAnimatedStringAnimator::calculateAnimatedValue): * svg/SVGAnimatedTransformList.cpp: (WebCore::SVGAnimatedTransformListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue): * svg/SVGAnimatedType.cpp: * svg/SVGAnimatedType.h: (WebCore::SVGAnimatedType::angleAndEnumeration): (SVGAnimatedType): (WebCore::SVGAnimatedType::boolean): (WebCore::SVGAnimatedType::color): (WebCore::SVGAnimatedType::enumeration): (WebCore::SVGAnimatedType::integer): (WebCore::SVGAnimatedType::integerOptionalInteger): (WebCore::SVGAnimatedType::length): (WebCore::SVGAnimatedType::lengthList): (WebCore::SVGAnimatedType::number): (WebCore::SVGAnimatedType::numberList): (WebCore::SVGAnimatedType::numberOptionalNumber): (WebCore::SVGAnimatedType::path): (WebCore::SVGAnimatedType::pointList): (WebCore::SVGAnimatedType::preserveAspectRatio): (WebCore::SVGAnimatedType::rect): (WebCore::SVGAnimatedType::string): (WebCore::SVGAnimatedType::transformList): * svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::currentValuesForValuesAnimation): (WebCore::SVGAnimationElement::startedActiveInterval): (WebCore::SVGAnimationElement::updateAnimation): * svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::adjustFromToListValues): (WebCore::SVGAnimationElement::animateDiscreteType): (SVGAnimationElement): 2012-05-02 Alexander Færøy <ahf@0x90.dk> Rename deviceDPI to devicePixelRatio https://bugs.webkit.org/show_bug.cgi?id=85049 Reviewed by Kenneth Rohde Christiansen. No new tests added since this is a minor refactoring with no changes that should affect tests. * page/Settings.cpp: (WebCore::Settings::Settings): * page/Settings.h: (WebCore::Settings::setDevicePixelRatio): (WebCore::Settings::devicePixelRatio): (Settings): 2012-05-03 Nikolas Zimmermann <nzimmermann@rim.com> Fix multiple begin values support - especially with seeking through setCurrentTime https://bugs.webkit.org/show_bug.cgi?id=85372 Reviewed by Zoltan Herczeg. Multiple begin values aka. begin="0s; 2s" aren't correctly handled - resulting in broken & unexpected behavior. Supporting seeking properly on documents containing such animations is very important, otherwise we can't reliable test animations using either reftests or the SVG JS animation test framework. Testcase: <rect height="100" fill="green"> <animate attributeName="width" begin="0s; 2s" dur="8s" from="0" to="100" fill="freeze"/> </rect> What's expected? Two times should be contained in the 'begin' times list in SVGSMILElement: m_beginTimes = { 0s, 2s }. The initial first resolved interval is: m_intervalBegin=0.0s, m_intervalEnd=8.0s. During t=0s..1.9999s the m_intervalBegin/m_intervalEnd are correct. At t=2s, a new interval can be started. m_intervalEnd should be set to nextBeginTime, where nextBeginTime=2s. The current interval should get cropped to: m_intervalBegin=0s, m_intervalEnd=2s. The following call to resolveNextInterval() sees that elapsed >= m_intervalEnd, and thus moves on to the next interval. m_intervalBegin should be 2s and m_intervalEnd=10s after that. In trunk this behavior is only partly implemented and broken. Especially broken together with seeking via SVGSVGElement.setCurrentTime. That's because we don't correctly seek to the right interval in case of multiple begin values, eg. if we sample an animation with begin="0s; 3s" dur="6s" we always remain in the first interval and don't move on. Fix all of these issues, making lots more tests work in Dr. Olaf Hofmanns SVG Animation test suite. Tests: svg/animations/multiple-begin-additive-animation.html svg/animations/multiple-begin-animation-discrete-expected.svg svg/animations/multiple-begin-animation-discrete.svg svg/animations/multiple-begin-animation-expected.svg svg/animations/multiple-begin-animation.svg * svg/animation/SMILTimeContainer.cpp: (WebCore::SMILTimeContainer::begin): (WebCore::SMILTimeContainer::setElapsed): (WebCore::SMILTimeContainer::updateAnimations): * svg/animation/SMILTimeContainer.h: (SMILTimeContainer): * svg/animation/SVGSMILElement.cpp: (WebCore::SVGSMILElement::findInstanceTime): (WebCore::SVGSMILElement::resolveInterval): (WebCore::SVGSMILElement::resolveNextInterval): (WebCore): (WebCore::SVGSMILElement::checkRestart): (WebCore::SVGSMILElement::seekToIntervalCorrespondingToTime): (WebCore::SVGSMILElement::progress): * svg/animation/SVGSMILElement.h: (SVGSMILElement): 2012-05-03 Dana Jansens <danakj@chromium.org> [chromium] Don't add small opaque areas to the occlusion tracker's Region https://bugs.webkit.org/show_bug.cgi?id=85297 Reviewed by Adrienne Walker. Don't add small opaque areas (smaller than 160x160) to the occlusion tracker's Region objects to avoid high Region::unite() costs. We would like Region to just be fast enough that this isn't a concern, and there are patches in flight to do this, but at the moment, small opaque areas add significant cost if there is many of them, for potentially small gains since they do not cover entire tiles. Comments in http://code.google.com/p/chromium/issues/detail?id=124687 motivate this approach for now, and point to around 160x160 being a reasonable threshold. Removes the opaque paint tracking flag while we're here. The flag is no longer used, and was broken when we moved the "paint vs opaque flag" distinction out to the layers. Unit test: CCOcclusionTrackerTestMinimumTrackingSize * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: (WebCore::CCLayerTreeHost::paintLayerContents): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::calculateRenderPasses): * platform/graphics/chromium/cc/CCOcclusionTracker.cpp: (WebCore::::CCOcclusionTrackerBase): (WebCore::addOcclusionBehindLayer): (WebCore::::markOccludedBehindLayer): * platform/graphics/chromium/cc/CCOcclusionTracker.h: (WebCore::CCOcclusionTrackerBase::setMinimumTrackingSize): (CCOcclusionTrackerBase): (WebCore::CCOcclusionTrackerBase::preferredMinimumTrackingSize): 2012-05-02 Jon Lee <jonlee@apple.com> Migrate permission functions to Notification from NotificationCenter https://bugs.webkit.org/show_bug.cgi?id=80485 <rdar://problem/10965458> Reviewed by Jian Li. * notifications/Notification.idl: Add permission functions. * notifications/DOMWindowNotifications.idl: Wrap webkitNotifications as part of legacy API. * notifications/Notification.cpp: New permission functions are wrapped with ENABLE(NOTIFICATIONS) (WebCore::Notification::taskTimerFired): Use the new permission functions to determine whether we can show the notification. (WebCore::Notification::permissionLevel): (WebCore::Notification::permissionString): Declare three static locals for each of the values, and return based on the permission enum. (WebCore::Notification::requestPermission): Forward request to client. * notifications/Notification.h: * notifications/NotificationPermissionCallback.h: Added. (NotificationPermissionCallback): (WebCore::NotificationPermissionCallback::~NotificationPermissionCallback): * notifications/NotificationPermissionCallback.idl: Added. * notifications/NotificationCenter.cpp: Wrap permission functions in ENABLE(LEGACY_NOTIFICATIONS) * notifications/NotificationCenter.h: Wrap permission functions in ENABLE(LEGACY_NOTIFICATIONS) * notifications/NotificationCenter.idl: Refactor conditionals to make the center available only when ENABLE(LEGACY_NOTIFICATIONS) is on. * notifications/NotificationPresenter.h: (WebCore::NotificationPresenter::requestPermission): Add new requestPermission() function for new NotificationPermissionCallback type. Make it a stub implementation until all ports have adopted. * notifications/NotificationClient.h: Add another requestPermission() client call, wrapped in ENABLE(NOTIFICATIONS) that accepts the NotificationPermissionCallback. Wrap the original one in ENABLE(LEGACY_NOTIFICATIONS). * bindings/js/JSDesktopNotificationsCustom.cpp: Change to include the implementation only in ENABLE(LEGACY_NOTIFICATIONS). * bindings/js/JSNotificationsCustom.cpp: Custom implementation of requestPermission(). * bindings/v8/custom/V8NotificationCustom.cpp: Custom implementation of requestPermission(). * notifications/WorkerContextNotifications.idl: Make webktNotifications available only in legacy API. * CMakeLists.txt: Add new callback idl. * DerivedSources.make: Add new callback idl. * DerivedSources.pri: Add new callback idl. * GNUmakefile.list.am: Add NotificationPermissionCallback files. * Target.pri: Include JSNotificationCustom.cpp, V8NotificationCustom.cpp * UseJSC.cmake: Include JSNotificationCustom.cpp * UseV8.cmake: Include V8NotificationCustom.cpp * WebCore.gypi: Include JSNotificationCustom.cpp, V8NotificationCustom.cpp, JSNotificationPermissionCallback.{h,cpp} * WebCore.vcproj/WebCore.vcproj: Include JSNotificationCustom.cpp, JSNotificationPermissionCallback.{h,cpp} * WebCore.exp.in: Export permissionString(). * WebCore.xcodeproj/project.pbxproj: Add callback idl, h, and cpp files. 2012-05-02 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r115907. http://trac.webkit.org/changeset/115907 https://bugs.webkit.org/show_bug.cgi?id=85458 It broke all viewport tests on Qt and on GTK (Requested by Ossy on #webkit). * dom/ViewportArguments.cpp: (WebCore::computeViewportAttributes): * dom/ViewportArguments.h: (ViewportAttributes): 2012-05-02 Gustavo Noronha Silva <gns@gnome.org> [GTK] Finish moving modules into libWebCoreModules.la https://bugs.webkit.org/show_bug.cgi?id=85449 Unreviewed build fix. * GNUmakefile.list.am: move remaining modules source files into the libWebCoreModules library, this should fix the problems people had building the 1.9.1 tarball with unpatched make. 2012-05-02 Dongwoo Im <dw.im@samsung.com> [EFL] Unreviewed, Fix build break when WEB_AUDIO is enabled. https://bugs.webkit.org/show_bug.cgi?id=85443 Unreviewed build fix. Three new files were added in the Modules/webaudio directory. These files should be included into the CMakeLists.txt file. * CMakeLists.txt: Add the newly created files into the CMakeLists.txt 2012-05-02 Eric Seidel <eric@webkit.org> Sort ENABLE_ defines in FeatureDefines.xcconfig files to make them easier to compare with one another (and easier to autogenerate) https://bugs.webkit.org/show_bug.cgi?id=85433 Reviewed by Adam Barth. I have a script which can autogenerate these xcconfig files as well as the vsprops files (and soon the Chromium, cmake, gnumake and qmake) feature lists from a central feature list file. In preparation for posting such a tool, I'm re-sorting these xcconfig files to be alphabetically ordered (currently they're close, but not quite). There is also at least one inconsistency between these files (CSS_LEGACY_PREFIXES) which I will fix in a second pass. I will also sort the FEATURE_DEFINES = line in a follow-up patch. * Configurations/FeatureDefines.xcconfig: 2012-05-02 Dana Jansens <danakj@chromium.org> [chromium] Don't occlude pixels in a surface that are needed for a background filter blur https://bugs.webkit.org/show_bug.cgi?id=84317 Reviewed by Adrienne Walker. Blur filters move pixels around, so a pixel can influence the value of pixels at some distance away. If a pixel is not occluded, then all pixels within the radius of the blur may influence the value of that pixel, so they should also stay unoccluded. For background filters, the pixels are read from the filter's target surface, so we remove occlusion from that target surface from pixels that will blur into visible pixels. Unit test: CCOcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilter CCOcclusionTrackerTestTwoBackgroundFiltersReduceOcclusionTwice CCOcclusionTrackerTestDontOccludePixelsNeededForBackgroundFilterWithClip CCOcclusionTrackerTestDontReduceOcclusionBelowBackgroundFilter CCOcclusionTrackerTestDontReduceOcclusionIfBackgroundFilterIsOccluded CCOcclusionTrackerTestReduceOcclusionWhenBackgroundFilterIsPartiallyOccluded * platform/graphics/chromium/cc/CCOcclusionTracker.cpp: (WebCore::reduceOcclusion): (WebCore): (WebCore::reduceOcclusionBelowSurface): (WebCore::::leaveToTargetRenderSurface): (WebCore::::unoccludedContributingSurfaceContentRect): * platform/graphics/chromium/cc/CCOcclusionTracker.h: (CCOcclusionTrackerBase): * platform/graphics/chromium/cc/CCQuadCuller.cpp: (WebCore::CCQuadCuller::appendSurface): (WebCore::CCQuadCuller::appendReplica): 2012-05-02 Levi Weintraub <leviw@chromium.org> Convert FractionalLayoutUnit overflow assertions to stderr warnings https://bugs.webkit.org/show_bug.cgi?id=85393 Reviewed by Eric Seidel. Writing warnings to stderr when FractionalLayoutUnits overflow on debug builds instead of asserting and crashing. It can be very useful to WebKit developers know when overflow is occurring, but it's not always a programming error, so assert wasn't the right action. No new tests. No change in behavior. * platform/FractionalLayoutUnit.h: (WebCore): (WebCore::FractionalLayoutUnit::FractionalLayoutUnit): (WebCore::FractionalLayoutUnit::toUnsigned): (WebCore::FractionalLayoutUnit::setRawValue): 2012-04-18 Jon Honeycutt <jhoneycutt@apple.com> FrameLoaderClient::dispatchWillSendSubmitEvent() should be given more information about the form being submitted https://bugs.webkit.org/show_bug.cgi?id=84297 Reviewed by Andy Estes. * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::prepareForSubmission): Get the form field names and values, and use them to create a FormState object. Pass this object when calling dispatchWillSendSubmitEvent(). (WebCore::HTMLFormElement::getTextFieldValues): Loop over the associated elements, looking for <input> elements. Collect their names and values. * html/HTMLFormElement.h: Declare getTextFieldData(). * loader/EmptyClients.h: (WebCore::EmptyFrameLoaderClient::dispatchWillSendSubmitEvent): Updated declaration for new parameter type. * loader/FrameLoaderClient.h: Updated declaration of dispatchWillSendSubmitEvent() for new param type. 2012-04-13 Jon Honeycutt <jhoneycutt@apple.com> Make Page::setDefersLoading() have a call count so that each time loading is deferred, it must be balanced with a call to resume. https://bugs.webkit.org/show_bug.cgi?id=84522 Reviewed by Andy Estes. * page/Page.cpp: (WebCore::Page::Page): Initialize new call count member. (WebCore::Page::setDefersLoading): Check whether the callers wants balanced defer/resume loading behavior. If the call count is not changing from 0 to 1 or 1 to 0, return early. Otherwise, defer or resume loading for frames in this page. * page/Page.h: (WebCore::Page::defersLoading): Added a member to hold the call count. * page/Settings.cpp: (WebCore::Settings::Settings): Initialized new member m_wantsBalancedSetDefersLoadingBehavior. * page/Settings.h: (Settings): Added new member m_wantsBalancedSetDefersLoadingBehavior. (WebCore::Settings::setWantsBalancedSetDefersLoadingBehavior): Setter. (WebCore::Settings::wantsBalancedSetDefersLoadingBehavior): Getter. 2012-05-02 Ojan Vafai <ojan@chromium.org> Add a histogram for rendertree size https://bugs.webkit.org/show_bug.cgi?id=85226 Reviewed by Eric Seidel. We record it when the page gets hidden, since this is a point at which, in theory, we could kill the rendertree. No new tests. This isn't web visible, so there's no way to test it. * loader/FrameLoader.cpp: (WebCore::FrameLoader::clear): * page/Page.cpp: (WebCore::Page::renderTreeSize): (WebCore): (WebCore::Page::setVisibilityState): * page/Page.h: (Page): * platform/HistogramSupport.cpp: (WebCore::HistogramSupport::histogramCustomCounts): (WebCore): * platform/HistogramSupport.h: (HistogramSupport): * platform/chromium/HistogramSupportChromium.cpp: (WebCore::HistogramSupport::histogramCustomCounts): (WebCore): 2012-05-02 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r115902. http://trac.webkit.org/changeset/115902 https://bugs.webkit.org/show_bug.cgi?id=85441 Compile failure on linux 32 (Requested by zhenyao on #webkit). * Modules/indexeddb/IDBBackingStore.h: (IDBBackingStore): * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore::IDBLevelDBBackingStore::nextAutoIncrementNumber): * Modules/indexeddb/IDBLevelDBBackingStore.h: (IDBLevelDBBackingStore): * Modules/indexeddb/IDBObjectStoreBackendImpl.cpp: (WebCore::IDBObjectStoreBackendImpl::putInternal): (WebCore::IDBObjectStoreBackendImpl::genAutoIncrementKey): * Modules/indexeddb/IDBObjectStoreBackendImpl.h: (IDBObjectStoreBackendImpl): 2012-05-02 Julien Chaffraix <jchaffraix@webkit.org> Add ASSERTs to avoid querying dirtied z-index or normal flow lists on RenderLayer https://bugs.webkit.org/show_bug.cgi?id=84920 Reviewed by Simon Fraser. Covered by existing tests in Debug (at least several time!). This change adds some ASSERTs on RenderLayer that prevent any use of its lists if they are dirtied. On top of this change, we added an invariant that non-stacking contexts should have their z-index lists NULL (instead of empty or NULL previously). This is enforced at updateZOrderLists time as we now ensure that it is called in a timely manner. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateLayerBounds): Added call to updateLayersIfNeeded as we will query them later and there is no guarantee that they are not dirty (we recurse in our children as part of calculateLayerBounds). This was causing the new ASSERTs to trigger on css3/filter/ tests. (WebCore::RenderLayer::dirtyZOrderLists): Added a comment as to why we can't ASSERT that we are in a stacking context here. (WebCore::RenderLayer::rebuildZOrderLists): Added an ASSERT that we only rebuild z-index lists for dirtied stacking context. (WebCore::RenderLayer::updateLayerListsIfNeeded): Updated to ensure that the reflection layer has its layers updated too. This was triggering the new ASSERTs on fast/runins/run-in-layer-not-removed-crash.html. (WebCore::RenderLayer::updateCompositingAndLayerListsIfNeeded): Updated to use the new isDirtyStackingContext function. * rendering/RenderLayer.h: (WebCore::RenderLayer::isDirtyStackingContext): New helper function. Also made updateLayerListsIfNeeded() the only way to update layer. That should prevent any misuse. (WebCore::RenderLayer::posZOrderList): (WebCore::RenderLayer::negZOrderList): (WebCore::RenderLayer::normalFlowList): ASSERT that we don't query any of the previous lists if they are dirty. Also enforce the invariant that non-stacking contexts should have NULL z-index lists. (WebCore::RenderLayer::clearZOrderLists): New function to clearZOrderLists so that we can enfore the previous invariant. (WebCore::RenderLayer::updateZOrderLists): Updated to clear the dirty flag and the z-index lists for non-stacking context. * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::addToOverlapMapRecursive): (WebCore::RenderLayerCompositor::computeCompositingRequirements): (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): Removed the explicit ASSERTs. (WebCore::RenderLayerCompositor::updateLayerTreeGeometry): (WebCore::RenderLayerCompositor::canBeComposited): Disabled compositing on RenderLayer in flow thread. Because flow thread's RenderLayer are not collected as part of RenderLayer's lists and could be composited, this was causing the new ASSERTs to trigger (e.g. on fast/regions/webkit-flow-renderer-layer.html). * rendering/RenderTreeAsText.cpp: (WebCore::writeLayers): Updated to use updateLayerListsIfNeeded(). 2012-05-02 Levi Weintraub <leviw@chromium.org> Remove unused adjustForAbsoluteZoom method in RenderObject.h https://bugs.webkit.org/show_bug.cgi?id=85396 Reviewed by Eric Seidel. We only want to use the integer adjustForAbsoluteZoom method, so this remnant is both unused and potentially confusing. No new tests. Removing unused code. * rendering/RenderObject.h: (WebCore): 2012-05-02 Fady Samuel <fsamuel@chromium.org> Removing line in computeViewportAttributes that enforces a minimum scale factor to never allow zooming out more than viewport https://bugs.webkit.org/show_bug.cgi?id=70609 Reviewed by Kenneth Rohde Christiansen. Make ViewportAttributes' layoutSize be a FloatRect to avoid rounding too early, and the occasional off by one fixed layout dimensions. * dom/ViewportArguments.cpp: (WebCore::computeViewportAttributes): * dom/ViewportArguments.h: (ViewportAttributes): 2012-05-02 Joshua Bell <jsbell@chromium.org> IndexedDB: Handle generated keys up to 2^53 https://bugs.webkit.org/show_bug.cgi?id=85114 The spec defines the behavior for generated keys up to 2^53 (the maximum integer storable as an ECMAScript number) and the error case when going beyond that. Ensure that we can handle values up to that point and generate errors beyond. Reviewed by Tony Chang. Test: storage/indexeddb/key-generator.html * Modules/indexeddb/IDBBackingStore.h: (IDBBackingStore): * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore::IDBLevelDBBackingStore::nextAutoIncrementNumber): * Modules/indexeddb/IDBLevelDBBackingStore.h: (IDBLevelDBBackingStore): * Modules/indexeddb/IDBObjectStoreBackendImpl.cpp: (WebCore::IDBObjectStoreBackendImpl::putInternal): (WebCore::IDBObjectStoreBackendImpl::genAutoIncrementKey): * Modules/indexeddb/IDBObjectStoreBackendImpl.h: (IDBObjectStoreBackendImpl): 2012-05-02 Adam Klein <adamk@chromium.org> Childlist mutations in shadow DOM should be observable with MutationObservers https://bugs.webkit.org/show_bug.cgi?id=85402 Reviewed by Ojan Vafai. Though Mutation Events are not supported in Shadow DOM, MutationObservers are supposed to be. Due to a misplacement of the ChildListMutationScope, they were erroneously getting skipped. This patch moves code around to properly notify when childlist are mutated in shadow DOM and covers that change with a new test. Test: fast/mutation/shadow-dom.html * dom/ContainerNode.cpp: (WebCore::willRemoveChild): Handle notification of removal directly. (WebCore::willRemoveChildren): ditto. (WebCore::dispatchChildInsertionEvents): Remove notification of insertion. (WebCore::dispatchChildRemovalEvents): Remove notification of removal. (WebCore::updateTreeAfterInsertion): Handle notification of insertion directly. 2012-05-02 Eric Carlson <eric.carlson@apple.com> Crash in WebCore::TextTrackList::remove https://bugs.webkit.org/show_bug.cgi?id=85095 Reviewed by Maciej Stachowiak. Test: media/track/track-remove-quickly.html * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::willRemoveTrack): Return immediately if the tracks collection has not been allocated yet. 2012-05-02 David Barton <dbarton@mathscribe.com> After appending MathML with jquery the table renders with overlaps https://bugs.webkit.org/show_bug.cgi?id=52444 Reviewed by Julien Chaffraix. This patch also fixes bugs 72834 and 47781. The main problem is that correct preferred logical widths are affected by operator stretching. Thus we add a call to setNeedsLayoutAndPrefWidthsRecalc() after the stretching code in RenderMathMLOperator.cpp, and change RenderMathMLBlock and RenderMathMLRow to make sure that stretching of children is done before an <mrow>'s preferred logical widths are computed. Test: Added a test to mathml/presentation/mo-stretch.html * rendering/mathml/RenderMathMLBlock.cpp: (WebCore::RenderMathMLBlock::RenderMathMLBlock): (WebCore::RenderMathMLBlock::computePreferredLogicalWidths): (WebCore::RenderMathMLBlock::computeChildrenPreferredLogicalHeights): (WebCore::RenderMathMLBlock::preferredLogicalHeightAfterSizing): * rendering/mathml/RenderMathMLBlock.h: (WebCore::RenderMathMLBlock::unembellishedOperator): (WebCore::RenderMathMLBlock::isPreferredLogicalHeightDirty): (WebCore::RenderMathMLBlock::preferredLogicalHeight): (WebCore::RenderMathMLBlock::setPreferredLogicalHeight): - Add m_preferredLogicalHeight and methods to compute and return it. - Remove stretchToHeight() from most classes as it no longer needs to be done recursively. We just call it on the base of an embellished operator, and that calls setNeedsLayoutAndPrefWidthsRecalc() to mark itself and its container chain. * rendering/mathml/RenderMathMLOperator.cpp: (WebCore::RenderMathMLOperator::stretchToHeight): - Don't compare an unexpanded height to an expanded one. (WebCore::RenderMathMLOperator::computePreferredLogicalWidths): (WebCore::RenderMathMLOperator::updateFromElement): - After stretching, call setNeedsLayoutAndPrefWidthsRecalc(). * rendering/mathml/RenderMathMLOperator.h: (RenderMathMLOperator): * rendering/mathml/RenderMathMLRow.cpp: (WebCore::RenderMathMLRow::computePreferredLogicalWidths): (WebCore::RenderMathMLRow::layout): * rendering/mathml/RenderMathMLRow.h: (RenderMathMLRow): - Add computePreferredLogicalWidths(), using computeChildrenPreferredLogicalHeights() to compute our children's preferred logical heights if necessary, followed by operator stretching. * rendering/mathml/RenderMathMLSubSup.cpp: * rendering/mathml/RenderMathMLSubSup.h: (RenderMathMLSubSup): * rendering/mathml/RenderMathMLUnderOver.cpp: * rendering/mathml/RenderMathMLUnderOver.h: (RenderMathMLUnderOver): 2012-05-02 Dana Jansens <danakj@chromium.org> [chromium] Avoid extra Region copies in CCOcclusionTracker https://bugs.webkit.org/show_bug.cgi?id=85257 Reviewed by Adrienne Walker. Instead of making a Region for each layer and then uniting the region with the current occlusion, directly add the rects for the given layer to the current occlusion. When subtracting a region from a rect, just subtract the region directly instead of computing the intersecting region. Covered by existing tests. * platform/graphics/chromium/cc/CCOcclusionTracker.cpp: (WebCore::addOcclusionBehindLayer): (WebCore::::markOccludedBehindLayer): (WebCore::rectSubtractRegion): 2012-05-02 Keith Rosenblatt <keith.rosenblatt@nokia.com> [Qt] ASSERT in FontCustomPlatformDataQt.cpp with invalid font in data URI https://bugs.webkit.org/show_bug.cgi?id=85089 Reviewed by Simon Hausmann. Do not return data referencing an invalid QRawFont from createFontCustomPlatformData(). Instead return null. Test: fast/css/font-face-data-uri-invalid.html * platform/graphics/qt/FontCustomPlatformDataQt.cpp: (WebCore::createFontCustomPlatformData): 2012-05-02 Michal Mocny <mmocny@google.com> [chromium] Set contents texture manager preferred memory limit based on GpuMemoryManager suggestion. https://bugs.webkit.org/show_bug.cgi?id=84270 Reviewed by Kenneth Russell. Updates the content texture manager memory limits based on GpuMemoryManager memory allocation suggestions. The memory allocation size (in bytes) is fed from LayerRendererChromium memory allocation changed callback handler to CCLayerTreeHost. At that point we adjust the limits, using the existing notions of preferred and max limits. On android, the preferred limit is half the maximum (as it has always been), but on all other platforms the preferred limit is now equal to max, in order to allow more agressive prepainting. Finally, android has memory constraints dependant on viewportSize, but that logic has been pushed into the GpuMemoryManager. * platform/graphics/chromium/LayerRendererChromium.cpp: (WebCore::LayerRendererGpuMemoryAllocationChangedCallbackAdapter::onGpuMemoryAllocationChanged): (WebCore::LayerRendererChromium::beginDrawingFrame): * platform/graphics/chromium/LayerRendererChromium.h: (LayerRendererChromiumClient): * platform/graphics/chromium/TextureManager.cpp: (WebCore::TextureManager::setMemoryAllocationLimitBytes): (WebCore): * platform/graphics/chromium/TextureManager.h: (TextureManager): * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: (WebCore::CCLayerTreeHost::setViewportSize): (WebCore::CCLayerTreeHost::setContentsMemoryAllocationLimitBytes): (WebCore): * platform/graphics/chromium/cc/CCLayerTreeHost.h: (CCLayerTreeHost): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::setContentsMemoryAllocationLimitBytes): (WebCore): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (CCLayerTreeHostImplClient): * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp: (WebCore::CCSingleThreadProxy::postSetContentsMemoryAllocationLimitBytesToMainThreadOnImplThread): (WebCore): * platform/graphics/chromium/cc/CCSingleThreadProxy.h: * platform/graphics/chromium/cc/CCThreadProxy.cpp: (WebCore::CCThreadProxy::postSetContentsMemoryAllocationLimitBytesToMainThreadOnImplThread): (WebCore): (WebCore::CCThreadProxy::setContentsMemoryAllocationLimitBytes): * platform/graphics/chromium/cc/CCThreadProxy.h: (CCThreadProxy): 2012-05-02 Emil A Eklund <eae@chromium.org> Fix usage of layout types in platform code https://bugs.webkit.org/show_bug.cgi?id=85392 Reviewed by Eric Seidel. No new tests, no change in functionality. * page/EventHandler.cpp: (WebCore::EventHandler::handleGestureTap): Use rounded point for gestures as event handling is still mostly int based. 2012-05-02 Kenneth Russell <kbr@google.com> Don't allocate stencil buffer if stencil flag is false in context creation attributes https://bugs.webkit.org/show_bug.cgi?id=85317 Reviewed by Dimitri Glazkov. Make it appear to WebGL application that there is no stencil buffer even if the underlying GraphicsContext3D allocated one. Verified intended behavior with test case from Mozilla's bug report. Updated context-attributes-alpha-depth-stencil-antialias.html test from Khronos repository. Ran WebGL layout tests on Linux in Chrome's DRT and on Mac OS in Safari's. * html/canvas/WebGLFramebuffer.cpp: (WebCore::WebGLFramebuffer::hasStencilBuffer): Added query method. (WebCore): Changed desired semantics of isValidRenderbuffer. * html/canvas/WebGLFramebuffer.h: (WebGLFramebuffer): Added hasStencilBuffer. * html/canvas/WebGLRenderingContext.cpp: (WebCore): (WebCore::WebGLRenderingContext::initializeNewContext): Clear new flag. (WebCore::WebGLRenderingContext::bindFramebuffer): Reset stencil test upon framebuffer change. (WebCore::WebGLRenderingContext::disable): Cache flag; reset stencil test. (WebCore::WebGLRenderingContext::enable): Cache flag; reset stencil test. (WebCore::WebGLRenderingContext::framebufferRenderbuffer): Reset stencil test upon renderbuffer change. (WebCore::WebGLRenderingContext::getContextAttributes): Force depth and stencil to false if false was requested. (WebCore::WebGLRenderingContext::isEnabled): Return cached flag. (WebCore::WebGLRenderingContext::renderbufferStorage): Reset stencil test upon renderbuffer reallocation. (WebCore::WebGLRenderingContext::applyStencilTest): Enable or disable stencil test based on request and availability. (WebCore::WebGLRenderingContext::enableOrDisable): Helper function. * html/canvas/WebGLRenderingContext.h: (WebGLRenderingContext): Added cache of STENCIL_TEST flag. Deleted unused m_stencilBits. 2012-05-02 Ryosuke Niwa <rniwa@webkit.org> Drag and drop text into table is pasting the text in the next <td> element https://bugs.webkit.org/show_bug.cgi?id=75004 Reviewed by Darin Adler. The bug was caused by ReplaceSelectionCommand adjusting the insertion position to be before of the block element containing the insertion position even when the block element is a table cell. Fixed the bug by not moving the insertion position before the table cell in this case. Test: editing/pasteboard/paste-into-table-cell.html * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply): 2012-05-02 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=85309 supportsExpandedScrollbars() should check for the method we actually call rather than a related method Reviewed by Anders Carlsson. Missing colon. * platform/mac/ScrollbarThemeMac.mm: (WebCore::supportsExpandedScrollbars): 2012-05-02 Antti Koivisto <antti@apple.com> Move title and media queries from StyleSheetInternal to CSSStyleSheet https://bugs.webkit.org/show_bug.cgi?id=85387 Reviewed by Anders Carlsson. Stylesheet title and media queries are determined by the owner, not by the stylesheet itself. The fields belong to CSSStyleSheet. This will make it easier to share StyleSheetInternal instances between documents. * css/CSSStyleSheet.cpp: (WebCore::StyleSheetInternal::StyleSheetInternal): (WebCore::StyleSheetInternal::isCacheable): (WebCore): (WebCore::CSSStyleSheet::setDisabled): Invalidate the document style directly instead of ping-ponging through StyleSheetInternal. (WebCore::CSSStyleSheet::setMediaQueries): (WebCore::CSSStyleSheet::media): * css/CSSStyleSheet.h: (StyleSheetInternal): (WebCore::StyleSheetInternal::originalURL): (WebCore::StyleSheetInternal::hasCharsetRule): (WebCore::CSSStyleSheet::mediaQueries): (CSSStyleSheet): (WebCore::CSSStyleSheet::setTitle): * css/StyleResolver.cpp: (WebCore::StyleResolver::appendAuthorStylesheets): (WebCore::StyleResolver::collectMatchingRulesForList): * dom/DOMImplementation.cpp: (WebCore::DOMImplementation::createCSSStyleSheet): * dom/ProcessingInstruction.cpp: (WebCore::ProcessingInstruction::setCSSStyleSheet): * dom/StyleElement.cpp: (WebCore::StyleElement::createSheet): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::parseAttribute): (WebCore::HTMLLinkElement::setCSSStyleSheet): * html/HTMLStyleElement.cpp: (WebCore::HTMLStyleElement::parseAttribute): * svg/SVGStyleElement.cpp: (WebCore::SVGStyleElement::parseAttribute): 2012-05-02 Alexis Menard <alexis.menard@openbossa.org> Unreviewed Qt build fix with GCC 4.7.0. * platform/qt/DeviceMotionProviderQt.h: (DeviceMotionProviderQt): * platform/qt/DeviceOrientationProviderQt.cpp: (WebCore::DeviceOrientationProviderQt::~DeviceOrientationProviderQt): (WebCore): * platform/qt/DeviceOrientationProviderQt.h: (DeviceOrientationProviderQt): 2012-05-02 No'am Rosenthal <noam.rosenthal@nokia.com> [Texmap] Enable css filters in TextureMapperGL https://bugs.webkit.org/show_bug.cgi?id=75778 Unreviewed build fix to greenify the Qt Minimal bot. * platform/graphics/texmap/TextureMapperShaderManager.h: 2012-05-02 Philippe Normand <pnormand@igalia.com> [GTK] Compilation warnings in RenderTheme https://bugs.webkit.org/show_bug.cgi?id=85286 Reviewed by Martin Robinson. Removed un-needed code and refactored fileListNameForWidth accordingly to avoid un-used variable warnings during compilation. * platform/gtk/RenderThemeGtk.cpp: (WebCore): (WebCore::RenderThemeGtk::fileListNameForWidth): 2012-05-02 Ryosuke Niwa <rniwa@webkit.org> NULL ptr in WebCore::AppendNodeCommand::AppendNodeCommand https://bugs.webkit.org/show_bug.cgi?id=75843 Reviewed by Tony Chang. The crash was caused by indentIntoBlockquote's passing a bad outerBlock to moveParagraphsWithClone. When the position is created after blockquote in the following DOM: BODY * BLOCKQUOTE style=margin: 0 0 0 40px; border: none; padding: 0px; E #text "\nx\n" VisiblePosition's constructor (of startOfContents) turns the position into a legacy position (blockquote, 0). The crash occurs because this position doesn't belong in the same paragraph as E, which is the paragraph we're trying to move into the blockquote. Fixed bug by calling positionInParentAfterNode instead of positionAfterNode for now. We should eventually be able to use positionAfterNode here once VisiblePosition's constructor starts handling before/after positions properly. Test: editing/execCommand/indent-with-after-content-crash.html * editing/IndentOutdentCommand.cpp: (WebCore::IndentOutdentCommand::indentIntoBlockquote): 2012-05-02 Jer Noble <jer.noble@apple.com> WebWindowFadeAnimation ignores "duration" parameter. https://bugs.webkit.org/show_bug.cgi?id=85386 Reviewed by Brady Eidson. Ignoring the "duration" parameter causes the full screen fade and scale animations to get out of sync. * platform/mac/WebWindowAnimation.mm: (-[WebWindowFadeAnimation initWithDuration:window:initialAlpha:finalAlpha:]): 2012-05-02 Julien Chaffraix <jchaffraix@webkit.org> REGRESSION(110072): Clipping is not applied on layers that are animated using platform code https://bugs.webkit.org/show_bug.cgi?id=83954 Reviewed by Simon Fraser. Tests: fast/layers/no-clipping-overflow-hidden-added-after-transform-expected.html fast/layers/no-clipping-overflow-hidden-added-after-transform.html fast/layers/no-clipping-overflow-hidden-added-after-transition-expected.html fast/layers/no-clipping-overflow-hidden-added-after-transition.html fast/layers/no-clipping-overflow-hidden-hardware-acceleration-expected.html fast/layers/no-clipping-overflow-hidden-hardware-acceleration.html (and all the tests that will need to be rebaselined) r110072 changed the way we create layers to lazily allocate overflow: hidden ones based on layout overflow. However with hardware acceleration, certain operations do cause overflow without actually calling layout (the test cases added as part of this change are using transition / animation). This means that those cases wouldn't properly clip. Due to the above issue and the other regressions from r110072, the easiest fix is to just to roll it out. * rendering/RenderBox.h: Changed to allocate a layer whenever we have an overflow clip. * rendering/RenderBox.cpp: (WebCore::RenderBox::scrolledContentOffset): (WebCore::RenderBox::cachedSizeForOverflowClip): Reverted those 2 to avoid using the cached size logic. * rendering/RenderBlock.cpp: (WebCore::RenderBlock::updateScrollInfoAfterLayout): (WebCore::RenderBlock::layoutBlock): (WebCore::RenderBlock::paint): (WebCore::RenderBlock::isPointInOverflowControl): * rendering/RenderBlock.h: * rendering/RenderBox.cpp: (WebCore::RenderBox::willBeDestroyed): (WebCore::RenderBox::styleDidChange): (WebCore::RenderBox::layout): (WebCore::RenderBox::scrollWidth): (WebCore::RenderBox::scrollHeight): (WebCore::RenderBox::scrollLeft): (WebCore::RenderBox::scrollTop): (WebCore::RenderBox::setScrollLeft): (WebCore::RenderBox::setScrollTop): (WebCore::RenderBox::includeVerticalScrollbarSize): (WebCore::RenderBox::includeHorizontalScrollbarSize): (WebCore::RenderBox::pushContentsClip): (WebCore::RenderBox::popContentsClip): (WebCore::RenderBox::addLayoutOverflow): * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::styleDidChange): * rendering/RenderBoxModelObject.h: (RenderBoxModelObject): * rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::layoutBlock): * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::layoutBlock): * rendering/RenderTable.cpp: (WebCore::RenderTable::layout): * rendering/RenderTableRow.h: (RenderTableRow): * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::layout): Removed the previous scaffolding code and reverted some functions to being private (as they were prior to r110072). 2012-05-02 No'am Rosenthal <noam.rosenthal@nokia.com> [Texmap] Enable css filters in TextureMapperGL https://bugs.webkit.org/show_bug.cgi?id=75778 Reviewed by Jocelyn Turcotte. Added support for color filters in TextureMapperGL. Blur and shadow would be done in a different patch. Modified BitmapTexture::applyFilters to return a texture, since GL cannot paint a texture into itself. Created a shader map for standard filters, since all of them work more or less the same way with a single uniform. Added the colorization shaders based on the W3C filter spec, as already implemented in FEFilterRenderer.cpp and FEColorMatrix.cpp. We use two swapping textures to render the filters. Covered by tests in css3/filters. * platform/graphics/texmap/TextureMapper.cpp: (WebCore::TextureMapper::acquireTextureFromPool): * platform/graphics/texmap/TextureMapper.h: (WebCore::BitmapTexture::applyFilters): * platform/graphics/texmap/TextureMapperGL.cpp: (WebCore::BitmapTextureGL::updateContents): (WebCore): (WebCore::TextureMapperGL::drawFiltered): (WebCore::BitmapTextureGL::applyFilters): (WebCore::BitmapTextureGL::bind): * platform/graphics/texmap/TextureMapperGL.h: (TextureMapperGL): (BitmapTextureGL): * platform/graphics/texmap/TextureMapperImageBuffer.cpp: (WebCore::BitmapTextureImageBuffer::applyFilters): * platform/graphics/texmap/TextureMapperImageBuffer.h: (BitmapTextureImageBuffer): * platform/graphics/texmap/TextureMapperLayer.cpp: (WebCore::applyFilters): (WebCore::TextureMapperLayer::syncCompositingStateSelf): * platform/graphics/texmap/TextureMapperShaderManager.cpp: (WebCore::TextureMapperShaderManager::~TextureMapperShaderManager): (WebCore): (WebCore::StandardFilterProgram::~StandardFilterProgram): (WebCore::StandardFilterProgram::StandardFilterProgram): (WebCore::StandardFilterProgram::create): (WebCore::StandardFilterProgram::prepare): (WebCore::TextureMapperShaderManager::getShaderForFilter): * platform/graphics/texmap/TextureMapperShaderManager.h: (WebCore): (StandardFilterProgram): (WebCore::StandardFilterProgram::vertexAttrib): (WebCore::StandardFilterProgram::texCoordAttrib): (WebCore::StandardFilterProgram::textureUniform): (TextureMapperShaderManager): 2012-05-02 Philippe Normand <pnormand@igalia.com> [GTK] media/track/track-cue-rendering-snap-to-lines-not-set.html fails https://bugs.webkit.org/show_bug.cgi?id=84378 Reviewed by Eric Carlson. Fix positioning of the controls panel back to relative, as it is in the parent CSS. Also remove some duplicate CSS attributes. * css/mediaControlsGtk.css: (audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel): 2012-05-02 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=85309 supportsExpandedScrollbars() should check for the method we actually call rather than a related method -and corresponding- <rdar://problem/11065691> Reviewed by Anders Carlsson. * platform/mac/ScrollbarThemeMac.mm: (WebCore::supportsExpandedScrollbars): 2012-05-02 Zalan Bujtas <zbujtas@gmail.com> [Qt] Remove redundant updateViewportArguments() call from HTMLBodyElement::didNotifyDescendantInseretions() https://bugs.webkit.org/show_bug.cgi?id=84241 Reviewed by Kenneth Rohde Christiansen. No need to update viewport arguments when the body element is inserted into the Document. Viewport arguments are updated first when the Document is set on the Frame, and later on any subsequent occurence of the viewport meta tag in the document. It is sufficient to dispatch viewport update once per main frame, if no viewport meta tag is present. Also add a flag to be able to track viewport argument update dispatch. No tests. Currrent viewport tests cover this behaviour. * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::updateViewportArguments): (WebCore::Document::documentWillSuspendForPageCache): * dom/Document.h: (Document): (WebCore::Document::didDispatchViewportPropertiesChanged): * html/HTMLBodyElement.cpp: (WebCore::HTMLBodyElement::didNotifyDescendantInseretions): 2012-05-02 Pavel Feldman <pfeldman@chromium.org> Web Inspector: Cannot read property 'length' of undefined TextEditorModel.js:467 https://bugs.webkit.org/show_bug.cgi?id=85360 Reviewed by Yury Semikhatsky. Added the undo/redo stack length checks. * inspector/front-end/TextEditorModel.js: (WebInspector.TextEditorModel.endsWithBracketRegex.): 2012-05-02 Pavel Feldman <pfeldman@chromium.org> WebInspector: Scripts panel editor dirty state is cleared when the tab with editor is closed. https://bugs.webkit.org/show_bug.cgi?id=85361 Reviewed by Yury Semikhatsky. Added content validation upon script show. * inspector/front-end/JavaScriptSourceFrame.js: (WebInspector.JavaScriptSourceFrame.prototype.wasShown): 2012-05-02 Pavel Feldman <pfeldman@chromium.org> Web Inspector: breakpoints are de-activated only upon the second click. https://bugs.webkit.org/show_bug.cgi?id=85359 Reviewed by Yury Semikhatsky. Initial value for activated state is set. * inspector/front-end/DebuggerModel.js: (WebInspector.DebuggerModel): 2012-05-02 Pavel Feldman <pfeldman@chromium.org> Web Inspector: live edit fails to report error https://bugs.webkit.org/show_bug.cgi?id=85357 Reviewed by Yury Semikhatsky. ProtocolError is now a string, not an error object. * inspector/front-end/DatabaseQueryView.js: (WebInspector.DatabaseQueryView.prototype._queryError): * inspector/front-end/SourceFrame.js: (WebInspector.SourceFrame.prototype.didEditContent): 2012-05-02 Lars Knudsen <lars.knudsen@nokia.com> [Qt] Make DeviceMotion and DeviceOrientation work with WebKit2 https://bugs.webkit.org/show_bug.cgi?id=64595 Reviewed by Kenneth Rohde Christiansen. No new tests added. This change adds support for WK2 what was in WK1. Also moving DeviceMotion and DeviceOrientation clients and providers to WebCore. This is done to allow clean dependencies when statically linking WK2. * Target.pri: * WebCore.pri: * platform/qt/DeviceMotionClientQt.cpp: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceMotionClientQt.cpp. (WebCore): (WebCore::DeviceMotionClientQt::~DeviceMotionClientQt): (WebCore::DeviceMotionClientQt::deviceMotionControllerDestroyed): (WebCore::DeviceMotionClientQt::setController): (WebCore::DeviceMotionClientQt::startUpdating): (WebCore::DeviceMotionClientQt::stopUpdating): (WebCore::DeviceMotionClientQt::currentDeviceMotion): * platform/qt/DeviceMotionClientQt.h: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceMotionClientQt.h. (WebCore): (DeviceMotionClientQt): (WebCore::DeviceMotionClientQt::DeviceMotionClientQt): * platform/qt/DeviceMotionProviderQt.cpp: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceMotionProviderQt.cpp. (WebCore): (WebCore::DeviceMotionProviderQt::DeviceMotionProviderQt): (WebCore::DeviceMotionProviderQt::~DeviceMotionProviderQt): (WebCore::DeviceMotionProviderQt::setController): (WebCore::DeviceMotionProviderQt::start): (WebCore::DeviceMotionProviderQt::stop): (WebCore::DeviceMotionProviderQt::filter): * platform/qt/DeviceMotionProviderQt.h: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceMotionProviderQt.h. (WebCore): (DeviceMotionProviderQt): (WebCore::DeviceMotionProviderQt::currentDeviceMotion): * platform/qt/DeviceOrientationClientQt.cpp: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceOrientationClientQt.cpp. (WebCore): (WebCore::DeviceOrientationClientQt::deviceOrientationControllerDestroyed): (WebCore::DeviceOrientationClientQt::setController): (WebCore::DeviceOrientationClientQt::startUpdating): (WebCore::DeviceOrientationClientQt::stopUpdating): (WebCore::DeviceOrientationClientQt::lastOrientation): * platform/qt/DeviceOrientationClientQt.h: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceOrientationClientQt.h. (WebCore): (DeviceOrientationClientQt): * platform/qt/DeviceOrientationProviderQt.cpp: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceOrientationProviderQt.cpp. (WebCore): (WebCore::DeviceOrientationProviderQt::DeviceOrientationProviderQt): (WebCore::DeviceOrientationProviderQt::~DeviceOrientationProviderQt): (WebCore::DeviceOrientationProviderQt::setController): (WebCore::DeviceOrientationProviderQt::start): (WebCore::DeviceOrientationProviderQt::stop): (WebCore::DeviceOrientationProviderQt::filter): * platform/qt/DeviceOrientationProviderQt.h: Renamed from Source/WebKit/qt/WebCoreSupport/DeviceOrientationProviderQt.h. (WebCore): (DeviceOrientationProviderQt): (WebCore::DeviceOrientationProviderQt::isActive): (WebCore::DeviceOrientationProviderQt::lastOrientation): (WebCore::DeviceOrientationProviderQt::hasAlpha): 2012-05-02 Yury Semikhatsky <yurys@chromium.org> Web Inspector: exception in console when there are watch expressions https://bugs.webkit.org/show_bug.cgi?id=85351 Check if script execution is still paused before trying to resolve an object for script popover because execution may be resumed after popover showing is scheduled but before we start resolving the object under the cursor in which case there is no selected call frame any more and we should hide the popover. Reviewed by Pavel Feldman. * inspector/front-end/JavaScriptSourceFrame.js: (WebInspector.JavaScriptSourceFrame.prototype._resolveObjectForPopover): 2012-05-02 Tommy Widenflycht <tommyw@google.com> MediaStream API: Changing webkitGetUserMedia to take an object instead of a string https://bugs.webkit.org/show_bug.cgi?id=84850 Reviewed by Dimitri Glazkov. The standard changed a while back to use an object as a dictionary but since JSC didn't support the Dictionary class until just recently we have not updated the API until now. Change covered by existing, and edited, tests. * Modules/mediastream/NavigatorMediaStream.cpp: (WebCore::NavigatorMediaStream::webkitGetUserMedia): * Modules/mediastream/NavigatorMediaStream.h: (WebCore): (NavigatorMediaStream): * Modules/mediastream/NavigatorMediaStream.idl: * Modules/mediastream/UserMediaRequest.cpp: (WebCore::UserMediaRequest::create): (WebCore::UserMediaRequest::UserMediaRequest): * Modules/mediastream/UserMediaRequest.h: (WebCore): (UserMediaRequest): * platform/mediastream/MediaStreamSourcesQueryClient.h: (MediaStreamSourcesQueryClient): 2012-05-02 Antti Koivisto <antti@apple.com> StyleSheetInternal::parseUserStyleSheet() should be called parseAuthorStyleSheet(). Rubber-stamped by Nikolas Zimmermann. * css/CSSImportRule.cpp: (WebCore::StyleRuleImport::setCSSStyleSheet): * css/CSSStyleSheet.cpp: (WebCore::StyleSheetInternal::parseAuthorStyleSheet): * css/CSSStyleSheet.h: (StyleSheetInternal): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setCSSStyleSheet): 2012-05-02 Yury Semikhatsky <yurys@chromium.org> REGRESSION: Web Inspector doesn't show cookies anymore https://bugs.webkit.org/show_bug.cgi?id=85349 Pass root node instead of DataGrid object to the "populateNode" method. Added compiler annotations so that closure compiler catches such errors. Reviewed by Pavel Feldman. * inspector/front-end/CookiesTable.js: (WebInspector.CookiesTable.prototype._rebuildTable): * inspector/front-end/NetworkRequest.js: (WebInspector.NetworkRequest.prototype.addFrameError): 2012-05-02 Dongwoo Im <dw.im@samsung.com> [EFL] Implement the Web Audio API feature. https://bugs.webkit.org/show_bug.cgi?id=78688 Reviewed by Philippe Normand. Implement the Web Audio API feature on the EFL port. https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html * CMakeLists.txt: Add the list of the files which are needed for the Web Audio APi. * PlatformEfl.cmake: Add the list of the files which are needed for the Web Audio APi. * UseJSC.cmake: Add the list of the files which are needed for the Web Audio APi. * platform/audio/HRTFElevation.cpp: Enable the USE_CONCATENATED_IMPULSE_RESPONSES macro. (WebCore): * platform/audio/efl/AudioBusEfl.cpp: Added. (WebCore): (WebCore::AudioBus::loadPlatformResource): Create the absolute path of the audio resource. 2012-05-01 Kentaro Hara <haraken@chromium.org> [V8] Add an Isolate parameter to setJSWrapperForXXX() https://bugs.webkit.org/show_bug.cgi?id=85329 Reviewed by Adam Barth. The objective is to pass Isolate around in V8 bindings. This patch adds an Isolate parameter to setJSWrapperForXXX() and passes Isolate to setJSWrapperForXXX() in CodeGeneratorV8.pm. I'll pass Isolate to setJSWrapperForXXX() in custom bindings in a follow-up patch. No tests. No change in behavior. * bindings/scripts/CodeGeneratorV8.pm: Modified as described above. (GenerateConstructorCallback): (GenerateEventConstructorCallback): (GenerateNamedConstructorCallback): (GenerateToV8Converters): * bindings/v8/V8DOMWrapper.cpp: (WebCore::V8DOMWrapper::setJSWrapperForDOMNode): (WebCore::V8DOMWrapper::setJSWrapperForActiveDOMNode): * bindings/v8/V8DOMWrapper.h: (V8DOMWrapper): (WebCore::V8DOMWrapper::setJSWrapperForDOMObject): (WebCore::V8DOMWrapper::setJSWrapperForActiveDOMObject): * bindings/scripts/test/V8/V8Float64Array.cpp: Updated run-bindings-tests results. (WebCore::V8Float64Array::wrapSlow): * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp: (WebCore::V8TestActiveDOMObject::wrapSlow): * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp: (WebCore::V8TestCustomNamedGetter::wrapSlow): * bindings/scripts/test/V8/V8TestEventConstructor.cpp: (WebCore::V8TestEventConstructor::constructorCallback): (WebCore::V8TestEventConstructor::wrapSlow): * bindings/scripts/test/V8/V8TestEventTarget.cpp: (WebCore::V8TestEventTarget::wrapSlow): * bindings/scripts/test/V8/V8TestInterface.cpp: (WebCore::V8TestInterface::constructorCallback): (WebCore::V8TestInterface::wrapSlow): * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp: (WebCore::V8TestMediaQueryListListener::wrapSlow): * bindings/scripts/test/V8/V8TestNamedConstructor.cpp: (WebCore::V8TestNamedConstructorConstructorCallback): (WebCore::V8TestNamedConstructor::wrapSlow): * bindings/scripts/test/V8/V8TestNode.cpp: (WebCore::V8TestNode::constructorCallback): (WebCore::V8TestNode::wrapSlow): * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::V8TestObj::constructorCallback): (WebCore::V8TestObj::wrapSlow): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: (WebCore::V8TestSerializedScriptValueInterface::constructorCallback): (WebCore::V8TestSerializedScriptValueInterface::wrapSlow): 2012-05-01 Eric Seidel <eric@webkit.org> Add <iframe seamless> navigation code (and pass all the navigation tests) https://bugs.webkit.org/show_bug.cgi?id=85340 Reviewed by Adam Barth. This code was primarily written by Adam Barth and then submitted to my GitHub branch via a pull request: https://github.com/eseidel/webkit/compare/master...seamless https://github.com/eseidel/webkit/pull/2 https://github.com/eseidel/webkit/pull/3 I rewrote parts of it to use Docment::shouldDisplaySeamlesslyWithParent. Other parts of the original change have already been committed to WebKit by Adam as part of prep-work for making the loader seamless-ready. * loader/FrameLoader.cpp: (WebCore::FrameLoader::findFrameForNavigation): 2012-05-01 Vincent Scheib <scheib@chromium.org> Fullscreen pop-up logic restored to using processingUserGesture. https://bugs.webkit.org/show_bug.cgi?id=85105 WebKit was recently updated to the new Fullscreen API: http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html#api http://trac.webkit.org/changeset/111028 This change reverts back to using processingUserGesture() instead of DOMWindow::allowPopUp(). This fixes incorrect behavior in at least the Chromium port and is consistent with the cited definition of "allowed to show a pop-up": An algorithm is allowed to show a pop-up if, in the task in which the algorithm is running, either: - an activation behavior is currently being processed whose click event was trusted, or - the event listener for a trusted click event is being handled. Reviewed by Dimitri Glazkov. No new tests. * dom/Document.cpp: (WebCore::Document::requestFullScreenForElement): 2012-05-01 Xiaomei Ji <xji@chromium.org> enable ctrl-arrow move by word visually in non-Windows platforms. https://bugs.webkit.org/show_bug.cgi?id=85017 Reviewed by Ryosuke Niwa. Enable ctrl-arrow moves caret by word in visual order in non-Windows platforms that use ICU word break iterator (it is not enabled for WinCE and Qt where ICU is not used). For those platforms, ctrl-arrow moves caret to word break position before spaces. For example, given a logical text "abc def hij", the word break positions using ctrl-left-arrow from rightmost position are "|abc |def |hij". The word break positions using ctrl-right-arrow from leftmost position are "abc| def| hij|". Test: editing/selection/move-by-word-visually-mac.html * editing/EditingBehavior.h: (EditingBehavior): (WebCore::EditingBehavior::shouldEatSpaceToNextWord): To control different word break positions (regards to space) for different platforms. * editing/FrameSelection.cpp: (WebCore::FrameSelection::modifyMovingRight): Enable visual word movement for all platforms that use ICU. (WebCore::FrameSelection::modifyMovingLeft): * editing/visible_units.cpp: (WebCore::visualWordPosition): Determine the right word break position (regards to space) based on EditingBehavior. (WebCore::leftWordPosition): (WebCore::rightWordPosition): * editing/visible_units.h: 2012-05-01 Raymond Liu <raymond.liu@intel.com> Modify RealtimeAnalyserNode pull mechanism https://bugs.webkit.org/show_bug.cgi?id=77515 Reviewed by Chris Rogers. Test: webaudio/automatic-pull-node.html * GNUmakefile.list.am: * Modules/webaudio/AudioBasicInspectorNode.cpp: Added. (WebCore): (WebCore::AudioBasicInspectorNode::AudioBasicInspectorNode): (WebCore::AudioBasicInspectorNode::pullInputs): (WebCore::AudioBasicInspectorNode::connect): (WebCore::AudioBasicInspectorNode::disconnect): (WebCore::AudioBasicInspectorNode::checkNumberOfChannelsForInput): (WebCore::AudioBasicInspectorNode::updatePullStatus): * Modules/webaudio/AudioBasicInspectorNode.h: Added. (WebCore): (AudioBasicInspectorNode): * Modules/webaudio/AudioContext.cpp: (WebCore::AudioContext::AudioContext): (WebCore::AudioContext::~AudioContext): (WebCore::AudioContext::handlePreRenderTasks): (WebCore::AudioContext::handlePostRenderTasks): (WebCore::AudioContext::markForDeletion): (WebCore): (WebCore::AudioContext::addAutomaticPullNode): (WebCore::AudioContext::removeAutomaticPullNode): (WebCore::AudioContext::updateAutomaticPullNodes): (WebCore::AudioContext::processAutomaticPullNodes): * Modules/webaudio/AudioContext.h: (AudioContext): * Modules/webaudio/AudioDestinationNode.cpp: (WebCore::AudioDestinationNode::provideInput): * Modules/webaudio/AudioNode.h: (AudioNode): * Modules/webaudio/AudioNodeOutput.h: (WebCore::AudioNodeOutput::isConnected): (AudioNodeOutput): * Modules/webaudio/RealtimeAnalyserNode.cpp: (WebCore::RealtimeAnalyserNode::RealtimeAnalyserNode): * Modules/webaudio/RealtimeAnalyserNode.h: (RealtimeAnalyserNode): * WebCore.gypi: * WebCore.xcodeproj/project.pbxproj: 2012-05-01 Keishi Hattori <keishi@webkit.org> datalist: Form control in a <datalist> should be barred from constraint validation https://bugs.webkit.org/show_bug.cgi?id=84359 Reviewed by Kent Tamura. Tests: fast/forms/datalist/datalist-child-validation.html fast/forms/form-control-element-crash.html * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::HTMLFormControlElement): (WebCore::HTMLFormControlElement::updateAncestors): Updates the ancestor information. (WebCore::HTMLFormControlElement::insertedInto): Invalidate the ancestor information and call setNeedsWillValidateCheck because willValidate might have changed. (WebCore::HTMLFormControlElement::removedFrom): Ditto. (WebCore::HTMLFormControlElement::disabled): (WebCore::HTMLFormControlElement::recalcWillValidate): Returns false if element has a datalist ancestor. (WebCore::HTMLFormControlElement::willValidate): Check if ancestor information is valid too. (WebCore::HTMLFormControlElement::setNeedsWillValidateCheck): * html/HTMLFormControlElement.h: (HTMLFormControlElement): 2012-05-01 Kent Tamura <tkent@chromium.org> Calendar Picker: Close the picker by ESC key https://bugs.webkit.org/show_bug.cgi?id=85337 Reviewed by Kentaro Hara. No new tests. Calendar picker is not testable in DRT yet. * Resources/calendarPicker.js: (handleGlobalKey): Close the popup by ESC key. 2012-05-01 Noel Gordon <noel.gordon@gmail.com> PNGImageDecoder: Handle interlace buffer allocation failure https://bugs.webkit.org/show_bug.cgi?id=85276 Reviewed by Eric Seidel. No new tests. Not something we can easily test (malloc failure). * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageDecoder::rowAvailable): Check interlace buffer allocations and bail via longjmp on failure. Note PNG_INTERLACE_ADAM7 is the only libpng supported interlace type so test for it explicitly. 2012-05-01 Kent Tamura <tkent@chromium.org> Calendar Picker: Too wide in Japanese locale https://bugs.webkit.org/show_bug.cgi?id=85331 Reviewed by Kentaro Hara. No new tests. This is a locale-specific behavior. * Resources/calendarPicker.js: (formatJapaneseImperialEra): Do not show an imperial era later than 平成99年 to avoid very long year string like "275760年(平成273772年)." (YearMonthController.prototype.attachTo): - Respect the maximum year specfied by <input max=...> If <input max="9999-12-31"> is specified, we don't need to secure space for the year 275,760. - Check the width for 平成99年 as well as the maximum year because "2087年(平成99年)" is usually wider than "275760年". 2012-05-01 Noel Gordon <noel.gordon@gmail.com> PNGImageDecoder: Add ENABLE(IMAGE_DECODER_DOWN_SAMPLING) guards to rowAvailable https://bugs.webkit.org/show_bug.cgi?id=85268 Reviewed by Eric Seidel. PNGImageDecoder supports image downsampling. Add ENABLE guards to show where downsampling is applied when outputting decoded rows to the frame buffer. Most ports don't enable the flag: don't penalize them in terms speed in this tight row pixel write loop. s/y/destY/ to match setRGBA() and amend some comments. No new tests. No change in behavior. * platform/image-decoders/png/PNGImageDecoder.cpp: (WebCore::PNGImageDecoder::rowAvailable): 2012-05-01 Eric Seidel <eric@webkit.org> Remove uneeded min/max pref width assignment from RenderView https://bugs.webkit.org/show_bug.cgi?id=85325 Reviewed by Julien Chaffraix. This code has been with us since the original import from KDE: http://trac.webkit.org/browser/trunk/WebCore/khtml/rendering/render_root.cpp?annotate=blame&rev=4#L93 It's never been documented, or explained. Removing it showed no effect on my local layout tests run. However this code blocks proper implementation of <iframe seamless> as we have to do proper min/max width negotiation across the iframe boundary. I would remove the whole function, but doing so opens a whole can of worms as this override is public, yet normally this function is *private* (well protected on RenderBox). It seems plausible that frame flattening code needs this override since it doesn't always call the min/maxPreferredWidth() calls which normally automatically call this compute* function if the pref-widths are dirty. Instead of trying to track that all down, I'm just removing this line, and we'll go back and remove the whole function at a later date if possible. * rendering/RenderView.cpp: (WebCore::RenderView::computePreferredLogicalWidths): 2012-05-01 Nate Chapin <japhet@chromium.org> REGRESSION(r115654): PDFs come up blank https://bugs.webkit.org/show_bug.cgi?id=85275 Reviewed by Alexey Proskuryakov. Test: http/tests/loading/pdf-commit-load-callbacks.html * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::finishedLoading): The load needs to be committed before we call finishedLoading on the FrameLoaderClient. * loader/FrameLoader.cpp: (WebCore::FrameLoader::transitionToCommitted): We're guaranteeing that receivedFirstData() will be called other ways (namely, DocumentLoader won't finish without doing so). This call now causes custom representations to double-commit, which is bad. 2012-05-01 Eric Seidel <eric@webkit.org> Add support for seamless attribute as well as seamless sandbox flag and default CSS styling https://bugs.webkit.org/show_bug.cgi?id=85302 Reviewed by Ojan Vafai. This also adds support for the seamless sandbox flag from HTML 5. The sandbox flag is not speficially overridable in the current HTML5, but it is set (like all sandbox flags) by default when sandbox is specified. Unfortunately this support is not yet observable in this patch, as this patch adds not observable features of seamless. This patch also adds the html.css additions for seamless, as specified: http://www.whatwg.org/specs/web-apps/current-work/multipage/rendering.html#replaced-elements I noticed that my previous testing did not confirm that iframes marked for seamless (but not possible to display as seamless due to sandbox, etc.) were still to have this seamless styling. I've added additional testing for this case. I also added another test for the about:blank FIXME added as part of this change. In order to support srcdoc w/ seamless, we needed to move the srcdoc determination sooner in the initSecurityContext function (before the should-inherit early return). The next patch will make seamless actually observable from JS/DOM, this one just lays down all the plumbing, and separates the security aspects for easy review. Test: fast/frames/seamless/seamless-inherited-origin.html * css/html.css: (iframe:not([seamless])): (iframe[seamless]): * dom/Document.cpp: (WebCore::isEligibleForSeamless): (WebCore): (WebCore::Document::initSecurityContext): (WebCore::Document::seamlessParentIFrame): (WebCore::Document::shouldDisplaySeamlesslyWithParent): * dom/Document.h: (WebCore): (Document): * dom/SecurityContext.cpp: (WebCore::SecurityContext::SecurityContext): * dom/SecurityContext.h: (WebCore::SecurityContext::mayDisplaySeamlessWithParent): (SecurityContext): * html/HTMLAttributeNames.in: * html/HTMLIFrameElement.cpp: (WebCore::HTMLIFrameElement::shouldDisplaySeamlessly): (WebCore): * html/HTMLIFrameElement.h: (HTMLIFrameElement): * html/HTMLIFrameElement.idl: 2012-05-01 Min Qin <qinmin@google.com> use USE(NATIVE_FULLSCREEN_VIDEO) instead of ENABLE(NATIVE_FULLSCREEN_VIDEO) https://bugs.webkit.org/show_bug.cgi?id=85316 Reviewed by Kent Tamura. NATIVE_FULLSCREEN_VIDEO means the fullscreen video is implemented by native system view instead of webkit. So it is more appropriate to use USE(NATIVE_FULLSCREEN_VIDEO). This chagne also disabled the rendering of the fullscreen video element in webkit when that flag is set. Just renaming the variable, no new tests. * dom/Document.cpp: (WebCore::Document::webkitWillEnterFullScreenForElement): (WebCore): * platform/graphics/MediaPlayer.cpp: (WebCore): * platform/graphics/MediaPlayer.h: (MediaPlayer): * platform/graphics/MediaPlayerPrivate.h: (MediaPlayerPrivateInterface): 2012-05-01 Jeffrey Pfau <jpfau@apple.com> <rdar://problem/10422318> Support for web content filter delegate for filtering https content https://bugs.webkit.org/show_bug.cgi?id=85300 Reviewed by Alexey Proskuryakov. No new tests. * WebCore.exp.in: * loader/MainResourceLoader.cpp: (WebCore::MainResourceLoader::MainResourceLoader): (WebCore::MainResourceLoader::~MainResourceLoader): (WebCore::MainResourceLoader::didCancel): (WebCore::MainResourceLoader::didReceiveResponse): (WebCore::MainResourceLoader::didReceiveData): (WebCore::MainResourceLoader::didFinishLoading): (WebCore::MainResourceLoader::didFail): * loader/MainResourceLoader.h: (MainResourceLoader): * platform/mac/WebCoreSystemInterface.h: * platform/mac/WebCoreSystemInterface.mm: 2012-05-01 Kent Tamura <tkent@chromium.org> Calendar Picker: Add capability to add platform-specific style sheet https://bugs.webkit.org/show_bug.cgi?id=85272 Reviewed by Kentaro Hara. Add RenderTheme::extraCalendarPickerStyleSheet(). The resultant string of the function is inserted into the calendar picker page. No new tests. Calendar picker apperance is not testable yet. * Resources/calendarPicker.css: Removed styles for year-month buttons. * Resources/calendarPickerMac.css: Moved from calendarPicker.css, and adjust styles so that they look standard Lion buttons. (.year-month-button): (.year-month-button:active): (.year-month-button:disabled): * WebCore.gyp/WebCore.gyp: Add a rule to produce CalendarPickerMac.{cpp,h}. * html/shadow/CalendarPickerElement.cpp: (WebCore::CalendarPickerElement::writeDocument): Add extraCalendarPickerStyleSheet() result to the document. * rendering/RenderTheme.cpp: (WebCore::RenderTheme::extraCalendarPickerStyleSheet): Added. Returns an empty CString by default. * rendering/RenderTheme.h: (RenderTheme): Added extraCalendarPickerStyleSheet(). * rendering/RenderThemeChromiumMac.h: Added extraCalendarPickerStyleSheet(). * rendering/RenderThemeChromiumMac.mm: (WebCore::RenderThemeChromiumMac::extraCalendarPickerStyleSheet): Added. Returns the content of Resources/calendarPickerMac.css. 2012-05-01 James Simonsen <simonjam@chromium.org> Ensure HTMLElementStack fails gracefully if it has a non-Element. https://bugs.webkit.org/show_bug.cgi?id=85167 Reviewed by Adam Barth. Test: Added to html5lib/resources/webkit02.dat * html/parser/HTMLElementStack.cpp: (WebCore::HTMLElementStack::oneBelowTop): * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processEndTag): 2012-05-01 Ryosuke Niwa <rniwa@webkit.org> *Command.h files shouldn't be exported to WebKit layer https://bugs.webkit.org/show_bug.cgi?id=74778 Reviewed by Eric Seidel. Remove the dependency on *Command.h files from Mac port's WebKit layer. Also wrapped the call to TypingCommand::insertParagraphSeparatorInQuotedContent in the Editor class so that we can just expose Editor's method instead of directly exposing the said static method. * WebCore.exp.in: * WebCore.xcodeproj/project.pbxproj: * editing/Editor.h: (Editor): * editing/mac/EditorMac.mm: (WebCore::Editor::insertParagraphSeparatorInQuotedContent): (WebCore): 2012-05-01 Julien Chaffraix <jchaffraix@webkit.org> Remove one bit from m_column to pack RenderTableCell bits more https://bugs.webkit.org/show_bug.cgi?id=85291 Reviewed by Ojan Vafai. Memory improvement, covered by the existing unit tests. * rendering/RenderTableCell.cpp: * rendering/RenderTableCell.h: Remove one bit from m_column (which should be fine as I wouldn't expect tables above 1 millions columns to render at all anyway) to pack the bitfields in 32 bits. Re-arranged the bits to have the bigger bitfield first. 2012-05-01 Anders Carlsson <andersca@apple.com> Slow scrolling on www.sholby.net https://bugs.webkit.org/show_bug.cgi?id=85304 <rdar://problem/11138952> Reviewed by Beth Dakin. Fix two performance issues that showed up on the profiles. * loader/FrameLoader.cpp: (WebCore::FrameLoader::checkLoadCompleteForThisFrame): Reset the relevant painted object counter; it's only interesting when loading. * page/Page.cpp: (WebCore::Page::startCountingRelevantRepaintedObjects): Set m_isCountingRelevantRepaintedObjects to true after calling reset, since reset now sets it to false. (WebCore::Page::resetRelevantPaintedObjectCounter): Set m_isCountingRelevantRepaintedObjects to false. (WebCore::Page::addRelevantRepaintedObject): Use HashSet::find to avoid an extra hash lookup. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::ScrollingCoordinator::updateMainFrameScrollPositionAndScrollLayerPosition): Remove the call to FrameView::updateCompositingLayersAfterLayout now, since FrameView::notifyScrollPositionChanged already calls this and was making us to a lot of work twice. 2012-05-01 Silvia Pfeiffer <silviapf@chromium.org> Audio controls have a 1px surplus outline coming from RenderImage::paintReplaced base class, which needs overwriting. https://bugs.webkit.org/show_bug.cgi?id=84570 Reviewed by Eric Carlson. No new tests - covered by existing audio rendering tests. * rendering/RenderMedia.cpp: (WebCore::RenderMedia::paintReplaced): Overwrite inherited function. (WebCore): * rendering/RenderMedia.h: (RenderMedia): 2012-05-01 Terry Anderson <tdanderson@chromium.org> Allow a pre-targeted node to be specified when dispatching a GestureTap event https://bugs.webkit.org/show_bug.cgi?id=85296 Reviewed by Adam Barth. https://bugs.webkit.org/show_bug.cgi?id=85101 The new parameter will be used and tested in this patch. * page/EventHandler.cpp: (WebCore::EventHandler::handleGestureTap): The new preTargetedNode parameter can be used to pass in the Node that is the target of the GestureTap event. If this parameter is used, adjustedPoint is changed to be the center of the Node's bounding rectangle. * page/EventHandler.h: (EventHandler): 2012-05-01 Jessie Berlin <jberlin@apple.com> Crash calling disconnectFrame on a DOMWindowExtension a second time. https://bugs.webkit.org/show_bug.cgi?id=85301 Reviewed by Darin Adler. DOMWindowExtension::disconnectFrame assumed it would only be called when there was a frame to disconnect. However, DOMWindow's destructor invokes disconnectFrame on all its DOMWindowProperties, even if it already did so when it entered the page cache. * page/DOMWindowExtension.cpp: (WebCore::DOMWindowExtension::disconnectFrame): Don't do anything if the frame has already been disconnected. 2012-05-01 Aaron Colwell <acolwell@chromium.org> Temporarily remove webkitSourceAddId() & webkitSourceRemoveId() from DOM until the rest of the Media Source v0.5 methods are implemented. This is to prevent ambiguity about whether v0.5 is fully supported or not. https://bugs.webkit.org/show_bug.cgi?id=85295 Reviewed by Eric Carlson. No new tests. Removing methods from DOM so relevant tests are removed. * html/HTMLMediaElement.idl: 2012-05-01 Douglas Stockwell <dstockwell@chromium.org> IndexedDB: stale index entries may not be removed in some cases https://bugs.webkit.org/show_bug.cgi?id=85224 Reviewed by Ojan Vafai. Ensure that stale index entries are removed when the corresponding object store entry no longer exists. No new tests. Addresses a performance / storage leak that is not amenable to verification in a layout test. * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore): 2012-05-01 Igor Oliveira <igor.o@sisa.samsung.com> Use HashMap<OwnPtr> for CounterMap in RenderCounter https://bugs.webkit.org/show_bug.cgi?id=85294 Reviewed by Eric Seidel. * rendering/RenderCounter.cpp: (WebCore): (WebCore::makeCounterNode): (WebCore::RenderCounter::destroyCounterNodes): 2012-05-01 Philip Rogers <pdr@google.com> Skip building instance tree for disallowed target https://bugs.webkit.org/show_bug.cgi?id=85202 Reviewed by Nikolas Zimmermann. When the target of a use is disallowed (e.g., a mask element) we can skip building the instance tree because the shadow tree will be skipped as well. Test: svg/custom/animate-disallowed-mask-element.svg * svg/SVGUseElement.cpp: (WebCore::SVGUseElement::buildInstanceTree): 2012-04-29 Nikolas Zimmermann <nzimmermann@rim.com> Accumulation for values-animation is broken https://bugs.webkit.org/show_bug.cgi?id=85158 Reviewed by Darin Adler. Example: <rect width="999" height="100" fill="green"/> <animate begin="0s" values="0; 30; 20" accumulate="sum" repeatCount="5" dur="2s"/> </rect> The rect should animate like this: 0.000s -> 0 0.500s -> 15 1.000s -> 30 1.500s -> 25 1.999s -> 20 2.000s -> 20 (first accumulation, starts accumulating from the last set value, here '20'). 2.500s -> 45 3.000s -> 50 3.500s -> 45 3.999s -> 40 4.000s -> 40 (second accumulation) etc. This is currently broken for values-animation. The accumulation should happen after a full cycle of the values animation ran (aka. at the end of the duration). A values animation works like this: iterate over the list of values, and calculate a 'from' and 'to' value for a given time. Example for values="0; 30; 20" dur="2s": - 0.0s .. 1.0s -> from=0, to=30 - 1.0s .. 2.0s -> from=30, to=20 Accumulation currently is taken into account at each interval for a values-animation instead of the end of the cycle. Fix that by passing an additional 'toAtEndOfDuration' type to calculateAnimatedValue() which is used for accumulation instead of the current 'to' value. Test: svg/animations/accumulate-values-width-animation.html * svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::calculateAnimatedValue): * svg/SVGAnimateElement.h: (SVGAnimateElement): * svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::calculateAnimatedValue): * svg/SVGAnimateMotionElement.h: (SVGAnimateMotionElement): * svg/SVGAnimatedAngle.cpp: (WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue): * svg/SVGAnimatedAngle.h: (SVGAnimatedAngleAnimator): * svg/SVGAnimatedBoolean.cpp: (WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue): * svg/SVGAnimatedBoolean.h: (SVGAnimatedBooleanAnimator): * svg/SVGAnimatedColor.cpp: (WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue): * svg/SVGAnimatedColor.h: (SVGAnimatedColorAnimator): * svg/SVGAnimatedEnumeration.cpp: (WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue): * svg/SVGAnimatedEnumeration.h: (SVGAnimatedEnumerationAnimator): * svg/SVGAnimatedInteger.cpp: (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedInteger): (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedInteger.h: (SVGAnimatedIntegerAnimator): * svg/SVGAnimatedIntegerOptionalInteger.cpp: (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedIntegerOptionalInteger.h: (SVGAnimatedIntegerOptionalIntegerAnimator): * svg/SVGAnimatedLength.cpp: (WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue): * svg/SVGAnimatedLength.h: (SVGAnimatedLengthAnimator): * svg/SVGAnimatedLengthList.cpp: (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): * svg/SVGAnimatedLengthList.h: (SVGAnimatedLengthListAnimator): * svg/SVGAnimatedNumber.cpp: (WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumber.h: (SVGAnimatedNumberAnimator): * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberList.h: (SVGAnimatedNumberListAnimator): * svg/SVGAnimatedNumberOptionalNumber.cpp: (WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberOptionalNumber.h: (SVGAnimatedNumberOptionalNumberAnimator): * svg/SVGAnimatedPath.cpp: (WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue): * svg/SVGAnimatedPath.h: (SVGAnimatedPathAnimator): * svg/SVGAnimatedPointList.cpp: (WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue): * svg/SVGAnimatedPointList.h: (SVGAnimatedPointListAnimator): * svg/SVGAnimatedPreserveAspectRatio.cpp: (WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue): * svg/SVGAnimatedPreserveAspectRatio.h: (SVGAnimatedPreserveAspectRatioAnimator): * svg/SVGAnimatedRect.cpp: (WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue): * svg/SVGAnimatedRect.h: (SVGAnimatedRectAnimator): * svg/SVGAnimatedString.cpp: (WebCore::SVGAnimatedStringAnimator::calculateAnimatedValue): * svg/SVGAnimatedString.h: (SVGAnimatedStringAnimator): * svg/SVGAnimatedTransformList.cpp: (WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue): * svg/SVGAnimatedTransformList.h: (SVGAnimatedTransformListAnimator): * svg/SVGAnimatedTypeAnimator.h: (SVGAnimatedTypeAnimator): * svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::currentValuesForValuesAnimation): (WebCore::SVGAnimationElement::updateAnimation): * svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::animateAdditiveNumber): (SVGAnimationElement): 2012-05-01 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=85231 Fixed position objects that are removed from the DOM don't kick off fixed position recalculation -and corresponding- <rdar://problem/11297916> Reviewed by Darin Adler. * rendering/RenderBox.cpp: (WebCore::RenderBox::willBeDestroyed): 2012-05-01 Dana Jansens <danakj@chromium.org> Early-out for subtracting a non-intersecting region https://bugs.webkit.org/show_bug.cgi?id=85258 Reviewed by Hajime Morita. Given regions A and B, if the bounds of the regions do not intersect, then the regions themselves do not intersect. If the intersection of A and B is empty, then A subtract B == A. * platform/graphics/Region.cpp: (WebCore::Region::subtract): 2012-04-30 Kent Tamura <tkent@chromium.org> [Chromium/Windows] Add LocalizedDateWin https://bugs.webkit.org/show_bug.cgi?id=84935 Reviewed by Kentaro Hara. LocalizedDateICU.cpp doesn't reflect system settings. So there were some problems such as <input type=date> doesn't use system's date format. We need to use Windows API to get a date format and calendar parameters. We obtain a date format like "MM/dd/yy" via Windows API, and format/parse dates for the format by our own code because Windows API can't handle years older than 1601 and doesn't have date parsing API. Unit test: Source/WebKit/chromium/tests/LocaleWinTest.cpp * WebCore.gypi: Add LocalizedDateWin.cpp. * WebCore.gyp/WebCore.gyp: For Windows, remove LocalizedDateICU.cpp and add LocalizedDateWin.cpp. All of *Win.cpp files are excluded by default. * platform/text/LocaleWin.cpp: Added. (WebCore::LocaleWin::LocaleWin): (WebCore::LocaleWin::create): (WebCore::LocaleWin::currentLocale): (WebCore::LocaleWin::~LocaleWin): (WebCore::LocaleWin::getLocaleInfoString): A helper function to obtain a string by GetLocaleInfo(). (WebCore::LocaleWin::initializeShortMonthLabels): Obtain short month names from Windows. (WebCore::DateFormatToken): A struct to represent a token in a date format. e.g. A format string "MM/dd/yy" generates five DateFormatToken: Month2, Literal, Day2, Literal, Year2. (isEraSymbol): A readability helper function. (isYearSymbol): ditto. (isMonthSymbol): ditto. (isDaySymbol): ditto. (countContinuousLetters): (commitLiteralToken): A helper for parseDateFormat(). (parseDateFormat): Parse a format string, and generate a list of DateFormatToken. (WebCore::parseNumber): A helper for parseDate(). (WebCore::LocaleWin::parseNumberOrMonth): ditto. (WebCore::LocaleWin::parseDate): Parse a user-provided date string by matching with a DateFormatToken list. (WebCore::appendNumber): A helper for formatDate(). (WebCore::appendTwoDigitsNumber): ditto. Write at least two digits. (WebCore::appendFourDigitsNumber): ditto. Write at least four digits. (WebCore::LocaleWin::formatDate): Format a DateComponents by iterating a DateFormatToken list. (WebCore::LocaleWin::initializeShortDateTokens): (WebCore::substituteLabelsIntoFormat): Creates a user-visible format string by iterating a DateFormatToken list. (WebCore::LocaleWin::dateFormatText): (WebCore::LocaleWin::initializeMonthLabels): Creates month names by Windows API. (WebCore::LocaleWin::initializeWeekDayShortLabels): Creates day names by Windows API. (WebCore::LocaleWin::monthLabels): Public accessor function for month names. (WebCore::LocaleWin::weekDayShortLabels): Public accessor function for day names. * platform/text/LocaleWin.h: Added. * platform/text/LocalizedDateWin.cpp: Added. The following functions simply delegate to LocaleWin::currentLocale(). (WebCore::parseLocalizedDate): (WebCore::formatLocalizedDate): (WebCore::localizedDateFormatText): (WebCore::monthLabels): (WebCore::weekDayShortLabels): (WebCore::firstDayOfWeek): 2012-04-30 Kent Tamura <tkent@chromium.org> REGRESSION(r115600): parseLocalizedDate() should fail for invalid inputs https://bugs.webkit.org/show_bug.cgi?id=85176 Reviewed by Kentaro Hara. Test: fast/forms/date/input-date-commit-valid-only.html * platform/text/mac/LocalizedDateMac.mm: (WebCore::parseLocalizedDate): We should check nil for the result of NSDateFormtter::dateFromString. 2012-04-30 Mark Rowe <mrowe@apple.com> Fix another leak due to misuse of createCFString. Reviewed by Darin Adler. * plugins/mac/PluginPackageMac.cpp: (WebCore::PluginPackage::fetchInfo): Adopt the result of createCFString. 2012-04-30 Mark Rowe <mrowe@apple.com> <rdar://problem/11312198> Many leaks during fast/events/dropzone-002.html Reviewed by Darin Adler. * platform/mac/ClipboardMac.mm: (WebCore::utiTypeFromCocoaType): Adopt the result of createCFString. 2012-04-30 Mark Rowe <mrowe@apple.com> <rdar://problem/11352575> Many CGImageRefs leaked during media layout tests Reviewed by Brian Weinstein. * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: (WebCore::MediaPlayerPrivateAVFoundationObjC::createImageForTimeInRect): Adopt the CGImageRef. 2012-04-30 Emil A Eklund <eae@chromium.org> Change RenderBoxModelObject::calculateBackgroundImageGeometry to use roundToInt https://bugs.webkit.org/show_bug.cgi?id=85249 Reviewed by Eric Seidel. Prepare RenderBoxModelObject for FractionalLayoutUnits by adding rounding logic to calculateBackgroundImageGeometry. Background images, as all images, needs to be layed out on pixel boundaries thus we need to convert it to a integer value. No new tests, no change in functionality. * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry): 2012-04-30 Ilya Sherman <isherman@chromium.org> Unreviewed, rolling out r113511. http://trac.webkit.org/changeset/113511 https://bugs.webkit.org/show_bug.cgi?id=66032 https://bugs.webkit.org/show_bug.cgi?id=85150 Regression: Many autofilled form fields lack the default autofill background even when authors don’t override the autofill colors * css/html.css: (input:-webkit-autofill): Restore !important modifiers 2012-04-30 Julien Chaffraix <jchaffraix@webkit.org> Move RenderTableCell's row index to RenderTableRow https://bugs.webkit.org/show_bug.cgi?id=85229 Reviewed by Ojan Vafai. Covered by the existing table tests. Row index is a RenderTableRow concept and as such this change moves the relevant logic into the class. While touching the code, renamed row() -> rowIndex() as now RenderTableCell can return its parent RenderTableRow and we were returning an index, not the row itself. * accessibility/AccessibilityTable.cpp: (WebCore::AccessibilityTable::cellForColumnAndRow): * accessibility/AccessibilityTableCell.cpp: (WebCore::AccessibilityTableCell::rowIndexRange): (WebCore::AccessibilityTableCell::titleUIElement): * rendering/RenderTable.cpp: (WebCore::RenderTable::cellAbove): (WebCore::RenderTable::cellBelow): (WebCore::RenderTable::cellBefore): (WebCore::RenderTable::cellAfter): * rendering/RenderTreeAsText.cpp: (WebCore::RenderTreeAsText::writeRenderObject): Updated after the renaming RenderTableCell::row() -> rowIndex(). * rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::RenderTableCell): (WebCore::RenderTableCell::computeCollapsedBeforeBorder): (WebCore::RenderTableCell::computeCollapsedAfterBorder): Updated after m_rowIndex removal and row() -> rowIndex() renaming. (WebCore::RenderTableCell::styleDidChange): Switched the rowWasSet check to an ASSERT. The new logic guarantees that row index was set straight when we insert the row. The previous logic was opened to some race conditions as we could wait for a recalcCells call before setting the index on the rows which made this check necessary. * rendering/RenderTableCell.h: (WebCore::RenderTableCell::row): Added this RenderTableRow getter. (WebCore::RenderTableCell::rowIndex): Renamed from row(). * rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::RenderTableRow): (WebCore::RenderTableRow::styleDidChange): Updated after adding m_rowIndex / rowIndex(). * rendering/RenderTableRow.h: (WebCore::RenderTableRow::setRowIndex): (WebCore::RenderTableRow::rowIndex): Added those getter / setter. Also kept m_rowIndex's smaller size for future optimization and for symmetry with the column index on RenderTableCell. * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::addChild): (WebCore::RenderTableSection::recalcCells): Made sure that whenever we insert or update our row index we do call setRowIndex(). (WebCore::RenderTableSection::addCell): This logic now doesn't need to query insertionRow as the cell's should have the index of the row in which it is inserted. (WebCore::RenderTableSection::calcRowLogicalHeight): (WebCore::RenderTableSection::layoutRows): (WebCore::compareCellPositionsWithOverflowingCells): More updates after row() -> rowIndex() renaming. * rendering/RenderTableSection.h: Removed rowIndexForRenderer now that the row caches this informatin. 2012-04-30 Keishi Hattori <keishi@webkit.org> datalist: Inconsistent behavior of HTMLInputElement::list https://bugs.webkit.org/show_bug.cgi?id=84351 Each platform will have a different set of input types that support the datalist UI. This patch makes shouldRespectListAttribute ask the RenderTheme if it supports datalist UI for that input type. Thus making it possible to do feature detection with JS. Reviewed by Kent Tamura. * WebCore.gypi: Added RenderThemeChromiumCommon.{cpp,h} * html/ColorInputType.cpp: (WebCore::ColorInputType::shouldRespectListAttribute): (WebCore): * html/ColorInputType.h: (ColorInputType): * html/InputType.cpp: (WebCore::InputType::themeSupportsDataListUI): Static method used by TextFieldInputType, RangeInputType, and ColorInputType. (WebCore): * html/InputType.h: (InputType): * html/RangeInputType.cpp: (WebCore::RangeInputType::shouldRespectListAttribute): * html/TextFieldInputType.cpp: (WebCore::TextFieldInputType::shouldRespectListAttribute): * rendering/RenderTheme.h: (RenderTheme): (WebCore::RenderTheme::supportsDataListUI): Returns true if the platform can show the datalist suggestions for a given input type. * rendering/RenderThemeChromiumCommon.cpp: Added. (WebCore): (WebCore::RenderThemeChromiumCommon::supportsDataListUI): * rendering/RenderThemeChromiumCommon.h: Added. (WebCore): (RenderThemeChromiumCommon): * rendering/RenderThemeChromiumMac.h: (RenderThemeChromiumMac): * rendering/RenderThemeChromiumMac.mm: (WebCore::RenderThemeChromiumMac::supportsDataListUI): (WebCore): * rendering/RenderThemeChromiumSkia.cpp: (WebCore::RenderThemeChromiumMac::supportsDataListUI): (WebCore): * rendering/RenderThemeChromiumSkia.h: (RenderThemeChromiumSkia): 2012-04-30 Levi Weintraub <leviw@chromium.org> RenderObject incorrectly lists maximalOutlineSize as a LayoutUnit https://bugs.webkit.org/show_bug.cgi?id=85248 Reviewed by Eric Seidel. Reverting RenderObject::maximalOutlineSize to int. This is a slop value for repaint rects that doesn't affect layout. It also derives its value from RenderView's function of the same name, which is already an integer. No new tests. No change in behavior. * rendering/RenderObject.cpp: (WebCore::RenderObject::maximalOutlineSize): * rendering/RenderObject.h: (RenderObject): 2012-04-30 Xingnan Wang <xingnan.wang@intel.com> Add multichannel support for input of JavaScriptAudioNode https://bugs.webkit.org/show_bug.cgi?id=84687 Reviewed by Chris Rogers. Tests: webaudio/javascriptaudionode-downmix8-2channel-input.html webaudio/javascriptaudionode-upmix2-8channel-input.html * Modules/webaudio/JavaScriptAudioNode.cpp: (WebCore::JavaScriptAudioNode::create): (WebCore::JavaScriptAudioNode::JavaScriptAudioNode): (WebCore::JavaScriptAudioNode::initialize): (WebCore::JavaScriptAudioNode::process): * Modules/webaudio/JavaScriptAudioNode.h: (JavaScriptAudioNode): 2012-04-30 Oliver Hunt <oliver@apple.com> Harden arithmetic in ImageBufferDataCG https://bugs.webkit.org/show_bug.cgi?id=61373 Reviewed by Gavin Barraclough. We have a checked type that allows us to automate many of the bounds checks we want here, so let's replace the floating point math, and just use Checked<> throughout. We use a non-recording Checked<> as no overflows should reach this point, so we'll take a hard early failure, over the cost of many branches when accessing the raw values in loops. * platform/graphics/cg/ImageBufferDataCG.cpp: (WebCore::ImageBufferData::getData): (WebCore::ImageBufferData::putData): 2012-04-30 Levi Weintraub <leviw@chromium.org> Add absoluteValue method for LayoutUnits to allow overloading abs() https://bugs.webkit.org/show_bug.cgi?id=85214 Reviewed by Eric Seidel. Adding an absoluteValue free inline function that operates on LayoutUnits, which allows us to have one function signature for ints or FractionalLayoutUnits. We can't simply add a FractionalLayoutUnit flavor of abs because it confuses some compilers due to the implicit FractionalLayoutUnit constructors that take ints and floats. No new tests. No change in behavior. * page/SpatialNavigation.cpp: (WebCore::distanceDataForNode): * rendering/LayoutTypes.h: (WebCore::absoluteValue): (WebCore): * rendering/RenderBlockLineLayout.cpp: (WebCore::RenderBlock::checkPaginationAndFloatsAtEndLine): * rendering/RenderLineBoxList.cpp: (WebCore::RenderLineBoxList::rangeIntersectsRect): * rendering/RenderObject.cpp: (WebCore::RenderObject::repaintAfterLayoutIfNeeded): 2012-04-30 Levi Weintraub <leviw@chromium.org> Update LayoutUnit usage in InlineFlowBox and RenderWidget https://bugs.webkit.org/show_bug.cgi?id=85239 Reviewed by Eric Seidel. Updating LayoutUnit usage in a pair of remaining functions to minimize the remaining work to switching to FractionalLayoutUnits for layout instead of integers. No new tests. No change in behavior. * rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::placeBoxesInBlockDirection): Though stored as a float, the top is always set to an integer value. When we move to sub-pixel, we need to preserve this. Not preserving this behavior affects text decorations, most notably underlines. * rendering/RenderWidget.cpp: (WebCore::RenderWidget::updateWidgetGeometry): Adding pixel snapping for the content box if it's not transformed (absoluteContentBox includes pixel snapping), and properly treating the boundingBox as an IntRect. 2012-04-30 Levi Weintraub <leviw@chromium.org> Prepare RenderDeprecatedFlexibleBox for sub-pixel layout https://bugs.webkit.org/show_bug.cgi?id=85217 Reviewed by Eric Seidel. Bailing from the space distribution loop in layoutHorizontal/VerticalBox when the remaining space falls below one pixel. This has no effect in whole-pixel layout, but avoids unnecessary work/infinite loops in the sub-pixel case. No new tests. No change in behavior. * rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox): (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox): 2012-04-30 Ryosuke Niwa <rniwa@webkit.org> NULL ptr in WebCore::Range::getBorderAndTextQuads https://bugs.webkit.org/show_bug.cgi?id=77218 Reviewed by Eric Seidel. The crash was caused by a malformed range obtained within an event handler of mutation events (DOMNodeRemovedFromDocument). Because this range wasn't updated per node removal, range functions end up not behaving well. Fixed the bug by changing the order of the notifications in ContainerNode::willRemoveChild. We now fire mutation events first before updating ranges so that any range created inside those event handlers can also be updated prior to the actual node removal. Test: fast/dom/Range/range-created-in-mutation-event-crash.xhtml * dom/ContainerNode.cpp: (WebCore::willRemoveChild): 2012-04-30 Anders Carlsson <andersca@apple.com> ScrollingCoordinator::requestScrollPositionUpdate should not update the main frame scroll position https://bugs.webkit.org/show_bug.cgi?id=85240 <rdar://problem/11286609> Reviewed by Sam Weinig. The call to updateMainFrameScrollPosition was added to make the WebKit2 find overlay work, since it relies on scroll position updates being synchronous. Change the find code in WebKit2 to handle asynchronous scroll position updates and remove the call to updateMainFrameScrollPosition. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::ScrollingCoordinator::requestScrollPositionUpdate): 2012-04-30 Anders Carlsson <andersca@apple.com> Add a way to asynchronously call a function once the scroll position of a page has been updated https://bugs.webkit.org/show_bug.cgi?id=85237 Reviewed by Sam Weinig. * WebCore.exp.in: Export functions needed by WebKit2. * page/scrolling/ScrollingCoordinator.h: Make commitTreeStateIfNeeded public. 2012-04-30 Kentaro Hara <haraken@chromium.org> WebGLRenderingContext methods should throw TypeError for not enough arguments https://bugs.webkit.org/show_bug.cgi?id=84787 Reviewed by Kenneth Russell. Currently, WebGLRenderingcontext methods implement "Not enough arguments" error as SyntaxError. The Web IDL spec requires that it should be TypeError: http://www.w3.org/TR/WebIDL/#dfn-overload-resolution-algorithm This patch changes SyntaxError to TypeError. I wanted to confirm the behavior of Firefox and Opera, but they do not implement WebGL yet. Test: fast/canvas/webgl/webgl-exceptions.html * bindings/js/JSWebGLRenderingContextCustom.cpp: (WebCore::getObjectParameter): (WebCore::JSWebGLRenderingContext::getAttachedShaders): (WebCore::JSWebGLRenderingContext::getExtension): (WebCore::JSWebGLRenderingContext::getFramebufferAttachmentParameter): (WebCore::JSWebGLRenderingContext::getParameter): (WebCore::JSWebGLRenderingContext::getProgramParameter): (WebCore::JSWebGLRenderingContext::getShaderParameter): (WebCore::JSWebGLRenderingContext::getUniform): (WebCore::dataFunctionf): (WebCore::dataFunctioni): (WebCore::dataFunctionMatrix): * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp: (WebCore::getObjectParameter): (WebCore::V8WebGLRenderingContext::getAttachedShadersCallback): (WebCore::V8WebGLRenderingContext::getExtensionCallback): (WebCore::V8WebGLRenderingContext::getFramebufferAttachmentParameterCallback): (WebCore::V8WebGLRenderingContext::getParameterCallback): (WebCore::V8WebGLRenderingContext::getProgramParameterCallback): (WebCore::V8WebGLRenderingContext::getShaderParameterCallback): (WebCore::V8WebGLRenderingContext::getUniformCallback): (WebCore::vertexAttribAndUniformHelperf): (WebCore::uniformHelperi): (WebCore::uniformMatrixHelper): 2012-04-30 Emil A Eklund <eae@chromium.org> [gtk, qt, chromium, win] Fix usage of LayoutUnits and rounding in platform code https://bugs.webkit.org/show_bug.cgi?id=85222 Reviewed by Eric Seidel. Update platform code to use the pixel snapped values for painting rects to line up with device pixels and change platform specific hit testing code to use roundedPoint as hit testing is still mostly done on integer bounds. No new tests, no change in functionality. * platform/qt/RenderThemeQt.cpp: (WebCore::RenderThemeQt::paintMediaVolumeSliderTrack): * platform/win/PopupMenuWin.cpp: (WebCore::PopupMenuWin::paint): * rendering/RenderThemeChromiumSkia.cpp: (WebCore::RenderThemeChromiumSkia::paintSearchFieldCancelButton): (WebCore::RenderThemeChromiumSkia::paintSearchFieldResultsDecoration): (WebCore::RenderThemeChromiumSkia::paintSearchFieldResultsButton): 2012-04-30 Kentaro Hara <haraken@chromium.org> [V8][JSC] Remove hard-coded "Not enough arguments" errors https://bugs.webkit.org/show_bug.cgi?id=85207 Reviewed by Sam Weinig. In bug 85022 and bug 85097, we implemented createNotEnoughArgumentsError() in JSC and V8Proxy::throwNotEnoughArgumentsError() in V8 and partially removed hard-coded "Not enough arguments" errors. This patch removes hard-coded "Not enough arguments" errors by using the helper methods. No tests. No change in behavior. * bindings/js/JSAudioContextCustom.cpp: (WebCore::JSAudioContextConstructor::constructJSAudioContext): * bindings/js/JSSVGLengthCustom.cpp: (WebCore::JSSVGLength::convertToSpecifiedUnits): * bindings/js/JSWebSocketCustom.cpp: (WebCore::JSWebSocketConstructor::constructJSWebSocket): (WebCore::JSWebSocket::send): * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::JSXMLHttpRequest::open): * bindings/v8/ScriptController.cpp: (WebCore::setValueAndClosePopupCallback): * bindings/v8/custom/V8AudioContextCustom.cpp: (WebCore::V8AudioContext::constructorCallback): * bindings/v8/custom/V8SVGLengthCustom.cpp: (WebCore::V8SVGLength::convertToSpecifiedUnitsCallback): * bindings/v8/custom/V8WebSocketCustom.cpp: (WebCore::V8WebSocket::constructorCallback): (WebCore::V8WebSocket::sendCallback): * bindings/v8/custom/V8XMLHttpRequestCustom.cpp: (WebCore::V8XMLHttpRequest::openCallback): 2012-04-30 Benjamin Poulain <benjamin@webkit.org> Add String::startsWith() and endsWith() for string literals https://bugs.webkit.org/show_bug.cgi?id=85154 Reviewed by Darin Adler. Update WebCore to use the simpler startsWith() and endsWith() taking a UChar. * css/CSSParser.cpp: (WebCore::CSSParser::markPropertyEnd): * css/WebKitCSSKeyframeRule.cpp: (WebCore::StyleKeyframe::parseKeyString): * editing/markup.cpp: (WebCore::createFragmentFromText): * html/HTMLObjectElement.cpp: (WebCore::HTMLObjectElement::addSubresourceAttributeURLs): * html/HTMLTextFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::setInnerTextValue): * inspector/ContentSearchUtils.cpp: (WebCore::ContentSearchUtils::getRegularExpressionMatchesByLines): * inspector/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::SetPropertyTextAction::redo): * loader/MainResourceLoader.cpp: (WebCore::MainResourceLoader::substituteMIMETypeFromPluginDatabase): * loader/appcache/ManifestParser.cpp: (WebCore::parseManifest): * platform/blackberry/CookieManager.cpp: (WebCore::CookieManager::shouldRejectForSecurityReason): * platform/posix/FileSystemPOSIX.cpp: (WebCore::pathByAppendingComponent): * plugins/PluginDatabase.cpp: (WebCore::PluginDatabase::findPlugin): * svg/SVGStopElement.cpp: (WebCore::SVGStopElement::parseAttribute): * svg/animation/SVGSMILElement.cpp: (WebCore::SVGSMILElement::parseOffsetValue): (WebCore::SVGSMILElement::parseCondition): 2012-04-30 Abhishek Arya <inferno@chromium.org> Remove positioned float code. https://bugs.webkit.org/show_bug.cgi?id=84795 Reviewed by Dan Bernstein. Backout r92004 and some pieces from r91702. Test: fast/block/float/positioned-float-crash.html * css/CSSParser.cpp: (WebCore::isValidKeywordPropertyAndValue): * css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): (WebCore::CSSPrimitiveValue::operator EFloat): * css/CSSValueKeywords.in: * rendering/RenderBlock.cpp: (WebCore::RenderBlock::RenderBlock): (WebCore::RenderBlock::layoutBlock): (WebCore::RenderBlock::addOverflowFromFloats): (WebCore::RenderBlock::layoutBlockChild): (WebCore::RenderBlock::simplifiedLayout): (WebCore::RenderBlock::layoutPositionedObjects): (WebCore::RenderBlock::insertFloatingObject): (WebCore::RenderBlock::positionNewFloats): (WebCore::RenderBlock::clearFloats): (WebCore::RenderBlock::FloatingObjects::clear): (WebCore::RenderBlock::FloatingObjects::increaseObjectsCount): (WebCore::RenderBlock::FloatingObjects::decreaseObjectsCount): * rendering/RenderBlock.h: (RenderBlock): (WebCore::RenderBlock::forceLayoutInlineChildren): (FloatingObject): (WebCore::RenderBlock::FloatingObject::FloatingObject): (WebCore::RenderBlock::hasOverhangingFloats): (WebCore::RenderBlock::FloatingObjects::FloatingObjects): (FloatingObjects): * rendering/RenderBox.cpp: (WebCore::RenderBox::updateBoxModelInfoFromStyle): * rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::layoutBlock): * rendering/RenderDeprecatedFlexibleBox.h: (RenderDeprecatedFlexibleBox): * rendering/RenderFlexibleBox.cpp: (WebCore::RenderFlexibleBox::layoutBlock): * rendering/RenderFlexibleBox.h: (RenderFlexibleBox): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateScrollbarsAfterLayout): * rendering/style/RenderStyleConstants.h: 2012-04-29 Sam Weinig <sam@webkit.org> Remove BlobBuilder https://bugs.webkit.org/show_bug.cgi?id=84036 Reviewed by Anders Carlsson. * GNUmakefile.am: * fileapi/WebKitBlobBuilder.idl: * page/DOMWindow.idl: * workers/WorkerContext.idl: Make exposing the WebKitBlobBuilder JS object conditional on a new ENABLE_LEGACY_WEBKIT_BLOB_BUILDER flag. Don't enable this for the Mac, but do for everyone else. 2012-04-30 Anders Carlsson <andersca@apple.com> Add a barrier-style dispatch member function to ScrollingThread https://bugs.webkit.org/show_bug.cgi?id=85228 Reviewed by Sam Weinig. Add a ScrollingThread::dispatchBarrier function which takes a WTF::Function and dispatches it to the main thread once all the currently scheduled scrolling thread functions have run. This is to be used for synchronization between the scrolling thread and the main thread. * page/scrolling/ScrollingThread.cpp: (WebCore::callFunctionOnMainThread): (WebCore): (WebCore::ScrollingThread::dispatchBarrier): * page/scrolling/ScrollingThread.h: (ScrollingThread): 2012-04-30 Min Qin <qinmin@google.com> Expose a flag so that fullscreen video on android can work with FULLSCREEN_API https://bugs.webkit.org/show_bug.cgi?id=84414 Reviewed by Darin Fisher. No tests, just exposing the flag, and will be used by android later. Sorry, there is a merge error during the previous commit, resolved now * platform/graphics/MediaPlayer.cpp: (WebCore::MediaPlayer::setControls): (WebCore): (WebCore::MediaPlayer::enterFullscreen): (WebCore::MediaPlayer::exitFullscreen): * platform/graphics/MediaPlayer.h: (MediaPlayer): * platform/graphics/MediaPlayerPrivate.h: (MediaPlayerPrivateInterface): (WebCore::MediaPlayerPrivateInterface::enterFullscreen): 2012-04-30 Nate Chapin <japhet@chromium.org> Move more of committing and starting to write a Document to DocumentLoader. https://bugs.webkit.org/show_bug.cgi?id=83908 Reviewed by Adam Barth. No new tests, refactor only. * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::commitIfReady): Ignore m_gotFirstByte here, since it was always true here anyway. (WebCore::DocumentLoader::finishedLoading): If we are finishing an empty document, create the document now, so that FrameLoaderClient doesn't have to do it later (FrameLoaderClient code will be removed in a later patch). (WebCore::DocumentLoader::commitData): Call receivedFirstData() directly and do some work receivedFirstData() used to do, setEncoding() only once per load. (WebCore::DocumentLoader::receivedData): (WebCore::DocumentLoader::maybeCreateArchive): * loader/DocumentLoader.h: * loader/DocumentWriter.cpp: (WebCore::DocumentWriter::setEncoding): * loader/FrameLoader.cpp: (WebCore::FrameLoader::receivedFirstData): Move DocumentLoader calls to DocumentLoader. * loader/FrameLoader.h: Remove m_hasReceivedFirstData and willSetEncoding(), allow hasReceivedData() to be called directly. (FrameLoader): 2012-04-30 Kentaro Hara <haraken@chromium.org> Unreviewed. Fix test crashes in Win/Linux debug builds. * bindings/v8/V8LazyEventListener.cpp: (WebCore::V8LazyEventListener::V8LazyEventListener): (WebCore::V8LazyEventListener::prepareListenerObject): * bindings/v8/V8LazyEventListener.h: (V8LazyEventListener): 2012-04-30 Tommy Widenflycht <tommyw@google.com> MediaStream API: Change LocalMediaStream::stop to be synchronous https://bugs.webkit.org/show_bug.cgi?id=84942 Reviewed by Dimitri Glazkov. Since I changed LocalMediaStream to be a ActiveDOMObject recently the stop() behaviour needs to change since it is no longer a good idea to start a timer when called. Not possible to write a test for this. * Modules/mediastream/LocalMediaStream.cpp: (WebCore::LocalMediaStream::LocalMediaStream): (WebCore::LocalMediaStream::stop): * Modules/mediastream/LocalMediaStream.h: (LocalMediaStream): 2012-04-28 Emil A Eklund <eae@chromium.org> and Levi Weintraub <leviw@chromium.org> Add ENABLE_SUBPIXEL_LAYOUT controlling FractionalLayoutUnit denominator https://bugs.webkit.org/show_bug.cgi?id=85146 Reviewed by Eric Seidel. Add a new flag for controlling the fixed point denominator in FractionalLayoutUnit. Controls whether the denominator is set to 60 or 1. Until we change the LayoutUnit typedef this change will have no effect. No new tests, no change in functionality. * platform/FractionalLayoutUnit.h: (WebCore): (WebCore::FractionalLayoutUnit::operator++): (WebCore::operator/): (WebCore::operator+): Add ++, / double and and + double operators. These are needed when ENABLE_SUBPIXEL_LAYOUT is not enabled. * platform/graphics/FractionalLayoutRect.cpp: (WebCore::enclosingFractionalLayoutRect): 2012-04-30 Justin Schuh <jschuh@chromium.org> loadOrRedirectSubframe should return the owner element's frame https://bugs.webkit.org/show_bug.cgi?id=84780 Reviewed by Nate Chapin. Test: fast/loader/javascript-url-iframe-remove-on-navigate.html * loader/SubframeLoader.cpp: (WebCore::SubframeLoader::loadOrRedirectSubframe): 2012-04-30 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> Use Vector<Attribute> directly instead of encapsulating it in AttributeVector https://bugs.webkit.org/show_bug.cgi?id=84413 Reviewed by Andreas Kling. As commented in https://bugs.webkit.org/show_bug.cgi?id=79963#c16 we do not usually subclass basic types like Vector. This patch changes code to use Vector<Attribute> directly and move around the functionality of the former methods to more specific helper functions or inline code at the callers. * dom/Element.cpp: (WebCore::Element::parserSetAttributes): (WebCore::Element::normalizeAttributes): * dom/Element.h: (Element): * dom/ElementAttributeData.cpp: * dom/ElementAttributeData.h: (WebCore::findAttributeInVector): (WebCore::ElementAttributeData::getAttributeItem): (ElementAttributeData): (WebCore::ElementAttributeData::attributeVector): (WebCore::ElementAttributeData::clonedAttributeVector): (WebCore::ElementAttributeData::getAttributeItemIndex): (WebCore): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::createHTMLElementFromSavedElement): * html/parser/HTMLToken.h: (WebCore::AtomicHTMLToken::AtomicHTMLToken): * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processFakeStartTag): (WebCore::HTMLTreeBuilder::attributesForIsindexInput): Loop through the attributes backwards so we can remove items without affecting the rest of the loop run. * html/parser/HTMLTreeBuilder.h: * html/parser/TextDocumentParser.cpp: (WebCore::TextDocumentParser::insertFakePreElement): * xml/XMLErrors.cpp: (WebCore::createXHTMLParserErrorHeader): (WebCore::XMLErrors::insertErrorMessageBlock): * xml/parser/MarkupTokenBase.h: (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase): (WebCore::AtomicMarkupTokenBase::getAttributeItem): (WebCore::AtomicMarkupTokenBase::attributes): (AtomicMarkupTokenBase): (WebCore::::initializeAttributes): * xml/parser/XMLToken.h: (WebCore::AtomicXMLToken::AtomicXMLToken): 2012-04-30 Mark Pilgrim <pilgrim@chromium.org> [Chromium] Remove PlatformSupport::loadPlatformAudioResource, call loadResource directly https://bugs.webkit.org/show_bug.cgi?id=85193 Reviewed by Kentaro Hara. Part of a refactoring series. See tracking bug 82948. * platform/audio/chromium/AudioBusChromium.cpp: (WebCore::AudioBus::loadPlatformResource): * platform/chromium/PlatformSupport.h: (PlatformSupport): 2012-04-30 Mark Pilgrim <pilgrim@chromium.org> [Chromium] Call defaultLocale directly https://bugs.webkit.org/show_bug.cgi?id=85192 Reviewed by Kentaro Hara. Part of a refactoring series. See tracking bug 82948. * platform/chromium/LanguageChromium.cpp: (WebCore::platformLanguage): * platform/chromium/PlatformSupport.h: (PlatformSupport): 2012-04-30 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=82922 border-image with image-set does not render correctly when viewed at 2x -and corresponding- <rdar://problem/11167820> Reviewed by Dan Bernstein. StyleImage::computeIntrinsicDimensions() is only called from one place: RenderBoxModelObject::calculateIntrinsicDimensions(), and that is only used for background images and border images. In my original image-set work, I decided that StyleCachedImageSet::computeIntrinsicDimensions() would compute "intrinsic" dimensions, meaning that they would compute the dimensions that the image resource was pretending to be rather than the actual dimensions of the resource. I chose to do this because it made background images work great without changing the call-site. But border images need to know the actual intrinsic dimensions, so this design decision (which was admittedly questionable from the start) won't stick. This patch makes StyleImage::computeIntrinsicDimensions() return actual intrinsic dimensions. Then the border-image and background- image code is very lightly patched to account for the image's scale factor. These functions no longer need the scale factor parameter. * loader/cache/CachedImage.cpp: (WebCore::CachedImage::computeIntrinsicDimensions): * loader/cache/CachedImage.h: (CachedImage): * platform/graphics/GeneratedImage.h: (GeneratedImage): * platform/graphics/GeneratorGeneratedImage.cpp: (WebCore::GeneratedImage::computeIntrinsicDimensions): * platform/graphics/Image.cpp: (WebCore::Image::computeIntrinsicDimensions): * platform/graphics/Image.h: (Image): * platform/graphics/cg/PDFDocumentImage.cpp: (WebCore::PDFDocumentImage::computeIntrinsicDimensions): * platform/graphics/cg/PDFDocumentImage.h: (PDFDocumentImage): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::computeIntrinsicDimensions): * svg/graphics/SVGImage.h: (SVGImage): * rendering/style/StyleCachedImageSet.cpp: (WebCore::StyleCachedImageSet::computeIntrinsicDimensions): New function on StyleImage returns the image's scale factor. * rendering/style/StyleCachedImageSet.h: (WebCore::StyleCachedImageSet::imageScaleFactor): * rendering/style/StyleImage.h: (WebCore::StyleImage::imageScaleFactor): Scale the intrinsic size of the background image down by the scale factor. * rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::calculateFillTileSize): Slices should be multiplied by the image's scale factor since they are always expected to the specified in the 1x image's coordinate space. (WebCore::RenderBoxModelObject::paintNinePieceImage): 2012-04-30 Arko Saha <arko@motorola.com> Remove custom bindings code in JSHTMLCollectionCustom.cpp for HTMLPropertiesCollection. https://bugs.webkit.org/show_bug.cgi?id=85172 Reviewed by Kentaro Hara. Use [JSGenerateToJSObject] in HTMLPropertiesCollection.idl, so that it can generate toJS() in JSHTMLPropertiesCollection.cpp automatically. * bindings/js/JSHTMLCollectionCustom.cpp: (WebCore::toJS): * html/HTMLPropertiesCollection.idl: 2012-04-30 No'am Rosenthal <noam.rosenthal@nokia.com> [Texmap] TextureMapperLayer uses intermediate surfaces too eagerly https://bugs.webkit.org/show_bug.cgi?id=85103 Reviewed by Kenneth Rohde Christiansen. Instead of automatically using an intermediate surface for layers with opacity and children, we limit surface usage for layers with more than one child and for layers with one child and contents of its own. This prevents us from using intermediate surfaces in cases where a single layer with opacity has a single descendant with content, in which case normal blending can be used. Covered by existing compositing layout tests. * platform/graphics/texmap/TextureMapperLayer.cpp: (WebCore): * platform/graphics/texmap/TextureMapperLayer.h: 2012-04-30 Yi Shen <yi.4.shen@nokia.com> Inserting a paragraph between quoted lines in editing/deleting/delete-4038408-fix.html doesn't work https://bugs.webkit.org/show_bug.cgi?id=78193 Reviewed by Ryosuke Niwa. When pasting a copied portion of a blockquote with a newline at the end into an unquoted area, the newline is inserted after the blockquote since we don't want it also to be quoted. However, this behavior has also applied when we insert a paragraph between quoted lines, which is incorrect. To figure out the right place to insert a paragraph, we need providing more information to the InsertParagraphSeparatorCommand by introducing a boolean parameter "pasteBlockqutoeIntoUnquotedArea". Tests: editing/inserting/insert-paragraph-separator-in-blockquote.html editing/pasteboard/paste-wrapped-blockquote-into-nonblockquote.html * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::insertParagraphSeparator): * editing/CompositeEditCommand.h: (CompositeEditCommand): * editing/InsertParagraphSeparatorCommand.cpp: (WebCore::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): (WebCore::InsertParagraphSeparatorCommand::doApply): * editing/InsertParagraphSeparatorCommand.h: (WebCore::InsertParagraphSeparatorCommand::create): (InsertParagraphSeparatorCommand): * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply): 2012-04-30 Antti Koivisto <antti@apple.com> Protect current element in HTMLLinkElement::setCSSStyleSheet https://bugs.webkit.org/show_bug.cgi?id=85166 Reviewed by Andreas Kling. Stylesheet loading can trigger script execution. Test: fast/css/cached-sheet-restore-crash.html * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setCSSStyleSheet): 2012-04-29 Keishi Hattori <keishi@webkit.org> Build fix for LocalizedDateMac.mm https://bugs.webkit.org/show_bug.cgi?id=85164 Reviewed by Kent Tamura. * platform/text/mac/LocalizedDateMac.mm: (WebCore::monthLabels): 2012-04-29 Luke Macpherson <macpherson@chromium.org> Initialize member variables in CSSParser's constructor. https://bugs.webkit.org/show_bug.cgi?id=84377 Reviewed by Kentaro Hara. It is good practice not to leave member variables uninitialized. They make debugging more difficult by reducing repeatability, and in some cases lead to the possibility of information leakage occuring. This patch simply adds initialization of m_numParsedPropertiesBeforeMarginBox to CSSParser's constructor to INVALID_NUM_PARSED_PROPERTIES so that the initial state is the same as the state after the properties are cleared. No tests added because this is a code style fix, not an actual bug so long as the bison generated code calls startDeclarationsForMarginBox() and endDeclarationsForMarginBox() symmetrically. The lack of initialization was originally detected by coverity. * css/CSSParser.cpp: (WebCore::CSSParser::CSSParser): 2012-04-29 Kent Tamura <tkent@chromium.org> [Mac] Add LocalizedDateMac https://bugs.webkit.org/show_bug.cgi?id=85039 Reviewed by Kentaro Hara. A date shown <input type=date> should be formatted for user's OS settings. Chromium-Mac used LocalizedDateICU.cpp to format/parse visible date strings and it didn't reflect user-settings. Test: covered by fast/forms/date/date-appearance.html * WebCore.gyp/WebCore.gyp: Use LocalizedDateMac.mm for OS X instead of LocalizedDateICU.cpp. * WebCore.gypi: Add LocalizedDateMac.mm * platform/text/mac/LocalizedDateMac.mm: Added. (WebCore::createShortDateFormatter): Creates a NSDateFormatter with desired settings. (WebCore::parseLocalizedDate): Impelment for tyep=date. (WebCore::formatLocalizedDate): ditto. (WebCore::isYearSymbol): A readability helper for format string parsing. (WebCore::isMonthSymbol): ditto. (WebCore::isDaySymbol): ditto. (WebCore::localizeDateFormat): Parse a format string, and replace symbols with user-friendly labels. (WebCore::localizedDateFormatText): Gets a format string, and apply localizeDateFormat(). (WebCore::monthLabels): Obtain month names from the system. (WebCore::weekDayShortLabels): Obtain week day symbols from the system. (WebCore::firstDayOfWeek): Obtain first day of week from the system. * platform/text/ICULocale.cpp: (WebCore::createFallbackMonthLabels): Uses WTF::monthFullName. 2012-04-29 Sam Weinig <sam@webkit.org> Add support for the Blob constructor (Part 2) https://bugs.webkit.org/show_bug.cgi?id=84555 Address additional feedback on Blob construction. - Add exception when the dictionary is not an object. - Ensure the proper ordering of dictionary access. Tested via throwing exceptions in toString, and ensuring correct one is fired first. - Changed type of exception throw for invalid enumeration to a TypeError. Reviewed by Kentaro Hara. Updated fast/files/blob-constructor.html to be more comprehensive. * bindings/js/JSBlobCustom.cpp: (WebCore::JSBlobConstructor::constructJSBlob): * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::V8Blob::constructorCallback): 2012-04-29 No'am Rosenthal <noam.rosenthal@nokia.com> [Texmap] Leaves demo: wrong geometry when opacity animation kicks in https://bugs.webkit.org/show_bug.cgi?id=85096 Reviewed by Kenneth Rohde Christiansen. We should use combined() instead of combinedForChildren() since we don't allow intermediate surfaces for preserves-3d. Also, we should apply the offset before multiplying the transforms, otherwise the transform-origin is incorrect. Covered by existing compositing tests. * platform/graphics/texmap/TextureMapperLayer.cpp: (WebCore::TextureMapperLayer::paintSelf): (WebCore::TextureMapperLayer::paintRecursive): 2012-04-29 Mark Pilgrim <pilgrim@chromium.org> [Chromium] Call highUsageDeltaMB directly https://bugs.webkit.org/show_bug.cgi?id=84844 Reviewed by Kentaro Hara. Part of a refactoring series. See tracking bug 82948. * bindings/v8/V8GCController.cpp: (WebCore::V8GCController::checkMemoryUsage): * platform/MemoryUsageSupport.cpp: (WebCore): (WebCore::MemoryUsageSupport::highUsageDeltaMB): * platform/MemoryUsageSupport.h: (MemoryUsageSupport): * platform/chromium/MemoryUsageSupportChromium.cpp: (WebCore::MemoryUsageSupport::highUsageDeltaMB): (WebCore): * platform/chromium/PlatformSupport.h: (PlatformSupport): 2012-04-29 Kentaro Hara <haraken@chromium.org> REGRESSION(r113086): onresize event handler can be deleted in popup window https://bugs.webkit.org/show_bug.cgi?id=84908 Reviewed by Ojan Vafai. In a nutshell, an onresize event handler in the popup window can be non-deterministically deleted. For more details, please look at Chromium issue 123642: http://code.google.com/p/chromium/issues/detail?id=123642 I confirmed that this bug is the regression caused by r113086. r113086 introduced the following code: void V8LazyEventListener::prepareListenerObject(...) { if (hasExistingListenerObject()) return; ...; // Since we only parse once, there's no need to keep data // used for parsing around anymore. m_functionName = String(); m_code = String(); m_eventParameterName = String(); m_sourceURL = String(); setListenerObject(wrappedFunction); } This is not correct. The parsing can be done more than once, and thus we cannot clear data. This patch removes the above code. Consider the following situation: (1) Assume '<body onresize="f()"></body>'. (2) prepareListenerObject() runs. (3) Since this is the first parsing, hasExistingListenerObject() returns false. After the parsing, the listener object is set by setListenerObject(). (4) GC runs. Since there is no strong reference to the listener object, weakEventListenerCallback() is called back, and the listener object is disposed. (5) A resize event is triggered. (6) prepareListenerObject() is called again. Since the listener object is already disposed, hasExistingListenerObject() returns false, and the second parsing starts. In my investigation, the above situation is happening in the reported Chromium bug. Anyway, I am sure that potentially the parsing can be done more than once, and thus we must keep m_xxxx data. However, this is just a temporary fix. We should fix the code so that an alive event listener object is never reclaimed. See https://bugs.webkit.org/show_bug.cgi?id=85152 for more details. No tests: I tried hard to create a DRT test, but could not. The bug depends on the behavior of GC, and thus the reported bug is non-deterministic. For example, (as explained in the Chromium issue,) the bug does not happen if we load an HTML from network because the network latency hides the bug. Also the bug happens in the popup window only. If we open the reported HTML in the main window, we cannot reproduce the bug. * bindings/v8/V8LazyEventListener.cpp: (WebCore::V8LazyEventListener::prepareListenerObject): 2012-04-28 Sam Weinig <sam@webkit.org> Smooth scrolling needs a new key <rdar://problem/11331632> Reviewed by Geoffrey Garen. * platform/mac/ScrollAnimatorMac.mm: (WebCore::scrollAnimationEnabledForSystem): (WebCore::ScrollAnimatorMac::scroll): Update for new key. 2012-04-28 Li Yin <li.yin@intel.com> MessagePort must set m_closed to be true at the end of MessagePort::close function https://bugs.webkit.org/show_bug.cgi?id=85139 In the function MessagePort::close, the "m_closed = true" must be executed at the end, not at the beginning. Or, the m_entangledChannel->close() will not be executed. And it resulted in the failure of MS bench mark messagechannel_close.htm. http://samples.msdn.microsoft.com/ietestcenter/WebWorkers/messagechannel_close.htm Reviewed by Kentaro Hara. Test: fast/events/message-port-close.html * dom/MessagePort.cpp: (WebCore::MessagePort::close): 2012-04-28 Sam Weinig <sam@webkit.org> And again. * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::V8Blob::constructorCallback): 2012-04-28 Sam Weinig <sam@webkit.org> Once again, try to make these puppies work. * bindings/v8/custom/V8BlobCustom.cpp: 2012-04-28 Sam Weinig <sam@webkit.org> Fix the Chromium build. * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::V8Blob::constructorCallback): 2012-04-27 Sam Weinig <sam@webkit.org> Add support for the Blob constructor https://bugs.webkit.org/show_bug.cgi?id=84555 Reviewed by Maciej Stachowiak. Test: fast/files/blob-constructor.html This adds an implementation of the Blob constructor that willfully violates the W3C Editor’s Draft 29 February 2012 in the following ways: - Elements in the parts array are coerced to DOMStrings https://www.w3.org/Bugs/Public/show_bug.cgi?id=16721 - Don't throw for invalid key in the dictionary https://www.w3.org/Bugs/Public/show_bug.cgi?id=16727 - Values for the endings property are treated as enums https://www.w3.org/Bugs/Public/show_bug.cgi?id=16729 * bindings/js/JSBlobCustom.cpp: (WebCore::JSBlobConstructor::constructJSBlob): Implement blob constructor. * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::V8Blob::constructorCallback): Implement blob constructor. * fileapi/Blob.idl: Add constructor to IDL. * workers/WorkerContext.idl: Add Blob constructor to the worker global object. 2012-04-28 Igor Oliveira <igor.o@sisa.samsung.com> Move PropertyWrapper out of the AnimationBase https://bugs.webkit.org/show_bug.cgi?id=84978 Reviewed by Dean Jackson. AnimationBase is a complex class. It has a state machine and a bunch of property handlers. This patch moves the property handlers to a separate class making AnimationBase simpler. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * page/animation/AnimationBase.cpp: * page/animation/AnimationBase.h: (AnimationBase): * page/animation/AnimationController.cpp: (WebCore::AnimationController::supportsAcceleratedAnimationOfProperty): * page/animation/CSSPropertyAnimation.cpp: Added. (WebCore): (WebCore::blendFunc): (WebCore::crossfadeBlend): (AnimationPropertyWrapperBase): (WebCore::AnimationPropertyWrapperBase::AnimationPropertyWrapperBase): (WebCore::AnimationPropertyWrapperBase::~AnimationPropertyWrapperBase): (WebCore::AnimationPropertyWrapperBase::isShorthandWrapper): (WebCore::AnimationPropertyWrapperBase::property): (WebCore::AnimationPropertyWrapperBase::animationIsAccelerated): (WebCore::addPropertyWrapper): (WebCore::wrapperForProperty): (PropertyWrapperGetter): (WebCore::PropertyWrapperGetter::PropertyWrapperGetter): (WebCore::PropertyWrapperGetter::equals): (PropertyWrapper): (WebCore::PropertyWrapper::PropertyWrapper): (WebCore::PropertyWrapper::blend): (RefCountedPropertyWrapper): (WebCore::RefCountedPropertyWrapper::RefCountedPropertyWrapper): (WebCore::RefCountedPropertyWrapper::blend): (StyleImagePropertyWrapper): (WebCore::StyleImagePropertyWrapper::StyleImagePropertyWrapper): (WebCore::StyleImagePropertyWrapper::equals): (PropertyWrapperColor): (WebCore::PropertyWrapperColor::PropertyWrapperColor): (WebCore::PropertyWrapperColor::blend): (PropertyWrapperAcceleratedOpacity): (WebCore::PropertyWrapperAcceleratedOpacity::PropertyWrapperAcceleratedOpacity): (WebCore::PropertyWrapperAcceleratedOpacity::animationIsAccelerated): (WebCore::PropertyWrapperAcceleratedOpacity::blend): (PropertyWrapperAcceleratedTransform): (WebCore::PropertyWrapperAcceleratedTransform::PropertyWrapperAcceleratedTransform): (WebCore::PropertyWrapperAcceleratedTransform::animationIsAccelerated): (WebCore::PropertyWrapperAcceleratedTransform::blend): (PropertyWrapperAcceleratedFilter): (WebCore::PropertyWrapperAcceleratedFilter::PropertyWrapperAcceleratedFilter): (WebCore::PropertyWrapperAcceleratedFilter::animationIsAccelerated): (WebCore::PropertyWrapperAcceleratedFilter::blend): (WebCore::shadowListLength): (WebCore::shadowForBlending): (PropertyWrapperShadow): (WebCore::PropertyWrapperShadow::PropertyWrapperShadow): (WebCore::PropertyWrapperShadow::equals): (WebCore::PropertyWrapperShadow::blend): (WebCore::PropertyWrapperShadow::blendSimpleOrMatchedShadowLists): (WebCore::PropertyWrapperShadow::blendMismatchedShadowLists): (PropertyWrapperMaybeInvalidColor): (WebCore::PropertyWrapperMaybeInvalidColor::PropertyWrapperMaybeInvalidColor): (WebCore::PropertyWrapperMaybeInvalidColor::equals): (WebCore::PropertyWrapperMaybeInvalidColor::blend): (PropertyWrapperVisitedAffectedColor): (WebCore::PropertyWrapperVisitedAffectedColor::PropertyWrapperVisitedAffectedColor): (WebCore::PropertyWrapperVisitedAffectedColor::equals): (WebCore::PropertyWrapperVisitedAffectedColor::blend): (FillLayerAnimationPropertyWrapperBase): (WebCore::FillLayerAnimationPropertyWrapperBase::FillLayerAnimationPropertyWrapperBase): (WebCore::FillLayerAnimationPropertyWrapperBase::~FillLayerAnimationPropertyWrapperBase): (FillLayerPropertyWrapperGetter): (WebCore::FillLayerPropertyWrapperGetter::FillLayerPropertyWrapperGetter): (WebCore::FillLayerPropertyWrapperGetter::equals): (FillLayerPropertyWrapper): (WebCore::FillLayerPropertyWrapper::FillLayerPropertyWrapper): (WebCore::FillLayerPropertyWrapper::blend): (FillLayerRefCountedPropertyWrapper): (WebCore::FillLayerRefCountedPropertyWrapper::FillLayerRefCountedPropertyWrapper): (WebCore::FillLayerRefCountedPropertyWrapper::blend): (FillLayerStyleImagePropertyWrapper): (WebCore::FillLayerStyleImagePropertyWrapper::FillLayerStyleImagePropertyWrapper): (WebCore::FillLayerStyleImagePropertyWrapper::equals): (FillLayersPropertyWrapper): (WebCore::FillLayersPropertyWrapper::FillLayersPropertyWrapper): (WebCore::FillLayersPropertyWrapper::equals): (WebCore::FillLayersPropertyWrapper::blend): (ShorthandPropertyWrapper): (WebCore::ShorthandPropertyWrapper::ShorthandPropertyWrapper): (WebCore::ShorthandPropertyWrapper::isShorthandWrapper): (WebCore::ShorthandPropertyWrapper::equals): (WebCore::ShorthandPropertyWrapper::blend): (WebCore::ShorthandPropertyWrapper::propertyWrappers): (PropertyWrapperFlex): (WebCore::PropertyWrapperFlex::PropertyWrapperFlex): (WebCore::PropertyWrapperFlex::equals): (WebCore::PropertyWrapperFlex::blend): (PropertyWrapperSVGPaint): (WebCore::PropertyWrapperSVGPaint::PropertyWrapperSVGPaint): (WebCore::PropertyWrapperSVGPaint::equals): (WebCore::PropertyWrapperSVGPaint::blend): (WebCore::addShorthandProperties): (WebCore::CSSPropertyAnimation::ensurePropertyMap): (WebCore::gatherEnclosingShorthandProperties): (WebCore::CSSPropertyAnimation::blendProperties): (WebCore::CSSPropertyAnimation::animationOfPropertyIsAccelerated): (WebCore::CSSPropertyAnimation::animatableShorthandsAffectingProperty): (WebCore::CSSPropertyAnimation::propertiesEqual): (WebCore::CSSPropertyAnimation::getPropertyAtIndex): (WebCore::CSSPropertyAnimation::getNumProperties): * page/animation/CSSPropertyAnimation.h: Added. (WebCore): (CSSPropertyAnimation): * page/animation/CompositeAnimation.cpp: (WebCore::CompositeAnimation::updateTransitions): (WebCore::CompositeAnimation::pauseTransitionAtTime): * page/animation/ImplicitAnimation.cpp: (WebCore::ImplicitAnimation::animate): (WebCore::ImplicitAnimation::getAnimatedStyle): (WebCore::ImplicitAnimation::isTargetPropertyEqual): (WebCore::ImplicitAnimation::blendPropertyValueInStyle): (WebCore::ImplicitAnimation::timeToNextService): * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::animate): (WebCore::KeyframeAnimation::getAnimatedStyle): (WebCore::KeyframeAnimation::timeToNextService): * rendering/style/RenderStyle.h: 2012-04-28 Geoffrey Garen <ggaren@apple.com> Clarified JSGlobalData (JavaScript VM) lifetime https://bugs.webkit.org/show_bug.cgi?id=85142 Reviewed by Anders Carlsson. * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::~WorkerScriptController): Slightly simpler than before. We can't just rely on our default destructor because we need to hold the JSLock when we tear down the VM. * bridge/NP_jsobject.cpp: (_NPN_InvokeDefault): (_NPN_Invoke): (_NPN_Evaluate): (_NPN_Construct): Don't RefPtr<> the JSGlobalData because it makes it seem like you know something the rest of our code doesn't know. The plugin JSGlobalData is immortal, anyway. I also removed some timeout checker related code because that feature doesn't work anymore, so it was effectively dead code. 2012-04-28 Ilya Tikhonovsky <loislo@chromium.org> Web Inspector: InspectorFrontendHost.append has to be implemented for saving heap snapshots. https://bugs.webkit.org/show_bug.cgi?id=85137 We can save a file with help of InspectorFrontendHost.save method, but it is suitable only for relatively small portions of data and can't process the 6Gb heap snapshot. These methods just pass the url and content into embedder. Reviewed by Yury Semikhatsky. * inspector/InspectorFrontendClient.h: (InspectorFrontendClient): * inspector/InspectorFrontendClientLocal.h: (WebCore::InspectorFrontendClientLocal::append): * inspector/InspectorFrontendHost.cpp: (WebCore::InspectorFrontendHost::append): (WebCore): * inspector/InspectorFrontendHost.h: (InspectorFrontendHost): * inspector/InspectorFrontendHost.idl: 2012-04-28 No'am Rosenthal <noam.rosenthal@nokia.com> [Qt][Texmap] Error of cross-compiling webkit with Qt 4.8.1 https://bugs.webkit.org/show_bug.cgi?id=84321 Speculative build-fix for Qt 4.8. Use QGLContext for Qt 4.x instead of the platform-specific context. Reviewed by Simon Hausmann. No new tests, build fix. * platform/graphics/texmap/TextureMapperGL.cpp: (SharedGLData): (WebCore::TextureMapperGLData::SharedGLData::getCurrentGLContext): 2012-04-28 No'am Rosenthal <noam.rosenthal@nokia.com> [Texmap] Falling leaves demo missing opacity fade out animation https://bugs.webkit.org/show_bug.cgi?id=83691 Reviewed by Martin Robinson. The bug originated from clearing an intermediate surface with glClear while the scissor state was wrong. When using intermediate surfaces, maintain a clip-stack for each surface, rather than a single clip-stack for the whole scene. When a surface is bound, its clip stack should be applied. Covered by existing compositing tests. * platform/graphics/texmap/TextureMapperGL.cpp: (SharedGLData): (WebCore::TextureMapperGL::ClipStack::push): (WebCore): (WebCore::TextureMapperGL::ClipStack::pop): (WebCore::scissorClip): (WebCore::TextureMapperGL::ClipStack::apply): (WebCore::TextureMapperGL::clipStack): (WebCore::TextureMapperGL::beginPainting): (WebCore::TextureMapperGL::drawTexture): (WebCore::BitmapTextureGL::didReset): (WebCore::BitmapTextureGL::clearIfNeeded): (WebCore::BitmapTextureGL::createFboIfNeeded): (WebCore::BitmapTextureGL::bind): (WebCore::TextureMapperGL::bindDefaultSurface): (WebCore::TextureMapperGL::bindSurface): (WebCore::TextureMapperGL::beginScissorClip): (WebCore::TextureMapperGL::beginClip): (WebCore::TextureMapperGL::endClip): * platform/graphics/texmap/TextureMapperGL.h: (TextureMapperGL): (ClipState): (WebCore::TextureMapperGL::ClipState::ClipState): (ClipStack): (WebCore::TextureMapperGL::ClipStack::current): (WebCore::TextureMapperGL::ClipStack::clear): (BitmapTextureGL): (WebCore::BitmapTextureGL::BitmapTextureGL): 2012-04-26 Emil A Eklund <eae@chromium.org> and Levi Weintraub <leviw@chromium.org> Move Length and CSS length computation to float https://bugs.webkit.org/show_bug.cgi?id=84801 Reviewed by Eric Seidel. Change Length and CSS length computation to floating point. This gets us closer to the goal of supporting subpixel layout and improves precision for SVG which already uses floating point for its layout. This change makes computedStyle return fractional values for pixel values if a fraction is specified. It also changes the result of computations where two or more values with fractional precision. Prior to this change the result of Length(2.9) + Length(2.9) would be 4 as each value would be floored. With this change the result is 5 as the addition is done with floating point precision and then the result will be floored. Once we enable subpixel layout the resulting value in this example would be 5.8. Updated existing layout tests. * css/CSSComputedStyleDeclaration.cpp: (WebCore::zoomAdjustedPixelValue): * css/CSSPrimitiveValue.cpp: (WebCore::CSSPrimitiveValue::computeLength): * css/CSSPrimitiveValue.h: (WebCore): (WebCore::roundForImpreciseConversion): Add specialized float version of roundForImpreciseConversion that matches the int versions rounding logic. If a value is sufficiently close to the next integer round it up to ensure that a style rule such as "width: 4.999px" evaluates to 5px instead of 4px. This is needed as, although Lengths are using floating point, the layout system still uses integer precision and floors the Length values. This will change once we move to FractionalLayoutUnits but for now this is needed to ensure compatibility with the existing system and tests. Without this specialized rounding logic we fail a handful of tests including acid3. * platform/Length.h: (WebCore::Length::value): (Length): (WebCore::Length::intValue): * rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::styleOrColLogicalWidth): 2012-04-28 Alexander Pavlov <apavlov@chromium.org> Web Inspector: Enable touch events feature fails touch feature detection https://bugs.webkit.org/show_bug.cgi?id=84397 Whenever the touch emulation is enabled, Inspector adds a script to evaluate on load, that adds ontouch(start|end|move|cancel) properties to window.__proto__ and document.__proto__. Reviewed by Pavel Feldman. * inspector/front-end/DOMAgent.js: (WebInspector.DOMAgent.prototype._emulateTouchEventsChanged.get if): (WebInspector.DOMAgent.prototype._emulateTouchEventsChanged.scriptAddedCallback): (WebInspector.DOMAgent.prototype._emulateTouchEventsChanged): * inspector/front-end/inspector.js: 2012-04-28 Eugene Klyuchnikov <eustas.bug@gmail.com> Web Inspector: Shortcuts screen UI polish https://bugs.webkit.org/show_bug.cgi?id=84708 1) remove inconsistent shadow; 2) reduce border radius; 3) vertically center the “X” button; 4) replace unreadable symbolic shortcuts with text; 5) gaps / colors / opacity adjustments; 6) section-to-column distribution algorithm is replaced with a fair one. Reviewed by Pavel Feldman. This is a UI polising patch, so no new tests added. * English.lproj/localizedStrings.js: added keyboars arrow keys items * inspector/front-end/KeyboardShortcut.js: replace unreadable symbolic shortcuts with text * inspector/front-end/ShortcutsScreen.js: (WebInspector.ShortcutsScreen): (WebInspector.ShortcutsScreen.prototype.show): remove redundant parameter (WebInspector.ShortcutsScreen.prototype._buildTable): change section distributing algorithm (WebInspector.ShortcutsSection.prototype.renderSection): render colon with margins (WebInspector.ShortcutsSection.prototype._renderHeader): apply classname to th elements * inspector/front-end/helpScreen.css: (.help-window-main): reduce radius, remove shadow; tune color and opacity (.help-window-caption): fix spacing; add ruler (.help-window-title): fix spacing; remove ruler (.help-content): fix spacing (.help-close-button): fix spacing; adjust background color (.help-column-table): fix spacing (.help-table > tr > th): fix color (.help-key): fix color (.help-combine-keys, .help-key-delimiter): extract common style (.help-combine-keys): remove dupe (.help-section-title): add space between sections 2012-04-28 Noel Gordon <noel.gordon@gmail.com> Remove PlatformTouchPointQt.cpp PlatformTouchEventQt.cpp from the gyp projects https://bugs.webkit.org/show_bug.cgi?id=85132 Unreviewed VS2010 gyp project generation fix. PlatformTouchPointQt.cpp and PlatformTouchEventQt.cpp were removed in r115312, so remove them from the gyp projects. * WebCore.gypi: 2012-04-28 Nikolas Zimmermann <nzimmermann@rim.com> <animateTransform type="scale"> should use '0' as effective from value not '1', if no base value is specified and from is not given https://bugs.webkit.org/show_bug.cgi?id=85133 It should start from scale=0. I had that fixed before, but it got lost during merging. Restore the fix. See bug 85051, for more context why this is correct. Tests: svg/animations/animateTransform-by-scale-1-expected.svg svg/animations/animateTransform-by-scale-1.svg * svg/SVGAnimatedTransformList.cpp: (WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue): 2012-04-28 Nikolas Zimmermann <nzimmermann@rim.com> SVGAnimateColorElement doesn't support by/to animations properly https://bugs.webkit.org/show_bug.cgi?id=36704 Reviewed by Antti Koivisto. Switch AnimatedColorAnimator to use the standard animateAdditiveNumber() method, taking progress & repeatCount into account. This gives us accumulation/repeatCount support for free. We just animate the four color components on their own now and clamp once at the end after addition/accumulation finished. Import <animateColor> tests from Dr. Olaf Hoffmanns SVG Animation test suite, which all pass now. While I was at it, remove the includeSMILProperties boolean from computeCSSPropertyValue - we always use the computed style without SMIL effects included, whenever we want to retrieve the "base value", or handle "inherit/currentColor". Tests: svg/animations/animateColor-additive-2a-expected.svg svg/animations/animateColor-additive-2a.svg svg/animations/animateColor-additive-2b-expected.svg svg/animations/animateColor-additive-2b.svg svg/animations/animateColor-additive-2c-expected.svg svg/animations/animateColor-additive-2c.svg svg/animations/animateColor-additive-2d-expected.svg svg/animations/animateColor-additive-2d.svg * svg/ColorDistance.cpp: (WebCore::ColorDistance::clampColor): (WebCore::ColorDistance::addColors): (WebCore::ColorDistance::addToColor): * svg/ColorDistance.h: (ColorDistance): * svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::resetToBaseValue): * svg/SVGAnimatedColor.cpp: (WebCore::SVGAnimatedColorAnimator::addAnimatedTypes): (WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue): * svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::computeCSSPropertyValue): (WebCore::SVGAnimationElement::adjustForInheritance): * svg/SVGAnimationElement.h: (SVGAnimationElement): 2012-04-28 Nikolas Zimmermann <nzimmermann@rim.com> Not reviewed. Fix Qt build -- I was too quick. * rendering/svg/SVGPathData.cpp: Add back Path.h include. 2012-04-28 Nikolas Zimmermann <nzimmermann@rim.com> Rename SVGPathParserFactory to SVGPathUtilities and remove the obsolete singleton https://bugs.webkit.org/show_bug.cgi?id=85129 SVGPathParserFactory implements the singleton pattern, but stores no members. Remove the singleton and move all functions to free-functions into SVGPathUtilities.h. Makes the code easier to read - doesn't affect any tests. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * rendering/svg/SVGPathData.cpp: (WebCore::updatePathFromPathElement): * rendering/svg/SVGRenderTreeAsText.cpp: (WebCore::operator<<): * svg/SVGAllInOne.cpp: * svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::parseAttribute): * svg/SVGAnimatedPath.cpp: (WebCore::SVGAnimatedPathAnimator::constructFromString): (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): (WebCore::SVGAnimatedPathAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedPathAnimator::addAnimatedTypes): (WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue): * svg/SVGAnimatedType.cpp: * svg/SVGGlyphElement.cpp: (WebCore::SVGGlyphElement::buildGenericGlyphIdentifier): * svg/SVGPathBlender.cpp: Fix typo s/;;/;/ * svg/SVGPathElement.cpp: (WebCore::SVGPathElement::getTotalLength): (WebCore::SVGPathElement::getPointAtLength): (WebCore::SVGPathElement::getPathSegAtLength): (WebCore::SVGPathElement::parseAttribute): (WebCore::SVGPathElement::svgAttributeChanged): (WebCore::SVGPathElement::lookupOrCreateDWrapper): (WebCore::SVGPathElement::pathSegListChanged): * svg/SVGPathParserFactory.h: Removed. * svg/SVGPathSegList.cpp: (WebCore::SVGPathSegList::valueAsString): * svg/SVGPathUtilities.cpp: Renamed from Source/WebCore/svg/SVGPathParserFactory.cpp. (WebCore): (WebCore::globalSVGPathBuilder): (WebCore::globalSVGPathSegListBuilder): (WebCore::globalSVGPathByteStreamBuilder): (WebCore::globalSVGPathStringBuilder): (WebCore::globalSVGPathTraversalStateBuilder): (WebCore::globalSVGPathParser): (WebCore::globalSVGPathBlender): (WebCore::buildPathFromString): (WebCore::buildSVGPathByteStreamFromSVGPathSegList): (WebCore::buildPathFromByteStream): (WebCore::buildSVGPathSegListFromByteStream): (WebCore::buildStringFromByteStream): (WebCore::buildStringFromSVGPathSegList): (WebCore::buildSVGPathByteStreamFromString): (WebCore::buildAnimatedSVGPathByteStream): (WebCore::addToSVGPathByteStream): (WebCore::getSVGPathSegAtLengthFromSVGPathByteStream): (WebCore::getTotalLengthOfSVGPathByteStream): (WebCore::getPointAtLengthOfSVGPathByteStream): * svg/SVGPathUtilities.h: Added. (WebCore): * svg/properties/SVGAnimatedPathSegListPropertyTearOff.h: (WebCore::SVGAnimatedPathSegListPropertyTearOff::animValDidChange): 2012-04-28 Nikolas Zimmermann <nzimmermann@rim.com> Fix repetitions & by animation support for path animations https://bugs.webkit.org/show_bug.cgi?id=85071 Rubber-stamped by Antti Koivisto. Cleanup SVGPathBlender, to make it more readable. * svg/SVGPathBlender.cpp: (WebCore::SVGPathBlender::blendLineToHorizontalSegment): (WebCore::SVGPathBlender::blendLineToVerticalSegment): (WebCore::SVGPathBlender::blendArcToSegment): (WebCore::SVGPathBlender::blendAnimatedPath): 2012-04-28 Yury Semikhatsky <yurys@chromium.org> Unreviewed. Qt build fix: added new exported symbols. * WebCore.exp.in: 2012-04-28 Yury Semikhatsky <yurys@chromium.org> Unreviewed. Fix Qt minimal build after r115553. * inspector/InspectorConsoleAgent.h: 2012-04-27 Nikolas Zimmermann <nzimmermann@rim.com> Fix repetitions & by animation support for path animations https://bugs.webkit.org/show_bug.cgi?id=85071 Reviewed by Antti Koivisto. Implement additive="sum" / by-animation support for path animations, eg. <path d="M 10 10 L 10 100 Z"> <animate attributeName="d" begin="0s" dur="4s" by="M 0 0 L 90 0 Z"/> <path> animates the d attribute to "M 10 10 L 100 100 0 Z". Now only <animateColor> and <animateMotion> are left to be fixed, all other types are working as expected now in all additive/accumulate/from-by/by/from-to animations. Tests: svg/animations/path-animation-expected.svg svg/animations/repeating-path-animation-expected.svg svg/animations/repeating-path-animation.svg * svg/SVGAnimatedPath.cpp: (WebCore::SVGAnimatedPathAnimator::addAnimatedTypes): Implemented, to support by-animations, instead of falling back to to-animations. (WebCore::SVGAnimatedPathAnimator::calculateAnimatedValue): Handle repetitions, accumulation & addition. * svg/SVGPathBlender.cpp: Allow empty from source everywhere, use default values if no from value is specified, needed for by-animations. (WebCore::SVGPathBlender::SVGPathBlender): (WebCore::SVGPathBlender::blendAnimatedDimensonalFloat): (WebCore::SVGPathBlender::blendAnimatedFloatPoint): (WebCore::SVGPathBlender::blendMoveToSegment): (WebCore::SVGPathBlender::blendLineToSegment): (WebCore::SVGPathBlender::blendLineToHorizontalSegment): (WebCore::SVGPathBlender::blendLineToVerticalSegment): (WebCore::SVGPathBlender::blendCurveToCubicSegment): (WebCore::SVGPathBlender::blendCurveToCubicSmoothSegment): (WebCore::SVGPathBlender::blendCurveToQuadraticSegment): (WebCore::SVGPathBlender::blendCurveToQuadraticSmoothSegment): (WebCore::SVGPathBlender::blendArcToSegment): (WebCore::SVGPathBlender::addAnimatedPath): (WebCore::SVGPathBlender::blendAnimatedPath): * svg/SVGPathBlender.h: Add new addAnimatedPath function. (SVGPathBlender): * svg/SVGPathByteStream.h: (SVGPathByteStream): Make SVGPathByteStreams copyable, needed for SVGAnimatedPathAnimator. (WebCore::SVGPathByteStream::size): Returns size of the SVGPathByteStream. * svg/SVGPathParserFactory.cpp: (WebCore::SVGPathParserFactory::buildAnimatedSVGPathByteStream): Allow empty from streams, needed for by animations. (WebCore::SVGPathParserFactory::addToSVGPathByteStream): Add 'byStream' 'repeatCount' times to 'toStream'. Both streams must match in size. * svg/SVGPathParserFactory.h: Add new addToSVGPathByteStream function. * svg/SVGPointList.cpp: Remove dead code. * svg/SVGPointList.h: Ditto. (SVGPointList): 2012-04-28 Nikolas Zimmermann <nzimmermann@rim.com> SVGAnimateMotion does not handle accumulation https://bugs.webkit.org/show_bug.cgi?id=18564 Reviewed by Antti Koivisto. Implement accumulation for <animateMotion>. Add lots of new reftests, verifying additive/accumulate behavior is correct. Tests: svg/animations/animateMotion-additive-1-expected.svg svg/animations/animateMotion-additive-1.svg svg/animations/animateMotion-additive-2a-expected.svg svg/animations/animateMotion-additive-2a.svg svg/animations/animateMotion-additive-2b-expected.svg svg/animations/animateMotion-additive-2b.svg svg/animations/animateMotion-additive-2c-expected.svg svg/animations/animateMotion-additive-2c.svg svg/animations/animateMotion-additive-2d-expected.svg svg/animations/animateMotion-additive-2d.svg svg/animations/mozilla/animateMotion-by-1-expected.svg svg/animations/mozilla/animateMotion-by-1.svg svg/animations/mozilla/animateMotion-from-to-1-expected.svg svg/animations/mozilla/animateMotion-from-to-1.svg svg/animations/mozilla/animateMotion-indefinite-to-1-expected.svg svg/animations/mozilla/animateMotion-indefinite-to-1.svg svg/animations/mozilla/animateMotion-indefinite-to-2-expected.svg svg/animations/mozilla/animateMotion-indefinite-to-2.svg svg/animations/mozilla/animateMotion-mpath-pathLength-1-expected.svg svg/animations/mozilla/animateMotion-mpath-pathLength-1.svg svg/animations/mozilla/animateMotion-mpath-targetChange-1-expected.svg svg/animations/mozilla/animateMotion-mpath-targetChange-1.svg svg/animations/mozilla/animateMotion-to-overridden-1-expected.svg svg/animations/mozilla/animateMotion-to-overridden-1.svg * svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::SVGAnimateMotionElement): (WebCore::SVGAnimateMotionElement::buildTransformForProgress): (WebCore::SVGAnimateMotionElement::calculateAnimatedValue): * svg/SVGAnimateMotionElement.h: 2012-04-27 Yury Semikhatsky <yurys@chromium.org> ScriptStateProtectedPtr should not keep a strong reference to the context https://bugs.webkit.org/show_bug.cgi?id=85009 Delete console message arguments when DOMWindow where the messages were created is reset on its frame. Reviewed by Pavel Feldman. Test: http/tests/inspector-enabled/console-clear-arguments-on-frame-navigation.html * inspector/ConsoleMessage.cpp: (WebCore::ConsoleMessage::addToFrontend): (WebCore::ConsoleMessage::windowCleared): (WebCore::ConsoleMessage::argumentCount): (WebCore): * inspector/ConsoleMessage.h: (ConsoleMessage): * inspector/InspectorConsoleAgent.cpp: (WebCore::InspectorConsoleAgent::consoleMessageArgumentCounts): (WebCore): * inspector/InspectorConsoleAgent.h: (InspectorConsoleAgent): * page/Frame.cpp: (WebCore::Frame::clearDOMWindow): (WebCore::Frame::setDOMWindow): * testing/Internals.cpp: (WebCore): (WebCore::Internals::consoleMessageArgumentCounts): * testing/Internals.h: (Internals): * testing/Internals.idl: 2012-04-27 Jochen Eisinger <jochen@chromium.org> Ensure that there's always a provisional document loader if the frame loader is in provisional state https://bugs.webkit.org/show_bug.cgi?id=83894 Reviewed by Nate Chapin. We're still seeing crashes in the FrameLoader where the FrameLoader's state is "provisional" but there is no provisional document loader. I added code to update the FrameLoader's state everytime the provisional document loader is cleared, and added checks that the FrameLoader's state can't be set to provisional without a provisional loader. If the crashes go away, or the newly added checks reveal the culprit, we should relex the checks to use ASSERT() instead of CRASH(). * loader/FrameLoader.cpp: (WebCore::FrameLoader::init): (WebCore::FrameLoader::setupForReplace): (WebCore::FrameLoader::stopAllLoaders): (WebCore::FrameLoader::clearProvisionalLoad): (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy): (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): 2012-04-27 Geoffrey Garen <ggaren@apple.com> Try to fix the Qt build. * bridge/qt/qt_runtime.cpp: (JSC::Bindings::QtRuntimeMethod::finishCreation): 2012-04-27 Geoffrey Garen <ggaren@apple.com> Made WeakSet::allocate() static and removed its JSGlobalData argument https://bugs.webkit.org/show_bug.cgi?id=85128 Reviewed by Anders Carlsson. Mechanically removed JSGlobalData arguments from PassWeak<T> and Weak<T> allocation. * bindings/js/JSDOMBinding.cpp: (WebCore::jsStringSlowCase): * bindings/js/JSEventListener.h: (WebCore::JSEventListener::setWrapper): * bindings/js/JSNodeFilterCondition.cpp: (WebCore::JSNodeFilterCondition::JSNodeFilterCondition): * bindings/js/ScriptWrappable.h: (WebCore::ScriptWrappable::setWrapper): * bridge/jsc/BridgeJSC.cpp: (JSC::Bindings::Instance::createRuntimeObject): * bridge/qt/qt_runtime.cpp: (JSC::Bindings::QtRuntimeMethod::finishCreation): * bridge/runtime_root.cpp: (JSC::Bindings::RootObject::addRuntimeObject): 2012-04-27 Mark Rowe <mrowe@apple.com> <rdar://problem/11313710> Leaks under WebCore::CSSImageSetValue::cachedImageSet when running tests There was a reference cycle between CSSImageSetValue and StyleCachedImageSet via CSSImageSetValue::m_imageSet / StyleCachedImageSet::m_imageSetValue. Break the cycle by having StyleCachedImageSet hold a weak reference to the CSSImageSetValue rather than a strong reference. Reviewed by Geoff Garen. * rendering/style/StyleCachedImageSet.cpp: (WebCore::StyleCachedImageSet::StyleCachedImageSet): * rendering/style/StyleCachedImageSet.h: (StyleCachedImageSet): 2012-04-27 Mark Rowe <mrowe@apple.com> <rdar://problem/10346980> REGRESSION: Cannot enter text in Dashboard widget fields that have placeholder attribute Remove a dashboard backwards compatibility quirk that was in place to support an old version of the Stocks widget. It prevented the pointer-events property from being applied in Dashboard widgets, which caused -webkit-input-placeholder elements to eat mouse clicks rather than giving focus to the containing input elements. The offending widget has long since been fixed. Reviewed by Dan Bernstein. * css/StyleResolver.cpp: (WebCore::StyleResolver::collectMatchingRulesForList): 2012-04-27 Dean Jackson <dino@apple.com> Support reverse and alternate-reverse in CA animations https://bugs.webkit.org/show_bug.cgi?id=78041 Reviewed by Beth Dakin. CoreAnimation does not natively support reverse and alternate-reverse animation directions so we need to flip the animation values (keyframe keys and timing functions) that we send to GraphicsLayerCA. Unfortunately this code adds a lot of conditionals because it isn't as simple as reversing the order of keys. You also now have a different alignment of timing functions to the reversed list. New tests to cover the two new directions, making sure the timing functions are correctly inverted, and exercising fill modes. Tests: animations/animation-direction-reverse-fill-mode-hardware.html animations/animation-direction-reverse-fill-mode.html animations/animation-direction-reverse-hardware-opacity.html animations/animation-direction-reverse-hardware.html animations/animation-direction-reverse-non-hardware.html animations/animation-direction-reverse-timing-functions-hardware.html animations/animation-direction-reverse-timing-functions.html * platform/graphics/ca/GraphicsLayerCA.cpp: Handle the previously unsupported animation directions, reversing the list of values and keytimes that would be used to create the CA Animation. (WebCore::GraphicsLayerCA::addAnimation): Do not create an animation if on Windows and using a reverse direction. (WebCore::GraphicsLayerCA::createFilterAnimationsFromKeyframes): (WebCore::GraphicsLayerCA::setupAnimation): (WebCore::GraphicsLayerCA::setAnimationEndpoints): (WebCore::GraphicsLayerCA::setAnimationKeyframes): (WebCore::GraphicsLayerCA::setTransformAnimationEndpoints): (WebCore::GraphicsLayerCA::setTransformAnimationKeyframes): (WebCore::GraphicsLayerCA::setFilterAnimationEndpoints): (WebCore::GraphicsLayerCA::setFilterAnimationKeyframes): * platform/graphics/ca/PlatformCAAnimation.h: (PlatformCAAnimation): Pass through a flag that tells the CA Animation that it should invert the timing functions. * platform/graphics/ca/mac/PlatformCAAnimationMac.mm: (toCAMediaTimingFunction): Add a parameter that will invert the timing function coefficients if necessary. (PlatformCAAnimation::setTimingFunction): (PlatformCAAnimation::setTimingFunctions): * platform/graphics/ca/win/PlatformCAAnimationWin.cpp: (toCACFTimingFunction): New unused parameter. 2012-04-27 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r115407. http://trac.webkit.org/changeset/115407 https://bugs.webkit.org/show_bug.cgi?id=85126 Caused heap use after free (Requested by keishi_ on #webkit). * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::HTMLFormControlElement): (WebCore::HTMLFormControlElement::updateFieldSetAndLegendAncestor): (WebCore::HTMLFormControlElement::insertedInto): (WebCore::HTMLFormControlElement::removedFrom): (WebCore::HTMLFormControlElement::disabled): (WebCore::HTMLFormControlElement::recalcWillValidate): (WebCore::HTMLFormControlElement::setNeedsWillValidateCheck): * html/HTMLFormControlElement.h: (HTMLFormControlElement): 2012-04-27 Kentaro Hara <haraken@chromium.org> [JSC] Implement a helper method createNotEnoughArgumentsError() https://bugs.webkit.org/show_bug.cgi?id=85102 Reviewed by Geoffrey Garen. In bug 84787, kbr@ requested to avoid hard-coding createTypeError(exec, "Not enough arguments") here and there. This patch implements createNotEnoughArgumentsError(exec) and uses it in JSC bindings. c.f. a corresponding bug for V8 bindings is bug 85097. Test: bindings/scripts/test/TestObj.idl * bindings/scripts/CodeGeneratorJS.pm: Modified as described above. (GenerateArgumentsCountCheck): * bindings/js/JSDataViewCustom.cpp: Ditto. (WebCore::getDataViewMember): (WebCore::setDataViewMember): * bindings/js/JSDeprecatedPeerConnectionCustom.cpp: (WebCore::JSDeprecatedPeerConnectionConstructor::constructJSDeprecatedPeerConnection): * bindings/js/JSDirectoryEntryCustom.cpp: (WebCore::JSDirectoryEntry::getFile): (WebCore::JSDirectoryEntry::getDirectory): * bindings/js/JSSharedWorkerCustom.cpp: (WebCore::JSSharedWorkerConstructor::constructJSSharedWorker): * bindings/js/JSWebKitMutationObserverCustom.cpp: (WebCore::JSWebKitMutationObserverConstructor::constructJSWebKitMutationObserver): (WebCore::JSWebKitMutationObserver::observe): * bindings/js/JSWorkerCustom.cpp: (WebCore::JSWorkerConstructor::constructJSWorker): * bindings/scripts/test/JS/JSFloat64Array.cpp: Updated run-bindings-tests. (WebCore::jsFloat64ArrayPrototypeFunctionFoo): * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: (WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction): (WebCore::jsTestActiveDOMObjectPrototypeFunctionPostMessage): * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: (WebCore::jsTestCustomNamedGetterPrototypeFunctionAnotherFunction): * bindings/scripts/test/JS/JSTestEventTarget.cpp: (WebCore::jsTestEventTargetPrototypeFunctionItem): (WebCore::jsTestEventTargetPrototypeFunctionAddEventListener): (WebCore::jsTestEventTargetPrototypeFunctionRemoveEventListener): (WebCore::jsTestEventTargetPrototypeFunctionDispatchEvent): * bindings/scripts/test/JS/JSTestInterface.cpp: (WebCore::JSTestInterfaceConstructor::constructJSTestInterface): (WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2): * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp: (WebCore::jsTestMediaQueryListListenerPrototypeFunctionMethod): * bindings/scripts/test/JS/JSTestNamedConstructor.cpp: (WebCore::JSTestNamedConstructorNamedConstructor::constructJSTestNamedConstructor): * bindings/scripts/test/JS/JSTestObj.cpp: (WebCore::JSTestObjConstructor::constructJSTestObj): (WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionIntMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs): (WebCore::jsTestObjPrototypeFunctionMethodWithSequenceArg): (WebCore::jsTestObjPrototypeFunctionMethodReturningSequence): (WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows): (WebCore::jsTestObjPrototypeFunctionSerializedValue): (WebCore::jsTestObjPrototypeFunctionIdbKey): (WebCore::jsTestObjPrototypeFunctionOptionsObject): (WebCore::jsTestObjPrototypeFunctionAddEventListener): (WebCore::jsTestObjPrototypeFunctionRemoveEventListener): (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndOptionalArg): (WebCore::jsTestObjPrototypeFunctionMethodWithNonOptionalArgAndTwoOptionalArgs): (WebCore::jsTestObjPrototypeFunctionMethodWithCallbackArg): (WebCore::jsTestObjPrototypeFunctionMethodWithNonCallbackArgAndCallbackArg): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod1): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod2): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod3): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod4): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod5): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod6): (WebCore::jsTestObjPrototypeFunctionOverloadedMethod7): (WebCore::jsTestObjConstructorFunctionClassMethod2): (WebCore::jsTestObjConstructorFunctionOverloadedMethod11): (WebCore::jsTestObjConstructorFunctionOverloadedMethod12): (WebCore::jsTestObjPrototypeFunctionMethodWithUnsignedLongArray): (WebCore::jsTestObjPrototypeFunctionConvert1): (WebCore::jsTestObjPrototypeFunctionConvert2): (WebCore::jsTestObjPrototypeFunctionConvert3): (WebCore::jsTestObjPrototypeFunctionConvert4): (WebCore::jsTestObjPrototypeFunctionConvert5): (WebCore::jsTestObjPrototypeFunctionStrictFunction): * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: (WebCore::JSTestSerializedScriptValueInterfaceConstructor::constructJSTestSerializedScriptValueInterface): (WebCore::jsTestSerializedScriptValueInterfacePrototypeFunctionAcceptTransferList): 2012-04-27 Mark Pilgrim <pilgrim@chromium.org> [Chromium] Call highMemoryUsageMB directly https://bugs.webkit.org/show_bug.cgi?id=84841 Reviewed by Kentaro Hara. Part of a refactoring series. See tracking bug 82948. * bindings/v8/V8GCController.cpp: (WebCore::V8GCController::checkMemoryUsage): * platform/MemoryUsageSupport.cpp: (WebCore::MemoryUsageSupport::highMemoryUsageMB): (WebCore): * platform/MemoryUsageSupport.h: (MemoryUsageSupport): * platform/chromium/MemoryUsageSupportChromium.cpp: (WebCore::MemoryUsageSupport::highMemoryUsageMB): (WebCore): * platform/chromium/PlatformSupport.h: (PlatformSupport): 2012-04-27 Geoffrey Garen <ggaren@apple.com> Only allow non-null pointers in the WeakSet https://bugs.webkit.org/show_bug.cgi?id=85119 Reviewed by Darin Adler. * bridge/jsc/BridgeJSC.cpp: (JSC::Bindings::Instance::Instance): Don't allocate a WeakImpl just to store null. This was needless, and is now a compile error. Instead, rely on the default constructor, which will produce a cheap null. 2012-04-27 Kentaro Hara <haraken@chromium.org> "Not enough arguments" error should be TypeError https://bugs.webkit.org/show_bug.cgi?id=84628 Reviewed by Darin Adler. Currently, some custom bindings implement "Not enough arguments" error as SyntaxError. The Web IDL spec requires that it should be TypeError: http://www.w3.org/TR/WebIDL/#dfn-overload-resolution-algorithm Thus, this patch changes SyntaxError to TypeError. Tests: http/tests/websocket/tests/hixie76/url-parsing.html: http/tests/websocket/tests/hybi/url-parsing.html: http/tests/xmlhttprequest/exceptions.html: svg/dom/SVGLength.html: webaudio/audionode.html: * bindings/js/JSAudioContextCustom.cpp: (WebCore::JSAudioContextConstructor::constructJSAudioContext): * bindings/js/JSSVGLengthCustom.cpp: (WebCore::JSSVGLength::convertToSpecifiedUnits): * bindings/js/JSWebSocketCustom.cpp: (WebCore::JSWebSocketConstructor::constructJSWebSocket): (WebCore::JSWebSocket::send): * bindings/js/JSXMLHttpRequestCustom.cpp: (WebCore::JSXMLHttpRequest::open): * bindings/v8/custom/V8AudioContextCustom.cpp: (WebCore::V8AudioContext::constructorCallback): * bindings/v8/custom/V8SVGLengthCustom.cpp: (WebCore::V8SVGLength::convertToSpecifiedUnitsCallback): * bindings/v8/custom/V8WebSocketCustom.cpp: (WebCore::V8WebSocket::constructorCallback): (WebCore::V8WebSocket::sendCallback): * bindings/v8/custom/V8XMLHttpRequestCustom.cpp: (WebCore::V8XMLHttpRequest::openCallback): 2012-04-27 Kenneth Russell <kbr@google.com> Remove SHADER_COMPILER constant https://bugs.webkit.org/show_bug.cgi?id=85115 Reviewed by Darin Adler. Removed constant which was previously removed from spec. Updated layout test and expected results. * html/canvas/WebGLRenderingContext.idl: 2012-04-27 Arvid Nilsson <anilsson@rim.com> [BlackBerry] Fixed background is scrolling in http://www.nieuwecode.nl https://bugs.webkit.org/show_bug.cgi?id=85109 Reviewed by Antonio Gomes. Since the BlackBerry port uses very similar fixed position acceleration as the Qt WebKit2 port, the same fix that worked for them in bug 83980 works for us. Fixed by opting in to the FIXED_POSITION_CREATES_STACKING_CONTEXT mechanism. Covered by existing manual test fixed-position-no-z-index.html. * css/StyleResolver.cpp: 2012-04-27 Nat Duca <nduca@chromium.org> Expose high-resolution on requestAnimationFrame callback https://bugs.webkit.org/show_bug.cgi?id=66683 This changes requestAnimationFrame's animationStartTime argument to be a high resolution DOM timestamp, per disucssion here: http://lists.w3.org/Archives/Public/public-web-perf/2012Apr/0004.html Reviewed by James Robinson. Covered by existing requestAnimationFrame tests. * dom/Document.cpp: (WebCore::Document::serviceScriptedAnimations): * dom/Document.h: (Document): * dom/ScriptedAnimationController.cpp: (WebCore::ScriptedAnimationController::ScriptedAnimationController): (WebCore::ScriptedAnimationController::serviceScriptedAnimations): (WebCore): (WebCore::ScriptedAnimationController::windowScreenDidChange): (WebCore::ScriptedAnimationController::scheduleAnimation): (WebCore::ScriptedAnimationController::animationTimerFired): (WebCore::ScriptedAnimationController::displayRefreshFired): * dom/ScriptedAnimationController.h: (ScriptedAnimationController): * page/FrameView.cpp: (WebCore::FrameView::serviceScriptedAnimations): * page/FrameView.h: (FrameView): * platform/graphics/DisplayRefreshMonitor.cpp: (WebCore::DisplayRefreshMonitor::DisplayRefreshMonitor): (WebCore::DisplayRefreshMonitor::notifyClients): * platform/graphics/DisplayRefreshMonitor.h: (DisplayRefreshMonitor): * platform/graphics/blackberry/DisplayRefreshMonitorBlackBerry.cpp: (WebCore::DisplayRefreshMonitor::displayLinkFired): * platform/graphics/mac/DisplayRefreshMonitorMac.cpp: (WebCore): (WebCore::DisplayRefreshMonitor::requestRefreshCallback): (WebCore::DisplayRefreshMonitor::displayLinkFired): 2012-04-27 Kentaro Hara <haraken@chromium.org> [V8] Implement a helper method V8Proxy::throwNotEnoughArgumentsError() https://bugs.webkit.org/show_bug.cgi?id=85097 Reviewed by Kenneth Russell. In bug 84787, kbr requested to avoid hard-coding throwError("Not enough arguments", V8Proxy::TypeError) here and there. This patch implements V8Proxy::throwNotEnoughArgumentsError() and uses it in V8 bindings. No tests. No change in behavior. * bindings/scripts/CodeGeneratorV8.pm: (GenerateArgumentsCountCheck): (GenerateEventConstructorCallback): * bindings/v8/V8Proxy.cpp: (WebCore::V8Proxy::throwNotEnoughArgmentsError): (WebCore): * bindings/v8/V8Proxy.h: (V8Proxy): * bindings/v8/custom/V8DataViewCustom.cpp: (WebCore::V8DataView::getInt8Callback): (WebCore::V8DataView::getUint8Callback): (WebCore::V8DataView::setInt8Callback): (WebCore::V8DataView::setUint8Callback): * bindings/v8/custom/V8DirectoryEntryCustom.cpp: (WebCore::V8DirectoryEntry::getDirectoryCallback): (WebCore::V8DirectoryEntry::getFileCallback): * bindings/v8/custom/V8IntentConstructor.cpp: (WebCore::V8Intent::constructorCallback): * bindings/v8/custom/V8WebKitMutationObserverCustom.cpp: (WebCore::V8WebKitMutationObserver::constructorCallback): (WebCore::V8WebKitMutationObserver::observeCallback): Test: bindings/scripts/test/TestObj.idl * bindings/scripts/CodeGeneratorV8.pm: Modified as described above. (GenerateArgumentsCountCheck): (GenerateEventConstructorCallback): * bindings/v8/V8Proxy.cpp: Ditto. (WebCore::V8Proxy::throwNotEnoughArgumentsError): (WebCore): * bindings/v8/V8Proxy.h: (V8Proxy): * bindings/v8/custom/V8DataViewCustom.cpp: (WebCore::V8DataView::getInt8Callback): (WebCore::V8DataView::getUint8Callback): (WebCore::V8DataView::setInt8Callback): (WebCore::V8DataView::setUint8Callback): * bindings/v8/custom/V8DirectoryEntryCustom.cpp: (WebCore::V8DirectoryEntry::getDirectoryCallback): (WebCore::V8DirectoryEntry::getFileCallback): * bindings/v8/custom/V8IntentConstructor.cpp: (WebCore::V8Intent::constructorCallback): * bindings/v8/custom/V8WebKitMutationObserverCustom.cpp: (WebCore::V8WebKitMutationObserver::constructorCallback): (WebCore::V8WebKitMutationObserver::observeCallback): * bindings/scripts/test/V8/V8Float64Array.cpp: Updated run-bindings-tests. (WebCore::Float64ArrayV8Internal::fooCallback): * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp: (WebCore::TestActiveDOMObjectV8Internal::excitingFunctionCallback): (WebCore::TestActiveDOMObjectV8Internal::postMessageCallback): * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp: (WebCore::TestCustomNamedGetterV8Internal::anotherFunctionCallback): * bindings/scripts/test/V8/V8TestEventConstructor.cpp: (WebCore::V8TestEventConstructor::constructorCallback): * bindings/scripts/test/V8/V8TestEventTarget.cpp: (WebCore::TestEventTargetV8Internal::itemCallback): (WebCore::TestEventTargetV8Internal::dispatchEventCallback): * bindings/scripts/test/V8/V8TestInterface.cpp: (WebCore::TestInterfaceV8Internal::supplementalMethod2Callback): (WebCore::V8TestInterface::constructorCallback): * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp: (WebCore::TestMediaQueryListListenerV8Internal::methodCallback): * bindings/scripts/test/V8/V8TestNamedConstructor.cpp: (WebCore::V8TestNamedConstructorConstructorCallback): * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::TestObjV8Internal::voidMethodWithArgsCallback): (WebCore::TestObjV8Internal::intMethodWithArgsCallback): (WebCore::TestObjV8Internal::objMethodWithArgsCallback): (WebCore::TestObjV8Internal::methodWithSequenceArgCallback): (WebCore::TestObjV8Internal::methodReturningSequenceCallback): (WebCore::TestObjV8Internal::methodThatRequiresAllArgsAndThrowsCallback): (WebCore::TestObjV8Internal::serializedValueCallback): (WebCore::TestObjV8Internal::idbKeyCallback): (WebCore::TestObjV8Internal::optionsObjectCallback): (WebCore::TestObjV8Internal::methodWithNonOptionalArgAndOptionalArgCallback): (WebCore::TestObjV8Internal::methodWithNonOptionalArgAndTwoOptionalArgsCallback): (WebCore::TestObjV8Internal::methodWithCallbackArgCallback): (WebCore::TestObjV8Internal::methodWithNonCallbackArgAndCallbackArgCallback): (WebCore::TestObjV8Internal::overloadedMethod1Callback): (WebCore::TestObjV8Internal::overloadedMethod2Callback): (WebCore::TestObjV8Internal::overloadedMethod3Callback): (WebCore::TestObjV8Internal::overloadedMethod4Callback): (WebCore::TestObjV8Internal::overloadedMethod5Callback): (WebCore::TestObjV8Internal::overloadedMethod6Callback): (WebCore::TestObjV8Internal::overloadedMethod7Callback): (WebCore::TestObjV8Internal::overloadedMethod11Callback): (WebCore::TestObjV8Internal::overloadedMethod12Callback): (WebCore::TestObjV8Internal::enabledAtRuntimeMethod1Callback): (WebCore::TestObjV8Internal::enabledAtRuntimeMethod2Callback): (WebCore::TestObjV8Internal::convert1Callback): (WebCore::TestObjV8Internal::convert2Callback): (WebCore::TestObjV8Internal::convert3Callback): (WebCore::TestObjV8Internal::convert4Callback): (WebCore::TestObjV8Internal::convert5Callback): (WebCore::TestObjV8Internal::strictFunctionCallback): (WebCore::V8TestObj::constructorCallback): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: (WebCore::TestSerializedScriptValueInterfaceV8Internal::acceptTransferListCallback): (WebCore::V8TestSerializedScriptValueInterface::constructorCallback): 2012-04-27 Mark Pilgrim <pilgrim@chromium.org> [Chromium] Call lowMemoryUsageMB directly https://bugs.webkit.org/show_bug.cgi?id=84840 Reviewed by Kentaro Hara. Part of a refactoring series. See tracking bug 82948. * bindings/v8/V8GCController.cpp: (WebCore::V8GCController::checkMemoryUsage): * platform/MemoryUsageSupport.cpp: (WebCore::MemoryUsageSupport::lowMemoryUsageMB): (WebCore): * platform/MemoryUsageSupport.h: (MemoryUsageSupport): * platform/chromium/MemoryUsageSupportChromium.cpp: (WebCore::MemoryUsageSupport::lowMemoryUsageMB): (WebCore): * platform/chromium/PlatformSupport.h: (PlatformSupport): 2012-04-27 Yi Shen <yi.4.shen@nokia.com> REGRESSION(113723): Pressing enter in this list example deletes the whole list https://bugs.webkit.org/show_bug.cgi?id=85016 Reviewed by Enrica Casucci. The bug was caused by CompositeEditCommand::breakOutOfEmptyListItem, which calls isListItem on the empty list's siblings to decide which part of the list should get removed. However, the check fails when the empty list's sibling is a text node, or a list element (e.g. ul, ol). Fixed it by skipping empty list's non-element sibling and calling isListElement to do further check. Test: added new test cases in the existing test (break-out-of-empty-list-item.html) * editing/CompositeEditCommand.cpp: (WebCore::CompositeEditCommand::breakOutOfEmptyListItem): 2012-04-27 Ian Vollick <vollick@chromium.org> [chromium] Add pause and resume support for accelerated css animations. https://bugs.webkit.org/show_bug.cgi?id=84601 Reviewed by James Robinson. Tested in: CCLayerAnimationControllerTest.syncPauseResume CCActiveAnimationTest.TrimTimeTimeOffset CCActiveAnimationTest.TrimTimeSuspendResume CCActiveAnimationTest.IsFinishedNeedsSynchronizedStartTime CCActiveAnimationTest.RunStateChangesIgnoredWhileSuspended * platform/graphics/chromium/GraphicsLayerChromium.cpp: (WebCore::GraphicsLayerChromium::suspendAnimations): (WebCore::GraphicsLayerChromium::resumeAnimations): * platform/graphics/chromium/GraphicsLayerChromium.h: (GraphicsLayerChromium): * platform/graphics/chromium/LayerChromium.cpp: (WebCore::LayerChromium::suspendAnimations): (WebCore::LayerChromium::resumeAnimations): * platform/graphics/chromium/LayerChromium.h: (LayerChromium): * platform/graphics/chromium/cc/CCActiveAnimation.cpp: (WebCore::CCActiveAnimation::CCActiveAnimation): (WebCore::CCActiveAnimation::setRunState): (WebCore::CCActiveAnimation::suspend): (WebCore::CCActiveAnimation::resume): (WebCore::CCActiveAnimation::isFinishedAt): (WebCore::CCActiveAnimation::trimTimeToCurrentIteration): (WebCore::CCActiveAnimation::cloneForImplThread): (WebCore::CCActiveAnimation::pushPropertiesTo): * platform/graphics/chromium/cc/CCActiveAnimation.h: (CCActiveAnimation): (WebCore::CCActiveAnimation::setStartTime): (WebCore::CCActiveAnimation::timeOffset): (WebCore::CCActiveAnimation::setTimeOffset): (WebCore::CCActiveAnimation::isFinished): * platform/graphics/chromium/cc/CCLayerAnimationController.cpp: (WebCore::CCLayerAnimationController::addAnimation): (WebCore::CCLayerAnimationController::pauseAnimation): (WebCore::CCLayerAnimationController::suspendAnimations): (WebCore::CCLayerAnimationController::resumeAnimations): (WebCore::CCLayerAnimationController::pushAnimationUpdatesTo): (WebCore::CCLayerAnimationController::getActiveAnimation): (WebCore::CCLayerAnimationController::pushNewAnimationsToImplThread): (WebCore::CCLayerAnimationController::removeAnimationsCompletedOnMainThread): (WebCore::CCLayerAnimationController::pushPropertiesToImplThread): (WebCore): (WebCore::CCLayerAnimationController::tickAnimations): * platform/graphics/chromium/cc/CCLayerAnimationController.h: (CCLayerAnimationController): 2012-04-27 Tim Horton <timothy_horton@apple.com> SMIL animation causes leak of the related Document (and many elements) https://bugs.webkit.org/show_bug.cgi?id=83856 <rdar://problem/11216047> Reviewed by Dean Jackson. The SVGAnimatedProperty cache was previously holding a reference to the properties it contained; said references were cleared in the SVGAnimatedProperty destructor (which was never called because there was always one remaining reference from the cache). The SVGAnimatedProperty cache now holds raw pointers instead of RefPtrs; the SVGAnimateElement now owns its own SVGAnimatedProperties, both for itself and for any <use/> instances of itself. They're cleared and destroyed within SVGAnimateElement::targetElementWillChange, at which time they're removed from the cache. SVGPropertyTearOffs now keep a reference to their SVGElement (m_contextElement) instead of their SVGAnimatedProperty; this way, there is no reference cycle, but the animated property (owned by the element) and the element itself are kept alive until the TearOff is garbage collected. Tests: svg/animations/smil-leak-dynamically-added-element-instances.svg svg/animations/smil-leak-elements.svg svg/animations/smil-leak-element-instances-noBaseValRef.svg svg/animations/smil-leak-element-instances.svg svg/animations/svglength-element-removed-crash.svg * svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::calculateAnimatedValue): (WebCore::propertyTypesAreConsistent): (WebCore::SVGAnimateElement::resetToBaseValue): (WebCore::SVGAnimateElement::applyResultsToTarget): (WebCore::SVGAnimateElement::targetElementWillChange): * svg/SVGAnimateElement.h: (SVGAnimateElement): * svg/SVGAnimatedAngle.cpp: (WebCore::SVGAnimatedAngleAnimator::startAnimValAnimation): (WebCore::SVGAnimatedAngleAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedAngleAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedAngleAnimator::animValWillChange): (WebCore::SVGAnimatedAngleAnimator::animValDidChange): * svg/SVGAnimatedAngle.h: (SVGAnimatedAngleAnimator): * svg/SVGAnimatedBoolean.cpp: (WebCore::SVGAnimatedBooleanAnimator::startAnimValAnimation): (WebCore::SVGAnimatedBooleanAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedBooleanAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedBooleanAnimator::animValWillChange): (WebCore::SVGAnimatedBooleanAnimator::animValDidChange): * svg/SVGAnimatedBoolean.h: (SVGAnimatedBooleanAnimator): * svg/SVGAnimatedColor.h: (WebCore::SVGAnimatedColorAnimator::startAnimValAnimation): (WebCore::SVGAnimatedColorAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedColorAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedColorAnimator::animValWillChange): (WebCore::SVGAnimatedColorAnimator::animValDidChange): * svg/SVGAnimatedEnumeration.cpp: (WebCore::SVGAnimatedEnumerationAnimator::startAnimValAnimation): (WebCore::SVGAnimatedEnumerationAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedEnumerationAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedEnumerationAnimator::animValWillChange): (WebCore::SVGAnimatedEnumerationAnimator::animValDidChange): * svg/SVGAnimatedEnumeration.h: (SVGAnimatedEnumerationAnimator): * svg/SVGAnimatedInteger.cpp: (WebCore::SVGAnimatedIntegerAnimator::startAnimValAnimation): (WebCore::SVGAnimatedIntegerAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedIntegerAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedIntegerAnimator::animValWillChange): (WebCore::SVGAnimatedIntegerAnimator::animValDidChange): * svg/SVGAnimatedInteger.h: (SVGAnimatedIntegerAnimator): * svg/SVGAnimatedIntegerOptionalInteger.cpp: (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::startAnimValAnimation): (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::animValWillChange): (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::animValDidChange): * svg/SVGAnimatedIntegerOptionalInteger.h: (SVGAnimatedIntegerOptionalIntegerAnimator): * svg/SVGAnimatedLength.cpp: (WebCore::SVGAnimatedLengthAnimator::startAnimValAnimation): (WebCore::SVGAnimatedLengthAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedLengthAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedLengthAnimator::animValWillChange): (WebCore::SVGAnimatedLengthAnimator::animValDidChange): * svg/SVGAnimatedLength.h: (SVGAnimatedLengthAnimator): * svg/SVGAnimatedLengthList.cpp: (WebCore::SVGAnimatedLengthListAnimator::startAnimValAnimation): (WebCore::SVGAnimatedLengthListAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedLengthListAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedLengthListAnimator::animValWillChange): (WebCore::SVGAnimatedLengthListAnimator::animValDidChange): * svg/SVGAnimatedLengthList.h: (SVGAnimatedLengthListAnimator): * svg/SVGAnimatedNumber.cpp: (WebCore::SVGAnimatedNumberAnimator::startAnimValAnimation): (WebCore::SVGAnimatedNumberAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedNumberAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedNumberAnimator::animValWillChange): (WebCore::SVGAnimatedNumberAnimator::animValDidChange): * svg/SVGAnimatedNumber.h: (SVGAnimatedNumberAnimator): * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::startAnimValAnimation): (WebCore::SVGAnimatedNumberListAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedNumberListAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedNumberListAnimator::animValWillChange): (WebCore::SVGAnimatedNumberListAnimator::animValDidChange): * svg/SVGAnimatedNumberList.h: (SVGAnimatedNumberListAnimator): * svg/SVGAnimatedNumberOptionalNumber.cpp: (WebCore::SVGAnimatedNumberOptionalNumberAnimator::startAnimValAnimation): (WebCore::SVGAnimatedNumberOptionalNumberAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedNumberOptionalNumberAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedNumberOptionalNumberAnimator::animValWillChange): (WebCore::SVGAnimatedNumberOptionalNumberAnimator::animValDidChange): * svg/SVGAnimatedNumberOptionalNumber.h: (SVGAnimatedNumberOptionalNumberAnimator): * svg/SVGAnimatedPath.cpp: (WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): (WebCore::SVGAnimatedPathAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedPathAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedPathAnimator::animValWillChange): (WebCore::SVGAnimatedPathAnimator::animValDidChange): * svg/SVGAnimatedPath.h: (SVGAnimatedPathAnimator): * svg/SVGAnimatedPointList.cpp: (WebCore::SVGAnimatedPointListAnimator::startAnimValAnimation): (WebCore::SVGAnimatedPointListAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedPointListAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedPointListAnimator::animValWillChange): (WebCore::SVGAnimatedPointListAnimator::animValDidChange): * svg/SVGAnimatedPointList.h: (SVGAnimatedPointListAnimator): * svg/SVGAnimatedPreserveAspectRatio.cpp: (WebCore::SVGAnimatedPreserveAspectRatioAnimator::startAnimValAnimation): (WebCore::SVGAnimatedPreserveAspectRatioAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedPreserveAspectRatioAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedPreserveAspectRatioAnimator::animValWillChange): (WebCore::SVGAnimatedPreserveAspectRatioAnimator::animValDidChange): * svg/SVGAnimatedPreserveAspectRatio.h: (SVGAnimatedPreserveAspectRatioAnimator): * svg/SVGAnimatedRect.cpp: (WebCore::SVGAnimatedRectAnimator::startAnimValAnimation): (WebCore::SVGAnimatedRectAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedRectAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedRectAnimator::animValWillChange): (WebCore::SVGAnimatedRectAnimator::animValDidChange): * svg/SVGAnimatedRect.h: (SVGAnimatedRectAnimator): * svg/SVGAnimatedString.cpp: (WebCore::SVGAnimatedStringAnimator::startAnimValAnimation): (WebCore::SVGAnimatedStringAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedStringAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedStringAnimator::animValWillChange): (WebCore::SVGAnimatedStringAnimator::animValDidChange): * svg/SVGAnimatedString.h: (SVGAnimatedStringAnimator): * svg/SVGAnimatedTransformList.cpp: (WebCore::SVGAnimatedTransformListAnimator::startAnimValAnimation): (WebCore::SVGAnimatedTransformListAnimator::stopAnimValAnimation): (WebCore::SVGAnimatedTransformListAnimator::resetAnimValToBaseVal): (WebCore::SVGAnimatedTransformListAnimator::animValWillChange): (WebCore::SVGAnimatedTransformListAnimator::animValDidChange): * svg/SVGAnimatedTransformList.h: (SVGAnimatedTransformListAnimator): * svg/SVGAnimatedTypeAnimator.h: (SVGAnimatedTypeAnimator): (WebCore::SVGAnimatedTypeAnimator::findAnimatedPropertiesForAttributeName): (WebCore::SVGAnimatedTypeAnimator::findAnimatedPropertiesFromInstancesForAttributeName): (WebCore::SVGAnimatedTypeAnimator::constructFromBaseValue): (WebCore::SVGAnimatedTypeAnimator::resetFromBaseValue): (WebCore::SVGAnimatedTypeAnimator::stopAnimValAnimationForType): (WebCore::SVGAnimatedTypeAnimator::animValDidChangeForType): (WebCore::SVGAnimatedTypeAnimator::animValWillChangeForType): (WebCore::SVGAnimatedTypeAnimator::constructFromBaseValues): (WebCore::SVGAnimatedTypeAnimator::resetFromBaseValues): (WebCore::SVGAnimatedTypeAnimator::stopAnimValAnimationForTypes): (WebCore::SVGAnimatedTypeAnimator::animValDidChangeForTypes): (WebCore::SVGAnimatedTypeAnimator::animValWillChangeForTypes): (WebCore::SVGAnimatedTypeAnimator::castAnimatedPropertyToActualType): (WebCore::SVGAnimatedTypeAnimator::executeAction): * svg/properties/SVGAnimatedProperty.h: (SVGAnimatedProperty): * svg/properties/SVGPropertyTearOff.h: (WebCore::SVGPropertyTearOff::animatedProperty): (SVGPropertyTearOff): 2012-04-27 Adam Klein <adamk@chromium.org> Remove misspelled, unused, unimplemented method from V8Proxy https://bugs.webkit.org/show_bug.cgi?id=85091 Reviewed by Dimitri Glazkov. * bindings/v8/V8Proxy.h: (V8Proxy): 2012-04-24 Jeffrey Pfau <jpfau@apple.com> Disable RTF in JavaScript drag-and-drop https://bugs.webkit.org/show_bug.cgi?id=76597 Reviewed by Maciej Stachowiak. Test: fast/events/drag-and-drop-subframe-dataTransfer.html * platform/mac/ClipboardMac.mm: (WebCore::cocoaTypeFromHTMLClipboardType): 2012-04-26 James Robinson <jamesr@chromium.org> [chromium] Separate IOSurface layer type from texture layers https://bugs.webkit.org/show_bug.cgi?id=85030 Reviewed by Adrienne Walker. Adds a new layer type for IOSurface layers and pipes through a separate path through to rendering. IOSurface layers are very simple - they have an IOSurface id and size, nothing else. All IOSurface layers are "flipped" in our terminology. * WebCore.gypi: * platform/graphics/chromium/IOSurfaceLayerChromium.cpp: (WebCore): (WebCore::IOSurfaceLayerChromium::create): (WebCore::IOSurfaceLayerChromium::IOSurfaceLayerChromium): (WebCore::IOSurfaceLayerChromium::~IOSurfaceLayerChromium): (WebCore::IOSurfaceLayerChromium::setIOSurfaceProperties): (WebCore::IOSurfaceLayerChromium::createCCLayerImpl): (WebCore::IOSurfaceLayerChromium::drawsContent): (WebCore::IOSurfaceLayerChromium::pushPropertiesTo): * platform/graphics/chromium/IOSurfaceLayerChromium.h: (WebCore): (IOSurfaceLayerChromium): * platform/graphics/chromium/LayerRendererChromium.cpp: (WebCore::LayerRendererChromium::drawIOSurfaceQuad): (WebCore::LayerRendererChromium::cleanupSharedObjects): * platform/graphics/chromium/LayerRendererChromium.h: (LayerRendererChromium): * platform/graphics/chromium/TextureLayerChromium.cpp: (WebCore::TextureLayerChromium::TextureLayerChromium): (WebCore::TextureLayerChromium::drawsContent): (WebCore::TextureLayerChromium::pushPropertiesTo): * platform/graphics/chromium/TextureLayerChromium.h: (TextureLayerChromium): * platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.cpp: (WebCore::CCIOSurfaceDrawQuad::create): (WebCore::CCIOSurfaceDrawQuad::CCIOSurfaceDrawQuad): * platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.h: (CCIOSurfaceDrawQuad): * platform/graphics/chromium/cc/CCIOSurfaceLayerImpl.cpp: (WebCore): (WebCore::CCIOSurfaceLayerImpl::CCIOSurfaceLayerImpl): (WebCore::CCIOSurfaceLayerImpl::~CCIOSurfaceLayerImpl): (WebCore::CCIOSurfaceLayerImpl::willDraw): (WebCore::CCIOSurfaceLayerImpl::appendQuads): (WebCore::CCIOSurfaceLayerImpl::dumpLayerProperties): (WebCore::CCIOSurfaceLayerImpl::didLoseContext): (WebCore::CCIOSurfaceLayerImpl::setIOSurfaceProperties): * platform/graphics/chromium/cc/CCIOSurfaceLayerImpl.h: (WebCore): (CCIOSurfaceLayerImpl): (WebCore::CCIOSurfaceLayerImpl::create): * platform/graphics/chromium/cc/CCTextureLayerImpl.cpp: (WebCore::CCTextureLayerImpl::CCTextureLayerImpl): (WebCore::CCTextureLayerImpl::~CCTextureLayerImpl): (WebCore::CCTextureLayerImpl::appendQuads): (WebCore::CCTextureLayerImpl::didLoseContext): * platform/graphics/chromium/cc/CCTextureLayerImpl.h: (CCTextureLayerImpl): 2012-04-27 Arvid Nilsson <anilsson@rim.com> [BlackBerry] OpenGL related bug fixes https://bugs.webkit.org/show_bug.cgi?id=84836 Reviewed by Antonio Gomes. PR147254, 148933, 149117, 149721, 150228 No new tests, covered by existing BlackBerry browser stress tests * platform/graphics/blackberry/CanvasLayerWebKitThread.cpp: (WebCore::CanvasLayerWebKitThread::updateTextureContentsIfNeeded): * platform/graphics/blackberry/LayerCompositingThread.cpp: (WebCore::LayerCompositingThread::drawTextures): * platform/graphics/blackberry/LayerRenderer.cpp: (WebCore::LayerRenderer::~LayerRenderer): (WebCore::LayerRenderer::drawLayers): (WebCore::LayerRenderer::initializeSharedGLObjects): 2012-04-27 Nat Duca <nduca@chromium.org> Implement high-resolution time via window.performance.webkitNow() https://bugs.webkit.org/show_bug.cgi?id=66684 This implements the high resolution time spec from http://www.w3.org/TR/hr-time/, giving javascript access to sub-millisecond timestamps that increase over time instead of being subject to skewing, for example when the host machine's clock changes. Reviewed by Tony Gentilcore. Test: fast/performance/performance-now-timestamps.html * page/Performance.cpp: (WebCore::Performance::now): (WebCore): * page/Performance.h: (Performance): * page/Performance.idl: 2012-04-27 Filip Pizlo <fpizlo@apple.com> If you get a list of DOMWrapperWorld*'s and then plan to allocate in the heap, you should ref the DOMWrapperWorld*'s https://bugs.webkit.org/show_bug.cgi?id=85098 <rdar://problem/11318170> Reviewed by Sam Weinig. No new tests because this addresses hard-to-repro flaky behavior arising from GCs at inconvenient times. * bindings/js/ScriptController.cpp: (WebCore::ScriptController::getAllWorlds): * bindings/js/ScriptController.h: (ScriptController): * bindings/js/WebCoreJSClientData.h: (WebCore::WebCoreJSClientData::getAllWorlds): * bindings/v8/ScriptController.cpp: (WebCore::ScriptController::getAllWorlds): * bindings/v8/ScriptController.h: (ScriptController): * loader/FrameLoader.cpp: (WebCore::FrameLoader::dispatchDidClearWindowObjectsInAllWorlds): (WebCore::FrameLoader::dispatchGlobalObjectAvailableInAllWorlds): 2012-04-27 Geoffrey Garen <ggaren@apple.com> Removed the sole use of Weak<Unknown> https://bugs.webkit.org/show_bug.cgi?id=85099 Reviewed by Sam Weinig. The semantics and implementation of Weak<Unknown> are unclear because: - Should you call a finalizer for a non-GC thingy? If so, when? * Possible answer: No. - If WeakImpls for GC thingies live with the GC thingies in the heap, where do WeakImpls for non-GC thingies live? * Possible answer: Directly in the Weak<T>. Since no clients actually want these behaviors, it's hard to tell if they're the right behaviors, and it's not worth the implementation complexity. If we come up with a client that wants these behaviors, we can always revisit this. * bindings/js/JSNodeFilterCondition.cpp: (WebCore::JSNodeFilterCondition::JSNodeFilterCondition): Just leave our filter NULL if it's not an object -- that's a better way to indicate "not a valid filter object". (WebCore::JSNodeFilterCondition::acceptNode): Fixed up some naming to clarify that the object we're working with is not necessarily a function. * bindings/js/JSNodeFilterCondition.h: (JSNodeFilterCondition): Use Weak<JSObject>, since that more closely matches what we're trying to do. 2012-04-26 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to getDOMXXXMap() https://bugs.webkit.org/show_bug.cgi?id=85022 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to getDOMXXXMap(). Also this patch removes DOMMap::getDOMDataStore() and DOMData::getDefalutStore(), since the indirection by the methods is redundant. This is not for performance optimization but just for refactoring. No tests. No change in behavior. * bindings/v8/DOMData.cpp: (WebCore::DOMData::getCurrentStore): * bindings/v8/DOMData.h: (DOMData): * bindings/v8/V8DOMMap.cpp: (WebCore::getDOMNodeMap): (WebCore::getActiveDOMNodeMap): (WebCore::getDOMObjectMap): (WebCore::getActiveDOMObjectMap): (WebCore::removeAllDOMObjects): * bindings/v8/V8DOMMap.h: (WebCore): 2012-04-26 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to V8BindingPerIsolateData::current() https://bugs.webkit.org/show_bug.cgi?id=85023 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to V8BindingPerIsolateData::current(). No tests. No change in behavior. * bindings/v8/V8Binding.h: (WebCore::V8BindingPerIsolateData::current): (WebCore::v8ExternalString): 2012-04-27 Dimitri Glazkov <dglazkov@chromium.org> Unreviewed, rolling out r115484. http://trac.webkit.org/changeset/115484 https://bugs.webkit.org/show_bug.cgi?id=84555 Broke Chromium compile. * bindings/js/JSBlobCustom.cpp: * bindings/v8/custom/V8BlobCustom.cpp: * fileapi/Blob.cpp: * fileapi/Blob.h: (Blob): * fileapi/Blob.idl: * workers/WorkerContext.idl: 2012-04-27 Alexandru Chiculita <achicu@adobe.com> [CSS Shaders] Implement CSS Animations and Transitions for CSS Shaders https://bugs.webkit.org/show_bug.cgi?id=71406 Reviewed by Dean Jackson. I've implemented the blend function for the CustomFilterOperation. This should enable animations for CSS Shaders. Currently, just floats are implemented. If any of the filter attributes like shader, mesh size or box mode are different, the fallback is to use the "to" part of the animation instead. If other shader parameters do not match, it will merge the parameter values between the "from" and "to" states. Test: css3/filters/custom/custom-filter-animation.html * platform/graphics/filters/CustomFilterNumberParameter.h: (WebCore::CustomFilterNumberParameter::blend): (CustomFilterNumberParameter): (WebCore::CustomFilterNumberParameter::operator==): * platform/graphics/filters/CustomFilterOperation.cpp: (WebCore::equalCustomFilterParameters): (WebCore): (WebCore::checkCustomFilterParametersOrder): (WebCore::blendCustomFilterParameters): (WebCore::CustomFilterOperation::CustomFilterOperation): (WebCore::CustomFilterOperation::blend): * platform/graphics/filters/CustomFilterOperation.h: (WebCore): (CustomFilterOperation): (WebCore::CustomFilterOperation::operator==): (WebCore::CustomFilterOperation::operator!=): * platform/graphics/filters/CustomFilterParameter.h: (CustomFilterParameter): (WebCore::CustomFilterParameter::isSameType): (WebCore::CustomFilterParameter::operator==): (WebCore::CustomFilterParameter::operator!=): * platform/graphics/filters/CustomFilterProgram.h: * rendering/style/StyleCustomFilterProgram.h: (StyleCustomFilterProgram): (WebCore::StyleCustomFilterProgram::cachedVertexShader): (WebCore::StyleCustomFilterProgram::cachedFragmentShader): (WebCore::StyleCustomFilterProgram::operator==): 2012-04-27 Chris Rogers <crogers@google.com> Re-factor scheduling logic from AudioBufferSourceNode into AudioScheduledSourceNode https://bugs.webkit.org/show_bug.cgi?id=84639 Reviewed by Eric Carlson. Playback logic involving noteOn(), noteOff(), and playbackState were intertwined with the AudioBufferSourceNode's buffer playback code. These are more general concepts and may be implemented separately in another class called AudioScheduledSourceNode. No new tests. Covered by existing layout tests. * GNUmakefile.list.am: Add AudioScheduledSourceNode files to makefile. * Modules/webaudio/AudioBufferSourceNode.cpp: (WebCore): (WebCore::AudioBufferSourceNode::AudioBufferSourceNode): Re-factor some member variables into new base class AudioScheduledSourceNode. (WebCore::AudioBufferSourceNode::process): Re-factor scheduling logic into AudioScheduledSourceNode. * Modules/webaudio/AudioBufferSourceNode.h: (AudioBufferSourceNode): Simplify by re-factoring scheduling logic into AudioScheduledSourceNode. * Modules/webaudio/AudioScheduledSourceNode.cpp: Added. (WebCore): (WebCore::AudioScheduledSourceNode::AudioScheduledSourceNode): (WebCore::AudioScheduledSourceNode::updateSchedulingInfo): Get frame information for the current time quantum. * Modules/webaudio/AudioScheduledSourceNode.h: Added. (WebCore::AudioScheduledSourceNode::noteOn): (WebCore::AudioScheduledSourceNode::noteOff): (WebCore::AudioScheduledSourceNode::finish): (WebCore::AudioScheduledSourceNode::playbackState): (WebCore::AudioScheduledSourceNode::isPlayingOrScheduled): (WebCore::AudioScheduledSourceNode::hasFinished): Re-factored from AudioBufferSourceNode. * WebCore.gypi: * WebCore.xcodeproj/project.pbxproj: Add AudioScheduledSourceNode files to makefiles. 2012-04-26 Sam Weinig <sam@webkit.org> Add support for the Blob constructor https://bugs.webkit.org/show_bug.cgi?id=84555 Reviewed by Maciej Stachowiak. Test: fast/files/blob-constructor.html This adds an implementation of the Blob constructor that willfully violates the W3C Editor’s Draft 29 February 2012 in the following ways: - Elements in the parts array are coerced to DOMStrings https://www.w3.org/Bugs/Public/show_bug.cgi?id=16721 - Don't throw for invalid key in the dictionary https://www.w3.org/Bugs/Public/show_bug.cgi?id=16727 - Values for the endings property are treated as enums https://www.w3.org/Bugs/Public/show_bug.cgi?id=16729 * bindings/js/JSBlobCustom.cpp: (WebCore::JSBlobConstructor::constructJSBlob): Implement blob constructor. * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::V8Blob::constructorCallback): Implement blob constructor. * fileapi/Blob.idl: Add constructor to IDL. * workers/WorkerContext.idl: Add Blob constructor to the worker global object. 2012-04-27 Allan Sandfeld Jensen <allan.jensen@nokia.com> [Qt] Fix minimal build. https://bugs.webkit.org/show_bug.cgi?id=85045 Reviewed by Tor Arne Vestbø. Compile LIBXML XML parser even if ENABLE_XSLT is not set. * Target.pri: 2012-04-27 Shawn Singh <shawnsingh@chromium.org> Infinite backgroundClipRect should not be scrolled. https://bugs.webkit.org/show_bug.cgi?id=84979 Reviewed by Adrienne Walker. Test: compositing/iframes/scroll-fixed-transformed-element.html By accidentally scrolling clipRects that should be considered "infinite", they were no longer being considered infinite. This caused a chain of un-intended code paths that caused fixed position elements to stutter when scrolling in Chromium. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::backgroundClipRect): 2012-04-27 Ryosuke Niwa <rniwa@webkit.org> FormatBlock crashes when body element is removed prior to the command execution https://bugs.webkit.org/show_bug.cgi?id=84937 Reviewed by Tony Chang. The crash was because because DOM had been modified since the last time selection had been "validated", and therefore frame selection's endpoints are no longer visible when we instantiated visibleStart and visibleEnd from m_endingSelection of the edit command. Fixed the bug by checking the nullity and orphanedness of visible start and visible end directly. I suspect we have similar bugs in other commands. The fundamental problem is that the copy constructor of VisibleSelection never validates so when a VisibleSelection is passed from one class to another (e.g. FrameSelection to EditCommand), we may not adjust end points as needed. Test: editing/execCommand/format-block-without-body-crash.html * editing/ApplyBlockElementCommand.cpp: (WebCore::ApplyBlockElementCommand::doApply): 2012-04-27 Enrica Casucci <enrica@apple.com> REGRESSION(r96257): Deleting a large amount of text is very slow. https://bugs.webkit.org/show_bug.cgi?id=83983 <rdar://problem/10826076> Reviewed by Ryosuke Niwa. The change in r96257 did not cause the performance regression per se, but exposed a problem in the way we calculate the offset in container node when the anchorType is PositionIsOffsetInAnchor. The offset was computed as the minimum between the given offset and lastOffsetInNode. If the container has a very large number of children, we walk the entire list of child nodes in the container simply to find out how many they are. Looking through the entire editing code, I found other 2 cases (one is only an ASSERT) where we could do a similar optimization. No new tests. No behavior change, only performance optimization. * dom/Position.cpp: (WebCore::Position::computeOffsetInContainerNode): * dom/Position.h: (WebCore::minOffsetForNode): (WebCore::offsetIsBeforeLastNodeOffset): * editing/ApplyStyleCommand.cpp: (WebCore::ApplyStyleCommand::removeInlineStyle): (WebCore::ApplyStyleCommand::mergeEndWithNextIfIdentical): 2012-04-27 Julien Chaffraix <jchaffraix@webkit.org> NULL-deref in RenderBox::clippedOverflowRectForRepaint https://bugs.webkit.org/show_bug.cgi?id=84774 Reviewed by Tony Chang. Test: fast/inline/crash-new-continuation-with-outline.html The bug comes from trying to repaint the :after content as part of updateBeforeAfterContent. The repainting logic would query the yet-to-be-inserted continuation(). Then we would crash in RenderBox::clippedOverflowRectForRepaint as we didn't have an enclosingLayer() (which any RenderObject in the tree will have). The fix is to check in RenderInline::clippedOverflowRectForRepaint that our continuation() is properly inserted in the tree. We could check that it isRooted() but it's an overkill here. * rendering/RenderInline.cpp: (WebCore::RenderInline::clippedOverflowRectForRepaint): 2012-04-27 Antti Koivisto <antti@apple.com> Memory cache pruning should be protected against reentering. https://bugs.webkit.org/show_bug.cgi?id=85077 Reviewed by Alexey Proskuryakov. MemoryCache::pruneDeadResourcesToSize() has some ad-hock protection against reentering. This patch adds more complete protection. * loader/cache/MemoryCache.cpp: (WebCore::MemoryCache::MemoryCache): (WebCore::MemoryCache::pruneLiveResourcesToSize): Protect live resource pruning too. (WebCore::MemoryCache::pruneDeadResourcesToSize): Remove the existing weak reentrancy handling in favor of full proctection. * loader/cache/MemoryCache.h: (MemoryCache): 2012-04-27 Alexander Pavlov <apavlov@chromium.org> Web Inspector: Implement the "Disable JavaScript" option in the settings dialog (re-landing r115417 with a test that should work on Windows.) https://bugs.webkit.org/show_bug.cgi?id=84946 Reviewed by Yury Semikhatsky. Test: inspector/debugger/disable-script.html * inspector/Inspector.json: * inspector/InspectorPageAgent.cpp: (PageAgentState): (WebCore::InspectorPageAgent::enable): (WebCore::InspectorPageAgent::disable): (WebCore::InspectorPageAgent::getScriptExecutionStatus): (WebCore): (WebCore::InspectorPageAgent::setScriptExecutionDisabled): * inspector/InspectorPageAgent.h: * inspector/front-end/Settings.js: * inspector/front-end/SettingsScreen.js: (WebInspector.SettingsScreen): (WebInspector.SettingsScreen.prototype.get _updateScriptDisabledCheckbox): (WebInspector.SettingsScreen.prototype._javaScriptDisabledChanged): * inspector/front-end/inspector.js: 2012-04-27 Keishi Hattori <keishi@webkit.org> IETC HTML5: verify HTMLDataListElement - instanceof HTMLDataListElement fails. https://bugs.webkit.org/show_bug.cgi?id=81196 Reviewed by Kent Tamura. Test: fast/dom/Window/window-properties.html, fast/dom/Window/window-lookup-precedence.html HTMLDataListElement should be available on DOMWindow. * page/DOMWindow.idl: Added HTMLDataListElement. 2012-04-27 Dimitri Glazkov <dglazkov@chromium.org> Unreviewed, rolling out r115417. http://trac.webkit.org/changeset/115417 https://bugs.webkit.org/show_bug.cgi?id=84946 Added test is broken on windows. * inspector/Inspector.json: * inspector/InspectorPageAgent.cpp: (WebCore::InspectorPageAgent::enable): (WebCore::InspectorPageAgent::disable): * inspector/InspectorPageAgent.h: * inspector/front-end/Settings.js: * inspector/front-end/SettingsScreen.js: (WebInspector.SettingsScreen): * inspector/front-end/inspector.js: 2012-04-27 Gavin Peters <gavinp@chromium.org> Add new ENABLE_LINK_PRERENDER define to control the Prerendering API https://bugs.webkit.org/show_bug.cgi?id=84871 Reviewed by Adam Barth. Prerendering is currently covered by the ENABLE_LINK_PREFETCH macro, but the new Prerendering API separates it from prefetching. Having separate include guards lets ports enable prefetching, a relatively easy change, without needing to build the infrastructure for prerendering, which is considerably more complicated. * Configurations/FeatureDefines.xcconfig: 2012-04-27 Zan Dobersek <zandobersek@gmail.com> [Gtk][DOM Bindings] Feature-protected properties are put under condition guards https://bugs.webkit.org/show_bug.cgi?id=85068 Reviewed by Martin Robinson. Generated feature-dependent properties are now present regardless of that feature being enabled. On getting or setting that property's value a warning is thrown if the feature is not enabled. Additionally, if the generated interface is feature-dependant, when getting or setting any property's value a warning is thrown if the feature is not enabled. No new tests - covered by existing bindings tests. * bindings/scripts/CodeGeneratorGObject.pm: (GenerateProperty): (GenerateProperties): * bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp: Rebaseline. (webkit_dom_test_interface_set_property): (webkit_dom_test_interface_get_property): (webkit_dom_test_interface_class_init): * bindings/scripts/test/GObject/WebKitDOMTestObj.cpp: Ditto. (webkit_dom_test_obj_set_property): (webkit_dom_test_obj_get_property): (webkit_dom_test_obj_class_init): * bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp: Ditto. (webkit_dom_test_serialized_script_value_interface_get_property): 2012-04-27 Zan Dobersek <zandobersek@gmail.com> [Gtk][DOM Bindings] Conditional string in implementation file generated in wrong place after 113450 https://bugs.webkit.org/show_bug.cgi?id=85065 Reviewed by Martin Robinson. Put the condition string in implementation file after the header inclusions. This ensures that build errors do not occur when disabling the future that applies to the condition string because of WebCore objects and methods that are still in use despite the feature being disabled. No new tests - covered by bindings tests. * bindings/scripts/CodeGeneratorGObject.pm: (WriteData): * bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp: Rebaseline generated results. * bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp: Ditto. * bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp: Ditto. 2012-04-27 Andreas Kling <kling@webkit.org> Avoid mutating Element attribute storage in StepRange constructor. <http://webkit.org/b/84797> Reviewed by Antti Koivisto. Test: fast/selectors/querySelector-in-range-crash.html * dom/Attribute.h: Add comment about the volatility of references returned by getters. * html/StepRange.cpp: (WebCore::StepRange::StepRange): Replace hasAttribute/getAttribute pair by a single fastGetAttribute. * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::updateType): (WebCore::HTMLInputElement::value): Store the value attribute in an local variable before passing it to sanitizeValue(). 2012-04-27 Rob Buis <rbuis@rim.com> SVG inline style of 'marker-*' does not override https://bugs.webkit.org/show_bug.cgi?id=84824 Reviewed by Nikolas Zimmermann. Properly handle CSSValueNone for clip-path, filter, mask and marker-* properties. Instead of bailing out, set the none value explicitly, since an earlier match may have set it to something other than none. Tests: svg/custom/inline-style-overrides-clipPath-expected.svg svg/custom/inline-style-overrides-clipPath.svg svg/custom/inline-style-overrides-filter-expected.svg svg/custom/inline-style-overrides-filter.svg svg/custom/inline-style-overrides-markers-expected.svg svg/custom/inline-style-overrides-markers.svg svg/custom/inline-style-overrides-mask-expected.svg svg/custom/inline-style-overrides-mask.svg * css/SVGCSSStyleSelector.cpp: (WebCore::StyleResolver::applySVGProperty): 2012-04-27 Christophe Dumez <christophe.dumez@intel.com> [EFL] media/video-controls-rendering-toggle-display-none.html is failing https://bugs.webkit.org/show_bug.cgi?id=84949 Reviewed by Antonio Gomes. Fix volume slider rendering so that the media/video-controls-rendering-toggle-display-none.html passes. * css/mediaControlsEfl.css: (audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button): (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container): (audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider): 2012-04-27 Nikolas Zimmermann <nzimmermann@rim.com> Support values animation mode with just a single value https://bugs.webkit.org/show_bug.cgi?id=85064 Reviewed by Antti Koivisto. values="a" is equal to <set to="a"> per SMIL specification. We currently only support values animation if at least two values are given, fix that. The reference animations in Dr. Olaf Hoffmanns SVG Animation test suite are mostly using values animations, sometimes with only a single value given. Lots of the reference animations are broken in trunk w/o this patch and now work as expected. See http://hoffmann.bplaced.net/svgtest/index.php?s=en&in=start. Test: svg/animations/single-values-animation.html * svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::calculateKeyTimesForCalcModePaced): (WebCore::SVGAnimationElement::currentValuesForValuesAnimation): (WebCore::SVGAnimationElement::startedActiveInterval): 2012-04-27 Konrad Piascik <kpiascik@rim.com> Web Inspector: Allow inspection of Web Socket Frames https://bugs.webkit.org/show_bug.cgi?id=83282 Reviewed by Pavel Feldman. Tests: http/tests/inspector/web-socket-frame-error.html http/tests/inspector/web-socket-frame.html * English.lproj/localizedStrings.js: Added new Web Inspector front-end UI strings. * Modules/websockets/WebSocketChannel.cpp: Added InspectorInstrumentation calls to the following methods. (WebCore::WebSocketChannel::fail): (WebCore::WebSocketChannel::processFrame): (WebCore::WebSocketChannel::sendFrame): * WebCore.gypi: Added new Web Inspector resource file. * WebCore.vcproj/WebCore.vcproj: Added new Web Inspector resource file. * inspector/Inspector.json: Added new Web Inspector resource file. * inspector/InspectorInstrumentation.cpp: Added new methods for instrumenting a Web Socket frame or error. (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameImpl): (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameErrorImpl): (WebCore::InspectorInstrumentation::didSendWebSocketFrameImpl): * inspector/InspectorInstrumentation.h: (WebCore): (InspectorInstrumentation): (WebCore::InspectorInstrumentation::didReceiveWebSocketFrame): (WebCore::InspectorInstrumentation::didReceiveWebSocketFrameError): (WebCore::InspectorInstrumentation::didSendWebSocketFrame): * inspector/InspectorResourceAgent.cpp: (WebCore::InspectorResourceAgent::didReceiveWebSocketFrame): (WebCore): (WebCore::InspectorResourceAgent::didSendWebSocketFrame): (WebCore::InspectorResourceAgent::didReceiveWebSocketFrameError): * inspector/InspectorResourceAgent.h: (WebCore): (InspectorResourceAgent): * inspector/compile-front-end.py: Added new Web Inspector resource file. * inspector/front-end/NetworkItemView.js: Added a new View for inspecting Web Socket frames and errors. (WebInspector.NetworkItemView): * inspector/front-end/NetworkManager.js: Implemented callback called by InspectorResourceAgent for the new Web Socket frame and error calls. (WebInspector.NetworkDispatcher.prototype.webSocketFrameReceived): (WebInspector.NetworkDispatcher.prototype.webSocketFrameSent): (WebInspector.NetworkDispatcher.prototype.webSocketFrameError): * inspector/front-end/NetworkRequest.js: Added a frames array to a Resource request along with accessor and helper methods (WebInspector.NetworkRequest): (WebInspector.NetworkRequest.prototype.resource): (WebInspector.NetworkRequest.prototype.hasFrames): (WebInspector.NetworkRequest.prototype.frameLength): (WebInspector.NetworkRequest.prototype.getFrame): (WebInspector.NetworkRequest.prototype.addFrameError): (WebInspector.NetworkRequest.prototype.addFrame): (WebInspector.NetworkRequest.prototype._pushFrame): * inspector/front-end/ResourceWebSocketFrameView.js: Added to help display Web Socket frame and error data. (WebInspector.ResourceWebSocketFrameView): * inspector/front-end/WebKit.qrc: Added new Web Inspector resource file. * inspector/front-end/inspector.html: Added new Web Inspector resource file. 2012-04-27 Nikolas Zimmermann <nzimmermann@rim.com> Fix repetitions & by animation support for SVGAnimateTransformElement https://bugs.webkit.org/show_bug.cgi?id=85051 Reviewed by Antti Koivisto. Repetitions are currently handled by adjusting percentage (percentage += repeatCount). This doesn't work for <animateTransform> as each repetition has to be post-multiplied to the animated transform list. Fix that. By-animations are equal to values="0;by" animations in SMIL. '0' is the neutral element of addition, which is the _zero_ matrix, not the identity matrix for SVGTransform. Add a new construction mode to SVGTransform to be able to construct zero transforms. Tests: svg/animations/animateTransform-accumulation-expected.svg svg/animations/animateTransform-accumulation.svg svg/animations/animateTransform-by-scale-expected.svg svg/animations/animateTransform-by-scale.svg svg/animations/animateTransform-from-by-from-to-comparision-expected.svg svg/animations/animateTransform-from-by-from-to-comparision.svg svg/animations/animateTransform-from-by-scale-additive-sum-expected.svg svg/animations/animateTransform-from-by-scale-additive-sum.svg svg/animations/animateTransform-from-by-scale-expected.svg svg/animations/animateTransform-from-by-scale.svg svg/animations/animateTransform-rotate-around-point-expected.svg svg/animations/animateTransform-rotate-around-point.svg svg/animations/animateTransform-skewX-expected.svg svg/animations/animateTransform-skewX.svg svg/animations/animateTransform-skewY-expected.svg svg/animations/animateTransform-skewY.svg svg/animations/animateTransform-translate-expected.svg svg/animations/animateTransform-translate.svg svg/animations/multiple-animateTransform-additive-sum-expected.svg svg/animations/multiple-animateTransform-additive-sum.svg * svg/SVGAnimateTransformElement.cpp: (WebCore::SVGAnimateTransformElement::parseAttribute): * svg/SVGAnimatedTransformList.cpp: (WebCore::SVGAnimatedTransformListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue): * svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::adjustFromToListValues): * svg/SVGTransform.cpp: (WebCore::SVGTransform::SVGTransform): * svg/SVGTransform.h: * svg/SVGTransformDistance.cpp: (WebCore::SVGTransformDistance::SVGTransformDistance): (WebCore::SVGTransformDistance::scaledDistance): (WebCore::SVGTransformDistance::addSVGTransforms): (WebCore::SVGTransformDistance::addToSVGTransform): (WebCore::SVGTransformDistance::distance): * svg/SVGTransformDistance.h: (SVGTransformDistance): 2012-04-27 Nikolas Zimmermann <nzimmermann@rim.com> SVG Animations update baseVal instead of animVal https://bugs.webkit.org/show_bug.cgi?id=12437 Reviewed by Dirk Schulze. Cleanup animation code, remove last remaining crufts of the old setAttribute() animation model. Now only two animation modes remain: animate SVG DOM animVal properties or CSS properties. Stop caching base values per string in SMILTimeContainer, as it breaks additive="sum" for CSS properties if the underlying base value is changed from the outside (eg. when calling style.fontSize="20px", if font-size was 10px, and we're running an additive by-animation with 50px). This requires us to cache the computed style of a SVGElement, without SMIL style property changes, in SVGElementRareData, similar to how the computed style itself is cached in ElementRareData. To be able to compute the base value for a CSS property at any time, we have to exclude any previous animation effects residing in the SMIL animated style properties, per SMIL2/3 specs. NOTE: This doesn't change or affect the way CSS Animations/Transitions are applied, we still have some bugs in that area, but this patch doesn't address them. The idea is to only remove the cache, to pave the way for future additive="sum" patches. Tests: svg/animations/change-css-property-while-animating-fill-freeze.html svg/animations/change-css-property-while-animating-fill-remove.html * dom/Element.cpp: (WebCore::Element::recalcStyle): * dom/Node.h: * svg/SVGAnimateElement.cpp: (WebCore::propertyTypesAreConsistent): (WebCore::SVGAnimateElement::resetToBaseValue): (WebCore::SVGAnimateElement::applyResultsToTarget): * svg/SVGAnimateElement.h: (SVGAnimateElement): * svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::resetToBaseValue): * svg/SVGAnimateMotionElement.h: (SVGAnimateMotionElement): * svg/SVGAnimationElement.cpp: (WebCore::applyCSSPropertyToTarget): (WebCore::SVGAnimationElement::setTargetAttributeAnimatedCSSValue): * svg/SVGAnimationElement.h: * svg/SVGElement.cpp: (WebCore::SVGElement::SVGElement): (WebCore::SVGElement::willRecalcStyle): (WebCore): (WebCore::SVGElement::rareSVGData): (WebCore::SVGElement::ensureRareSVGData): (WebCore::SVGElement::computedStyle): (WebCore::SVGElement::isAnimatableAttribute): * svg/SVGElement.h: (SVGElement): * svg/SVGElementRareData.h: (WebCore::SVGElementRareData::SVGElementRareData): (WebCore::SVGElementRareData::ensureAnimatedSMILStyleProperties): (WebCore::SVGElementRareData::destroyAnimatedSMILStyleProperties): (WebCore::SVGElementRareData::overrideComputedStyle): (WebCore::SVGElementRareData::setUseOverrideComputedStyle): * svg/animation/SMILTimeContainer.cpp: (WebCore::SMILTimeContainer::updateAnimations): * svg/animation/SMILTimeContainer.h: (SMILTimeContainer): * svg/animation/SVGSMILElement.h: (SVGSMILElement): 2012-04-26 Alexander Pavlov <apavlov@chromium.org> Web Inspector: Implement the "Disable JavaScript" option in the settings dialog (re-landing r115323 with a fixed test.) https://bugs.webkit.org/show_bug.cgi?id=84946 Based on user actions in the Inspector frontend, InspectorPageAgent invokes Settings::setScriptEnabled() for the associated page to switch the script execution therein. Reviewed by Yury Semikhatsky. Test: inspector/debugger/disable-script.html * inspector/Inspector.json: * inspector/InspectorPageAgent.cpp: (PageAgentState): (WebCore::InspectorPageAgent::enable): (WebCore::InspectorPageAgent::disable): (WebCore::InspectorPageAgent::getScriptExecutionStatus): (WebCore): (WebCore::InspectorPageAgent::setScriptExecutionDisabled): * inspector/InspectorPageAgent.h: * inspector/front-end/Settings.js: * inspector/front-end/SettingsScreen.js: (WebInspector.SettingsScreen): (WebInspector.SettingsScreen.prototype.get _updateScriptDisabledCheckbox): (WebInspector.SettingsScreen.prototype._javaScriptDisabledChanged): * inspector/front-end/inspector.js: 2012-04-26 Ryosuke Niwa <rniwa@webkit.org> REGRESSION (r94497): Pressing Command+A when inline (Marked Text) is not empty will clean whole content https://bugs.webkit.org/show_bug.cgi?id=84501 Reviewed by Alexey Proskuryakov. The bug was caused by setComposition, which is called by cancelComposition, deleting the contents when the passed text is empty. Fixed it by not deleting text when canceling compositions. This is okay because as the comment above the line suggests, this particular call to TypingCommand::deleteSelection is only useful when the confirmed text is empty and the composition text had previously been non-empty. Test: editing/input/select-all-clear-input-method.html * editing/Editor.cpp: (WebCore::Editor::setComposition): 2012-04-26 Keishi Hattori <keishi@webkit.org> datalist: Form control in a <datalist> should be barred from constraint validation https://bugs.webkit.org/show_bug.cgi?id=84359 http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#the-datalist-element According to this, if an element has a datalist element ancestor, it is barred from constraint validation. Reviewed by Kent Tamura. Test: fast/forms/datalist/datalist-child-validation.html * html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::HTMLFormControlElement): (WebCore::HTMLFormControlElement::updateAncestors): Updates the ancestor information. (WebCore::HTMLFormControlElement::insertedInto): Invalidates the ancestor information and calls setNeedsWillValidateCheck (WebCore::HTMLFormControlElement::removedFrom): Invalidates the ancestor information and calls setNeedsWillValidateCheck (WebCore::HTMLFormControlElement::disabled): (WebCore::HTMLFormControlElement::recalcWillValidate): Returns false if element has a datalist ancestor. (WebCore::HTMLFormControlElement::setNeedsWillValidateCheck): Check if ancestor information is valid too. * html/HTMLFormControlElement.h: (HTMLFormControlElement): 2012-04-26 Adrienne Walker <enne@google.com> [chromium] Remove unused CCLayerImpl::debugID() https://bugs.webkit.org/show_bug.cgi?id=85019 Reviewed by James Robinson. CCLayerSorter used debugID() but it was never set anywhere. Change the CCLayerSorter LOG messages to use id(), which does get set. * platform/graphics/chromium/cc/CCLayerImpl.h: (CCLayerImpl): * platform/graphics/chromium/cc/CCLayerSorter.cpp: (WebCore::CCLayerSorter::createGraphNodes): (WebCore::CCLayerSorter::createGraphEdges): (WebCore::CCLayerSorter::sort): 2012-04-26 Nico Weber <thakis@chromium.org> [chromium] Fix C++ language use. https://bugs.webkit.org/show_bug.cgi?id=85015 Reviewed by James Robinson. Even though MSVC allows it, a sizeof followed by a non-parenthesized typename is not valid C++. No functionality change. * rendering/RenderThemeChromiumWin.cpp: (WebCore): (WebCore::getNonClientMetrics): 2012-04-24 James Robinson <jamesr@chromium.org> [chromium] Move ProgramBinding definitions to LayerRendererChromium and normalize naming https://bugs.webkit.org/show_bug.cgi?id=84808 Reviewed by Adrienne Walker. The GL programs used are logically part of LayerRendererChromium and not something specific to a layer type, since a different renderer would want to use a different thing to render the same layer types. This moves all of the ProgramBinding definitions into LayerRendererChromium and gives them consistent names. With the exception of CCRenderSurface (noted by an inline comment), these programs are private to LRC. This patch also deduplicates programs a bit: 1.) Video's NativeTexture and RGBA programs were the same thing, folded. 2.) The TexStretch and TexTransform shaders are basically the same thing, folded together. * platform/graphics/chromium/LayerChromium.h: (LayerChromium): * platform/graphics/chromium/LayerRendererChromium.cpp: (WebCore::LayerRendererChromium::drawCheckerboardQuad): (WebCore::LayerRendererChromium::drawDebugBorderQuad): (WebCore::LayerRendererChromium::drawSolidColorQuad): (WebCore::LayerRendererChromium::drawTileQuad): (WebCore::LayerRendererChromium::drawYUV): (WebCore::LayerRendererChromium::drawRGBA): (WebCore::LayerRendererChromium::drawNativeTexture2D): (WebCore::LayerRendererChromium::drawStreamTexture): (WebCore::LayerRendererChromium::drawTextureQuad): (WebCore::LayerRendererChromium::drawHeadsUpDisplay): (WebCore::LayerRendererChromium::initializeSharedObjects): (WebCore::LayerRendererChromium::tileCheckerboardProgram): (WebCore::LayerRendererChromium::solidColorProgram): (WebCore::LayerRendererChromium::headsUpDisplayProgram): (WebCore::LayerRendererChromium::renderSurfaceProgram): (WebCore::LayerRendererChromium::renderSurfaceProgramAA): (WebCore::LayerRendererChromium::renderSurfaceMaskProgram): (WebCore::LayerRendererChromium::renderSurfaceMaskProgramAA): (WebCore::LayerRendererChromium::tileProgram): (WebCore::LayerRendererChromium::tileProgramOpaque): (WebCore::LayerRendererChromium::tileProgramAA): (WebCore::LayerRendererChromium::tileProgramSwizzle): (WebCore::LayerRendererChromium::tileProgramSwizzleOpaque): (WebCore::LayerRendererChromium::tileProgramSwizzleAA): (WebCore::LayerRendererChromium::textureProgramFlip): (WebCore::LayerRendererChromium::textureTexRectProgram): (WebCore::LayerRendererChromium::textureTexRectProgramFlip): (WebCore::LayerRendererChromium::videoRGBAProgram): (WebCore::LayerRendererChromium::videoYUVProgram): (WebCore::LayerRendererChromium::videoStreamTextureProgram): (WebCore::LayerRendererChromium::cleanupSharedObjects): * platform/graphics/chromium/LayerRendererChromium.h: (WebCore): (LayerRendererChromium): * platform/graphics/chromium/ShaderChromium.cpp: * platform/graphics/chromium/ShaderChromium.h: * platform/graphics/chromium/cc/CCHeadsUpDisplay.h: (CCHeadsUpDisplay): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (WebCore): * platform/graphics/chromium/cc/CCRenderSurface.cpp: (WebCore::CCRenderSurface::copyTextureToFramebuffer): (WebCore::CCRenderSurface::drawLayer): * platform/graphics/chromium/cc/CCRenderSurface.h: (CCRenderSurface): * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp: * platform/graphics/chromium/cc/CCTextureLayerImpl.h: (CCTextureLayerImpl): * platform/graphics/chromium/cc/CCThreadProxy.cpp: * platform/graphics/chromium/cc/CCTiledLayerImpl.h: (CCTiledLayerImpl): * platform/graphics/chromium/cc/CCVideoLayerImpl.h: (WebCore): (CCVideoLayerImpl): 2012-04-26 Jeffrey Pfau <jpfau@apple.com> Invalid cast in WebCore::HTMLCollection::isAcceptableElement https://bugs.webkit.org/show_bug.cgi?id=84626 Reviewed by Darin Adler. Check if the object is an HTMLElement before casting. Test: fast/dom/htmlcollection-non-html.html * html/HTMLCollection.cpp: (WebCore::HTMLCollection::isAcceptableElement): 2012-04-26 Dana Jansens <danakj@chromium.org> [chromium] Some background filters require inflating damage on the surface behind them https://bugs.webkit.org/show_bug.cgi?id=84479 Reviewed by Adrienne Walker. A layer with a background blur will expand the damage from pixels in the surface below it. We extend the damage tracker to expand damage in a surface below such layers. Unit test: CCDamageTrackerTest.verifyDamageForBackgroundBlurredChild * platform/graphics/chromium/cc/CCDamageTracker.cpp: (WebCore::expandPixelOutsetsWithFilters): (WebCore): (WebCore::expandDamageRectInsideRectWithFilters): (WebCore::expandDamageRectWithFilters): (WebCore::CCDamageTracker::updateDamageTrackingState): (WebCore::CCDamageTracker::trackDamageFromActiveLayers): * platform/graphics/chromium/cc/CCDamageTracker.h: (CCDamageTracker): 2012-04-26 Simon Fraser <simon.fraser@apple.com> Improve compositing logging output https://bugs.webkit.org/show_bug.cgi?id=85010 Reviewed by Dean Jackson. In the compositing log channel output, indent the layers based on z-order tree depth. Tabulate the summary, and show obligate and secondary backing store area separately. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateClipRects): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::RenderLayerCompositor): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::logLayerInfo): (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): (WebCore::RenderLayerCompositor::updateLayerTreeGeometry): (WebCore::RenderLayerCompositor::reasonForCompositing): * rendering/RenderLayerCompositor.h: (RenderLayerCompositor): 2012-04-26 Anders Carlsson <andersca@apple.com> REGRESSION (r115163): Unable to scroll article body with trackpad on altdevblogaday.com blog post https://bugs.webkit.org/show_bug.cgi?id=85024 <rdar://problem/11330758> Reviewed by Sam Weinig. Fix broken logic in canHaveScrollbars. * page/scrolling/ScrollingTreeNode.h: (WebCore::ScrollingTreeNode::canHaveScrollbars): 2012-04-24 James Robinson <jamesr@chromium.org> [chromium] Use different CCDrawQuad types for textures vs IOSurfaces https://bugs.webkit.org/show_bug.cgi?id=84811 Reviewed by Adrienne Walker. IOSurface and texture backed layers share few properties (only the flipped bool), so it doesn't make a lot of sense for them to use the same CCDrawQuad type for both. This splits IOSurfaces out to a dedicated quad type to make it easier to understand which bits of state apply to each. The logical next step after this is to split the layer type as well, but that will be awkward until bug 84808 is resolved. * WebCore.gypi: * platform/graphics/chromium/LayerRendererChromium.cpp: (WebCore::LayerRendererChromium::drawQuad): (WebCore::LayerRendererChromium::drawTextureQuad): (WebCore): (WebCore::LayerRendererChromium::drawIOSurfaceQuad): * platform/graphics/chromium/LayerRendererChromium.h: (LayerRendererChromium): * platform/graphics/chromium/cc/CCDrawQuad.cpp: (WebCore::CCDrawQuad::toIOSurfaceDrawQuad): (WebCore): * platform/graphics/chromium/cc/CCDrawQuad.h: (WebCore): (CCDrawQuad): * platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.cpp: Copied from Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.cpp. (WebCore): (WebCore::CCIOSurfaceDrawQuad::create): (WebCore::CCIOSurfaceDrawQuad::CCIOSurfaceDrawQuad): * platform/graphics/chromium/cc/CCIOSurfaceDrawQuad.h: Copied from Source/WebCore/platform/graphics/chromium/cc/CCTextureDrawQuad.h. (WebCore): (CCIOSurfaceDrawQuad): (WebCore::CCIOSurfaceDrawQuad::flipped): (WebCore::CCIOSurfaceDrawQuad::ioSurfaceSize): (WebCore::CCIOSurfaceDrawQuad::ioSurfaceTextureId): * platform/graphics/chromium/cc/CCTextureDrawQuad.cpp: (WebCore::CCTextureDrawQuad::create): (WebCore::CCTextureDrawQuad::CCTextureDrawQuad): * platform/graphics/chromium/cc/CCTextureDrawQuad.h: (CCTextureDrawQuad): * platform/graphics/chromium/cc/CCTextureLayerImpl.cpp: (WebCore::CCTextureLayerImpl::appendQuads): 2012-04-26 Benjamin Poulain <bpoulain@apple.com> Use WebKit types for the cache of ObjcClass::methodsNamed() https://bugs.webkit.org/show_bug.cgi?id=85012 Reviewed by Geoffrey Garen. This patch redefines the method cache ObjcClass to avoid memory allocations in the case of positive match. Instead of using the converted name as the key, the original identifier string is used. This shortcuts all the other operations when there is a match. A side effect is a method can appear multiple times in the cache if it is invoked with different names using the escape character "$". An attaquer could bloat the cache with a few hundreds strings. In the common case, having each name mapped is an improvment. * bridge/objc/objc_class.h: (ObjcClass): * bridge/objc/objc_class.mm: (JSC::Bindings::ObjcClass::ObjcClass): (JSC::Bindings::ObjcClass::methodsNamed): 2012-04-26 Ojan Vafai <ojan@chromium.org> Delete dead code in Arena.h/cpp https://bugs.webkit.org/show_bug.cgi?id=84997 Reviewed by Eric Seidel. Also cleaned up some style issues. Renamed some single-letter variable names. Avoided anything other than totally trivial style changes to be 100% sure that there is no change in behavior. No new tests. There's no non-style code changes except inlining CLEAR_UNUSED and CLEAR_ARENA. * platform/Arena.cpp: (WebCore): (WebCore::CeilingLog2): (WebCore::InitArenaPool): (WebCore::ArenaAllocate): (WebCore::FreeArenaList): (WebCore::FinishArenaPool): * platform/Arena.h: (WebCore): 2012-04-26 Shawn Singh <shawnsingh@chromium.org> Re-implement backFaceVisibility to avoid dealing with perspective w < 0 problem https://bugs.webkit.org/show_bug.cgi?id=84059 Reviewed by Adrienne Walker. Unit tests added to CCMathUtilTest.cpp. This patch changes the implementation of backFaceIsVisible so that it doesn't need to deal with the w < 0 problem from of perspective projections. Instead, it is equally correct to simply use the inverse-transpose of the matrix, and quickly check the third row, third column element. Additionally, it was appropriate to move this function into TransformationMatrix itself. Making this change fixes some issues related to disappearing layers in Chromium (where the compositor incorrectly thought that the back face was visible, and skipped the layer). * platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp: (WebCore::calculateVisibleLayerRect): (WebCore::layerShouldBeSkipped): * platform/graphics/transforms/TransformationMatrix.cpp: (WebCore::TransformationMatrix::isBackFaceVisible): (WebCore): * platform/graphics/transforms/TransformationMatrix.h: (TransformationMatrix): 2012-04-26 Martin Robinson <mrobinson@igalia.com> [Cairo] Wrap cairo surfaces in a class when storing native images https://bugs.webkit.org/show_bug.cgi?id=83611 Reviewed by Alejandro G. Castro. No new tests. This is just a refactoring. This shouldn't change functionality. Added class that wraps Cairo images surfaces to serve as the "native image" type for the Cairo platform. This will allow the addition of caching resampled images as well as versions of the image for non-image Cairo backends. Also split out BitmapImageCairo.cpp from ImageCairo.cpp since these classes are defined in two headers. * GNUmakefile.list.am: Added new files. * platform/graphics/BitmapImage.h: Added a factory method that takes an image surface to reduce code churn. * platform/graphics/ImageSource.h: NativeImagePtr is now NativeImageCairo*. (WebCore): * platform/graphics/cairo/BitmapImageCairo.cpp: Copied from Source/WebCore/platform/graphics/cairo/ImageCairo.cpp. * platform/graphics/cairo/GraphicsContext3DCairo.cpp: Updated to reflect use of NativeImageCairo. * platform/graphics/cairo/ImageCairo.cpp: Ditto. * platform/graphics/cairo/NativeImageCairo.cpp: Added. * platform/graphics/cairo/NativeImageCairo.h: Added. * platform/graphics/cairo/PatternCairo.cpp: Updated to reflect use of NativeImageCairo. * platform/graphics/gtk/ImageGtk.cpp: Ditto. * platform/image-decoders/cairo/ImageDecoderCairo.cpp: Ditto. 2012-04-26 Mark Hahnenberg <mhahnenberg@apple.com> [GTK] Massive media tests failures since r115288 https://bugs.webkit.org/show_bug.cgi?id=84950 Reviewed by Filip Pizlo. No new tests. Since the "cross-platform" WebCore timer is at too high of a level in terms of the layers of WebKit for JSC to use, we are not currently able to use it in JSC, thus only those platforms that support CoreFoundation can currently take advantage of the new and improved GC activity timer. We've restored the old code paths for those platforms that don't have CF so that they will at least have the same behavior as before when calling garbageCollectSoon. * bindings/js/GCController.cpp: Added back the old WebCore timer along with some if-defs that do away with the WebCore timer on platforms that support CoreFoundation. (WebCore::GCController::GCController): (WebCore::GCController::garbageCollectSoon): (WebCore): (WebCore::GCController::gcTimerFired): * bindings/js/GCController.h: Ditto. (GCController): 2012-04-26 Adam Klein <adamk@chromium.org> Don't include V8Proxy.h in ScriptValue.h when V8GCController is all that's required https://bugs.webkit.org/show_bug.cgi?id=84986 Reviewed by Kentaro Hara. This makes it easier to include ScriptValue.h since it greatly reduces that header's dependencies. * bindings/v8/ScriptValue.h: Changed to include just V8GCController.h and removed comment which is redundant with explicit V8GCController references nearby. 2012-04-26 Aaron Colwell <acolwell@chromium.org> Fix missing sourceState change on MEDIA_ERR_SOURCE_NOT_SUPPORTED error. https://bugs.webkit.org/show_bug.cgi?id=84996 Reviewed by Eric Carlson. No new tests. http/tests/media/media-source/webm/video-media-source-errors.html was updated to verify that webkitSourceState is always SOURCE_CLOSED when the onerror event fires. * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::noneSupported): 2012-04-26 Antti Koivisto <antti@apple.com> Cache parsed stylesheets https://bugs.webkit.org/show_bug.cgi?id=85004 Reviewed by Andreas Kling. CSS parsing is 1-2% of WebKit CPU usage on average pages, more on sites with large stylesheets. We currently reparse all stylesheets from source text when they are encountered again. In many browsing scenarios we can eliminate lot of this by caching the parsed stylesheets. For example it is very common for subpages of a site to share the stylesheets. This patch enables memory caching for stylesheet loaded using the <link> element. Only stylesheets that have no import rules are cacheable for now. Cached stylesheets are copied on restore so there is no sharing (and no memory wins) yet. In the future we will also be able to share the actual data structures between pages for significant memory savings. After browsing around for a while <5% of the memory cache data was in parsed stylesheets so this does not bloat the cache significantly. * css/CSSStyleSheet.cpp: (WebCore): (WebCore::StyleSheetInternal::estimatedSizeInBytes): Estimate stylesheet size so we can handle decoded data pruning correctly. * css/CSSStyleSheet.h: (StyleSheetInternal): * css/StylePropertySet.cpp: (WebCore::StylePropertySet::averageSizeInBytes): (WebCore): * css/StylePropertySet.h: (StylePropertySet): * css/StyleRule.cpp: (WebCore::StyleRule::averageSizeInBytes): (WebCore): * css/StyleRule.h: (StyleRule): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setCSSStyleSheet): Save and restore parsed stylesheet. The current CSS parse context must be identical to the cached stylesheets. This ensures that the parsing results would be identical. * loader/cache/CachedCSSStyleSheet.cpp: (WebCore): (WebCore::CachedCSSStyleSheet::destroyDecodedData): (WebCore::CachedCSSStyleSheet::restoreParsedStyleSheet): (WebCore::CachedCSSStyleSheet::saveParsedStyleSheet): * loader/cache/CachedCSSStyleSheet.h: The parsed stylesheet cache is considered decoded data, similar to the image bitmaps. It uses the same mechanism for pruning. (WebCore): (CachedCSSStyleSheet): 2012-04-26 Anders Carlsson <andersca@apple.com> A TileCache should never outlive its WebTileCacheLayer https://bugs.webkit.org/show_bug.cgi?id=85008 <rdar://problem/11141172> Reviewed by Andreas Kling. Since WebTileCacheLayer objects can be destroyed on the scrolling thread, make sure to delete the TileCache layer when the PlatformCALayer is destroyed. This fixes a crash when the tile revalidation timer fires after the WebTileCacheLayer has been destroyed, but before the TileCache itself has been destroyed. * platform/graphics/ca/mac/PlatformCALayerMac.mm: (PlatformCALayer::~PlatformCALayer): * platform/graphics/ca/mac/WebTileCacheLayer.h: * platform/graphics/ca/mac/WebTileCacheLayer.mm: (-[WebTileCacheLayer dealloc]): (-[WebTileCacheLayer invalidate]): 2012-04-26 Benjamin Poulain <bpoulain@apple.com> Use String instead of RefPtr<StringImpl> for the cache of ObjcClass https://bugs.webkit.org/show_bug.cgi?id=84932 Reviewed by Andreas Kling. The cache with RefPtr<StringImpl*> was added with r115007. This patch aims at making the code a little easier to read. By using String, one would not need to know the Traits for StringImpl. * bridge/objc/objc_class.h: (ObjcClass): 2012-04-26 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to wrap() in SerializedScriptValue.cpp https://bugs.webkit.org/show_bug.cgi?id=84923 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. In this bug we pass Isolate to wrap() in SerializedScriptValue.cpp. No tests. No change in behavior. * bindings/v8/SerializedScriptValue.cpp: 2012-04-26 Hao Zheng <zhenghao@chromium.org> [chromium] Complex text support for Android. https://bugs.webkit.org/show_bug.cgi?id=84431 Complex text support is different on Android from other platforms. There are 2 kinds of font on Android: system fonts and fallback fonts. System fonts have a name, and are accessible in FontPlatformData. Fallback fonts do not have specific names, so they are not accessible from WebKit directly. There is one font for each script support. To feed Harfbuzz, use a trick to get correct SkTypeface based on script. Reviewed by Tony Chang. No new tests. Current tests are runnable on Android. * platform/graphics/FontCache.h: (FontCache): Make ComplexTextController friend of FontCache on Android. * platform/graphics/chromium/FontCacheAndroid.cpp: (WebCore::FontCache::createFontPlatformData): * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.cpp: (WebCore::ComplexTextController::getComplexFontPlatformData): (WebCore): (WebCore::ComplexTextController::setupFontForScriptRun): * platform/graphics/harfbuzz/ComplexTextControllerHarfBuzz.h: (ComplexTextController): 2012-04-26 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to wrap() (Part2) https://bugs.webkit.org/show_bug.cgi?id=84922 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to wrap() in custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8LocationCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8NamedNodeMapCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8SVGPathSegCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8StyleSheetCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint16ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint32ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint8ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint8ClampedArrayCustom.cpp: (WebCore::toV8): 2012-04-26 Jon Lee <jonlee@apple.com> [WK2] AlternativeTextClient leaks when the page is destroyed https://bugs.webkit.org/show_bug.cgi?id=84307 <rdar://problem/11328431> Reviewed by Enrica Casucci. * page/AlternativeTextClient.h: Add pageDestroyed() call, as in EditorClient. (AlternativeTextClient): * page/Page.cpp: (WebCore::Page::~Page): When the page is destroyed, notify the client if it exists. 2012-04-26 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to wrap() (Part1) https://bugs.webkit.org/show_bug.cgi?id=84921 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to wrap() in custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSRuleCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSStyleSheetCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSValueCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DOMStringMapCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DOMTokenListCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DataViewCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8EventCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Float32ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Float64ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8HTMLCollectionCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8ImageDataCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Int16ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Int32ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Int8ArrayCustom.cpp: (WebCore::toV8): 2012-04-26 Benjamin Poulain <bpoulain@apple.com> ObjcClass::methodsNamed() can leak if buffer is dynamically allocated https://bugs.webkit.org/show_bug.cgi?id=84668 Reviewed by Alexey Proskuryakov. Change ObjcClass::methodsNamed() to be based on a vector instead of managing the memory manually. Tests: platform/mac/plugins/bindings-objc-long-method-name.html platform/mac/plugins/bindings-objc-method-name-conversion.html * bridge/objc/objc_class.mm: (Bindings): (JSC::Bindings::convertJSMethodNameToObjc): (JSC::Bindings::ObjcClass::methodsNamed): 2012-04-26 Justin Novosad <junov@chromium.org> [Chromium] Single buffered canvas layers with the threaded compositor https://bugs.webkit.org/show_bug.cgi?id=80540 Reviewed by James Robinson. Tests: CCLayerTreeHostTestWriteLayersRedraw CCLayerTreeHostTestWriteLayersAfterVisible Canvas2DLayerChromiumTest.testFullLifecycleSingleThreadDeferred Canvas2DLayerChromiumTest.testFullLifecycleThreadDeferred CCSchedulerTest.VisibilitySwitchWithTextureAcquisition CCSchedulerTest.TextureAcquisitionCollision Disable double buffering and rate limiting on accelerated canvas when the threaded compositor and deferred canvas are enabled. Concurrent access to the layer texture by the main renderer thread and the compositor thread is avoided by enforcing a lock. The state of the lock is maintained by CCSchedulerStateMachine. Write access by the main thread is acquired through a signal round trip to the compositor thread, which may block the main thread in the event that one or more committed layers need to be protected until the compositor completes the requested draw. Draws on the impl thread are cancelled if the main thread has obtained write access to the texture. The write access is relinquished by the main thread upon commit completion. The scheduler state machine is responsible for preventing the texture lock from causing deadlocks by detecting and resolving problematic states. * platform/graphics/chromium/Canvas2DLayerChromium.cpp: (WebCore::Canvas2DLayerChromium::create): (WebCore::Canvas2DLayerChromium::Canvas2DLayerChromium): (WebCore::Canvas2DLayerChromium::~Canvas2DLayerChromium): (WebCore::Canvas2DLayerChromium::drawingIntoImplThreadTexture): (WebCore): (WebCore::Canvas2DLayerChromium::setTextureId): (WebCore::Canvas2DLayerChromium::setNeedsDisplayRect): (WebCore::Canvas2DLayerChromium::update): (WebCore::Canvas2DLayerChromium::layerWillDraw): (WebCore::Canvas2DLayerChromium::pushPropertiesTo): * platform/graphics/chromium/Canvas2DLayerChromium.h: * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: (WebCore::CCLayerTreeHost::acquireLayerTextures): (WebCore): * platform/graphics/chromium/cc/CCLayerTreeHost.h: (CCLayerTreeHost): * platform/graphics/chromium/cc/CCProxy.h: (CCProxy): * platform/graphics/chromium/cc/CCScheduler.cpp: (WebCore::CCScheduler::setMainThreadNeedsLayerTextures): (WebCore): (WebCore::CCScheduler::processScheduledActions): * platform/graphics/chromium/cc/CCScheduler.h: (CCSchedulerClient): (CCScheduler): * platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp: (WebCore::CCSchedulerStateMachine::CCSchedulerStateMachine): (WebCore::CCSchedulerStateMachine::drawSuspendedUntilCommit): (WebCore): (WebCore::CCSchedulerStateMachine::scheduledToDraw): (WebCore::CCSchedulerStateMachine::shouldDraw): (WebCore::CCSchedulerStateMachine::shouldAcquireLayerTexturesForMainThread): (WebCore::CCSchedulerStateMachine::nextAction): (WebCore::CCSchedulerStateMachine::updateState): (WebCore::CCSchedulerStateMachine::setMainThreadNeedsLayerTextures): * platform/graphics/chromium/cc/CCSchedulerStateMachine.h: (CCSchedulerStateMachine): * platform/graphics/chromium/cc/CCSingleThreadProxy.h: * platform/graphics/chromium/cc/CCThreadProxy.cpp: (WebCore::CCThreadProxy::CCThreadProxy): (WebCore::CCThreadProxy::beginFrame): (WebCore::CCThreadProxy::scheduledActionDrawAndSwapInternal): (WebCore): (WebCore::CCThreadProxy::acquireLayerTextures): (WebCore::CCThreadProxy::acquireLayerTexturesForMainThreadOnImplThread): (WebCore::CCThreadProxy::scheduledActionAcquireLayerTexturesForMainThread): * platform/graphics/chromium/cc/CCThreadProxy.h: (CCThreadProxy): * platform/graphics/skia/ImageBufferSkia.cpp: (WebCore): (WebCore::AcceleratedDeviceContext::AcceleratedDeviceContext): (WebCore::AcceleratedDeviceContext::prepareForDraw): (AcceleratedDeviceContext): (WebCore::createAcceleratedCanvas): (WebCore::ImageBuffer::context): 2012-04-26 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8() in SerializedScriptValue.cpp https://bugs.webkit.org/show_bug.cgi?id=84918 Reviewed by Nate Chapin. This is the last step to pass Isolate around in SerializedScriptValue.cpp. This patch passes Isolate to toV8(). No tests. No change in behavior. * bindings/v8/SerializedScriptValue.cpp: 2012-04-26 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to wrapSlow() https://bugs.webkit.org/show_bug.cgi?id=84919 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. In this bug, we pass Isolate to wrapSlow(). Test: bindings/scripts/test/TestObj.idl etc * bindings/scripts/CodeGeneratorV8.pm: Modified as described above. (GenerateHeader): (GenerateToV8Converters): * bindings/scripts/test/V8/V8Float64Array.cpp: Updated run-bindings-tests. (WebCore::V8Float64Array::wrapSlow): * bindings/scripts/test/V8/V8Float64Array.h: (V8Float64Array): (WebCore::V8Float64Array::wrap): * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp: (WebCore::V8TestActiveDOMObject::wrapSlow): * bindings/scripts/test/V8/V8TestActiveDOMObject.h: (V8TestActiveDOMObject): (WebCore::V8TestActiveDOMObject::wrap): * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp: (WebCore::V8TestCustomNamedGetter::wrapSlow): * bindings/scripts/test/V8/V8TestCustomNamedGetter.h: (V8TestCustomNamedGetter): (WebCore::V8TestCustomNamedGetter::wrap): * bindings/scripts/test/V8/V8TestEventConstructor.cpp: (WebCore::V8TestEventConstructor::wrapSlow): * bindings/scripts/test/V8/V8TestEventConstructor.h: (V8TestEventConstructor): (WebCore::V8TestEventConstructor::wrap): * bindings/scripts/test/V8/V8TestEventTarget.cpp: (WebCore::V8TestEventTarget::wrapSlow): * bindings/scripts/test/V8/V8TestEventTarget.h: (V8TestEventTarget): (WebCore::V8TestEventTarget::wrap): * bindings/scripts/test/V8/V8TestInterface.cpp: (WebCore::V8TestInterface::wrapSlow): * bindings/scripts/test/V8/V8TestInterface.h: (V8TestInterface): (WebCore::V8TestInterface::wrap): * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp: (WebCore::V8TestMediaQueryListListener::wrapSlow): * bindings/scripts/test/V8/V8TestMediaQueryListListener.h: (V8TestMediaQueryListListener): (WebCore::V8TestMediaQueryListListener::wrap): * bindings/scripts/test/V8/V8TestNamedConstructor.cpp: (WebCore::V8TestNamedConstructor::wrapSlow): * bindings/scripts/test/V8/V8TestNamedConstructor.h: (V8TestNamedConstructor): (WebCore::V8TestNamedConstructor::wrap): * bindings/scripts/test/V8/V8TestNode.cpp: (WebCore::V8TestNode::wrapSlow): * bindings/scripts/test/V8/V8TestNode.h: (V8TestNode): (WebCore::V8TestNode::wrap): * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::V8TestObj::wrapSlow): * bindings/scripts/test/V8/V8TestObj.h: (V8TestObj): (WebCore::V8TestObj::wrap): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: (WebCore::V8TestSerializedScriptValueInterface::wrapSlow): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h: (V8TestSerializedScriptValueInterface): (WebCore::V8TestSerializedScriptValueInterface::wrap): 2012-04-25 Antonio Gomes <agomes@rim.com> Add ScrollAnimatorBlackBerry as an extension to ScrollAnimatorNone https://bugs.webkit.org/show_bug.cgi?id=84625 Reviewed by Anders Carlsson. Patch adds ScrollAnimatorBlackBerry class as an extension to of ScrollAnimatorNone. The main goal here is extending the later to allow overscrolling while the animation runs. Once the animation finishes, the flag gets reseted and ScrollableArea::constrainsScrollingtoContentEdge is set back to the value it had before, so this method has to be explicitly called anytime it is wanted. * CMakeLists.txt: * platform/ScrollAnimator.h: (WebCore::ScrollAnimator::animationWillStart): (WebCore::ScrollAnimator::animationDidFinish): (ScrollAnimator): * platform/ScrollAnimatorNone.cpp: (WebCore): (WebCore::ScrollAnimatorNone::scroll): (WebCore::ScrollAnimatorNone::animationTimerFired): * platform/blackberry/ScrollAnimatorBlackBerry.cpp: Added. (WebCore): (WebCore::ScrollAnimator::create): (WebCore::ScrollAnimatorBlackBerry::ScrollAnimatorBlackBerry): (WebCore::ScrollAnimatorBlackBerry::animationWillStart): (WebCore::ScrollAnimatorBlackBerry::animationDidFinish): (WebCore::ScrollAnimatorBlackBerry::setDisableConstrainsScrollingToContentEdgeWhileAnimating): * platform/blackberry/ScrollAnimatorBlackBerry.h: Added. (WebCore): (ScrollAnimatorBlackBerry): 2012-04-26 Antonio Gomes <agomes@rim.com> [BlackBerry] Add smooth_scrolling options to CMAKE and enable it for Blackberry https://bugs.webkit.org/show_bug.cgi?id=84954 Reviewed by Daniel Bates. Add the default scroll animator to the build system (ScrollAnimatorNone.cpp) * CMakeLists.txt: 2012-04-25 Antonio Gomes <agomes@rim.com> Make ScrollView::scrollSize scrollbar-independent https://bugs.webkit.org/show_bug.cgi?id=84873 Reviewed by Anders Carlsson. For ports that disable scrollbars creation at FrameView creation time ScrollView::scrollSize should still return the scrollable ammount of content (if any) if scrolling is not prohibted. No new test, but it makes ScrollAnimator work for the BlackBerry port. * platform/ScrollView.cpp: (WebCore::ScrollView::scrollSize): 2012-04-25 Anders Carlsson <andersca@apple.com> The tile cache should know if a frame view can ever have scrollbars https://bugs.webkit.org/show_bug.cgi?id=84888 Reviewed by Andreas Kling. If a frame view has overflow: hidden on its body element we know that the document will most likely never be scrolled. The tile cache should know about this so we can optimize. * page/FrameView.cpp: (WebCore::FrameView::performPostLayoutTasks): * platform/graphics/TiledBacking.h: (TiledBacking): * platform/graphics/ca/mac/TileCache.h: (TileCache): * platform/graphics/ca/mac/TileCache.mm: (WebCore::TileCache::TileCache): (WebCore::TileCache::setCanHaveScrollbars): (WebCore): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::RenderLayerBacking): 2012-04-26 Ken Buchanan <kenrb@chromium.org> Crash from removal of line break object after layout https://bugs.webkit.org/show_bug.cgi?id=75461 Reviewed by David Hyatt. There is a condition where objects can get removed from underneath inlines while they represent a line break object in a RootInlineBox of an ancestor block. If an intermediary inline has already been marked as needing layout, then the line box will not get dirtied because dirtyLineFromChangedChild thinks it already has been. This patch introduces a new set in RenderObject to indicate whether an ancestral line box corresponding to the current line has been marked dirty or not. dirtyLinesFromChangedChild() can use this set rather than m_selfNeedsLayout, so it will not be confused if a container was dirtied for some other reason that did not affect the line box. * rendering/RenderLineBoxList.cpp: (WebCore::RenderLineBoxList::dirtyLinesFromChangedChild): Use the new set rather than m_selfNeedsLayout in the container to determine whether to continue propagating upward. * rendering/RenderObject.cpp: (WebCore::RenderObject::s_ancestorLineboxDirtySet): Instantiate the static member. (WebCore::RenderObject::willBeDestroyed): Clears the object from the linebox set when it is being destroyed. * rendering/RenderObject.h: (WebCore::RenderObject::s_ancestorLineboxDirtySet): Added static member set. (WebCore::RenderObject::setNeedsLayout): Clears the object from the linebox set when layout bits are getting cleared. (WebCore::RenderObject::ancestorLineBoxDirty): Added. (WebCore::RenderObject::setAncestorLineBoxDirty): Added. 2012-04-26 Christophe Dumez <christophe.dumez@intel.com> [EFL] Enable VIDEO_TRACK feature https://bugs.webkit.org/show_bug.cgi?id=84830 Reviewed by Gustavo Noronha Silva. Enable support for VIDEO_TRACK feature by default for EFL port. * UseJSC.cmake: * bindings/generic/RuntimeEnabledFeatures.cpp: (WebCore): 2012-04-26 Antti Koivisto <antti@apple.com> Implement StyleSheetInternal copying https://bugs.webkit.org/show_bug.cgi?id=84969 Reviewed by Andreas Kling. We need to be able to copy stylesheets to cache them. Copying is already implement for most of the stylesheet data types but StyleSheetInternal::copy() is still missing. Preparation for stylesheet caching. The copying code is not used yet. * css/CSSNamespace.h: Instead of making it copyable, remove CSSNamespace class. * css/CSSParser.cpp: (WebCore::operator==): (WebCore): (WebCore::CSSParser::addNamespace): Avoid ping-ponging to StyleSheetInternal and back to set the default namespace. * css/CSSParserMode.h: (WebCore): (WebCore::operator!=): Add equality comparison operator to CSSParseMode. This will be needed to determine if a cached copy can be used. * css/CSSStyleSheet.cpp: (WebCore::StyleSheetInternal::StyleSheetInternal): (WebCore): (WebCore::StyleSheetInternal::isCacheable): (WebCore::StyleSheetInternal::parserAddNamespace): (WebCore::StyleSheetInternal::determineNamespace): Use HashMap instead of iterating a linked list of CSSNamespaces. (WebCore::StyleSheetInternal::styleSheetChanged): Add mutation bit. * css/CSSStyleSheet.h: (WebCore): (StyleSheetInternal): (WebCore::StyleSheetInternal::copy): Copy constructor. It only usable for cacheable stylesheets. 2012-04-26 Philip Rogers <pdr@google.com> Fix Skia's SkPathContainsPoint to work with sub-pixel accuracy https://bugs.webkit.org/show_bug.cgi?id=84117 Reviewed by Eric Seidel. Because we do hit testing in object-space (i.e., we may see a 0.1px*0.1px path) we need to support sub-pixel hit testing in Skia. Skia does not provide analytical path hit testing, so hit tests are done by rasterizing a path and checking if a specific pixel is drawn. SkPathContainsPoint did not work with sub-pixel values because this rasterization was sometimes very small which did not give enough resolution to check if the hit test pixel was drawn. This patch scales the path to a very large size during hit testing so that Skia's raster-based hit testing will work properly. Because Skia avoids unnecessary path rasterization, this is actually inexpensive. Below is a summary of a performance test on simple and complex paths: (before patch, after patch) Skia/Chrome 10,000 hit tests on a simple path: (229ms, 238ms) Skia/Chrome 10,000 hit tests on a complex path: (701ms, 704ms) For comparison, CG/Safari takes 236ms on the simple path and 466ms on the complex path. Therefore, this patch introduces small but measurable regression in hit testing performance due to scaling the path. Test: svg/hittest/svg-small-path.xhtml * platform/graphics/skia/SkiaUtils.cpp: (WebCore::SkPathContainsPoint): 2012-04-26 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r115323. http://trac.webkit.org/changeset/115323 https://bugs.webkit.org/show_bug.cgi?id=84975 Bad test, breaks all builds (Requested by apavlov1 on #webkit). * inspector/Inspector.json: * inspector/InspectorPageAgent.cpp: (WebCore::InspectorPageAgent::enable): (WebCore::InspectorPageAgent::disable): * inspector/InspectorPageAgent.h: * inspector/front-end/Settings.js: * inspector/front-end/SettingsScreen.js: (WebInspector.SettingsScreen): * inspector/front-end/inspector.js: 2012-04-26 Douglas Stockwell <dstockwell@chromium.org> IndexedDB: cursor does not correctly iterate over keys added and removed during iteration https://bugs.webkit.org/show_bug.cgi?id=84467 Reviewed by Ojan Vafai. Ensure that the iterator over the tree of cached adds/removes always points at the current key, or if the db iterator is current, the next key: - When refreshing the tree iterator after a mutation, always seek unless the tree iterator is current. - When handing conflicts and delete markers, only advance the tree iterator as far as the db iterator. Remove the expensive (and now redundant) logic that issued a get() to check whether an item had been deleted. Test: storage/indexeddb/cursor-added-bug.html * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore): * platform/leveldb/LevelDBTransaction.cpp: (WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator): (WebCore::LevelDBTransaction::TransactionIterator::handleConflictsAndDeletes): 2012-04-26 Alexander Pavlov <apavlov@chromium.org> Web Inspector: Implement the "Disable JavaScript" option in the settings dialog https://bugs.webkit.org/show_bug.cgi?id=84946 Based on user actions in the Inspector frontend, InspectorPageAgent invokes Settings::setScriptEnabled() for the associated page to switch the script execution therein. Reviewed by Yury Semikhatsky. Test: inspector/debugger/disable-script.html * inspector/Inspector.json: * inspector/InspectorPageAgent.cpp: (PageAgentState): (WebCore::InspectorPageAgent::enable): (WebCore::InspectorPageAgent::disable): (WebCore::InspectorPageAgent::getScriptExecutionStatus): (WebCore): (WebCore::InspectorPageAgent::setScriptExecutionDisabled): * inspector/InspectorPageAgent.h: * inspector/front-end/Settings.js: * inspector/front-end/SettingsScreen.js: (WebInspector.SettingsScreen): (WebInspector.SettingsScreen.prototype.get _updateScriptDisabledCheckbox): (WebInspector.SettingsScreen.prototype._javaScriptDisabledChanged): * inspector/front-end/inspector.js: 2012-04-26 Dominik Röttsches <dominik.rottsches@linux.intel.com> [cairo] CairoGraphicsContext fillRect (with Color) overrides composite operator https://bugs.webkit.org/show_bug.cgi?id=84848 Reviewed by Martin Robinson. FillRectWithColor used to be called fillRectSourceOver before r89314 where this operator still made sense. The way this function is used these days doesn't expect the composite operator to be overridden anymore. No new tests, covered by existing tests, e.g. svg/filters/feDropShadow.svg * platform/graphics/cairo/GraphicsContextCairo.cpp: (WebCore::fillRectWithColor): 2012-04-26 Nikolas Zimmermann <nzimmermann@rim.com> Fix additive by animations for most SMIL list types https://bugs.webkit.org/show_bug.cgi?id=84968 Reviewed by Antti Koivisto. Unify SMIL list animation code, to correctly respect the underlying from value for by-animations. Add lots of new tests covering by-animations for all primitives (except AnimatedPath/TransformList). AnimatedTransformList is not working correctly yet, and will be covered in a follow-up patch. AnimatdPath by-animations are complex, and thus also handled in another follow-up patch. Tests: svg/animations/additive-type-by-animation.html svg/animations/length-list-animation-expected.svg svg/animations/length-list-animation.svg svg/animations/svglength-additive-by-1.html svg/animations/svglength-additive-by-2.html svg/animations/svglength-additive-by-3.html svg/animations/svglength-additive-by-4.html svg/animations/svglength-additive-by-5.html svg/animations/svglength-additive-by-6.html svg/animations/svglength-additive-from-by-1.html svg/animations/svglength-additive-from-by-2.html svg/animations/svglength-additive-from-by-3.html svg/animations/svglength-additive-from-by-4.html * svg/SVGAnimatedLengthList.cpp: (WebCore::SVGAnimatedLengthListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): * svg/SVGAnimatedPointList.cpp: (WebCore::SVGAnimatedPointListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue): * svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::adjustFromToListValues): 2012-04-26 Antti Koivisto <antti@apple.com> Add copy constructor to CSSSelector https://bugs.webkit.org/show_bug.cgi?id=84956 Reviewed by Anders Carlsson. To copy CSSSelectorLists correctly CSSSelector needs a copy constructor. This will be needed to implement stylesheet caching. The code is not used yet. * css/CSSSelector.cpp: (WebCore::CSSSelector::createRareData): * css/CSSSelector.h: (CSSSelector): (WebCore::CSSSelector::RareData::create): (RareData): Refcount RareData to make copying easier. This has no significant memory impact, rare data is rare. (WebCore::CSSSelector::CSSSelector): (WebCore): (WebCore::CSSSelector::~CSSSelector): * css/CSSSelectorList.cpp: (WebCore::CSSSelectorList::CSSSelectorList): Use copy constructor instead of memcpy (which doesn't work). 2012-04-26 Raphael Kubo da Costa <rakuco@webkit.org> [EFL] Fix the build with DRAG_SUPPORT disabled. https://bugs.webkit.org/show_bug.cgi?id=84963 Reviewed by Antonio Gomes. No new tests, build system-related change. EventHandlerEfl.cpp always assumed DRAG_SUPPORT was enabled and lacked the proper #if ENABLED() checks for some member variables and methods conditionally defined in EventHandler.h. * page/efl/EventHandlerEfl.cpp: (WebCore): 2012-04-26 Pavel Feldman <pfeldman@chromium.org> Web Inspector: remove stackTrace property from requestWillBeSent - it is already a part of the initiator. https://bugs.webkit.org/show_bug.cgi?id=84964 Reviewed by Yury Semikhatsky. * inspector/InspectorResourceAgent.cpp: (WebCore::InspectorResourceAgent::willSendRequest): * inspector/front-end/ConsoleMessage.js: (WebInspector.ConsoleMessageImpl.prototype._formatMessage): * inspector/front-end/NetworkManager.js: (WebInspector.NetworkDispatcher.prototype.requestWillBeSent): (WebInspector.NetworkDispatcher.prototype.requestServedFromMemoryCache): (WebInspector.NetworkDispatcher.prototype._appendRedirect): (WebInspector.NetworkDispatcher.prototype._createNetworkRequest): (get WebInspector): 2012-04-26 Stephen Chenney <schenney@chromium.org> SVG FEConvolveMatrix does not check for invalid property values https://bugs.webkit.org/show_bug.cgi?id=84363 Reviewed by Dirk Schulze. Adding code to check for valid input values on SVG feConvolveMatrix properties. And adding some of the first effective error reporting for SVG elements. Tests: svg/filters/feConvolveMatrix-invalid-targetX-expected.svg svg/filters/feConvolveMatrix-invalid-targetX.svg svg/filters/feConvolveMatrix-invalid-targetY-expected.svg svg/filters/feConvolveMatrix-invalid-targetY.svg svg/filters/feConvolveMatrix-negative-kernelUnitLengthX-expected.svg svg/filters/feConvolveMatrix-negative-kernelUnitLengthX.svg svg/filters/feConvolveMatrix-negative-kernelUnitLengthY-expected.svg svg/filters/feConvolveMatrix-negative-kernelUnitLengthY.svg svg/filters/feConvolveMatrix-negative-orderX-expected.svg svg/filters/feConvolveMatrix-negative-orderX.svg svg/filters/feConvolveMatrix-negative-orderY-expected.svg svg/filters/feConvolveMatrix-negative-orderY.svg svg/filters/feConvolveMatrix-non-integral-order-expected.svg svg/filters/feConvolveMatrix-non-integral-order.svg svg/filters/feConvolveMatrix-zero-divisor-expected.svg svg/filters/feConvolveMatrix-zero-divisor.svg * platform/graphics/filters/FEConvolveMatrix.cpp: (WebCore::FEConvolveMatrix::FEConvolveMatrix): (WebCore::FEConvolveMatrix::setKernelSize): (WebCore::FEConvolveMatrix::setDivisor): (WebCore::FEConvolveMatrix::setKernelUnitLength): * svg/SVGFEConvolveMatrixElement.cpp: (WebCore::SVGFEConvolveMatrixElement::parseAttribute): (WebCore::SVGFEConvolveMatrixElement::build): 2012-04-26 Allan Sandfeld Jensen <allan.jensen@nokia.com> Move WebKit1 specific conversion of touch-events to WebKit1. https://bugs.webkit.org/show_bug.cgi?id=84951 Reviewed by Kenneth Rohde Christiansen. No change in functionality. No new tests. * Target.pri: * platform/PlatformTouchEvent.h: (PlatformTouchEvent): * platform/PlatformTouchPoint.h: (PlatformTouchPoint): * platform/qt/PlatformTouchEventQt.cpp: Removed. * platform/qt/PlatformTouchPointQt.cpp: Removed. 2012-04-26 Nikolas Zimmermann <nzimmermann@rim.com> Share code used to animate numbers types between all animators https://bugs.webkit.org/show_bug.cgi?id=84945 Reviewed by Antti Koivisto. Refactor animateAdditiveNumber() from SVGAnimatedNumberAnimator into SVGAnimationElement, to reuse it for all primitives. Converted most primitives to use the new code. Lists, paths, colors are still todo. Doesn't affect any tests. * svg/SVGAnimatedAngle.cpp: (WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue): * svg/SVGAnimatedInteger.cpp: (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedInteger): (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedInteger.h: (SVGAnimatedIntegerAnimator): * svg/SVGAnimatedIntegerOptionalInteger.cpp: (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::addAnimatedTypes): (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedLength.cpp: (WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue): * svg/SVGAnimatedLengthList.cpp: (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumber.cpp: (WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumber.h: * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberOptionalNumber.cpp: (WebCore::SVGAnimatedNumberOptionalNumberAnimator::addAnimatedTypes): (WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberOptionalNumber.h: * svg/SVGAnimatedRect.cpp: (WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue): * svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::animateAdditiveNumber): (SVGAnimationElement): 2012-04-26 Ryosuke Niwa <rniwa@webkit.org> Forgotten build fix after r115227. * css/StylePropertySet.cpp: (WebCore::StylePropertySet::get4Values): 2012-04-26 Mihnea Ovidenie <mihnea@adobe.com> Crash when collecting svg symbol element in named flow. https://bugs.webkit.org/show_bug.cgi?id=84493 Reviewed by David Hyatt. Test: fast/regions/symbol-in-named-flow-crash.svg * dom/Element.cpp: (WebCore::Element::~Element): Add an assert that an element that was collected into a named flow was already removed at this point (when the document is not in the process of destruction) (WebCore::Element::unregisterNamedFlowContentNode): Created a new function for unregistering a content node. In the future, this function may be used for content nodes from shadow dom. (WebCore::Element::detach): * dom/Element.h: (Element): * dom/NodeRenderingContext.cpp: (WebCore::NodeRenderingContext::moveToFlowThreadIfNeeded): Prevent elements that are part of shadow dom to be collected into a named flow. 2012-04-26 Nikolas Zimmermann <nzimmermann@rim.com> Share code used to animate discrete types between all animators https://bugs.webkit.org/show_bug.cgi?id=84853 Reviewed by Andreas Kling. Share by-animation handling for non-additive types in a central method in SVGAnimatedTypeAnimator, to be reusable by SVGAnimatedBoolean/Enumeration/PreserveAspectRatio/String. Add a new test covering these animations have no effect. Test: svg/animations/non-additive-type-by-animation.html * svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::calculateFromAndByValues): (WebCore::SVGAnimateElement::isAdditive): * svg/SVGAnimateElement.h: (SVGAnimateElement): * svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::calculateFromAndByValues): * svg/SVGAnimatedBoolean.cpp: (WebCore::isTrueString): (WebCore::SVGAnimatedBooleanAnimator::constructFromString): (WebCore::SVGAnimatedBooleanAnimator::addAnimatedTypes): (WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue): * svg/SVGAnimatedEnumeration.cpp: (WebCore::SVGAnimatedEnumerationAnimator::addAnimatedTypes): (WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue): * svg/SVGAnimatedPreserveAspectRatio.cpp: (WebCore::SVGAnimatedPreserveAspectRatioAnimator::addAnimatedTypes): (WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue): * svg/SVGAnimatedString.cpp: (WebCore::SVGAnimatedStringAnimator::addAnimatedTypes): (WebCore::SVGAnimatedStringAnimator::calculateAnimatedValue): * svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::startedActiveInterval): * svg/SVGAnimationElement.h: (SVGAnimationElement): (WebCore::SVGAnimationElement::animateDiscreteType): 2012-04-26 Chris Fleizach2 <cfleizach@apple.com> CrashTracer: [USER] 157 crashes in WebProcess at com.apple.WebCore: WebCore::AccessibilityRenderObject::isAttachment const + 29 https://bugs.webkit.org/show_bug.cgi?id=84463 Reviewed by Darin Adler. Accessibility was not being enabled when WK2 was asking only for the focused UI element. No layout test could be written because the WKTestRunner mechanism works differently when asking for this. * accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::focusedUIElementForPage): (WebCore::AXObjectCache::rootObject): (WebCore::AXObjectCache::rootObjectForFrame): 2012-04-25 Dana Jansens <danakj@chromium.org> [chromium] Remove guarded virtual methods from WebFilterOperation API https://bugs.webkit.org/show_bug.cgi?id=84926 Reviewed by James Robinson. * WebCore.gypi: * platform/chromium/support/WebFilterOperation.cpp: Removed. * platform/chromium/support/WebFilterOperations.cpp: (WebKit::WebFilterOperations::append): 2012-04-25 Benjamin Poulain <benjamin@webkit.org> Add a version of StringImpl::find() without offset https://bugs.webkit.org/show_bug.cgi?id=83968 Reviewed by Sam Weinig. Remove the zero offset of the find() functions on strings. * html/parser/XSSAuditor.cpp: (WebCore::XSSAuditor::init): * platform/network/ResourceResponseBase.cpp: (WebCore::trimToNextSeparator): (WebCore::parseCacheHeader): 2012-04-25 Mark Hahnenberg <mhahnenberg@apple.com> WebCore shouldn't call collectAllGarbage directly https://bugs.webkit.org/show_bug.cgi?id=84897 Reviewed by Geoffrey Garen. No new tests. Currently, GCController calls Heap::collectAllGarbage directly, which leads to an overload of collections as the timer in GCController and the timer in GCActivityCallback compete for collection time and fire independently. As a result, we end up doing almost 600 full collections during an in-browser run of SunSpider, or 20 full collections on a single load of TechCrunch. We can do better by preventing WebCore from calling collectAllGarbage directly and instead going through Heap::reportAbandonedObjectGraph, since that is what WebCore is trying to do--notify the Heap that a lot of garbage may have just been generated when we left a page. * WebCore.exp.in: * bindings/js/GCController.cpp: Removed all timer stuff. (WebCore::GCController::GCController): (WebCore::GCController::garbageCollectSoon): Changed to call Heap::reportAbandonedObjectGraph. (WebCore::GCController::garbageCollectNow): Changed to still directly call collectAllGarbage. We will deprecate this function soon hopefully. * bindings/js/GCController.h: Removed timer stuff. (GCController): * bindings/js/ScriptProfiler.cpp: (WebCore::ScriptProfiler::collectGarbage): Changed to call garbageCollectSoon. 2012-04-25 James Robinson <jamesr@chromium.org> [chromium] REGRESSION(112286) Compositor initialization blocks for program compilation / linking https://bugs.webkit.org/show_bug.cgi?id=84822 Reviewed by Adrienne Walker. r112286 introduced a subtle regression in the chromium compositor startup sequence - by querying the texture copy program's uniform location at the end of LayerRendererChromium::initialize(), the compositor's thread was blocked until the service side compiled _all_ eagerly initialized shaders. The intent of the way the compositor programs are created is that a set of commonly-used programs are sent to the service side, but no blocking calls are made until after we go through the first paint (with the hope that the service side will complete the compilation by then). Fixed by moving program initialization (which also grabs uniform locations) until the first actual use of the copier. It may be worth deferring the program initialization completely if it's not used very often. Added unit test in LayerRendererChromiumTests to make sure LRC initialization does not make any synchronous calls (like getUniformLocation()). * platform/graphics/chromium/TextureCopier.cpp: (WebCore::AcceleratedTextureCopier::AcceleratedTextureCopier): (WebCore::AcceleratedTextureCopier::copyTexture): 2012-04-25 Jason Liu <jason.liu@torchmobile.com.cn> [BlackBerry] Authenticated proxy isn't working. https://bugs.webkit.org/show_bug.cgi?id=84579 Reviewed by Antonio Gomes. We should try to get username and password from WiFi advanced configuration first when 407 is received. No new tests. This is covered by existing http tests when proxy's username and password are configured for WiFi. * platform/network/blackberry/NetworkJob.cpp: (WebCore::NetworkJob::sendRequestWithCredentials): 2012-04-25 Alec Flett <alecflett@chromium.org> IndexedDB: implement cursor.advance() https://bugs.webkit.org/show_bug.cgi?id=84174 Reviewed by Ojan Vafai. Implement IDBCursor.advance() to spec. Test: storage/indexeddb/cursor-advance.html * Modules/indexeddb/IDBBackingStore.h: * Modules/indexeddb/IDBCursor.cpp: (WebCore::IDBCursor::advance): (WebCore): * Modules/indexeddb/IDBCursor.h: (IDBCursor): * Modules/indexeddb/IDBCursor.idl: * Modules/indexeddb/IDBCursorBackendImpl.cpp: (WebCore::IDBCursorBackendImpl::advance): (WebCore): (WebCore::IDBCursorBackendImpl::advanceInternal): * Modules/indexeddb/IDBCursorBackendImpl.h: (IDBCursorBackendImpl): * Modules/indexeddb/IDBCursorBackendInterface.h: * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore): 2012-04-24 Adrienne Walker <enne@google.com> [chromium] Hold video provider lock from willDraw to didDraw https://bugs.webkit.org/show_bug.cgi?id=84805 Reviewed by James Robinson. * platform/graphics/chromium/cc/CCVideoLayerImpl.cpp: (WebCore::CCVideoLayerImpl::willDraw): (WebCore): (WebCore::CCVideoLayerImpl::willDrawInternal): (WebCore::CCVideoLayerImpl::appendQuads): (WebCore::CCVideoLayerImpl::didDraw): * platform/graphics/chromium/cc/CCVideoLayerImpl.h: 2012-04-25 Adrienne Walker <enne@google.com> [chromium] Prevent CCLayerImpl::willDraw/didDraw mismatches https://bugs.webkit.org/show_bug.cgi?id=84812 Reviewed by James Robinson. Because some layers lock/unlock resources, it needs to be guaranteed that if willDraw is called on a layer then didDraw will also be called on that layer before another willDraw or before layer destruction. Add asserts to make sure that this is the case. willDraw is called via CCLayerTreeHostImpl::prepareToDraw -> calculateRenderPasses. didDraw was previously called in CCLayerTreeHostImpl::drawLayers. Sometimes drawLayers was being skipped by the caller of these functions based on what prepareToDraw returned (causing didDraw to not be called). Fix this by having an explicit step to call didDraw on all layers. This new didDrawAllLayers function must be called if and only if prepareToDraw is called. Tested by existing tests via new asserts in CCLayerImpl. * platform/graphics/chromium/cc/CCLayerImpl.cpp: (WebCore::CCLayerImpl::CCLayerImpl): (WebCore::CCLayerImpl::~CCLayerImpl): (WebCore::CCLayerImpl::willDraw): (WebCore): (WebCore::CCLayerImpl::didDraw): * platform/graphics/chromium/cc/CCLayerImpl.h: (CCLayerImpl): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::drawLayers): (WebCore::CCLayerTreeHostImpl::didDrawAllLayers): (WebCore): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (CCLayerTreeHostImpl): * platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp: (WebCore::CCScrollbarLayerImpl::willDraw): (WebCore::CCScrollbarLayerImpl::didDraw): * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp: (WebCore::CCSingleThreadProxy::doComposite): * platform/graphics/chromium/cc/CCTextureLayerImpl.cpp: (WebCore::CCTextureLayerImpl::willDraw): * platform/graphics/chromium/cc/CCThreadProxy.cpp: (WebCore::CCThreadProxy::scheduledActionDrawAndSwapInternal): * platform/graphics/chromium/cc/CCVideoLayerImpl.cpp: (WebCore::CCVideoLayerImpl::willDraw): (WebCore::CCVideoLayerImpl::didDraw): 2012-04-24 Kent Tamura <tkent@chromium.org> Calendar Picker: Resize to minimal size to fit the content https://bugs.webkit.org/show_bug.cgi?id=84826 Reviewed by Hajime Morita. Using fixed-size popup isn't nice. The calender picker popup size should be minimal. The minimal size depends on font settings, localized labels, and localized formats. So we put visible objects on a transparent element, calculate minimal size, resize the popup, then show the objects. * Resources/calendarPicker.css: (body): Don't use purple. It was for debugging purpose. The body is visible for a short period becuse we use transparent element. (#main): - Add nowrap to avoid text wrapping. - Add wider width to avoid wrapping. - Add opacity to hide incomplete layout. (.year-month-upper): Don't set flexible box yet. (.month-selector-box): Fix incorrect display value. (.days-area): Don't set table-layout:fixed and width:100% in order that it has the minimal width. * Resources/calendarPicker.js: (initialize): Make a new functio to resize. (fixWindowSize): Compute the required width from the right edge of the next year button, the maximum cell width, and so on. Then, set CSS properties to have correct layout. (YearMonthController.prototype.attachTo): Set min-width property for a long year-month string. (YearMonthController.prototype._showPopup): Center the _monthPopup vertically. * html/shadow/CalendarPickerElement.cpp: (WebCore::CalendarPickerElement::contentSize): Specify small size for the initial size. It's better than showing a large window then shrink the size. * page/PagePopupClient.h: (PagePopupClient): Remove a false comment. We should support resize*(). 2012-04-25 Kent Tamura <tkent@chromium.org> Unreviewed. Sort Xcode project file. * WebCore.xcodeproj/project.pbxproj: 2012-04-25 Alpha Lam <hclam@chromium.org> Unreviewed, rolling out r115260. http://trac.webkit.org/changeset/115260 https://bugs.webkit.org/show_bug.cgi?id=84467 r115260 is crashing a list of IndexDB tests, revert. * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore): * platform/leveldb/LevelDBTransaction.cpp: (WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator): (WebCore::LevelDBTransaction::TransactionIterator::handleConflictsAndDeletes): * platform/leveldb/LevelDBTransaction.h: (TransactionIterator): 2012-04-25 James Simonsen <simonjam@chromium.org> [Web Timing] Add a vendor-prefixed Performance Timeline API https://bugs.webkit.org/show_bug.cgi?id=80350 As described here: http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PerformanceTimeline/Overview.html The API is there and should be correct, but it isn't particularly useful, because nothing is populated. Upcoming changes will add Navigation Timing and Resource Timing. Reviewed by Tony Gentilcore. No new tests. Functionality is disabled on all platforms. * CMakeLists.txt: Added PerformanceEntry* files. * DerivedSources.pri: Ditto. * GNUmakefile.list.am: Ditto. * WebCore.gypi: Ditto. * WebCore.vcproj/WebCore.vcproj: Ditto. * WebCore.xcodeproj/project.pbxproj: Ditto. * page/Performance.cpp: (WebCore::Performance::webkitGetEntries): Added. (WebCore::Performance::webkitGetEntriesByType): Added. (WebCore::Performance::webkitGetEntriesByName): Added. * page/Performance.h: (Performance): * page/Performance.idl: * page/PerformanceEntry.cpp: Added. (WebCore): (WebCore::PerformanceEntry::PerformanceEntry): (WebCore::PerformanceEntry::name): (WebCore::PerformanceEntry::entryType): (WebCore::PerformanceEntry::startTime): (WebCore::PerformanceEntry::duration): * page/PerformanceEntry.h: Added. (WebCore): (PerformanceEntry): * page/PerformanceEntry.idl: Added. * page/PerformanceEntryList.cpp: Added. (WebCore): (WebCore::PerformanceEntryList::PerformanceEntryList): (WebCore::PerformanceEntryList::~PerformanceEntryList): (WebCore::PerformanceEntryList::length): (WebCore::PerformanceEntryList::item): (WebCore::PerformanceEntryList::append): * page/PerformanceEntryList.h: Added. (WebCore): (PerformanceEntryList): (WebCore::PerformanceEntryList::create): * page/PerformanceEntryList.idl: Added. 2012-04-25 Benjamin Poulain <bpoulain@apple.com> Move convertJSMethodNameToObjc() to be a utility function of ObjcClass https://bugs.webkit.org/show_bug.cgi?id=84915 Reviewed by Darin Adler. The function convertJSMethodNameToObjc() is only useful for ObjcClass::methodsNamed(). This patch moves the function from objc_utility.mm to be a static function in objc_class.mm. It aims at simplifying the code for future changes of ObjcClass. * bridge/objc/objc_class.mm: (Bindings): (JSC::Bindings::convertJSMethodNameToObjc): * bridge/objc/objc_utility.h: * bridge/objc/objc_utility.mm: (Bindings): 2012-04-25 Kent Tamura <tkent@chromium.org> Unreviewed. Sort Xcode project file. * WebCore.xcodeproj/project.pbxproj: 2012-04-25 Greg Billock <gbillock@google.com> Implement object-literal constructor for the Intent object. https://bugs.webkit.org/show_bug.cgi?id=84220 Reviewed by Kentaro Hara. The use of the custom constructor will hopefully be temporary, as we plan to convert to just using the object literal constructor, which can then use codegen. See spec: http://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview.html Added support for the service and extras parameters in the Intent object to support the speced members in the object literal constructor. Added supporting accessor to Dictionary to retrieve a sub-Dictionary, and a utility to ScriptValue to serialize with ports. Test: webintents/web-intent-obj-constructor.html (WebCore): * Modules/intents/Intent.cpp: (WebCore::Intent::create): (WebCore::Intent::Intent): (WebCore::Intent::service): (WebCore): (WebCore::Intent::extras): * Modules/intents/Intent.h: (WebCore): (Intent): * Modules/intents/Intent.idl: * WebCore.gypi: * bindings/v8/Dictionary.cpp: (WebCore::Dictionary::get): (WebCore): * bindings/v8/Dictionary.h: (Dictionary): * bindings/v8/ScriptValue.cpp: (WebCore::ScriptValue::serialize): (WebCore): * bindings/v8/ScriptValue.h: (WTF): (WebCore): (ScriptValue): * bindings/v8/custom/V8IntentConstructor.cpp: Added. (WebCore): (WebCore::V8Intent::constructorCallback): 2012-04-25 Alexandru Chiculita <achicu@adobe.com> CSS Shaders: Use u_texture instead of s_texture. It was updated in the spec https://bugs.webkit.org/show_bug.cgi?id=82618 Reviewed by Dean Jackson. Changed the uniform name passed to the CSS Shaders from s_texture to u_texture. https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html No new tests, just updating existing ones. * platform/graphics/filters/CustomFilterShader.cpp: (WebCore::CustomFilterShader::defaultFragmentShaderString): (WebCore::CustomFilterShader::initializeParameterLocations): 2012-04-25 Douglas Stockwell <dstockwell@chromium.org> IndexedDB: cursor does not correctly iterate over keys added and removed during iteration https://bugs.webkit.org/show_bug.cgi?id=84467 Reviewed by Ojan Vafai. Ensure that the iterator over the tree of cached adds/removes always points at the current key, or if the db iterator is current, the next key: - When refreshing the tree iterator after a mutation, always seek unless the tree iterator is current. - When handing conflicts and delete markers, only advance the tree iterator as far as the db iterator. Remove the expensive (and now redundant) logic that issued a get() to check whether an item had been deleted. Test: storage/indexeddb/cursor-added-bug.html * Modules/indexeddb/IDBLevelDBBackingStore.cpp: (WebCore): * platform/leveldb/LevelDBTransaction.cpp: (WebCore::LevelDBTransaction::TransactionIterator::refreshTreeIterator): (WebCore::LevelDBTransaction::TransactionIterator::handleConflictsAndDeletes): 2012-04-25 Antti Koivisto <antti@apple.com> Try to fix build with STYLE_SCOPED enabled. Not reviewed. * css/StyleResolver.cpp: (WebCore::StyleResolver::determineScope): 2012-04-25 Alec Flett <alecflett@chromium.org> IndexedDB: support openCursor(IDBKey) https://bugs.webkit.org/show_bug.cgi?id=84652 Reviewed by Ojan Vafai. Add signatures for openCursor/openKeyCursor(IDBKey). Test: storage/indexeddb/opencursor-key.html * Modules/indexeddb/IDBIndex.cpp: (WebCore::IDBIndex::openCursor): (WebCore): (WebCore::IDBIndex::openKeyCursor): * Modules/indexeddb/IDBIndex.h: (WebCore::IDBIndex::openCursor): (IDBIndex): (WebCore::IDBIndex::openKeyCursor): * Modules/indexeddb/IDBIndex.idl: * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::openCursor): (WebCore): * Modules/indexeddb/IDBObjectStore.h: (WebCore::IDBObjectStore::openCursor): (IDBObjectStore): * Modules/indexeddb/IDBObjectStore.idl: 2012-04-25 Antti Koivisto <antti@apple.com> Remove owner node pointer from StyleSheetInternal https://bugs.webkit.org/show_bug.cgi?id=84882 Reviewed by Andreas Kling. To make sharing between multiple nodes possible StyleSheetInternal should not have a Node pointer. - Make StyleSheetInternal constructor take CSSParserContext instead of Node* - Move owner node pointer to CSSStyleSheet. CSSStyleSheet now acts as a client for StyleSheetInternal. This gets us closer to being able to cache stylesheet data structures. * css/CSSImportRule.cpp: (WebCore::StyleRuleImport::setCSSStyleSheet): (WebCore::StyleRuleImport::requestStyleSheet): Setup CSSParserContext. Remove FIXME about updateBaseURL(). It is no longer possible to change URL of StyleSheetInternal. * css/CSSPageRule.cpp: (WebCore::CSSPageRule::setSelectorText): * css/CSSParser.cpp: (WebCore::CSSParserContext::CSSParserContext): * css/CSSParserMode.h: (CSSParserContext): Expand CSSParserContext constructors. * css/CSSStyleRule.cpp: (WebCore::CSSStyleRule::setSelectorText): * css/StyleResolver.cpp: (WebCore::StyleResolver::StyleResolver): (WebCore::StyleResolver::addAuthorRulesAndCollectUserRulesFromSheets): (WebCore::StyleResolver::collectMatchingRulesForList): * css/StyleResolver.h: (StyleResolver): * css/CSSStyleSheet.cpp: User stylesheets went back to being CSSStyleSheets. Adapt to that. (WebCore::StyleSheetInternal::StyleSheetInternal): (WebCore): (WebCore::StyleSheetInternal::checkLoaded): (WebCore::StyleSheetInternal::startLoadingDynamicSheet): (WebCore::StyleSheetInternal::rootStyleSheet): (WebCore::StyleSheetInternal::singleOwnerNode): (WebCore::StyleSheetInternal::singleOwnerDocument): (WebCore::StyleSheetInternal::styleSheetChanged): The owner node is now located through CSSStyleSheet. Only one client is supported atm. (WebCore::StyleSheetInternal::registerClient): (WebCore::StyleSheetInternal::unregisterClient): Register CSSStyleSheets. (WebCore::CSSStyleSheet::CSSStyleSheet): (WebCore::CSSStyleSheet::~CSSStyleSheet): (WebCore::CSSStyleSheet::rules): (WebCore::CSSStyleSheet::cssRules): (WebCore::CSSStyleSheet::ownerDocument): * css/CSSStyleSheet.h: (WebCore::StyleSheetInternal::create): (WebCore::StyleSheetInternal::createInline): (StyleSheetInternal): (WebCore::CSSStyleSheet::create): (CSSStyleSheet): Moved m_ownerNode. Changed constructors Removed setFinalURL(). * css/PropertySetCSSStyleDeclaration.cpp: (WebCore::StyleRuleCSSStyleDeclaration::setNeedsStyleRecalc): * dom/Document.cpp: (WebCore::Document::updateBaseURL): Instead of setFinalURL, construct a new StyleSheetInternal if the base url ever changes. (WebCore::Document::pageUserSheet): (WebCore::Document::pageGroupUserSheets): (WebCore::Document::addUserSheet): (WebCore::Document::elementSheet): * dom/Document.h: (Document): (WebCore::Document::documentUserSheets): Adapt to the new interface. Turned user stylesheets CSSStyleSheets so they can find the owner node. * dom/ProcessingInstruction.cpp: (WebCore::ProcessingInstruction::setCSSStyleSheet): * dom/StyleElement.cpp: (WebCore::StyleElement::createSheet): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setCSSStyleSheet): * inspector/InspectorCSSAgent.cpp: (WebCore::SelectorProfile::startSelector): (WebCore::InspectorCSSAgent::bindStyleSheet): * inspector/InspectorStyleSheet.cpp: (WebCore::fillMediaListChain): (WebCore::InspectorStyleSheet::ownerDocument): * page/PageSerializer.cpp: (WebCore::PageSerializer::serializeCSSStyleSheet): 2012-04-25 Adam Klein <adamk@chromium.org> Fix uninitialized variable warnings in PasteboardMac.mm after 115145 https://bugs.webkit.org/show_bug.cgi?id=84879 Reviewed by Enrica Casucci. * platform/mac/PasteboardMac.mm: (WebCore::Pasteboard::getDataSelection): Initialize attributedString to nil. (WebCore::Pasteboard::writeSelectionForTypes): ditto. 2012-04-25 Kenneth Russell <kbr@google.com> Delete CanvasPixelArray, ByteArray, JSByteArray and JSC code once unreferenced https://bugs.webkit.org/show_bug.cgi?id=83655 Reviewed by Oliver Hunt. Removed last few references to ByteArray, replacing with Uint8ClampedArray as necessary, and deleted now-obsolete CanvasPixelArray, ByteArray and JSByteArray. Removed code from JavaScriptCore special-casing ByteArray. No new tests. Did full layout test run on Mac OS; no regressions seen from this change. * CMakeLists.txt: * DerivedSources.pri: * ForwardingHeaders/runtime/JSByteArray.h: Removed. * GNUmakefile.list.am: * PlatformBlackBerry.cmake: * Target.pri: * UseV8.cmake: * WebCore.gypi: * WebCore.order: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * bindings/v8/SerializedScriptValue.cpp: * bindings/v8/V8Binding.h: (WebCore::isHostObject): * bindings/v8/custom/V8CanvasPixelArrayCustom.cpp: Removed. * bindings/v8/custom/V8InjectedScriptHostCustom.cpp: (WebCore::V8InjectedScriptHost::typeCallback): * bridge/qt/qt_runtime.cpp: (JSC::Bindings::isJSUint8ClampedArray): (Bindings): (JSC::Bindings::valueRealType): (JSC::Bindings::convertValueToQVariant): (JSC::Bindings::convertQVariantToValue): * html/canvas/CanvasPixelArray.cpp: Removed. * html/canvas/CanvasPixelArray.h: Removed. * html/canvas/CanvasPixelArray.idl: Removed. * html/canvas/WebGLRenderingContext.cpp: (WebCore): * platform/graphics/filters/FEConvolveMatrix.h: * rendering/svg/RenderSVGResourceMasker.cpp: 2012-04-25 Alpha Lam <hclam@chromium.org> Unreviewed build fix. Build fix for compilation failure due to r115243. * platform/graphics/chromium/LayerChromium.h: (WebCore): 2012-04-25 Ryosuke Niwa <rniwa@webkit.org> Build fix after r115227. Return null string when the string builder is empty to match the old behavior. * css/StylePropertySet.cpp: (WebCore::StylePropertySet::borderPropertyValue): 2012-04-25 Ian Vollick <vollick@chromium.org> [chromium] Add support for animation finished events. https://bugs.webkit.org/show_bug.cgi?id=84454 Reviewed by James Robinson. Tested in CCLayerTreeHostTestAnimationFinishedEvents * platform/graphics/chromium/GraphicsLayerChromium.cpp: (WebCore::GraphicsLayerChromium::willBeDestroyed): (WebCore::GraphicsLayerChromium::notifyAnimationFinished): (WebCore): * platform/graphics/chromium/GraphicsLayerChromium.h: * platform/graphics/chromium/LayerChromium.cpp: (WebCore::LayerChromium::notifyAnimationStarted): (WebCore::LayerChromium::notifyAnimationFinished): (WebCore): * platform/graphics/chromium/LayerChromium.h: (WebCore): (LayerChromium): * platform/graphics/chromium/cc/CCAnimationEvents.h: (WebCore::CCAnimationEvent::CCAnimationEvent): (CCAnimationEvent): (WebCore): * platform/graphics/chromium/cc/CCLayerAnimationController.cpp: (WebCore::CCLayerAnimationController::animate): (WebCore::CCLayerAnimationController::notifyAnimationStarted): (WebCore::CCLayerAnimationController::startAnimationsWaitingForNextTick): (WebCore::CCLayerAnimationController::startAnimationsWaitingForStartTime): (WebCore::CCLayerAnimationController::startAnimationsWaitingForTargetAvailability): (WebCore::CCLayerAnimationController::purgeFinishedAnimations): * platform/graphics/chromium/cc/CCLayerAnimationController.h: (CCLayerAnimationController): * platform/graphics/chromium/cc/CCLayerAnimationDelegate.h: (CCLayerAnimationDelegate): * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: (WebCore::CCLayerTreeHost::setAnimationEventsRecursive): 2012-04-25 Enrica Casucci <enrica@apple.com> REGRESSION (r110494): Dragging images from Safari to Finder results in .webloc rather than image file https://bugs.webkit.org/show_bug.cgi?id=84878 <rdar://problem/11155407> In WebKit2, it could happen to try to start the drag twice, given the asynchronous nature of the communication between the UI process and the WebProcess. We need to guarantee that we don't do that, otherwise on OS X the pasteboard ownership gets changed which affects the promised file types. Reviewed by Alexey Proskuryakov. * page/EventHandler.cpp: (WebCore::EventHandler::handleDrag): Reset m_mouseDownMayStartDrag to false to avoid attempting to start another drag. 2012-04-25 Andreas Kling <kling@webkit.org> Remove unused Attribute constructor. Semi-knowingly rubber-stamped by Antti Koivisto. * dom/Attribute.h: 2012-04-25 Nate Chapin <japhet@chromium.org> Crash in CachedRawResource::didAddClient() due to missing protector. https://bugs.webkit.org/show_bug.cgi?id=83632 Reviewed by Eric Seidel. Test: http/tests/xmlhttprequest/access-control-repeated-failed-preflight-crash.html * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::didAddClient): 2012-04-25 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to SerializedScriptValue::deserialize() https://bugs.webkit.org/show_bug.cgi?id=84758 Reviewed by Nate Chapin. The objective is to pass Isolate around. This patch passes Isolate to SerializedScriptValue::deserialize(). No tests. No change in behavior. * bindings/v8/custom/V8HistoryCustom.cpp: (WebCore::V8History::stateAccessorGetter): * bindings/v8/custom/V8IDBAnyCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8MessageEventCustom.cpp: (WebCore::V8MessageEvent::dataAccessorGetter): * bindings/v8/custom/V8PopStateEventCustom.cpp: (WebCore::V8PopStateEvent::stateAccessorGetter): 2012-04-25 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to SerializedScriptValue::create() in custom bindings https://bugs.webkit.org/show_bug.cgi?id=84757 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to SerializedScriptValue::create() in custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8DOMWindowCustom.cpp: (WebCore::handlePostMessageCallback): * bindings/v8/custom/V8DedicatedWorkerContextCustom.cpp: (WebCore::handlePostMessageCallback): * bindings/v8/custom/V8HistoryCustom.cpp: (WebCore::V8History::pushStateCallback): (WebCore::V8History::replaceStateCallback): * bindings/v8/custom/V8MessagePortCustom.cpp: (WebCore::handlePostMessageCallback): * bindings/v8/custom/V8WorkerCustom.cpp: (WebCore::handlePostMessageCallback): 2012-04-25 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to SerializedScriptValue::create() in CodeGeneratorV8.pm https://bugs.webkit.org/show_bug.cgi?id=84753 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to SerializedScriptValue::create() in CodeGeneratorV8.pm. Tests: bindings/scripts/test/TestObj.idl bindings/scripts/test/TestSerializedScriptValueInterface.idl * bindings/scripts/CodeGeneratorV8.pm: (GenerateNormalAttrSetter): (GenerateParametersCheck): (JSValueToNative): * bindings/scripts/test/V8/V8TestObj.cpp: Updated run-bindings-tests results. (WebCore::TestObjV8Internal::intSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::shortSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::longSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::longLongSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedIntSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedShortSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedLongSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedLongLongSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::floatSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::doubleSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::booleanSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::voidSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::dateSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::serializedValueCallback): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: (WebCore::TestSerializedScriptValueInterfaceV8Internal::valueAttrSetter): (WebCore::TestSerializedScriptValueInterfaceV8Internal::cachedValueAttrSetter): (WebCore::TestSerializedScriptValueInterfaceV8Internal::acceptTransferListCallback): (WebCore::TestSerializedScriptValueInterfaceV8Internal::multiTransferListCallback): (WebCore::V8TestSerializedScriptValueInterface::constructorCallback): 2012-04-25 Kentaro Hara <haraken@chromium.org> [V8] Add m_isolate to SerializedScriptValue::Writer and SerializedScriptValue::Reader https://bugs.webkit.org/show_bug.cgi?id=84739 Reviewed by Nate Chapin. This is the second step to pass Isolate around in SerializedScriptValue. This patch adds m_isolate to SerializedScriptValue::Writer and SerializedScriptValue::Reader, so that they can use the isolate around. The fix is safe since Writer and Reader are guaranteed to be used by one Isolate. No tests. No change in behavior. * bindings/v8/SerializedScriptValue.cpp: (WebCore::SerializedScriptValue::create): (WebCore::SerializedScriptValue::nullValue): (WebCore::SerializedScriptValue::undefinedValue): (WebCore::SerializedScriptValue::booleanValue): (WebCore::SerializedScriptValue::numberValue): (WebCore::SerializedScriptValue::SerializedScriptValue): (WebCore::SerializedScriptValue::deserialize): * bindings/v8/SerializedScriptValue.h: (SerializedScriptValue): 2012-04-25 Kentaro Hara <haraken@chromium.org> [V8] Make the Isolate* parameter non-optional in setDOMException() https://bugs.webkit.org/show_bug.cgi?id=84736 Reviewed by Nate Chapin. Now all setDOMException() callers pass Isolate* to setDOMException(). This patch makes the Isolate* parameter non-optional. No tests. No change in behavior. * bindings/v8/V8Proxy.h: (V8Proxy): 2012-04-24 Ryosuke Niwa <rniwa@webkit.org> REGRESSION(r112177): listStyleType CSS property gets converted into listStyle https://bugs.webkit.org/show_bug.cgi?id=83026 Reviewed by Darin Adler. Fixed the bug by not using shorthand notations when some values are missing. However, we still want to return a value when shorthand border property is explicitly requested so extract borderPropertyValue with a flag to support both behaviors. * css/StylePropertySet.cpp: (WebCore::borderPropertyValue): Extracted from getPropertyValue. (WebCore::StylePropertySet::getPropertyValue): (WebCore::StylePropertySet::get4Values): Don't return values when priority don't match. (WebCore::StylePropertySet::getShorthandValue): (WebCore::StylePropertySet::getCommonValue): Don't return null string for initial values to disambiguate missing values and "initial" in getPropertyValue. Also check propriety. (WebCore::StylePropertySet::asText): Support emitting border-width, border-style, and border-color when border doesn't work but the former properties do. 2012-04-25 Ian Vollick <vollick@chromium.org> [chromium] Do not clobber synchronized start times. https://bugs.webkit.org/show_bug.cgi?id=84605 Reviewed by James Robinson. Tested in CCLayerAnimationControllerTest.doNotClobberStartTimes (WebCore): * platform/graphics/chromium/cc/CCActiveAnimation.h: (CCActiveAnimation): (WebCore::CCActiveAnimation::hasSetStartTime): * platform/graphics/chromium/cc/CCLayerAnimationController.cpp: (WebCore::CCLayerAnimationController::startAnimationsWaitingForNextTick): (WebCore::CCLayerAnimationController::startAnimationsWaitingForTargetAvailability): 2012-04-25 Nate Chapin <japhet@chromium.org> REGRESSION (r100311): YummySoup app crashes when trying to print https://bugs.webkit.org/show_bug.cgi?id=83918 Reviewed by Alexey Proskuryakov. Test: http/tests/xmlhttprequest/cancel-during-failure-crash.html * loader/ResourceLoader.cpp: (WebCore::ResourceLoader::didFail): Set m_calledDidFinishLoad when calling didFailToLoad() to prevent it from getting called twice if we cancel re-entrantly. 2012-04-25 Alexis Menard <alexis.menard@openbossa.org> Not reviewed, fix Windows build after r115215. * css/CSSAllInOne.cpp: 2012-04-25 Eric Carlson <eric.carlson@apple.com> Not reviewed, attempt to fix Windows build after r115215. * css/CSSAllInOne.cpp: Don't try to include CSSStyleSelector.cpp. 2012-04-25 Mark Pilgrim <pilgrim@chromium.org> [Chromium] Call actualMemoryUsageMB directly https://bugs.webkit.org/show_bug.cgi?id=84837 Reviewed by Kentaro Hara. Part of a refactoring series. See tracking bug 82948. * bindings/v8/V8DOMWindowShell.cpp: (WebCore::reportFatalErrorInV8): * bindings/v8/V8GCController.cpp: (WebCore): * platform/MemoryUsageSupport.cpp: (WebCore::MemoryUsageSupport::actualMemoryUsageMB): (WebCore): * platform/MemoryUsageSupport.h: (MemoryUsageSupport): * platform/chromium/MemoryUsageSupportChromium.cpp: (WebCore::MemoryUsageSupport::actualMemoryUsageMB): (WebCore): * platform/chromium/PlatformSupport.h: (PlatformSupport): 2012-04-25 Alexis Menard <alexis.menard@openbossa.org> Rename CSSStyleSelector files to StyleResolver. https://bugs.webkit.org/show_bug.cgi?id=84814 Reviewed by Antti Koivisto. Rename CSSStyleSelector files to match the new class name StyleResolver. Update the includes all over the code base to the new name. No new tests : renaming files, no behavior changes expected. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * css/CSSAllInOne.cpp: * css/CSSCalculationValue.cpp: * css/CSSFontSelector.cpp: * css/CSSGradientValue.cpp: * css/MediaQueryEvaluator.cpp: * css/MediaQueryMatcher.cpp: * css/SVGCSSStyleSelector.cpp: * css/StyleBuilder.cpp: * css/StyleMedia.cpp: * css/StyleResolver.cpp: Renamed from Source/WebCore/css/CSSStyleSelector.cpp. (WebCore): (RuleData): (WebCore::RuleData::position): (WebCore::RuleData::rule): (WebCore::RuleData::selector): (WebCore::RuleData::hasFastCheckableSelector): (WebCore::RuleData::hasMultipartSelector): (WebCore::RuleData::hasRightmostSelectorMatchingHTMLBasedOnRuleHash): (WebCore::RuleData::containsUncommonAttributeSelector): (WebCore::RuleData::specificity): (WebCore::RuleData::linkMatchType): (WebCore::RuleData::hasDocumentSecurityOrigin): (WebCore::RuleData::isInRegionRule): (WebCore::RuleData::descendantSelectorIdentifierHashes): (SameSizeAsRuleData): (RuleSet): (WebCore::RuleSet::create): (WebCore::RuleSet::disableAutoShrinkToFit): (WebCore::RuleSet::features): (WebCore::RuleSet::idRules): (WebCore::RuleSet::classRules): (WebCore::RuleSet::tagRules): (WebCore::RuleSet::shadowPseudoElementRules): (WebCore::RuleSet::linkPseudoClassRules): (WebCore::RuleSet::focusPseudoClassRules): (WebCore::RuleSet::universalRules): (WebCore::RuleSet::pageRules): (WebCore::RuleSet::RuleSetSelectorPair::RuleSetSelectorPair): (RuleSetSelectorPair): (WebCore::elementCanUseSimpleDefaultStyle): (WebCore::screenEval): (WebCore::printEval): (WebCore::leftToRightDeclaration): (WebCore::rightToLeftDeclaration): (WebCore::StyleResolver::StyleResolver): (WebCore::StyleResolver::addAuthorRulesAndCollectUserRulesFromSheets): (WebCore::makeRuleSet): (WebCore::StyleResolver::collectFeatures): (WebCore::StyleResolver::determineScope): (WebCore::StyleResolver::ruleSetForScope): (WebCore::StyleResolver::appendAuthorStylesheets): (WebCore::StyleResolver::setupScopeStack): (WebCore::StyleResolver::pushScope): (WebCore::StyleResolver::popScope): (WebCore::StyleResolver::pushParentElement): (WebCore::StyleResolver::popParentElement): (WebCore::StyleResolver::pushParentShadowRoot): (WebCore::StyleResolver::popParentShadowRoot): (WebCore::StyleResolver::addKeyframeStyle): (WebCore::StyleResolver::~StyleResolver): (WebCore::StyleResolver::sweepMatchedPropertiesCache): (WebCore::StyleResolver::Features::Features): (WebCore::StyleResolver::Features::~Features): (WebCore::StyleResolver::Features::add): (WebCore::StyleResolver::Features::clear): (WebCore::parseUASheet): (WebCore::loadFullDefaultStyle): (WebCore::loadSimpleDefaultStyle): (WebCore::loadViewSourceStyle): (WebCore::ensureDefaultStyleSheetsForElement): (WebCore::StyleResolver::addMatchedProperties): (WebCore::StyleResolver::addElementStyleProperties): (WebCore::StyleResolver::collectMatchingRules): (WebCore::StyleResolver::collectMatchingRulesForRegion): (WebCore::StyleResolver::sortAndTransferMatchedRules): (WebCore::StyleResolver::matchScopedAuthorRules): (WebCore::StyleResolver::matchAuthorRules): (WebCore::StyleResolver::matchUserRules): (WebCore::StyleResolver::matchUARules): (MatchingUARulesScope): (WebCore::MatchingUARulesScope::MatchingUARulesScope): (WebCore::MatchingUARulesScope::~MatchingUARulesScope): (WebCore::MatchingUARulesScope::isMatchingUARules): (WebCore::StyleResolver::collectMatchingRulesForList): * css/StyleResolver.h: Renamed from Source/WebCore/css/CSSStyleSelector.h. (WebCore): (MediaQueryResult): (WebCore::MediaQueryResult::MediaQueryResult): (StyleResolver): (WebCore::StyleResolver::style): (WebCore::StyleResolver::parentStyle): (WebCore::StyleResolver::rootElementStyle): (WebCore::StyleResolver::element): (WebCore::StyleResolver::document): (WebCore::StyleResolver::fontDescription): (WebCore::StyleResolver::parentFontDescription): (WebCore::StyleResolver::setFontDescription): (WebCore::StyleResolver::setZoom): (WebCore::StyleResolver::setEffectiveZoom): (WebCore::StyleResolver::setTextSizeAdjust): (WebCore::StyleResolver::hasParentNode): (WebCore::StyleResolver::pushScope): (WebCore::StyleResolver::popScope): (WebCore::StyleResolver::setStyle): (WebCore::StyleResolver::fontSelector): (WebCore::StyleResolver::allVisitedStateChanged): (WebCore::StyleResolver::visitedStateChanged): (WebCore::StyleResolver::usesSiblingRules): (WebCore::StyleResolver::usesFirstLineRules): (WebCore::StyleResolver::usesBeforeAfterRules): (WebCore::StyleResolver::usesLinkRules): (WebCore::StyleResolver::RuleFeature::RuleFeature): (RuleFeature): (Features): (WebCore::StyleResolver::addMatchedRule): (WebCore::StyleResolver::MatchRanges::MatchRanges): (MatchRanges): (WebCore::StyleResolver::MatchedProperties::MatchedProperties): (MatchedProperties): (WebCore::StyleResolver::MatchResult::MatchResult): (MatchResult): (WebCore::StyleResolver::MatchOptions::MatchOptions): (MatchOptions): (WebCore::StyleResolver::isRightPage): (WebCore::StyleResolver::styleNotYetAvailable): (WebCore::StyleResolver::applyPropertyToRegularStyle): (WebCore::StyleResolver::applyPropertyToVisitedLinkStyle): (MatchedPropertiesCacheItem): (WebCore::StyleResolver::scopeStackIsConsistent): (WebCore::StyleResolver::ScopeStackFrame::ScopeStackFrame): (ScopeStackFrame): * css/WebKitCSSMatrix.cpp: * dom/Document.cpp: * dom/Element.cpp: * dom/Node.cpp: * dom/ShadowRoot.cpp: * dom/ShadowTree.cpp: * dom/StyledElement.cpp: * editing/ApplyStyleCommand.cpp: * editing/EditingStyle.cpp: * editing/Editor.cpp: * editing/markup.cpp: * history/CachedPage.cpp: * html/HTMLDocument.cpp: * html/HTMLLinkElement.cpp: * html/HTMLOptGroupElement.cpp: * html/HTMLOptionElement.cpp: * html/ValidationMessage.cpp: * html/canvas/CanvasRenderingContext2D.cpp: * html/shadow/MediaControlElements.cpp: * inspector/InspectorCSSAgent.cpp: * inspector/InspectorDOMAgent.cpp: * inspector/InspectorStyleSheet.cpp: * loader/LinkLoader.cpp: * page/DOMWindow.cpp: * page/FrameView.cpp: * page/Page.cpp: * page/animation/KeyframeAnimation.cpp: * platform/qt/RenderThemeQt.cpp: * platform/qt/RenderThemeQtMobile.cpp: * rendering/RenderLayer.cpp: * rendering/RenderLayerBacking.cpp: * rendering/RenderListBox.cpp: * rendering/RenderMenuList.cpp: * rendering/RenderObject.cpp: * rendering/RenderRegion.cpp: * rendering/RenderSlider.cpp: * rendering/RenderTextControlSingleLine.cpp: * rendering/RenderThemeMac.mm: * rendering/RenderThemeSafari.cpp: * rendering/style/RenderStyle.cpp: * rendering/style/StyleGeneratedImage.cpp: * rendering/style/StyleRareNonInheritedData.cpp: * rendering/svg/RenderSVGInlineText.cpp: * svg/SVGClipPathElement.cpp: * svg/SVGElement.cpp: * svg/SVGFontFaceElement.cpp: * svg/SVGGradientElement.cpp: * svg/SVGMaskElement.cpp: * svg/SVGUseElement.cpp: 2012-04-25 Crystal Zhang <haizhang@rim.com> https://bugs.webkit.org/show_bug.cgi?id=84875 make-css-file-arrays.pl now only take css files, make it also take js files, as for html popups we also need load js files. Reviewed by Antonio Gomes. * css/make-css-file-arrays.pl: 2012-04-25 Li Yin <li.yin@intel.com> [chromium][workers] setTargetType(ResourceRequest::TargetIsWorker) is repeatedly called in chromium https://bugs.webkit.org/show_bug.cgi?id=84542 Reviewed by David Levin. In chromium platform, the default value of m_targetType is ResourceRequest::TargetIsWorker it isn't necessary to call worker->m_scriptLoader->setTargetType(ResourceRequest::TargetIsWorker) again in Worker.cpp In chromium platform, the m_targettype value determines the priority of resource loaded. No new tests because this patch just deletes a repeated code, it can reduce code workload and can't impact any feature. If the target type isn't set correctly, the following test maybe fail because of timeout in the chromium. fast/workers/storage/multiple-transactions-on-different-handles.html fast/workers/storage/multiple-transactions-on-different-handles-sync.html fast/workers/storage/interrupt-database.html * workers/Worker.cpp: (WebCore::Worker::create): 2012-04-25 Yury Semikhatsky <yurys@chromium.org> Web Inspector: move HeapSnapshotLoader into a separate file https://bugs.webkit.org/show_bug.cgi?id=84860 Extracted HeapSnapshotLoader into its own file. Reviewed by Pavel Feldman. * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * inspector/compile-front-end.py: * inspector/front-end/HeapSnapshot.js: * inspector/front-end/HeapSnapshotLoader.js: Added. (WebInspector.HeapSnapshotLoader): (WebInspector.HeapSnapshotLoader.prototype._findBalancedCurlyBrackets): (WebInspector.HeapSnapshotLoader.prototype.finishLoading): (WebInspector.HeapSnapshotLoader.prototype._parseUintArray): (WebInspector.HeapSnapshotLoader.prototype._parseStringsArray): (WebInspector.HeapSnapshotLoader.prototype.pushJSONChunk): * inspector/front-end/WebKit.qrc: * inspector/front-end/inspector.html: 2012-04-25 'Pavel Feldman' <pfeldman@chromium.org> Not reviewed: inspector frontend tests fix. * inspector/front-end/ScriptsSearchScope.js: 2012-04-25 Ian Vollick <vollick@chromium.org> [chromium] Animations waiting for a synchronized start time should never be marked finished. https://bugs.webkit.org/show_bug.cgi?id=84519 Reviewed by James Robinson. Tested in CCLayerAnimationControllerTest.AnimationsWaitingForStartTimeDoNotFinishIfTheyWaitLongerToStartThanTheirDuration * platform/graphics/chromium/cc/CCLayerAnimationController.cpp: (WebCore::CCLayerAnimationController::tickAnimations): 2012-04-25 Pierre Rossi <pierre.rossi@gmail.com> [SVG] Nothing should be stroked when the stroke-width is 0 https://bugs.webkit.org/show_bug.cgi?id=83568 Reviewed by Nikolas Zimmermann. The spec states that "A zero value causes no stroke to be painted". We should avoid calling functions that could incorrectly paint something in that case. Test: svg/custom/path-zero-strokewidth.svg * rendering/style/SVGRenderStyle.h: (WebCore::SVGRenderStyle::hasVisibleStroke): * rendering/svg/RenderSVGEllipse.cpp: (WebCore::RenderSVGEllipse::strokeShape): Check if the stroke should be visible before painting. * rendering/svg/RenderSVGRect.cpp: (WebCore::RenderSVGRect::strokeShape): Ditto. * rendering/svg/RenderSVGShape.cpp: (WebCore::RenderSVGShape::strokeShape): Ditto. (WebCore::RenderSVGShape::strokePath): Ditto. * rendering/svg/SVGInlineTextBox.cpp: (WebCore::SVGInlineTextBox::paint): Dont call paintText for zero-width stroke. (WebCore::SVGInlineTextBox::paintDecoration): Ditto. 2012-04-25 Alexis Menard <alexis.menard@openbossa.org> Unfortunately http://trac.webkit.org/changeset/115055 was landed using webkit-patch land-from bug but didn't do the right thing, we lost the history. This commit is merging back CSSStyleApplyProperty.* and their history, rename the files to StyleBuilder and re-apply the two patches on trunk that were apply after the rename. Rename CSSStyleSelector class to StyleResolver. https://bugs.webkit.org/show_bug.cgi?id=84734 The name CSSStyleSelector is confusing as it conflicts a bit with the CSS concept of selectors. One could think it's an encapsulation of the CSS selectors but it's not, in fact this class is responsible of finding the RenderStyle for a given element. This is the first patch as I will later rename the files, and then rename the local variables. Replace occurences of style selector from variables and methods names by style resolver. https://bugs.webkit.org/show_bug.cgi?id=84765 Rename methods and variables to follow the new name StyleResolver. It requires to update the local variables, methods parameters, and function names to match the new name and to remove the concept of "selector" to avoid clashing with the CSS concept. The next and last patch will be to rename CSSStyleSelector file and update the includes. * css/StyleBuilder.cpp: Replaced with Source/WebCore/css/CSSStyleApplyProperty.cpp. (WebCore::ApplyPropertyExpanding::applyInheritValue): (WebCore::ApplyPropertyExpanding::applyInitialValue): (WebCore::ApplyPropertyExpanding::applyValue): (WebCore::ApplyPropertyDefaultBase::applyInheritValue): (WebCore::ApplyPropertyDefaultBase::applyInitialValue): (WebCore::ApplyPropertyDefaultBase::applyValue): (WebCore::ApplyPropertyDefault::applyValue): (WebCore::ApplyPropertyNumber::applyValue): (WebCore::ApplyPropertyStyleImage::applyValue): (WebCore::ApplyPropertyAuto::applyInheritValue): (WebCore::ApplyPropertyAuto::applyInitialValue): (WebCore::ApplyPropertyAuto::applyValue): (WebCore::ApplyPropertyClip::convertToLength): (WebCore::ApplyPropertyClip::applyInheritValue): (WebCore::ApplyPropertyClip::applyInitialValue): (WebCore::ApplyPropertyClip::applyValue): (WebCore::ApplyPropertyColor::applyInheritValue): (WebCore::ApplyPropertyColor::applyInitialValue): (WebCore::ApplyPropertyColor::applyValue): (WebCore::ApplyPropertyColor::applyColorValue): (WebCore::ApplyPropertyDirection::applyValue): (WebCore::ApplyPropertyLength::applyValue): (WebCore::ApplyPropertyString::applyValue): (WebCore::ApplyPropertyBorderRadius::applyValue): (WebCore::ApplyPropertyFillLayer::applyInheritValue): (WebCore::ApplyPropertyFillLayer::applyInitialValue): (WebCore::ApplyPropertyFillLayer::applyValue): (WebCore::ApplyPropertyComputeLength::applyValue): (WebCore::ApplyPropertyFont::applyInheritValue): (WebCore::ApplyPropertyFont::applyInitialValue): (WebCore::ApplyPropertyFont::applyValue): (WebCore::ApplyPropertyFontSize::applyInheritValue): (WebCore::ApplyPropertyFontSize::applyInitialValue): (WebCore::ApplyPropertyFontSize::applyValue): (WebCore::ApplyPropertyFontWeight::applyValue): (WebCore::ApplyPropertyFontVariantLigatures::applyInheritValue): (WebCore::ApplyPropertyFontVariantLigatures::applyInitialValue): (WebCore::ApplyPropertyFontVariantLigatures::applyValue): (WebCore::ApplyPropertyBorderImage::applyValue): (WebCore::ApplyPropertyBorderImageModifier::applyInheritValue): (WebCore::ApplyPropertyBorderImageModifier::applyInitialValue): (WebCore::ApplyPropertyBorderImageModifier::applyValue): (WebCore::ApplyPropertyBorderImageSource::applyValue): (WebCore::ApplyPropertyCounter::emptyFunction): (WebCore::ApplyPropertyCounter::applyInheritValue): (WebCore::ApplyPropertyCounter::applyValue): (WebCore::ApplyPropertyCursor::applyInheritValue): (WebCore::ApplyPropertyCursor::applyInitialValue): (WebCore::ApplyPropertyCursor::applyValue): (WebCore::ApplyPropertyTextAlign::applyValue): (WebCore::ApplyPropertyTextDecoration::applyValue): (WebCore::ApplyPropertyUnicodeBidi::applyValue): (WebCore::ApplyPropertyLineHeight::applyValue): (WebCore::ApplyPropertyPageSize::applyInheritValue): (WebCore::ApplyPropertyPageSize::applyInitialValue): (WebCore::ApplyPropertyPageSize::applyValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyInheritValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyInitialValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyValue): (WebCore): (WebCore::ApplyPropertyAnimation::map): (WebCore::ApplyPropertyAnimation::applyInheritValue): (WebCore::ApplyPropertyAnimation::applyInitialValue): (WebCore::ApplyPropertyAnimation::applyValue): (WebCore::ApplyPropertyOutlineStyle::applyInheritValue): (WebCore::ApplyPropertyOutlineStyle::applyInitialValue): (WebCore::ApplyPropertyOutlineStyle::applyValue): (WebCore::ApplyPropertyResize::applyValue): (WebCore::ApplyPropertyVerticalAlign::applyValue): (WebCore::ApplyPropertyAspectRatio::applyInheritValue): (WebCore::ApplyPropertyAspectRatio::applyInitialValue): (WebCore::ApplyPropertyAspectRatio::applyValue): (WebCore::ApplyPropertyZoom::resetEffectiveZoom): (WebCore::ApplyPropertyZoom::applyInheritValue): (WebCore::ApplyPropertyZoom::applyInitialValue): (WebCore::ApplyPropertyZoom::applyValue): (WebCore::ApplyPropertyDisplay::isValidDisplayValue): (WebCore::ApplyPropertyDisplay::applyInheritValue): (WebCore::ApplyPropertyDisplay::applyInitialValue): (WebCore::ApplyPropertyDisplay::applyValue): (WebCore::ApplyPropertyFlex::applyInheritValue): (WebCore::ApplyPropertyFlex::applyInitialValue): (WebCore::ApplyPropertyFlex::applyValue): (WebCore::StyleBuilder::StyleBuilder): * css/StyleBuilder.h: Replaced with Source/WebCore/css/CSSStyleApplyProperty.h. (WebCore): (PropertyHandler): (WebCore::PropertyHandler::applyInheritValue): (WebCore::PropertyHandler::applyInitialValue): (WebCore::PropertyHandler::applyValue): 2012-04-25 Eric Carlson <eric.carlson@apple.com> Not reviewed, fix Windows build after r115165. * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::updateCompositingLayers): Initialize logging variable. 2012-04-25 Florin Malita <fmalita@chromium.org> [Coverity] Uninitialized fields in RenderSVGShape constructors https://bugs.webkit.org/show_bug.cgi?id=84749 Reviewed by Darin Adler. Removing unused RenderSVGShape constructor and field. No new tests - no behavior change. * rendering/svg/RenderSVGShape.cpp: * rendering/svg/RenderSVGShape.h: (RenderSVGShape): 2012-04-25 'Pavel Feldman' <pfeldman@chromium.org> Not reviewed: follow up to r115194, removed debug output. * inspector/front-end/DebuggerPresentationModel.js: (WebInspector.DebuggerPresentationModel.prototype._parsedScriptSource): 2012-04-25 Pavel Feldman <pfeldman@chromium.org> Web Inspector: extract Linkifier from DebuggerPresentationModel. https://bugs.webkit.org/show_bug.cgi?id=84855 Reviewed by Yury Semikhatsky. There is nothing Linkifier needs from the model, extracting as a top-level class. * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * inspector/compile-front-end.py: * inspector/front-end/ConsoleMessage.js: * inspector/front-end/ConsoleView.js: (WebInspector.ConsoleView): * inspector/front-end/DebuggerPresentationModel.js: * inspector/front-end/EventListenersSidebarPane.js: * inspector/front-end/Linkifier.js: Added. (WebInspector.LinkifierFormatter): (WebInspector.LinkifierFormatter.prototype.formatLiveAnchor): (WebInspector.Linkifier): (WebInspector.Linkifier.prototype.linkifyLocation): (WebInspector.Linkifier.prototype.linkifyRawLocation): (WebInspector.Linkifier.prototype.reset): (WebInspector.Linkifier.prototype._updateAnchor): (WebInspector.Linkifier.DefaultFormatter): (WebInspector.Linkifier.DefaultFormatter.prototype.formatLiveAnchor): * inspector/front-end/NetworkPanel.js: * inspector/front-end/ObjectPopoverHelper.js: (WebInspector.ObjectPopoverHelper.prototype._showObjectPopover.showObjectPopover.): (WebInspector.ObjectPopoverHelper.prototype._showObjectPopover): * inspector/front-end/ProfileView.js: * inspector/front-end/ScriptsSearchScope.js: (WebInspector.ScriptsSearchResultsPane): * inspector/front-end/TimelinePresentationModel.js: (WebInspector.TimelinePresentationModel): * inspector/front-end/WebKit.qrc: * inspector/front-end/inspector.html: 2012-04-25 Pavel Feldman <pfeldman@chromium.org> Web Inspector: move sourcemap-agnostic part of the debugger presentation model into the raw debugger. https://bugs.webkit.org/show_bug.cgi?id=84852 Reviewed by Yury Semikhatsky. There is no need to keep that much debugging functionality in the debugger presentation model. It all perfectly applies to the raw script debugger. Methods for selecting call frames, activating breakpoints and paused details were moved to the WebInspector.DebuggerModel. * inspector/front-end/BreakpointManager.js: (WebInspector.BreakpointManager.prototype._removeBreakpointFromUI): * inspector/front-end/CallStackSidebarPane.js: (WebInspector.CallStackSidebarPane): (WebInspector.CallStackSidebarPane.prototype.update): (WebInspector.CallStackSidebarPane.prototype.setSelectedCallFrame): (WebInspector.CallStackSidebarPane.prototype._selectedCallFrameIndex): (WebInspector.CallStackSidebarPane.prototype._placardSelected): (WebInspector.CallStackSidebarPane.Placard): (WebInspector.CallStackSidebarPane.Placard.prototype._update): * inspector/front-end/ConsoleView.js: * inspector/front-end/DebuggerModel.js: (WebInspector.DebuggerModel.prototype._globalObjectCleared): (WebInspector.DebuggerModel.prototype._didEditScriptSource): (WebInspector.DebuggerModel.prototype._setDebuggerPausedDetails): (WebInspector.DebuggerModel.prototype._pausedScript): (WebInspector.DebuggerModel.prototype._resumedScript): (WebInspector.DebuggerModel.prototype.isPaused): (WebInspector.DebuggerModel.prototype.setSelectedCallFrame.updateExecutionLine): (WebInspector.DebuggerModel.prototype.setSelectedCallFrame): (WebInspector.DebuggerModel.prototype.selectedCallFrame): (WebInspector.DebuggerModel.prototype.evaluateOnSelectedCallFrame): (WebInspector.DebuggerModel.prototype.getSelectedCallFrameVariables.propertiesCollected): (WebInspector.DebuggerModel.prototype.getSelectedCallFrameVariables): (WebInspector.DebuggerModel.prototype.setBreakpointsActive): (WebInspector.DebuggerModel.prototype.breakpointsActive): (WebInspector.DebuggerModel.CallFrame): (WebInspector.DebuggerModel.CallFrame.prototype.get script): (WebInspector.DebuggerModel.CallFrame.prototype.get type): (WebInspector.DebuggerModel.CallFrame.prototype.get scopeChain): (WebInspector.DebuggerModel.CallFrame.prototype.get this): (WebInspector.DebuggerModel.CallFrame.prototype.get functionName): (WebInspector.DebuggerModel.CallFrame.prototype.get location): (WebInspector.DebuggerModel.CallFrame.prototype.evaluate): (WebInspector.DebuggerModel.CallFrame.prototype.createLiveLocation): (WebInspector.DebuggerModel.CallFrame.prototype.dispose): (WebInspector.DebuggerPausedDetails): (WebInspector.DebuggerPausedDetails.prototype.dispose): * inspector/front-end/DebuggerPresentationModel.js: (WebInspector.DebuggerPresentationModel): (WebInspector.DebuggerPresentationModel.prototype.createLiveLocation): (WebInspector.DebuggerPresentationModel.prototype._parsedScriptSource): (WebInspector.DebuggerPresentationModel.prototype._callFrameSelected): (WebInspector.DebuggerPresentationModel.prototype.setScriptSource.didEditScriptSource): (WebInspector.DebuggerPresentationModel.prototype.setScriptSource): (WebInspector.DebuggerPresentationModel.prototype._debuggerReset): * inspector/front-end/JavaScriptSource.js: (WebInspector.JavaScriptSource.prototype.setBreakpoint): * inspector/front-end/JavaScriptSourceFrame.js: (WebInspector.JavaScriptSourceFrame.prototype._resolveObjectForPopover): * inspector/front-end/Script.js: (WebInspector.Script.prototype.setSourceMapping): (WebInspector.Script.prototype.createLiveLocation): (WebInspector.Script.Location.prototype.update): * inspector/front-end/ScriptMapping.js: (WebInspector.LiveLocation): (WebInspector.LiveLocation.prototype.update): (WebInspector.LiveLocation.prototype.dispose): * inspector/front-end/ScriptsPanel.js: (WebInspector.ScriptsPanel.prototype._consoleCommandEvaluatedInSelectedCallFrame): (WebInspector.ScriptsPanel.prototype._debuggerPaused): (WebInspector.ScriptsPanel.prototype._callFrameSelected): (WebInspector.ScriptsPanel.prototype._toggleBreakpointsClicked): * inspector/front-end/UISourceCode.js: 2012-04-25 Yury Semikhatsky <yurys@chromium.org> Web Inspector: use composite node provider for diff nodes in heap profiler https://bugs.webkit.org/show_bug.cgi?id=84849 Inroduced HeapSnapshotDiffNodesProvider which is basically a composite provider combining providers for added and deleted nodes. This allowed to remove custom implementation of HeapSnapshotGridNode.prototype.populateChildren. Reviewed by Pavel Feldman. * inspector/front-end/HeapSnapshot.js: (WebInspector.HeapSnapshotNodesProvider.prototype.sort.sortByNodeField): moved index assignment to sortByComparator so that it is done only once. (WebInspector.HeapSnapshotNodesProvider.prototype.sort.sortByComparator): (WebInspector.HeapSnapshotNodesProvider.prototype.sort): * inspector/front-end/HeapSnapshotGridNodes.js: (WebInspector.HeapSnapshotGridNode): (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.callSerialize): (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.childrenRetrieved.notify): (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.childrenRetrieved): (WebInspector.HeapSnapshotGridNode.prototype.populateChildren): (WebInspector.HeapSnapshotGridNode.prototype.sort.afterSort): (WebInspector.HeapSnapshotGridNode.prototype.sort): (WebInspector.HeapSnapshotDiffNodesProvider): (WebInspector.HeapSnapshotDiffNodesProvider.prototype.dispose): (WebInspector.HeapSnapshotDiffNodesProvider.prototype.isEmpty): (WebInspector.HeapSnapshotDiffNodesProvider.prototype.serializeNextItems): (WebInspector.HeapSnapshotDiffNodesProvider.prototype.serializeNextItems.didReceiveDeletedItems): (WebInspector.HeapSnapshotDiffNodesProvider.prototype.serializeNextItems.didReceiveAddedItems): (WebInspector.HeapSnapshotDiffNodesProvider.prototype.sortAndRewind.afterSort): (WebInspector.HeapSnapshotDiffNodesProvider.prototype.sortAndRewind): (WebInspector.HeapSnapshotDiffNode): (WebInspector.HeapSnapshotDiffNode._createProvider): (WebInspector.HeapSnapshotDiffNode.prototype._createChildNode): 2012-04-25 Nikolas Zimmermann <nzimmermann@rim.com> Refactor to/from/animatedType creation, to share more code between animators https://bugs.webkit.org/show_bug.cgi?id=84846 Reviewed by Antti Koivisto. Share more code bewteen animators, doesn't change functionality yet, except for one bug in SVGAnimatedString. SVGAnimatedString used to mutate the from/to values during animation, leading to problems in animate-element-31-t.svg. It now needs a rebaseline, now that this bug is fixed as side-effect. * svg/SVGAnimateColorElement.cpp: (WebCore::attributeValueIsCurrentColor): (WebCore::SVGAnimateColorElement::determinePropertyValueTypes): (WebCore): * svg/SVGAnimateColorElement.h: (SVGAnimateColorElement): * svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::SVGAnimateElement): * svg/SVGAnimateElement.h: (SVGAnimateElement): * svg/SVGAnimatedAngle.cpp: (WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue): * svg/SVGAnimatedBoolean.cpp: (WebCore::SVGAnimatedBooleanAnimator::calculateAnimatedValue): * svg/SVGAnimatedColor.cpp: (WebCore::adjustForCurrentColor): (WebCore): (WebCore::parseColorFromString): (WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue): * svg/SVGAnimatedEnumeration.cpp: (WebCore::SVGAnimatedEnumerationAnimator::calculateAnimatedValue): * svg/SVGAnimatedInteger.cpp: (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedInteger): (WebCore::SVGAnimatedIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedIntegerOptionalInteger.cpp: (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::calculateAnimatedValue): * svg/SVGAnimatedLength.cpp: (WebCore::parseLengthFromString): (WebCore): (WebCore::SVGAnimatedLengthAnimator::calculateAnimatedValue): * svg/SVGAnimatedLengthList.cpp: (WebCore::parseLengthListFromString): (WebCore): (WebCore::SVGAnimatedLengthListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumber.cpp: (WebCore::parseNumberFromString): (WebCore): (WebCore::SVGAnimatedNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::calculateAnimatedValue): * svg/SVGAnimatedNumberOptionalNumber.cpp: (WebCore::SVGAnimatedNumberOptionalNumberAnimator::calculateAnimatedValue): * svg/SVGAnimatedPointList.cpp: (WebCore::SVGAnimatedPointListAnimator::calculateAnimatedValue): * svg/SVGAnimatedPreserveAspectRatio.cpp: (WebCore::SVGAnimatedPreserveAspectRatioAnimator::calculateAnimatedValue): * svg/SVGAnimatedRect.cpp: (WebCore::SVGAnimatedRectAnimator::calculateAnimatedValue): * svg/SVGAnimatedString.cpp: (WebCore::parseStringFromString): (WebCore): (WebCore::SVGAnimatedStringAnimator::calculateAnimatedValue): * svg/SVGAnimatedTransformList.cpp: (WebCore::SVGAnimatedTransformListAnimator::calculateAnimatedValue): * svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::SVGAnimationElement): (WebCore::SVGAnimationElement::adjustForInheritance): (WebCore): (WebCore::inheritsFromProperty): (WebCore::SVGAnimationElement::determinePropertyValueTypes): * svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::fromPropertyValueType): (WebCore::SVGAnimationElement::toPropertyValueType): (SVGAnimationElement): (WebCore::SVGAnimationElement::adjustForInheritance): (WebCore::SVGAnimationElement::adjustFromToValues): (WebCore::SVGAnimationElement::adjustFromToListValues): 2012-04-25 Nikolas Zimmermann <nzimmermann@rim.com> Share single calculateFromToValues/calculateFromByValues between all SVGAnimatedTypeAnimators https://bugs.webkit.org/show_bug.cgi?id=84832 Reviewed by Antti Koivisto. calculateFromAndToValues / calculateFromAndByValues don't need to be spread across all SVGAnimatedTypeAnimators. Centralize these new implementations in SVGAnimatedTypeAnimator.h. Refactored addAnimatedTypes() from constructFromAndByValues. calculateFromAndToValues: from = constructFromString(fromString) to = constructFromString(toString) calculateFromAndByValues: from = constructFromString(fromString) to = constructFromString(byString) addAnimatedTypes(from, to) Doesn't affect any tests, just refactors code. * svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::calculateFromAndToValues): (WebCore::SVGAnimateElement::calculateFromAndByValues): * svg/SVGAnimatedAngle.cpp: (WebCore::SVGAnimatedAngleAnimator::addAnimatedTypes): * svg/SVGAnimatedAngle.h: (SVGAnimatedAngleAnimator): * svg/SVGAnimatedBoolean.cpp: (WebCore::SVGAnimatedBooleanAnimator::addAnimatedTypes): * svg/SVGAnimatedBoolean.h: (SVGAnimatedBooleanAnimator): * svg/SVGAnimatedColor.cpp: (WebCore::SVGAnimatedColorAnimator::addAnimatedTypes): * svg/SVGAnimatedColor.h: (SVGAnimatedColorAnimator): * svg/SVGAnimatedEnumeration.cpp: (WebCore::SVGAnimatedEnumerationAnimator::addAnimatedTypes): * svg/SVGAnimatedEnumeration.h: (SVGAnimatedEnumerationAnimator): * svg/SVGAnimatedInteger.cpp: (WebCore::SVGAnimatedIntegerAnimator::addAnimatedTypes): * svg/SVGAnimatedInteger.h: (SVGAnimatedIntegerAnimator): * svg/SVGAnimatedIntegerOptionalInteger.cpp: (WebCore::SVGAnimatedIntegerOptionalIntegerAnimator::addAnimatedTypes): * svg/SVGAnimatedIntegerOptionalInteger.h: (SVGAnimatedIntegerOptionalIntegerAnimator): * svg/SVGAnimatedLength.cpp: (WebCore::SVGAnimatedLengthAnimator::addAnimatedTypes): * svg/SVGAnimatedLength.h: (SVGAnimatedLengthAnimator): * svg/SVGAnimatedLengthList.cpp: (WebCore::SVGAnimatedLengthListAnimator::addAnimatedTypes): * svg/SVGAnimatedLengthList.h: (SVGAnimatedLengthListAnimator): * svg/SVGAnimatedNumber.cpp: (WebCore::SVGAnimatedNumberAnimator::addAnimatedTypes): * svg/SVGAnimatedNumber.h: (SVGAnimatedNumberAnimator): * svg/SVGAnimatedNumberList.cpp: (WebCore::SVGAnimatedNumberListAnimator::addAnimatedTypes): * svg/SVGAnimatedNumberList.h: (SVGAnimatedNumberListAnimator): * svg/SVGAnimatedNumberOptionalNumber.cpp: (WebCore::SVGAnimatedNumberOptionalNumberAnimator::addAnimatedTypes): * svg/SVGAnimatedNumberOptionalNumber.h: (SVGAnimatedNumberOptionalNumberAnimator): * svg/SVGAnimatedPath.cpp: (WebCore::SVGAnimatedPathAnimator::constructFromString): (WebCore::SVGAnimatedPathAnimator::addAnimatedTypes): * svg/SVGAnimatedPath.h: (SVGAnimatedPathAnimator): * svg/SVGAnimatedPointList.cpp: (WebCore::SVGAnimatedPointListAnimator::addAnimatedTypes): * svg/SVGAnimatedPointList.h: (SVGAnimatedPointListAnimator): * svg/SVGAnimatedPreserveAspectRatio.cpp: (WebCore::SVGAnimatedPreserveAspectRatioAnimator::addAnimatedTypes): * svg/SVGAnimatedPreserveAspectRatio.h: (SVGAnimatedPreserveAspectRatioAnimator): * svg/SVGAnimatedRect.cpp: (WebCore::SVGAnimatedRectAnimator::addAnimatedTypes): * svg/SVGAnimatedRect.h: (SVGAnimatedRectAnimator): * svg/SVGAnimatedString.cpp: (WebCore::SVGAnimatedStringAnimator::addAnimatedTypes): * svg/SVGAnimatedString.h: (SVGAnimatedStringAnimator): * svg/SVGAnimatedTransformList.cpp: (WebCore::SVGAnimatedTransformListAnimator::SVGAnimatedTransformListAnimator): (WebCore::SVGAnimatedTransformListAnimator::constructFromString): (WebCore::SVGAnimatedTransformListAnimator::addAnimatedTypes): (WebCore::SVGAnimatedTransformListAnimator::calculateDistance): * svg/SVGAnimatedTransformList.h: (SVGAnimatedTransformListAnimator): * svg/SVGAnimatedTypeAnimator.h: (SVGAnimatedTypeAnimator): (WebCore::SVGAnimatedTypeAnimator::calculateFromAndToValues): (WebCore::SVGAnimatedTypeAnimator::calculateFromAndByValues): (WebCore::SVGAnimatedTypeAnimator::setContextElement): 2012-04-25 Andreas Kling <kling@webkit.org> Shrink RenderText by 8 bytes on 64-bit. <http://webkit.org/b/84828> Reviewed by Maciej Stachowiak. Reorder the members so that the bits in RenderText falls into the padding at the end of RenderObject on 64-bit. Updated the compile-time size assertion to account for the new object structure. This shrinks RenderText from 104 to 96 bytes on 64-bit release builds. * rendering/RenderText.cpp: (SameSizeAsRenderText): (WebCore::RenderText::RenderText): * rendering/RenderText.h: (RenderText): 2012-04-25 Raymond Toy <rtoy@google.com> No audio from MediaElementAudioSourceNode https://bugs.webkit.org/show_bug.cgi?id=84669 MediaElementAudioSourceNode needs custom propagatesSilence() to return false to indicate the node never propagates silence. Reviewed by Chris Rogers. * Modules/webaudio/MediaElementAudioSourceNode.h: (MediaElementAudioSourceNode): Add propagatesSilence(). 2012-04-25 Xianzhu Wang <wangxianzhu@chromium.org> Web Inspector: Incorrect highlight position of inspected element in a scrolled page https://bugs.webkit.org/show_bug.cgi?id=84755 Reviewed by Pavel Feldman. Test: inspector/elements/highlight-node-scroll.html * inspector/DOMNodeHighlighter.cpp: Ensures the highlight position is in page coordinates. 2012-04-24 Yury Semikhatsky <yurys@chromium.org> Unreviewed. Revert part of the change r115063 which commented out real worker creation. It was commited by mistake. * inspector/front-end/HeapSnapshotProxy.js: (WebInspector.HeapSnapshotWorker): 2012-04-24 Jon Lee <jonlee@apple.com> New Notification constructor do not take into account security origin permissions https://bugs.webkit.org/show_bug.cgi?id=84825 <rdar://problem/11315405> Reviewed by Darin Adler. Tests requires support for notifications on Mac (see 79492). When the task timer fires, we should check to see that the notification has permission to show. If not, we fire the onError event. * notifications/Notification.cpp: (WebCore::Notification::Notification): Since the timer may show, or call the onerror event, we rename it from m_showTaskTimer. to m_taskTimer. (WebCore::Notification::dispatchErrorEvent): The default constructor of ErrorEvent doesn't create the proper event object. Create it using Event::create(). (WebCore::Notification::taskTimerFired): Check to see that we have permission first. * notifications/Notification.h: (Notification): 2012-04-24 Simon Fraser <simon.fraser@apple.com> Add a logging channel and some ouput for compositing https://bugs.webkit.org/show_bug.cgi?id=84817 Reviewed by Darin Adler. Add a logging channel called "Compositing". Output useful information to this channel, including a line for each composited layer, its composited bounds, the reason it was composited, the backing store megapixels, and a count of total composited layers and total backing store megapixels. * platform/Logging.cpp: (WebCore): (WebCore::getChannelFromName): * platform/Logging.h: (WebCore): * platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::backingStoreArea): * platform/graphics/GraphicsLayer.h: (GraphicsLayer): * platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::backingStoreArea): (WebCore): * platform/graphics/ca/GraphicsLayerCA.h: (GraphicsLayerCA): * platform/mac/LoggingMac.mm: (WebCore::initializeLoggingChannelsIfNecessary): * rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::nameForLayer): (WebCore::RenderLayerBacking::backingStoreArea): (WebCore): * rendering/RenderLayerBacking.h: (RenderLayerBacking): * rendering/RenderLayerCompositor.cpp: (WebCore): (WebCore::compositingLogEnabled): (WebCore::RenderLayerCompositor::RenderLayerCompositor): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::logCompositingInfo): (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree): (WebCore::RenderLayerCompositor::updateLayerTreeGeometry): (WebCore::RenderLayerCompositor::reasonForCompositing): * rendering/RenderLayerCompositor.h: (RenderLayerCompositor): 2012-04-24 Kulanthaivel Palanichamy <kulanthaivel@codeaurora.org> getMatchedCSSRules() should return null when the second argument is an unrecognized pseudo-element name https://bugs.webkit.org/show_bug.cgi?id=83298 Reviewed by Ojan Vafai. I couldn't find any specification or any meaningful discussion on this API, but I assume that it shouldn't be any different from window.getComputedStyle() as far as the parameters are concerned. Test: fast/dom/Window/getMatchedCSSRules-with-invalid-pseudo-elements.html * page/DOMWindow.cpp: (WebCore::DOMWindow::getMatchedCSSRules): * page/DOMWindow.idl: 2012-04-24 Anders Carlsson <andersca@apple.com> overflow: hidden on the main frame is broken with threaded scrolling https://bugs.webkit.org/show_bug.cgi?id=84819 <rdar://problem/10920677> Reviewed by Darin Adler. Pass along the horizontal and vertical scrollbar modes to the scrolling tree and use it to determine if wheel events should be handled or not. This matches what we do for non-threaded scrolling. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::ScrollingCoordinator::frameViewLayoutUpdated): (WebCore::ScrollingCoordinator::setScrollParameters): * page/scrolling/ScrollingCoordinator.h: (ScrollParameters): * page/scrolling/ScrollingTreeNode.cpp: (WebCore::ScrollingTreeNode::ScrollingTreeNode): (WebCore::ScrollingTreeNode::update): * page/scrolling/ScrollingTreeNode.h: (WebCore::ScrollingTreeNode::canHaveScrollbars): (ScrollingTreeNode): * page/scrolling/ScrollingTreeState.cpp: (WebCore::ScrollingTreeState::ScrollingTreeState): (WebCore::ScrollingTreeState::setHorizontalScrollbarMode): (WebCore): (WebCore::ScrollingTreeState::setVerticalScrollbarMode): * page/scrolling/ScrollingTreeState.h: (WebCore::ScrollingTreeState::horizontalScrollbarMode): (ScrollingTreeState): (WebCore::ScrollingTreeState::verticalScrollbarMode): * page/scrolling/mac/ScrollingTreeNodeMac.mm: (WebCore::ScrollingTreeNodeMac::handleWheelEvent): 2012-04-24 Adrienne Walker <enne@google.com> [chromium] Don't call calculateRenderPasses in CCLayerTreeHostImpl::scrollBegin() https://bugs.webkit.org/show_bug.cgi?id=84807 Reviewed by James Robinson. Instead of calculate render passes and quads and tracking damage, simply calculate the updated render layer list, which is what is needed for scrolling. This prevents a willDraw/didDraw mismatch on layers. * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::calculateRenderSurfaceLayerList): (WebCore): (WebCore::CCLayerTreeHostImpl::calculateRenderPasses): (WebCore::CCLayerTreeHostImpl::ensureMostRecentRenderSurfaceLayerList): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (CCLayerTreeHostImpl): 2012-04-24 Dana Jansens <danakj@chromium.org> [chromium] Unbounded draws should use clip to limit their damage to opaque tracking https://bugs.webkit.org/show_bug.cgi?id=84494 Reviewed by Adrienne Walker. Unit test: PlatformContextSkiaTest.UnboundedDrawsAreClipped * platform/graphics/skia/OpaqueRegionSkia.cpp: (WebCore::OpaqueRegionSkia::didDrawRect): (WebCore::OpaqueRegionSkia::didDrawPath): (WebCore::OpaqueRegionSkia::didDrawPoints): (WebCore::OpaqueRegionSkia::didDrawBounded): (WebCore::OpaqueRegionSkia::didDrawUnbounded): * platform/graphics/skia/OpaqueRegionSkia.h: (OpaqueRegionSkia): 2012-04-24 Alexis Menard <alexis.menard@openbossa.org> Implement createTBody for table element. https://bugs.webkit.org/show_bug.cgi?id=84465 Reviewed by Ojan Vafai. Implement createTBody of table element to allow creating tbodies from JS. It's following the specification http://dev.w3.org/html5/spec/the-table-element.html#dom-table-createtbody. Tests: fast/table/table-create-tbody-existing-tbody.html fast/table/table-create-tbody-multiple-tbody.html fast/table/table-create-tbody.html * html/HTMLTableElement.cpp: (WebCore::HTMLTableElement::createTBody): (WebCore): * html/HTMLTableElement.h: (HTMLTableElement): * html/HTMLTableElement.idl: 2012-04-24 Anders Carlsson <andersca@apple.com> ScrollingCoordinator::setScrollParameters should take a single struct https://bugs.webkit.org/show_bug.cgi?id=84816 Reviewed by Andreas Kling. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::ScrollingCoordinator::frameViewLayoutUpdated): (WebCore::ScrollingCoordinator::setScrollParameters): * page/scrolling/ScrollingCoordinator.h: (ScrollingCoordinator): (ScrollParameters): * page/scrolling/ScrollingCoordinatorNone.cpp: (WebCore::ScrollingCoordinator::setScrollParameters): * page/scrolling/chromium/ScrollingCoordinatorChromium.cpp: (WebCore::ScrollingCoordinator::setScrollParameters): 2012-04-24 Adam Klein <adamk@chromium.org> Remove unused undefined() method from ScriptValue https://bugs.webkit.org/show_bug.cgi?id=84751 Reviewed by Kentaro Hara. * bindings/js/ScriptValue.h: (ScriptValue): * bindings/v8/ScriptValue.h: (ScriptValue): 2012-04-24 Yong Li <yoli@rim.com> ASSERT failure in RenderLayer::computeRepaintRects https://bugs.webkit.org/show_bug.cgi?id=84480 Reviewed by Simon Fraser. Update visibility status if necessary before updating compositing state in RenderLayer::styleChanged(). No new tests because this is obviously right thing to do and creating new test seems too much for this small change. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::styleChanged): 2012-04-24 Kent Tamura <tkent@chromium.org> Calendar Picker: Open a calendar picker by keyboard operation https://bugs.webkit.org/show_bug.cgi?id=84680 Reviewed by Kentaro Hara. - Open a calendar picker by the down arrow key. - Remove stepping down/up by keyboard and wheel operations. This behavior was for text fields with spin buttons. Because the date type doesn't have spin buttons, we should remove this behavior. No new tests for opening a calendar picker. This behavior is not testable by DRT yet. For removal of stepping up/down, fast/forms/date/date-stepup-stepdown-from-renderer.html is updated. * html/BaseDateAndTimeInputType.cpp: (WebCore::BaseDateAndTimeInputType::handleKeydownEvent): Check shouldHaveSpinButton() before spin button key operations. (WebCore::BaseDateAndTimeInputType::handleWheelEvent): Check shouldHaveSpinButton() before spin button wheel operations. * html/BaseDateAndTimeInputType.h: (BaseDateAndTimeInputType): Make handleKeydownEvent() protected because a subclass overrides it. * html/DateInputType.cpp: (WebCore::DateInputType::handleKeydownEvent): Open a calendar picker by the down arrow key. * html/DateInputType.h: (DateInputType): Add handleKeydownEvent() declaration. * html/shadow/CalendarPickerElement.h: (CalendarPickerElement): Make openPopup() public because DateInputType calls it. 2012-04-24 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r115099, r115102, and r115127. http://trac.webkit.org/changeset/115099 http://trac.webkit.org/changeset/115102 http://trac.webkit.org/changeset/115127 https://bugs.webkit.org/show_bug.cgi?id=84809 Made html5lib/runner.html crash, spot fix didn't help so rolling out so original author can do over. (Requested by kling on #webkit). * dom/Element.cpp: (WebCore::Element::parserSetAttributes): (WebCore::Element::normalizeAttributes): * dom/Element.h: (Element): * dom/ElementAttributeData.cpp: (WebCore::AttributeVector::removeAttribute): (WebCore): * dom/ElementAttributeData.h: (AttributeVector): (WebCore::AttributeVector::AttributeVector): (WebCore): (WebCore::AttributeVector::getAttributeItem): (WebCore::AttributeVector::getAttributeItemIndex): (WebCore::AttributeVector::insertAttribute): (WebCore::ElementAttributeData::getAttributeItem): (WebCore::ElementAttributeData::getAttributeItemIndex): (WebCore::ElementAttributeData::attributeVector): (WebCore::ElementAttributeData::clonedAttributeVector): (ElementAttributeData): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::createHTMLElementFromSavedElement): * html/parser/HTMLToken.h: (WebCore::AtomicHTMLToken::AtomicHTMLToken): * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processFakeStartTag): (WebCore::HTMLTreeBuilder::attributesForIsindexInput): * html/parser/HTMLTreeBuilder.h: * html/parser/TextDocumentParser.cpp: (WebCore::TextDocumentParser::insertFakePreElement): * xml/XMLErrors.cpp: (WebCore::createXHTMLParserErrorHeader): (WebCore::XMLErrors::insertErrorMessageBlock): * xml/parser/MarkupTokenBase.h: (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase): (WebCore::AtomicMarkupTokenBase::getAttributeItem): (WebCore::AtomicMarkupTokenBase::attributes): (AtomicMarkupTokenBase): (WebCore::::initializeAttributes): * xml/parser/XMLToken.h: (WebCore::AtomicXMLToken::AtomicXMLToken): 2012-04-24 Jeffrey Pfau <jpfau@apple.com> Prevent drag and drop from setting file URLs https://bugs.webkit.org/show_bug.cgi?id=76596 Reviewed by Enrica Casucci. Blacklisted file URLs from being set via dataTransfer.setData for specific types. * platform/mac/ClipboardMac.mm: (WebCore::ClipboardMac::setData): 2012-04-24 Enrica Casucci <enrica@apple.com> REGRESSION (r109022) Safari not placing service data on pasteboard. https://bugs.webkit.org/show_bug.cgi?id=84766 <rdar://problem/11085756> The support for OS X services requires that the write operations to the pasteboard occur synchronously. This behavior was changed with r109022. This change removes the original synchronous call to the WebProcess to perform the pasteboard write that had become asynchronous after r109022. It implements instead a synchronous call to retrive the content to be placed in the pasteboard. Reviewed by Alexey Proskuryakov. * WebCore.exp.in: * editing/Editor.h: * editing/mac/EditorMac.mm: (WebCore::Editor::writeSelectionToPasteboard): (WebCore::Editor::stringSelectionForPasteboard): Added. (WebCore::Editor::dataSelectionForPasteboard): Added. * platform/Pasteboard.h: * platform/mac/PasteboardMac.mm: (WebCore::Pasteboard::getStringSelection): Added. (WebCore::Pasteboard::getDataSelection): Added. (WebCore::Pasteboard::writeSelectionForTypes): (WebCore::Pasteboard::writeSelection): 2012-04-24 Dana Jansens <danakj@chromium.org> [chromium] Image masks are considered opaque incorrectly https://bugs.webkit.org/show_bug.cgi?id=84275 Reviewed by Adrienne Walker. Match the behaviour of SkCanvas layers more closely while tracking opaque paints. SkCanvas layers actually act as a separate device (ie. pixels) and when the layer is popped off, the pixels are copied down to the layer below. While we can use the total clip to decide what pixels the the drawing operation will affect in the final device, the blending down through layers needs to consider each layer carefully. In this case the image mask is drawn into a layer which is copied down using the DestinationIn operation. Since the layer contains non-opaque pixels, the DestinationIn copy can destroy opaque areas in the next layer. We add OpaqueRegionSkia::FillByCopy to distinguish the case where we are copying a block of pixels, and the alpha values are essentially unknown. Unit test: PlatformContextSkiaTest.trackImageMask PlatformContextSkiaTest.trackImageMaskWithOpaqueRect * platform/graphics/skia/OpaqueRegionSkia.cpp: (WebCore::paintIsOpaque): (WebCore::OpaqueRegionSkia::applyOpaqueRegionFromLayer): (WebCore::OpaqueRegionSkia::pushCanvasLayer): (WebCore::OpaqueRegionSkia::popCanvasLayer): (WebCore::OpaqueRegionSkia::didDrawRect): (WebCore::OpaqueRegionSkia::didDrawPath): (WebCore::OpaqueRegionSkia::didDrawPoints): (WebCore::OpaqueRegionSkia::didDrawBounded): (WebCore::OpaqueRegionSkia::didDraw): (WebCore::OpaqueRegionSkia::didDrawUnbounded): (WebCore::OpaqueRegionSkia::markRectAsOpaque): (WebCore::OpaqueRegionSkia::markRectAsNonOpaque): (WebCore::OpaqueRegionSkia::markAllAsNonOpaque): * platform/graphics/skia/OpaqueRegionSkia.h: (OpaqueRegionSkia): (CanvasLayerState): * platform/graphics/skia/PlatformContextSkia.cpp: (WebCore::PlatformContextSkia::restoreLayer): 2012-04-24 Alexandru Chiculita <achicu@adobe.com> CSS Shaders: Repainting the FECustomFilter requires full source image https://bugs.webkit.org/show_bug.cgi?id=76689 Reviewed by Dean Jackson.. When a pixel of a filtered layer changes we need to update the whole bounding box of the layer and not just the dirty rectangle. That's because the shader might change the color of any of the pixels inside the box. Added tests where a shader is moving and rotating the contents and the actual dirty box of the source image is not the same as the output dirty rectangle. Tests: css3/filters/custom/filter-repaint-custom-clipped.html css3/filters/custom/filter-repaint-custom-rotated.html css3/filters/custom/filter-repaint-custom.html * rendering/FilterEffectRenderer.cpp: (WebCore::FilterEffectRenderer::FilterEffectRenderer): (WebCore::FilterEffectRenderer::build): (WebCore::FilterEffectRenderer::computeSourceImageRectForDirtyRect): * rendering/FilterEffectRenderer.h: (FilterEffectRenderer): (WebCore::FilterEffectRenderer::hasCustomShaderFilter): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect): 2012-04-24 Alexis Menard <alexis.menard@openbossa.org> Replace occurences of style selector from variables and methods names by style resolver. https://bugs.webkit.org/show_bug.cgi?id=84765 Reviewed by Andreas Kling. Rename methods and variables to follow the new name StyleResolver. It requires to update the local variables, methods parameters, and function names to match the new name and to remove the concept of "selector" to avoid clashing with the CSS concept. The next and last patch will be to rename CSSStyleSelector file and update the includes. No new tests : just renaming the variables and method names. No behavior changes expected. * css/CSSFontSelector.cpp: (WebCore::CSSFontSelector::dispatchInvalidationCallbacks): * css/CSSGradientValue.cpp: (WebCore::CSSGradientValue::addStops): * css/CSSPageRule.cpp: (WebCore::CSSPageRule::setSelectorText): * css/CSSStyleRule.cpp: (WebCore::CSSStyleRule::setSelectorText): * css/CSSStyleSheet.cpp: (WebCore::StyleSheetInternal::styleSheetChanged): * css/MediaQueryEvaluator.cpp: (WebCore::MediaQueryEvaluator::eval): * css/MediaQueryMatcher.cpp: (WebCore::MediaQueryMatcher::prepareEvaluator): (WebCore::MediaQueryMatcher::styleResolverChanged): * css/MediaQueryMatcher.h: (MediaQueryMatcher): * css/PropertySetCSSStyleDeclaration.cpp: (WebCore::StyleRuleCSSStyleDeclaration::setNeedsStyleRecalc): * css/StyleBuilder.cpp: (WebCore::ApplyPropertyExpanding::applyInheritValue): (WebCore::ApplyPropertyExpanding::applyInitialValue): (WebCore::ApplyPropertyExpanding::applyValue): (WebCore::ApplyPropertyDefaultBase::applyInheritValue): (WebCore::ApplyPropertyDefaultBase::applyInitialValue): (WebCore::ApplyPropertyDefault::applyValue): (WebCore::ApplyPropertyNumber::applyValue): (WebCore::ApplyPropertyStyleImage::applyValue): (WebCore::ApplyPropertyAuto::applyInheritValue): (WebCore::ApplyPropertyAuto::applyInitialValue): (WebCore::ApplyPropertyAuto::applyValue): (WebCore::ApplyPropertyClip::convertToLength): (WebCore::ApplyPropertyClip::applyInheritValue): (WebCore::ApplyPropertyClip::applyInitialValue): (WebCore::ApplyPropertyClip::applyValue): (WebCore::ApplyPropertyColor::applyInheritValue): (WebCore::ApplyPropertyColor::applyInitialValue): (WebCore::ApplyPropertyColor::applyValue): (WebCore::ApplyPropertyColor::applyColorValue): (WebCore::ApplyPropertyDirection::applyValue): (WebCore::ApplyPropertyLength::applyValue): (WebCore::ApplyPropertyString::applyValue): (WebCore::ApplyPropertyBorderRadius::applyValue): (WebCore::ApplyPropertyFillLayer::applyInheritValue): (WebCore::ApplyPropertyFillLayer::applyInitialValue): (WebCore::ApplyPropertyFillLayer::applyValue): (WebCore::ApplyPropertyComputeLength::applyValue): (WebCore::ApplyPropertyFont::applyInheritValue): (WebCore::ApplyPropertyFont::applyInitialValue): (WebCore::ApplyPropertyFont::applyValue): (WebCore::ApplyPropertyFontSize::applyInheritValue): (WebCore::ApplyPropertyFontSize::applyInitialValue): (WebCore::ApplyPropertyFontSize::applyValue): (WebCore::ApplyPropertyFontWeight::applyValue): (WebCore::ApplyPropertyFontVariantLigatures::applyInheritValue): (WebCore::ApplyPropertyFontVariantLigatures::applyInitialValue): (WebCore::ApplyPropertyFontVariantLigatures::applyValue): (WebCore::ApplyPropertyBorderImage::applyValue): (WebCore::ApplyPropertyBorderImageModifier::applyInheritValue): (WebCore::ApplyPropertyBorderImageModifier::applyInitialValue): (WebCore::ApplyPropertyBorderImageModifier::applyValue): (WebCore::ApplyPropertyBorderImageSource::applyValue): (WebCore::ApplyPropertyCounter::applyInheritValue): (WebCore::ApplyPropertyCounter::applyValue): (WebCore::ApplyPropertyCursor::applyInheritValue): (WebCore::ApplyPropertyCursor::applyInitialValue): (WebCore::ApplyPropertyCursor::applyValue): (WebCore::ApplyPropertyTextAlign::applyValue): (WebCore::ApplyPropertyTextDecoration::applyValue): (WebCore::ApplyPropertyUnicodeBidi::applyValue): (WebCore::ApplyPropertyLineHeight::applyValue): (WebCore::ApplyPropertyPageSize::applyValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyInheritValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyInitialValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyValue): (WebCore::ApplyPropertyAnimation::map): (WebCore::ApplyPropertyAnimation::applyInheritValue): (WebCore::ApplyPropertyAnimation::applyInitialValue): (WebCore::ApplyPropertyAnimation::applyValue): (WebCore::ApplyPropertyOutlineStyle::applyInheritValue): (WebCore::ApplyPropertyOutlineStyle::applyInitialValue): (WebCore::ApplyPropertyOutlineStyle::applyValue): (WebCore::ApplyPropertyResize::applyValue): (WebCore::ApplyPropertyVerticalAlign::applyValue): (WebCore::ApplyPropertyAspectRatio::applyInheritValue): (WebCore::ApplyPropertyAspectRatio::applyInitialValue): (WebCore::ApplyPropertyAspectRatio::applyValue): (WebCore::ApplyPropertyZoom::resetEffectiveZoom): (WebCore::ApplyPropertyZoom::applyInheritValue): (WebCore::ApplyPropertyZoom::applyInitialValue): (WebCore::ApplyPropertyZoom::applyValue): (WebCore::ApplyPropertyDisplay::isValidDisplayValue): (WebCore::ApplyPropertyDisplay::applyInheritValue): (WebCore::ApplyPropertyDisplay::applyInitialValue): (WebCore::ApplyPropertyDisplay::applyValue): (WebCore::ApplyPropertyFlex::applyInheritValue): (WebCore::ApplyPropertyFlex::applyInitialValue): (WebCore::ApplyPropertyFlex::applyValue): * css/StyleBuilder.h: (WebCore::PropertyHandler::applyInheritValue): (WebCore::PropertyHandler::applyInitialValue): (WebCore::PropertyHandler::applyValue): * css/StyleMedia.cpp: (WebCore::StyleMedia::matchMedium): * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::~Document): (WebCore::Document::setDocType): (WebCore::Document::childrenChanged): (WebCore::Document::setContentLanguage): (WebCore::Document::recalcStyle): (WebCore::Document::updateLayoutIgnorePendingStylesheets): (WebCore::Document::styleForElementIgnoringPendingStylesheets): (WebCore::Document::styleForPage): (WebCore::Document::combineCSSFeatureFlags): (WebCore::Document::resetCSSFeatureFlags): (WebCore::Document::createStyleResolver): (WebCore::Document::clearStyleResolver): (WebCore::Document::clearPageUserSheet): (WebCore::Document::updatePageUserSheet): (WebCore::Document::clearPageGroupUserSheets): (WebCore::Document::updatePageGroupUserSheets): (WebCore::Document::addUserSheet): (WebCore::Document::processHttpEquiv): (WebCore::Document::setSelectedStylesheetSet): (WebCore::Document::removePendingSheet): (WebCore::Document::evaluateMediaQueryList): (WebCore::Document::styleResolverChanged): (WebCore::Document::analyzeStylesheetChange): (WebCore::Document::updateActiveStylesheets): * dom/Document.h: (WebCore::Document::styleResolverIfExists): (WebCore::Document::styleResolver): (Document): * dom/Element.cpp: (WebCore::StyleResolverParentPusher::StyleResolverParentPusher): (WebCore::StyleResolverParentPusher::push): (WebCore::StyleResolverParentPusher::~StyleResolverParentPusher): (StyleResolverParentPusher): (WebCore::Element::attributeChanged): (WebCore::Element::attach): (WebCore::Element::styleForRenderer): (WebCore::Element::recalcStyle): (WebCore::Element::beginParsingChildren): (WebCore::Element::finishParsingChildren): * dom/ProcessingInstruction.cpp: (WebCore::ProcessingInstruction::removedFrom): * dom/ShadowRoot.cpp: (WebCore::ShadowRoot::attach): * dom/ShadowTree.cpp: (WebCore::ShadowTree::recalcShadowTreeStyle): * dom/StyleElement.cpp: (WebCore::StyleElement::removedFromDocument): * editing/EditingStyle.cpp: (WebCore::styleFromMatchedRulesForElement): * history/CachedPage.cpp: (WebCore::CachedPage::restore): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::styleResolver): * html/HTMLCanvasElement.h: (HTMLCanvasElement): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setDisabledState): (WebCore::HTMLLinkElement::process): (WebCore::HTMLLinkElement::removedFrom): (WebCore::HTMLLinkElement::removePendingSheet): * html/HTMLStyleElement.cpp: (WebCore::HTMLStyleElement::registerWithScopingNode): (WebCore::HTMLStyleElement::unregisterWithScopingNode): * html/canvas/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::setFont): * inspector/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::recalcStyleForPseudoStateIfNeeded): (WebCore::InspectorCSSAgent::getMatchedStylesForNode): (WebCore::InspectorCSSAgent::buildArrayForRuleList): (WebCore::InspectorCSSAgent::clearPseudoState): * inspector/InspectorPageAgent.cpp: (WebCore::InspectorPageAgent::updateViewMetrics): * page/DOMWindow.cpp: (WebCore::DOMWindow::getMatchedCSSRules): * page/Frame.cpp: (WebCore::Frame::setPrinting): * page/FrameView.cpp: (WebCore::FrameView::layout): * page/Page.cpp: (WebCore::Page::setViewMode): (WebCore::Page::setNeedsRecalcStyleInAllFrames): (WebCore::Page::allVisitedStateChanged): (WebCore::Page::visitedStateChanged): * page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::KeyframeAnimation): * platform/efl/RenderThemeEfl.cpp: (WebCore::RenderThemeEfl::adjustSliderTrackStyle): (WebCore::RenderThemeEfl::adjustSliderThumbStyle): (WebCore::RenderThemeEfl::adjustCheckboxStyle): (WebCore::RenderThemeEfl::adjustRadioStyle): (WebCore::RenderThemeEfl::adjustButtonStyle): (WebCore::RenderThemeEfl::adjustMenuListStyle): (WebCore::RenderThemeEfl::adjustMenuListButtonStyle): (WebCore::RenderThemeEfl::adjustTextFieldStyle): (WebCore::RenderThemeEfl::adjustTextAreaStyle): (WebCore::RenderThemeEfl::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeEfl::adjustSearchFieldResultsButtonStyle): (WebCore::RenderThemeEfl::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeEfl::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeEfl::adjustSearchFieldStyle): (WebCore::RenderThemeEfl::adjustProgressBarStyle): * platform/gtk/RenderThemeGtk.cpp: (WebCore::RenderThemeGtk::adjustButtonStyle): (WebCore::RenderThemeGtk::adjustMenuListStyle): (WebCore::RenderThemeGtk::adjustMenuListButtonStyle): (WebCore::RenderThemeGtk::adjustSearchFieldResultsButtonStyle): (WebCore::RenderThemeGtk::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeGtk::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeGtk::adjustSearchFieldStyle): (WebCore::RenderThemeGtk::adjustSliderThumbStyle): * platform/qt/RenderThemeQt.cpp: (WebCore::RenderThemeQt::adjustSliderThumbStyle): (WebCore::RenderThemeQt::adjustSearchFieldStyle): (WebCore::RenderThemeQt::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeQt::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeQt::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeQt::adjustInnerSpinButtonStyle): * platform/qt/RenderThemeQtMobile.cpp: (WebCore::RenderThemeQtMobile::adjustButtonStyle): (WebCore::RenderThemeQtMobile::adjustMenuListStyle): * platform/wx/RenderThemeWx.cpp: (WebCore::RenderThemeWx::adjustButtonStyle): * rendering/RenderListBox.cpp: (WebCore::RenderListBox::updateFromElement): (WebCore::RenderListBox::paintItemForeground): * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::fontSelector): * rendering/RenderObject.cpp: (WebCore::RenderObject::getUncachedPseudoStyle): * rendering/RenderRegion.cpp: (WebCore::RenderRegion::styleDidChange): (WebCore::RenderRegion::computeStyleInRegion): * rendering/RenderTextControlSingleLine.cpp: (WebCore::RenderTextControlSingleLine::fontSelector): * rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle): (WebCore::RenderTheme::adjustInputFieldSpeechButtonStyle): * rendering/RenderThemeChromiumSkia.cpp: (WebCore::RenderThemeChromiumSkia::adjustMenuListStyle): (WebCore::RenderThemeChromiumSkia::adjustMenuListButtonStyle): * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::adjustMenuListStyle): (WebCore::RenderThemeMac::adjustSliderThumbStyle): (WebCore::RenderThemeMac::adjustSearchFieldStyle): * rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::setFontFromControlSize): (WebCore::RenderThemeSafari::adjustButtonStyle): (WebCore::RenderThemeSafari::adjustMenuListStyle): (WebCore::RenderThemeSafari::adjustMenuListButtonStyle): (WebCore::RenderThemeSafari::adjustSliderThumbStyle): (WebCore::RenderThemeSafari::adjustSearchFieldStyle): (WebCore::RenderThemeSafari::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeSafari::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeSafari::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeSafari::adjustSearchFieldResultsButtonStyle): * rendering/RenderThemeWin.cpp: (WebCore::RenderThemeWin::adjustInnerSpinButtonStyle): (WebCore::RenderThemeWin::adjustMenuListStyle): (WebCore::RenderThemeWin::adjustMenuListButtonStyle): (WebCore::RenderThemeWin::adjustSearchFieldStyle): (WebCore::RenderThemeWin::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeWin::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeWin::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeWin::adjustSearchFieldResultsButtonStyle): * rendering/RenderThemeWinCE.cpp: (WebCore::RenderThemeWinCE::adjustMenuListStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldResultsButtonStyle): (WebCore::RenderThemeWinCE::adjustMenuListButtonStyle): * rendering/style/StyleGeneratedImage.cpp: (WebCore::StyleGeneratedImage::image): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::computeNewScaledFontForStyle): * svg/SVGElement.cpp: (WebCore::SVGElement::customStyleForRenderer): * svg/SVGFontFaceElement.cpp: (WebCore::SVGFontFaceElement::rebuildFontFace): (WebCore::SVGFontFaceElement::removedFrom): * xml/XMLTreeViewer.cpp: (WebCore::XMLTreeViewer::transformDocumentToTreeView): * xml/parser/XMLDocumentParser.cpp: (WebCore::XMLDocumentParser::end): * xml/parser/XMLDocumentParserLibxml2.cpp: (WebCore::XMLDocumentParser::doEnd): * xml/parser/XMLDocumentParserQt.cpp: (WebCore::XMLDocumentParser::doEnd): * WebCore.exp.in: 2012-04-24 Yael Aharon <yael.aharon@nokia.com> Fixed background is scrolling in http://www.nieuwecode.nl/ in Qt webkit2 https://bugs.webkit.org/show_bug.cgi?id=83980 Reviewed by Simon Fraser. When a fixed position element does not have z-index explicitly specified, it does not create a stacking context. This results in fixed elements scrolling with the content layer. This patch creates a stacking context for fixed positioned elements for the Qt port, by enabling the flag ENABLE_FIXED_POSITION_CREATES_STACKING_CONTEXT. Added a manual test because this patch takes effect only during scrolling. * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::collectMatchingRulesForList): 2012-04-24 Andreas Kling <kling@webkit.org> REGRESSION(r115099): html5lib/runner.html crashes. <http://webkit.org/b/84791> Reviewed by Anders Carlsson. Unbreak and simplify the code that filters attributes on isindex elements. It's perfectly safe to remove elements from a Vector while iterating over it. * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::attributesForIsindexInput): 2012-04-24 Victor Carbune <vcarbune@adobe.com> Extra display logic for the media control panel element https://bugs.webkit.org/show_bug.cgi?id=82476 Reviewed by Eric Carlson. This patch fixes a bug which caused the controls to be displayed when they should remain hidden. Added an extra variable to the panel elements which properly keeps the state of the panel (visible or not). Test: media/video-controls-toggling.html * html/shadow/MediaControlElements.cpp: (WebCore::MediaControlPanelElement::MediaControlPanelElement): Added the variable m_isDisplayed to hold the state whether the panel is visible or not. (WebCore::MediaControlPanelElement::makeOpaque): Showing the panel only if it is visible. (WebCore::MediaControlPanelElement::makeTransparent): Enabled the transition timer which sets the display:none property on the controls. (WebCore::MediaControlPanelElement::setIsDisplayed): Setter for the state variable. (WebCore): * html/shadow/MediaControlElements.h: (MediaControlPanelElement): * html/shadow/MediaControlRootElement.cpp: (WebCore::MediaControlRootElement::show): Updated the panel visibility state. (WebCore::MediaControlRootElement::hide): Updated the panel visibility state. * html/shadow/MediaControlRootElementChromium.cpp: (WebCore::MediaControlRootElementChromium::show): Updated the panel visibility state. (WebCore::MediaControlRootElementChromium::hide): Updated the panel visibility state. 2012-04-24 Alexandru Chiculita <achicu@adobe.com> CSS Shaders: Custom filters painting is broken https://bugs.webkit.org/show_bug.cgi?id=82803 Reviewed by Kenneth Russell. In this patch I moved CSS Shaders file loading notifications from FilterEffectRenderer to the new RenderLayerFilterInfo. That's because FilterEffectRenderer is only used when running the filters in the software pipeline and has a very short lifetime. Due to a recent change FilterEffectRenderer actually gets deleted if the shader is not loaded, so it doesn't live that much to be notified when the shader was actually loaded. Also removed the FilterEffectObserver, that was only used to notify the RenderLayer about the loaded shader. No new tests. This is making existing CSS Shaders tests pass again. Cannot un-skip on Mac for now because the feature is compile time disabled. * WebCore.xcodeproj/project.pbxproj: * platform/graphics/filters/CustomFilterOperation.h: (WebCore::CustomFilterOperation::affectsOpacity): (WebCore::CustomFilterOperation::movesPixels): * platform/graphics/filters/FilterOperations.cpp: (WebCore): (WebCore::FilterOperations::hasCustomFilter): * platform/graphics/filters/FilterOperations.h: (FilterOperations): * platform/graphics/texmap/TextureMapperImageBuffer.cpp: (WebCore::BitmapTextureImageBuffer::applyFilters): * rendering/FilterEffectObserver.h: Removed. * rendering/FilterEffectRenderer.cpp: (WebCore::FilterEffectRenderer::FilterEffectRenderer): (WebCore::FilterEffectRenderer::~FilterEffectRenderer): (WebCore::FilterEffectRenderer::build): * rendering/FilterEffectRenderer.h: (WebCore): (WebCore::FilterEffectRenderer::create): (FilterEffectRenderer): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateOrRemoveFilterEffect): * rendering/RenderLayer.h: * rendering/RenderLayerFilterInfo.cpp: (WebCore::RenderLayerFilterInfo::~RenderLayerFilterInfo): (WebCore::RenderLayerFilterInfo::notifyCustomFilterProgramLoaded): (WebCore): (WebCore::RenderLayerFilterInfo::updateCustomFilterClients): (WebCore::RenderLayerFilterInfo::removeCustomFilterClients): * rendering/RenderLayerFilterInfo.h: (WebCore): (RenderLayerFilterInfo): 2012-04-24 Antti Koivisto <antti@apple.com> Another build fix. Not reviewed. * css/MediaList.cpp: (WebCore::MediaQuerySet::MediaQuerySet): * css/StylePropertySet.cpp: (WebCore::StylePropertySet::StylePropertySet): 2012-04-24 Antti Koivisto <antti@apple.com> Try to fix Qt build. Not reviewed. * css/StyleRule.h: (WebCore::StyleRuleBase::StyleRuleBase): 2012-04-24 Antti Koivisto <antti@apple.com> Implement StyleRule copying https://bugs.webkit.org/show_bug.cgi?id=84752 Reviewed by Andreas Kling. We'll need this for copy-on-write when style sheet data is shared between documents. Implement copy() and copy constructor for style rules their children as needed. The code is not yet used. * css/CSSSelectorList.cpp: (WebCore::CSSSelectorList::CSSSelectorList): (WebCore): * css/CSSSelectorList.h: (CSSSelectorList): * css/MediaList.h: (WebCore::MediaQuerySet::copy): (MediaQuerySet): * css/MediaQuery.cpp: (WebCore::MediaQuery::MediaQuery): (WebCore): * css/MediaQuery.h: (MediaQuery): (WebCore::MediaQuery::copy): * css/MediaQueryExp.h: (WebCore::MediaQueryExp::copy): (MediaQueryExp): * css/StylePropertySet.cpp: (WebCore::StylePropertySet::StylePropertySet): (WebCore): (WebCore::StylePropertySet::copy): * css/StylePropertySet.h: Make this copy parse mode too. As a result ElementAttributeData no longer needs to set it explicitly after copying. (StylePropertySet): * css/StyleRule.cpp: (WebCore::StyleRuleBase::copy): (WebCore): (WebCore::StyleRule::StyleRule): (WebCore::StyleRulePage::StyleRulePage): (WebCore::StyleRuleFontFace::StyleRuleFontFace): (WebCore::StyleRuleBlock::StyleRuleBlock): (WebCore::StyleRuleMedia::StyleRuleMedia): (WebCore::StyleRuleRegion::StyleRuleRegion): * css/StyleRule.h: (StyleRuleBase): (WebCore::StyleRuleBase::StyleRuleBase): (WebCore::StyleRule::copy): (StyleRule): (WebCore::StyleRuleFontFace::copy): (StyleRuleFontFace): (WebCore::StyleRulePage::copy): (StyleRulePage): (StyleRuleBlock): (WebCore::StyleRuleMedia::copy): (StyleRuleMedia): (WebCore::StyleRuleRegion::copy): (StyleRuleRegion): * css/WebKitCSSKeyframesRule.cpp: (WebCore): (WebCore::StyleRuleKeyframes::StyleRuleKeyframes): * css/WebKitCSSKeyframesRule.h: (WebCore): (WebCore::StyleRuleKeyframes::copy): (StyleRuleKeyframes): 2012-04-24 Ryosuke Niwa <rniwa@webkit.org> Revert r115009; It doesn't make necessary changes to NodeRareData and Node. * CMakeLists.txt: * DerivedSources.cpp: * DerivedSources.make: * DerivedSources.pri: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSHTMLCollectionCustom.cpp: (WebCore::getNamedItems): * bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation): * bindings/v8/custom/V8HTMLCollectionCustom.cpp: (WebCore::getNamedItems): * html/CollectionType.h: * html/HTMLCollection.cpp: (WebCore::HTMLCollection::shouldIncludeChildren): (WebCore::HTMLCollection::isAcceptableElement): * html/HTMLFormCollection.cpp: (WebCore::HTMLFormCollection::HTMLFormCollection): * html/RadioNodeList.cpp: Removed. * html/RadioNodeList.h: Removed. * html/RadioNodeList.idl: Removed. 2012-04-24 Chris Rogers <crogers@google.com> WaveTable should normalize to 0dbFS instead of -6dbFS https://bugs.webkit.org/show_bug.cgi?id=84644 Reviewed by Kenneth Russell. No new tests. Oscillator tests will be rebaselined after landing, since several platforms are affected. * Modules/webaudio/WaveTable.cpp: (WebCore::WaveTable::createBandLimitedTables): 2012-04-24 Tommy Widenflycht <tommyw@google.com> MediaStream API: Create a new flag for PeerConnection https://bugs.webkit.org/show_bug.cgi?id=84723 Reviewed by Dimitri Glazkov. To allow Chrome to make the GetUserMedia functionality available by default we need another flag for the PeerConnection related parts. This new flag is in addition to the general media stream flag, and both need to be enabled for PeerConnection object creation. No code behavior changes. * bindings/generic/RuntimeEnabledFeatures.cpp: (WebCore): * bindings/generic/RuntimeEnabledFeatures.h: (RuntimeEnabledFeatures): (WebCore::RuntimeEnabledFeatures::peerConnectionEnabled): (WebCore::RuntimeEnabledFeatures::setPeerConnectionEnabled): (WebCore::RuntimeEnabledFeatures::webkitDeprecatedPeerConnectionEnabled): (WebCore::RuntimeEnabledFeatures::webkitPeerConnection00Enabled): 2012-04-24 Joe Mason <jmason@rim.com> [BlackBerry] Revert broken changes to authentication dialog https://bugs.webkit.org/show_bug.cgi?id=80135 Reviewed by Antonio Gomes. The previous patches from this bug caused an infinite loop when using digest auth; apparently they were only tested with basic. * platform/blackberry/PageClientBlackBerry.h: * platform/network/blackberry/NetworkJob.cpp: (WebCore::NetworkJob::handleAuthHeader): (WebCore::NetworkJob::sendRequestWithCredentials): 2012-04-24 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> Fix wrong ASSERT() in findAttributeInVector() https://bugs.webkit.org/show_bug.cgi?id=84756 Unreviewed build fix. * dom/ElementAttributeData.h: (WebCore::findAttributeInVector): 2012-04-24 Anders Carlsson <andersca@apple.com> Update the scroll layer position on the main thread when viewing full-frame images https://bugs.webkit.org/show_bug.cgi?id=84754 <rdar://problem/11193304> Reviewed by Andreas Kling. Showing really big images can be slow sometimes and in that case it's better to update the scroll layer position on the main thread, which will avoid flashing white. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::ScrollingCoordinator::updateShouldUpdateScrollLayerPositionOnMainThread): 2012-04-24 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> Use Vector<Attribute> directly instead of encapsulating it in AttributeVector https://bugs.webkit.org/show_bug.cgi?id=84413 Reviewed by Andreas Kling. As commented in https://bugs.webkit.org/show_bug.cgi?id=79963#c16 we do not usually subclass basic types like Vector. This patch changes code to use Vector<Attribute> directly and move around the functionality of the former methods to more specific helper functions or inline code at the callers. * dom/Element.cpp: (WebCore::Element::parserSetAttributes): (WebCore::Element::normalizeAttributes): * dom/Element.h: (Element): * dom/ElementAttributeData.cpp: * dom/ElementAttributeData.h: (WebCore::getAttributeFromVector): (WebCore::ElementAttributeData::getAttributeItem): (ElementAttributeData): (WebCore::ElementAttributeData::attributeVector): (WebCore::ElementAttributeData::clonedAttributeVector): (WebCore::ElementAttributeData::getAttributeItemIndex): (WebCore): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::createHTMLElementFromSavedElement): * html/parser/HTMLToken.h: (WebCore::AtomicHTMLToken::AtomicHTMLToken): * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processFakeStartTag): (WebCore::HTMLTreeBuilder::attributesForIsindexInput): * html/parser/HTMLTreeBuilder.h: * html/parser/TextDocumentParser.cpp: (WebCore::TextDocumentParser::insertFakePreElement): * xml/XMLErrors.cpp: (WebCore::createXHTMLParserErrorHeader): (WebCore::XMLErrors::insertErrorMessageBlock): * xml/parser/MarkupTokenBase.h: (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase): (WebCore::AtomicMarkupTokenBase::getAttributeItem): (WebCore::AtomicMarkupTokenBase::attributes): (AtomicMarkupTokenBase): (WebCore::::initializeAttributes): * xml/parser/XMLToken.h: (WebCore::AtomicXMLToken::AtomicXMLToken): 2012-04-24 Alexis Menard <alexis.menard@openbossa.org> Rename CSSStyleSelector class to StyleResolver. https://bugs.webkit.org/show_bug.cgi?id=84734 Reviewed by Andreas Kling. The name CSSStyleSelector is confusing as it conflicts a bit with the CSS concept of selectors. One could think it's an encapsulation of the CSS selectors but it's not, in fact this class is responsible of finding the RenderStyle for a given element. This is the first patch as I will later rename the files, and then rename the local variables. No new tests : renaming, no behavior changes should appear. * css/CSSCalculationValue.cpp: (WebCore::CSSCalcPrimitiveValue::toCalcValue): * css/CSSFontSelector.cpp: (WebCore::CSSFontSelector::dispatchInvalidationCallbacks): * css/CSSParser.cpp: (WebCore::CSSParser::parseSizeParameter): * css/CSSStyleSelector.cpp: (RuleSet): (WebCore::RuleSet::features): (WebCore): (WebCore::StyleResolver::StyleResolver): (WebCore::StyleResolver::addAuthorRulesAndCollectUserRulesFromSheets): (WebCore::makeRuleSet): (WebCore::StyleResolver::collectFeatures): (WebCore::StyleResolver::determineScope): (WebCore::StyleResolver::ruleSetForScope): (WebCore::StyleResolver::appendAuthorStylesheets): (WebCore::StyleResolver::setupScopeStack): (WebCore::StyleResolver::pushScope): (WebCore::StyleResolver::popScope): (WebCore::StyleResolver::pushParentElement): (WebCore::StyleResolver::popParentElement): (WebCore::StyleResolver::pushParentShadowRoot): (WebCore::StyleResolver::popParentShadowRoot): (WebCore::StyleResolver::addKeyframeStyle): (WebCore::StyleResolver::~StyleResolver): (WebCore::StyleResolver::sweepMatchedPropertiesCache): (WebCore::StyleResolver::Features::Features): (WebCore::StyleResolver::Features::~Features): (WebCore::StyleResolver::Features::add): (WebCore::StyleResolver::Features::clear): (WebCore::StyleResolver::addMatchedProperties): (WebCore::StyleResolver::addElementStyleProperties): (WebCore::StyleResolver::collectMatchingRules): (WebCore::StyleResolver::collectMatchingRulesForRegion): (WebCore::StyleResolver::sortAndTransferMatchedRules): (WebCore::StyleResolver::matchScopedAuthorRules): (WebCore::StyleResolver::matchAuthorRules): (WebCore::StyleResolver::matchUserRules): (WebCore::StyleResolver::matchUARules): (WebCore::StyleResolver::collectMatchingRulesForList): * css/CSSStyleSelector.h: (StyleResolver): (Features): * css/MediaQueryEvaluator.cpp: (WebCore::MediaQueryEvaluator::eval): * css/MediaQueryEvaluator.h: (WebCore): (MediaQueryEvaluator): * css/MediaQueryMatcher.cpp: (WebCore::MediaQueryMatcher::prepareEvaluator): * css/SVGCSSStyleSelector.cpp: (WebCore::StyleResolver::applySVGProperty): * css/StyleBuilder.cpp: (WebCore::ApplyPropertyExpanding::applyInheritValue): (WebCore::ApplyPropertyExpanding::applyInitialValue): (WebCore::ApplyPropertyExpanding::applyValue): (WebCore::ApplyPropertyDefaultBase::applyInheritValue): (WebCore::ApplyPropertyDefaultBase::applyInitialValue): (WebCore::ApplyPropertyDefaultBase::applyValue): (WebCore::ApplyPropertyDefault::applyValue): (WebCore::ApplyPropertyNumber::applyValue): (WebCore::ApplyPropertyStyleImage::applyValue): (WebCore::ApplyPropertyAuto::applyInheritValue): (WebCore::ApplyPropertyAuto::applyInitialValue): (WebCore::ApplyPropertyAuto::applyValue): (WebCore::ApplyPropertyClip::convertToLength): (WebCore::ApplyPropertyClip::applyInheritValue): (WebCore::ApplyPropertyClip::applyInitialValue): (WebCore::ApplyPropertyClip::applyValue): (WebCore::ApplyPropertyColor::applyInheritValue): (WebCore::ApplyPropertyColor::applyInitialValue): (WebCore::ApplyPropertyColor::applyValue): (WebCore::ApplyPropertyColor::applyColorValue): (WebCore::ApplyPropertyDirection::applyValue): (WebCore::ApplyPropertyLength::applyValue): (WebCore::ApplyPropertyString::applyValue): (WebCore::ApplyPropertyBorderRadius::applyValue): (WebCore::ApplyPropertyFillLayer::applyInheritValue): (WebCore::ApplyPropertyFillLayer::applyInitialValue): (WebCore::ApplyPropertyFillLayer::applyValue): (WebCore::ApplyPropertyComputeLength::applyValue): (WebCore::ApplyPropertyFont::applyInheritValue): (WebCore::ApplyPropertyFont::applyInitialValue): (WebCore::ApplyPropertyFont::applyValue): (WebCore::ApplyPropertyFontSize::applyInheritValue): (WebCore::ApplyPropertyFontSize::applyInitialValue): (WebCore::ApplyPropertyFontSize::applyValue): (WebCore::ApplyPropertyFontWeight::applyValue): (WebCore::ApplyPropertyFontVariantLigatures::applyInheritValue): (WebCore::ApplyPropertyFontVariantLigatures::applyInitialValue): (WebCore::ApplyPropertyFontVariantLigatures::applyValue): (WebCore::ApplyPropertyBorderImage::applyValue): (WebCore::ApplyPropertyBorderImageModifier::applyInheritValue): (WebCore::ApplyPropertyBorderImageModifier::applyInitialValue): (WebCore::ApplyPropertyBorderImageModifier::applyValue): (WebCore::ApplyPropertyBorderImageSource::applyValue): (WebCore::ApplyPropertyCounter::emptyFunction): (WebCore::ApplyPropertyCounter::applyInheritValue): (WebCore::ApplyPropertyCounter::applyValue): (WebCore::ApplyPropertyCursor::applyInheritValue): (WebCore::ApplyPropertyCursor::applyInitialValue): (WebCore::ApplyPropertyCursor::applyValue): (WebCore::ApplyPropertyTextAlign::applyValue): (WebCore::ApplyPropertyTextDecoration::applyValue): (WebCore::ApplyPropertyUnicodeBidi::applyValue): (WebCore::ApplyPropertyLineHeight::applyValue): (WebCore::ApplyPropertyPageSize::applyInheritValue): (WebCore::ApplyPropertyPageSize::applyInitialValue): (WebCore::ApplyPropertyPageSize::applyValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyInheritValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyInitialValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyValue): (WebCore): (WebCore::ApplyPropertyAnimation::map): (WebCore::ApplyPropertyAnimation::applyInheritValue): (WebCore::ApplyPropertyAnimation::applyInitialValue): (WebCore::ApplyPropertyAnimation::applyValue): (WebCore::ApplyPropertyOutlineStyle::applyInheritValue): (WebCore::ApplyPropertyOutlineStyle::applyInitialValue): (WebCore::ApplyPropertyOutlineStyle::applyValue): (WebCore::ApplyPropertyResize::applyValue): (WebCore::ApplyPropertyVerticalAlign::applyValue): (WebCore::ApplyPropertyAspectRatio::applyInheritValue): (WebCore::ApplyPropertyAspectRatio::applyInitialValue): (WebCore::ApplyPropertyAspectRatio::applyValue): (WebCore::ApplyPropertyZoom::resetEffectiveZoom): (WebCore::ApplyPropertyZoom::applyInheritValue): (WebCore::ApplyPropertyZoom::applyInitialValue): (WebCore::ApplyPropertyZoom::applyValue): (WebCore::ApplyPropertyDisplay::isValidDisplayValue): (WebCore::ApplyPropertyDisplay::applyInheritValue): (WebCore::ApplyPropertyDisplay::applyInitialValue): (WebCore::ApplyPropertyDisplay::applyValue): (WebCore::ApplyPropertyFlex::applyInheritValue): (WebCore::ApplyPropertyFlex::applyInitialValue): (WebCore::ApplyPropertyFlex::applyValue): (WebCore::StyleBuilder::StyleBuilder): * css/StyleBuilder.h: (WebCore): (PropertyHandler): (WebCore::PropertyHandler::applyInheritValue): (WebCore::PropertyHandler::applyInitialValue): (WebCore::PropertyHandler::applyValue): * css/StyleMedia.cpp: (WebCore::StyleMedia::matchMedium): * css/WebKitCSSKeyframesRule.cpp: (WebCore::WebKitCSSKeyframesRule::setName): * css/WebKitCSSMatrix.cpp: (WebCore::WebKitCSSMatrix::setMatrixValue): * dom/Document.cpp: (WebCore::Document::recalcStyle): (WebCore::Document::createStyleSelector): (WebCore::Document::testAddedStylesheetRequiresStyleRecalc): * dom/Document.h: (WebCore): (WebCore::Document::styleSelectorIfExists): (WebCore::Document::styleSelector): (Document): * dom/Element.cpp: (StyleSelectorParentPusher): (WebCore::Element::attributeChanged): (WebCore::Element::beginParsingChildren): (WebCore::Element::finishParsingChildren): * dom/ShadowRoot.cpp: (WebCore::ShadowRoot::attach): * dom/ShadowTree.cpp: (WebCore::ShadowTree::recalcShadowTreeStyle): * editing/EditingStyle.cpp: (WebCore::EditingStyle::mergeStyleFromRules): (WebCore::EditingStyle::removeStyleFromRulesAndContext): (WebCore::EditingStyle::removePropertiesInElementDefaultStyle): (WebCore::legacyFontSizeFromCSSValue): * editing/FrameSelection.cpp: (WebCore::FrameSelection::focusedOrActiveStateChanged): * history/CachedPage.cpp: (WebCore::CachedPage::restore): * html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::styleSelector): * html/HTMLCanvasElement.h: (HTMLCanvasElement): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::process): * html/canvas/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::setFont): * inspector/InspectorCSSAgent.cpp: (WebCore::InspectorCSSAgent::getMatchedStylesForNode): (WebCore::InspectorCSSAgent::buildArrayForRuleList): * inspector/InspectorCSSAgent.h: (InspectorCSSAgent): * page/DOMWindow.cpp: (WebCore::DOMWindow::getMatchedCSSRules): * page/Page.cpp: (WebCore::Page::allVisitedStateChanged): (WebCore::Page::visitedStateChanged): * page/animation/AnimationController.cpp: (WebCore::AnimationController::updateAnimations): * platform/blackberry/RenderThemeBlackBerry.cpp: (WebCore::RenderThemeBlackBerry::adjustButtonStyle): (WebCore::RenderThemeBlackBerry::adjustTextAreaStyle): (WebCore::RenderThemeBlackBerry::adjustTextFieldStyle): (WebCore::RenderThemeBlackBerry::adjustSearchFieldStyle): (WebCore::RenderThemeBlackBerry::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeBlackBerry::adjustMenuListButtonStyle): (WebCore::RenderThemeBlackBerry::adjustMenuListStyle): (WebCore::RenderThemeBlackBerry::adjustCheckboxStyle): (WebCore::RenderThemeBlackBerry::adjustRadioStyle): * platform/blackberry/RenderThemeBlackBerry.h: (RenderThemeBlackBerry): * platform/efl/RenderThemeEfl.cpp: (WebCore::RenderThemeEfl::adjustSliderTrackStyle): (WebCore::RenderThemeEfl::adjustSliderThumbStyle): (WebCore::RenderThemeEfl::adjustCheckboxStyle): (WebCore::RenderThemeEfl::adjustRadioStyle): (WebCore::RenderThemeEfl::adjustButtonStyle): (WebCore::RenderThemeEfl::adjustMenuListStyle): (WebCore::RenderThemeEfl::adjustMenuListButtonStyle): (WebCore::RenderThemeEfl::adjustTextFieldStyle): (WebCore::RenderThemeEfl::adjustTextAreaStyle): (WebCore::RenderThemeEfl::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeEfl::adjustSearchFieldResultsButtonStyle): (WebCore::RenderThemeEfl::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeEfl::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeEfl::adjustSearchFieldStyle): (WebCore::RenderThemeEfl::adjustProgressBarStyle): * platform/efl/RenderThemeEfl.h: (RenderThemeEfl): * platform/gtk/RenderThemeGtk.cpp: (WebCore::RenderThemeGtk::adjustButtonStyle): (WebCore::RenderThemeGtk::adjustMenuListStyle): (WebCore::RenderThemeGtk::adjustMenuListButtonStyle): (WebCore::RenderThemeGtk::adjustSearchFieldResultsButtonStyle): (WebCore::RenderThemeGtk::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeGtk::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeGtk::adjustSearchFieldStyle): (WebCore::RenderThemeGtk::adjustSliderTrackStyle): (WebCore::RenderThemeGtk::adjustSliderThumbStyle): (WebCore::RenderThemeGtk::adjustProgressBarStyle): * platform/gtk/RenderThemeGtk.h: (RenderThemeGtk): * platform/gtk/RenderThemeGtk2.cpp: (WebCore::RenderThemeGtk::adjustInnerSpinButtonStyle): * platform/gtk/RenderThemeGtk3.cpp: (WebCore::RenderThemeGtk::adjustInnerSpinButtonStyle): * platform/qt/RenderThemeQt.cpp: (WebCore::RenderThemeQt::adjustTextFieldStyle): (WebCore::RenderThemeQt::adjustTextAreaStyle): (WebCore::RenderThemeQt::adjustMenuListStyle): (WebCore::RenderThemeQt::adjustMenuListButtonStyle): (WebCore::RenderThemeQt::adjustProgressBarStyle): (WebCore::RenderThemeQt::adjustSliderTrackStyle): (WebCore::RenderThemeQt::adjustSliderThumbStyle): (WebCore::RenderThemeQt::adjustSearchFieldStyle): (WebCore::RenderThemeQt::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeQt::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeQt::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeQt::adjustInnerSpinButtonStyle): * platform/qt/RenderThemeQt.h: (RenderThemeQt): * platform/qt/RenderThemeQtMobile.cpp: (WebCore::RenderThemeQtMobile::adjustButtonStyle): (WebCore::RenderThemeQtMobile::adjustTextFieldStyle): (WebCore::RenderThemeQtMobile::adjustMenuListStyle): * platform/qt/RenderThemeQtMobile.h: (RenderThemeQtMobile): * platform/wx/RenderThemeWx.cpp: (RenderThemeWx): (WebCore::RenderThemeWx::adjustButtonStyle): (WebCore::RenderThemeWx::adjustTextFieldStyle): (WebCore::RenderThemeWx::adjustMenuListStyle): (WebCore::RenderThemeWx::adjustMenuListButtonStyle): * rendering/RenderInputSpeech.cpp: (WebCore::RenderInputSpeech::adjustInputFieldSpeechButtonStyle): * rendering/RenderInputSpeech.h: (RenderInputSpeech): * rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle): (WebCore::RenderTheme::adjustCheckboxStyle): (WebCore::RenderTheme::adjustRadioStyle): (WebCore::RenderTheme::adjustButtonStyle): (WebCore::RenderTheme::adjustInnerSpinButtonStyle): (WebCore::RenderTheme::adjustTextFieldStyle): (WebCore::RenderTheme::adjustTextAreaStyle): (WebCore::RenderTheme::adjustMenuListStyle): (WebCore::RenderTheme::adjustInputFieldSpeechButtonStyle): (WebCore::RenderTheme::adjustMeterStyle): (WebCore::RenderTheme::adjustProgressBarStyle): (WebCore::RenderTheme::adjustMenuListButtonStyle): (WebCore::RenderTheme::adjustSliderTrackStyle): (WebCore::RenderTheme::adjustSliderThumbStyle): (WebCore::RenderTheme::adjustSearchFieldStyle): (WebCore::RenderTheme::adjustSearchFieldCancelButtonStyle): (WebCore::RenderTheme::adjustSearchFieldDecorationStyle): (WebCore::RenderTheme::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderTheme::adjustSearchFieldResultsButtonStyle): * rendering/RenderTheme.h: (RenderTheme): * rendering/RenderThemeChromiumAndroid.cpp: (WebCore::RenderThemeChromiumAndroid::adjustInnerSpinButtonStyle): * rendering/RenderThemeChromiumAndroid.h: (RenderThemeChromiumAndroid): * rendering/RenderThemeChromiumLinux.cpp: (WebCore::RenderThemeChromiumLinux::adjustInnerSpinButtonStyle): * rendering/RenderThemeChromiumLinux.h: (RenderThemeChromiumLinux): * rendering/RenderThemeChromiumSkia.cpp: (WebCore::RenderThemeChromiumSkia::adjustButtonStyle): (WebCore::RenderThemeChromiumSkia::adjustSearchFieldStyle): (WebCore::RenderThemeChromiumSkia::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeChromiumSkia::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeChromiumSkia::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeChromiumSkia::adjustSearchFieldResultsButtonStyle): (WebCore::RenderThemeChromiumSkia::adjustMenuListStyle): (WebCore::RenderThemeChromiumSkia::adjustMenuListButtonStyle): * rendering/RenderThemeChromiumSkia.h: (RenderThemeChromiumSkia): * rendering/RenderThemeChromiumWin.cpp: (WebCore): (WebCore::RenderThemeChromiumWin::adjustInnerSpinButtonStyle): (WebCore::RenderThemeChromiumWin::adjustProgressBarStyle): * rendering/RenderThemeChromiumWin.h: (RenderThemeChromiumWin): * rendering/RenderThemeMac.h: (RenderThemeMac): * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::setFontFromControlSize): (WebCore::RenderThemeMac::adjustTextFieldStyle): (WebCore::RenderThemeMac::adjustTextAreaStyle): (WebCore::RenderThemeMac::adjustProgressBarStyle): (WebCore::RenderThemeMac::adjustMenuListStyle): (WebCore::RenderThemeMac::adjustMenuListButtonStyle): (WebCore::RenderThemeMac::adjustSliderTrackStyle): (WebCore::RenderThemeMac::adjustSliderThumbStyle): (WebCore::RenderThemeMac::adjustSearchFieldStyle): (WebCore::RenderThemeMac::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeMac::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeMac::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeMac::adjustSearchFieldResultsButtonStyle): * rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::setFontFromControlSize): (WebCore::RenderThemeSafari::adjustButtonStyle): (WebCore::RenderThemeSafari::adjustTextFieldStyle): (WebCore::RenderThemeSafari::adjustTextAreaStyle): (WebCore::RenderThemeSafari::adjustMenuListStyle): (WebCore::RenderThemeSafari::adjustMenuListButtonStyle): (WebCore::RenderThemeSafari::adjustSliderThumbStyle): (WebCore::RenderThemeSafari::adjustSearchFieldStyle): (WebCore::RenderThemeSafari::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeSafari::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeSafari::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeSafari::adjustSearchFieldResultsButtonStyle): * rendering/RenderThemeSafari.h: (RenderThemeSafari): * rendering/RenderThemeWin.cpp: (WebCore::RenderThemeWin::adjustInnerSpinButtonStyle): (WebCore::RenderThemeWin::adjustMenuListStyle): (WebCore::RenderThemeWin::adjustMenuListButtonStyle): (WebCore::RenderThemeWin::adjustSearchFieldStyle): (WebCore::RenderThemeWin::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeWin::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeWin::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeWin::adjustSearchFieldResultsButtonStyle): * rendering/RenderThemeWin.h: (RenderThemeWin): (WebCore::RenderThemeWin::adjustButtonStyle): (WebCore::RenderThemeWin::adjustTextFieldStyle): (WebCore::RenderThemeWin::adjustTextAreaStyle): * rendering/RenderThemeWinCE.cpp: (WebCore::RenderThemeWinCE::adjustMenuListStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldCancelButtonStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldDecorationStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldResultsDecorationStyle): (WebCore::RenderThemeWinCE::adjustSearchFieldResultsButtonStyle): (WebCore::RenderThemeWinCE::adjustMenuListButtonStyle): * rendering/RenderThemeWinCE.h: (RenderThemeWinCE): (WebCore::RenderThemeWinCE::adjustButtonStyle): (WebCore::RenderThemeWinCE::adjustTextFieldStyle): (WebCore::RenderThemeWinCE::adjustTextAreaStyle): * rendering/style/RenderStyle.cpp: (WebCore::RenderStyle::isStyleAvailable): * rendering/style/RenderStyle.h: (WebCore): * rendering/style/StyleRareNonInheritedData.h: (WebCore): * rendering/svg/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::computeNewScaledFontForStyle): * rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::isOverflowHidden): 2012-04-15 Robert Hogan <robert@webkit.org> CSS 2.1 failure: table-columns-example-001 fails https://bugs.webkit.org/show_bug.cgi?id=83978 Reviewed by David Hyatt. Tests: css2.1/20110323/table-columns-example-001.html fast/css/table-rules-attribute-groups-with-frame.html fast/css/table-rules-attribute-groups.html fast/css/table-rules-attribute-none-with-frame.html fast/css/table-rules-attribute-with-frame1.html fast/css/table-rules-attribute-with-frame2.html fast/css/table-rules-attribute.html WebKit does not implement the 'cols', 'rows', and 'all' rules attributes correctly for cells that are adjacent to the table's edges. The solution is to follow the hint in the spec at http://www.w3.org/TR/CSS21/tables.html#columns and set the table's border to hidden when the rules attribute is set to one of 'cols', 'rows' or 'all', and the table itself has no explicit border. Border collapsing will take care of the rest as 'hidden' always wins in border-conflict resolution. It's not completely clear from the spec that an explicit table border should trump a cols rule but doing so is consistent with FF and Opera at least. A 'rules' attribute is trumped by anything specified for the 'frame' attribute so need to ensure that is respected too. In short, any 'rules' attribute means a hidden table border unless there's a frame or border attribute. * html/HTMLTableElement.cpp: (WebCore::HTMLTableElement::additionalAttributeStyle): 2012-04-22 Timothy Hatcher <timothy@apple.com> Stop installing localizedStrings.js in Production builds. <rdar://problem/11296649> Reviewed by Joseph Pecoraro. * Configurations/WebCore.xcconfig: Added EXCLUDED_SOURCE_FILE_NAMES_Production_macosx and modified EXCLUDED_SOURCE_FILE_NAMES to look for CONFIGURATION variant. 2012-04-24 Yuzhu Shen <yzshen@chromium.org> [chromium] Add a description field in WebURLError and show failure description in the inspector network tab. https://bugs.webkit.org/show_bug.cgi?id=84566 Reviewed by Pavel Feldman. * inspector/front-end/NetworkPanel.js: (WebInspector.NetworkDataGridNode.prototype._refreshStatusCell): * platform/chromium/support/WebURLError.cpp: (WebKit::WebURLError::operator=): (WebKit::WebURLError::operator ResourceError): 2012-04-24 Rob Buis <rbuis@rim.com> [SVG] getBBox on a <g> within symbol returns 0 but with defs it works correctly https://bugs.webkit.org/show_bug.cgi?id=72796 SVG <use> of <symbol> containing <linearGradient> renders black https://bugs.webkit.org/show_bug.cgi?id=82775 Reviewed by Dirk Schulze. Create RenderSVGHiddenContainer for each <symbol>, which allows creation of child renderers too. This fixes both bugs since the bbox can be calculated at all times now and gradients in <symbol> are always created. This does allocate more memory but in general <symbol> is not used a lot and they tend to be small subtrees. Patch by Leo Yang. Tests: svg/custom/bbox-of-g-in-symbol.svg svg/custom/gradient-in-symbol-expected.svg svg/custom/gradient-in-symbol.svg * svg/SVGSymbolElement.cpp: (WebCore::SVGSymbolElement::createRenderer): (WebCore): * svg/SVGSymbolElement.h: (SVGSymbolElement): 2012-04-24 Brady Eidson <beidson@apple.com> <rdar://problem/10120155> and https://bugs.webkit.org/show_bug.cgi?id=82664 Need DOMWindow mechanism to supplement UserScripts for page cache notifications This patch creates a new object type "DOMWindowExtension" which extends DOMWindowProperty. A DOMWindowExtension is tied to a particular DOMWindow and represents extensibility in that DOMWindow within a particular DOMWrapperWorld. It is a token object meant designed to notify clients of the various events in the lifetime of a DOMWindow property such as creation, disconnecting for the page cache, reconnecting when restoring from the page cache, and DOMWindow destruction. Reviewed by Sam Weinig. New WebKit API test DOMWindowExtensionBasic added. Add hooks for 4 new client calls regarding DOMWindowExtensions and global object lifetime: * loader/FrameLoaderClient.h: (WebCore::FrameLoaderClient::dispatchCanCreateGlobalObject): (WebCore::FrameLoaderClient::dispatchWillDisconnectDOMWindowExtensionFromGlobalObject): (WebCore::FrameLoaderClient::dispatchDidReconnectDOMWindowExtensionToGlobalObject): (WebCore::FrameLoaderClient::dispatchWillDestroyGlobalObjectForDOMWindowExtension): At the same time "DidClearWindowObject" is called, also notify clients that the global object is available: * loader/FrameLoader.cpp: (WebCore::FrameLoader::receivedFirstData): (WebCore::FrameLoader::dispatchGlobalObjectAvailableInAllWorlds): * loader/FrameLoader.h: DOMWindowProperties might want to unregister themselves during these notifications, so copy the set to a Vector. While this technique is arguably fragile, its certainly less fragile than mutating a set while iterating it: * page/DOMWindow.cpp: (WebCore::DOMWindow::willDetachPage): (WebCore::DOMWindow::disconnectDOMWindowProperties): (WebCore::DOMWindow::reconnectDOMWindowProperties): Implement the DOMWindowExtension object. It acts like a DOMWindowProperty with the added capability of remembering what Frame it used to be connected to so it can *always* notify clients on willDetachPage: * page/DOMWindowExtension.cpp: Added. (WebCore::DOMWindowExtension::DOMWindowExtension): (WebCore::DOMWindowExtension::~DOMWindowExtension): (WebCore::DOMWindowExtension::disconnectFrame): (WebCore::DOMWindowExtension::reconnectFrame): (WebCore::DOMWindowExtension::willDetachPage): * page/DOMWindowExtension.h: Added. (WebCore::DOMWindowExtension::create): (WebCore::DOMWindowExtension::world): Project files: * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.exp.in: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: 2012-04-24 Sami Kyostila <skyostil@chromium.org> [chromium] Don't keep pointers to released layer tree https://bugs.webkit.org/show_bug.cgi?id=84715 Reviewed by Adrienne Walker. As part of tree synchronization, CCLayerTreeHostImpl loses ownership of the previous tree (as per releaseRootLayer()). After this point we should not retain any pointers to the old tree, because they are effectively invalid as soon as the root layer is released. For processing scroll updates we need to keep track of which layer is being scrolled, and this state needs to survive tree synchronizations. Instead of keeping a direct pointer to the scrolled layer, we now save the id of that layer and use it to look up the same layer from the new tree. Unit test: CCLayerTreeHostImplTest.replaceTreeWhileScrolling * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::CCLayerTreeHostImpl): (WebCore::CCLayerTreeHostImpl::setRootLayer): (WebCore::CCLayerTreeHostImpl::releaseRootLayer): (WebCore::CCLayerTreeHostImpl::scrollBegin): (WebCore::CCLayerTreeHostImpl::scrollEnd): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (CCLayerTreeHostImpl): 2012-04-24 Alexandru Chiculita <achicu@adobe.com> [CSS Filters] Move m_filter and related fields from RenderLayer to a different structure and only allocate it when needed https://bugs.webkit.org/show_bug.cgi?id=84460 Reviewed by Dean Jackson. The new RenderLayerFilterInfo is meant to be allocated only when needed by filters. The link to the RenderLayerFilterInfo is maintained using a HashMap and a single boolean in the RenderLayer class. No new tests, just extracted a couple of fields inside the RenderLayer to a separate class. * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * rendering/FilterEffectRenderer.cpp: (WebCore::FilterEffectRendererHelper::prepareFilterEffect): (WebCore::FilterEffectRendererHelper::beginFilterEffect): (WebCore::FilterEffectRendererHelper::applyFilterEffect): * rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::~RenderLayer): (WebCore::RenderLayer::paintsWithFilters): (WebCore::RenderLayer::requiresFullLayerImageForFilters): (WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect): (WebCore::RenderLayer::paintLayerContents): (WebCore::RenderLayer::updateOrRemoveFilterEffect): * rendering/RenderLayer.h: (WebCore::RenderLayer::filterRenderer): (RenderLayer): (WebCore::RenderLayer::filterInfo): (WebCore::RenderLayer::ensureFilterInfo): (WebCore::RenderLayer::removeFilterInfoIfNeeded): (WebCore::RenderLayer::hasFilterInfo): (WebCore::RenderLayer::setHasFilterInfo): * rendering/RenderLayerFilterInfo.cpp: Added. (WebCore): (WebCore::RenderLayerFilterInfo::filterInfoForRenderLayer): (WebCore::RenderLayerFilterInfo::createFilterInfoForRenderLayerIfNeeded): (WebCore::RenderLayerFilterInfo::removeFilterInfoForRenderLayer): (WebCore::RenderLayerFilterInfo::RenderLayerFilterInfo): (WebCore::RenderLayerFilterInfo::~RenderLayerFilterInfo): (WebCore::RenderLayerFilterInfo::setRenderer): * rendering/RenderLayerFilterInfo.h: Added. (WebCore): (RenderLayerFilterInfo): (WebCore::RenderLayerFilterInfo::dirtySourceRect): (WebCore::RenderLayerFilterInfo::addDirtySourceRect): (WebCore::RenderLayerFilterInfo::resetDirtySourceRect): (WebCore::RenderLayerFilterInfo::renderer): 2012-04-24 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate around in SerializedScriptValue.cpp (Part1) https://bugs.webkit.org/show_bug.cgi?id=84663 Reviewed by Nate Chapin. The objective is to pass Isolate to toV8() in SerializedScriptValue.cpp. Part1: Add an Isolate argument to SerializedScriptValue::create(), SerializedScriptValue::deserialize(), etc. Part2: Add an m_isolate member to SerializedScriptValue::Writer() and SerializedScriptValue::Reader(). Part3: Pass Isolate to toV8(). This patch fixes Part1. No tests. No change in behavior. * bindings/v8/SerializedScriptValue.cpp: (WebCore::SerializedScriptValue::create): (WebCore::SerializedScriptValue::undefinedValue): (WebCore::SerializedScriptValue::booleanValue): (WebCore::SerializedScriptValue::numberValue): (WebCore::SerializedScriptValue::SerializedScriptValue): (WebCore::SerializedScriptValue::deserialize): (WebCore::SerializedScriptValue::deserializeForInspector): * bindings/v8/SerializedScriptValue.h: (SerializedScriptValue): 2012-04-24 Kentaro Hara <haraken@chromium.org> [V8][Refactoring] Remove deserializeAndSetProperty() from SerializedScriptValue.cpp https://bugs.webkit.org/show_bug.cgi?id=84662 Reviewed by Nate Chapin. SerializedScriptValue::deserializeAndSetProperty() is no longer used. This patch removes it. No tests. No change in behavior. * bindings/v8/SerializedScriptValue.cpp: * bindings/v8/SerializedScriptValue.h: 2012-04-24 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to setDOMException() in CodeGeneratorV8.pm https://bugs.webkit.org/show_bug.cgi?id=84660 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to setDOMException() in CodeGeneratorV8.pm. Test: bindings/scripts/test/TestEventTarget.idl bindings/scripts/test/TestObj.idl bindings/scripts/test/TestInterface.idl * bindings/scripts/CodeGeneratorV8.pm: Modified as described above. (GenerateSetDOMException): (GenerateNormalAttrGetter): (GenerateNormalAttrSetter): (GenerateFunctionCallback): (GenerateParametersCheck): (GenerateFunctionCallString): * bindings/scripts/test/V8/V8TestEventTarget.cpp: Updated run-bindings-tests results. (WebCore::TestEventTargetV8Internal::itemCallback): (WebCore::TestEventTargetV8Internal::dispatchEventCallback): * bindings/scripts/test/V8/V8TestInterface.cpp: Ditto. (WebCore::TestInterfaceV8Internal::supplementalMethod2Callback): * bindings/scripts/test/V8/V8TestObj.cpp: Ditto. (WebCore::TestObjV8Internal::attrWithGetterExceptionAttrGetter): (WebCore::TestObjV8Internal::attrWithGetterExceptionAttrSetter): (WebCore::TestObjV8Internal::attrWithSetterExceptionAttrSetter): (WebCore::TestObjV8Internal::stringAttrWithGetterExceptionAttrGetter): (WebCore::TestObjV8Internal::stringAttrWithGetterExceptionAttrSetter): (WebCore::TestObjV8Internal::stringAttrWithSetterExceptionAttrSetter): (WebCore::TestObjV8Internal::withScriptStateAttributeRaisesAttrGetter): (WebCore::TestObjV8Internal::withScriptStateAttributeRaisesAttrSetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAttributeRaisesAttrGetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAttributeRaisesAttrSetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateAttributeRaisesAttrGetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateAttributeRaisesAttrSetter): (WebCore::TestObjV8Internal::methodThatRequiresAllArgsAndThrowsCallback): (WebCore::TestObjV8Internal::methodWithExceptionCallback): (WebCore::TestObjV8Internal::withScriptStateVoidExceptionCallback): (WebCore::TestObjV8Internal::withScriptStateObjExceptionCallback): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateObjExceptionCallback): (WebCore::TestObjV8Internal::getSVGDocumentCallback): (WebCore::TestObjV8Internal::strictFunctionCallback): 2012-04-24 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to setDOMException() (Part2) https://bugs.webkit.org/show_bug.cgi?id=84658 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to setDOMException() in custom binding code. No tests. No change in behavior. * bindings/v8/V8Collection.cpp: (WebCore::toOptionsCollectionSetter): * bindings/v8/V8Collection.h: (WebCore): * bindings/v8/custom/V8ArrayBufferViewCustom.h: (WebCore::constructWebGLArrayWithArrayBufferArgument): (WebCore::setWebGLArrayHelper): * bindings/v8/custom/V8DOMWindowCustom.cpp: (WebCore::WindowSetTimeoutImpl): * bindings/v8/custom/V8DataViewCustom.cpp: (WebCore::V8DataView::getInt8Callback): (WebCore::V8DataView::getUint8Callback): (WebCore::V8DataView::setInt8Callback): (WebCore::V8DataView::setUint8Callback): * bindings/v8/custom/V8DirectoryEntrySyncCustom.cpp: (WebCore::V8DirectoryEntrySync::getDirectoryCallback): (WebCore::V8DirectoryEntrySync::getFileCallback): * bindings/v8/custom/V8HTMLCanvasElementCustom.cpp: (WebCore::V8HTMLCanvasElement::toDataURLCallback): * bindings/v8/custom/V8HTMLElementCustom.cpp: (WebCore::V8HTMLElement::itemValueAccessorSetter): * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp: (WebCore::V8HTMLOptionsCollection::addCallback): (WebCore::V8HTMLOptionsCollection::lengthAccessorSetter): (WebCore::V8HTMLOptionsCollection::indexedPropertySetter): * bindings/v8/custom/V8HTMLSelectElementCustom.cpp: (WebCore::V8HTMLSelectElement::indexedPropertySetter): * bindings/v8/custom/V8NodeCustom.cpp: (WebCore::V8Node::insertBeforeCallback): (WebCore::V8Node::replaceChildCallback): (WebCore::V8Node::removeChildCallback): (WebCore::V8Node::appendChildCallback): * bindings/v8/custom/V8SQLTransactionCustom.cpp: (WebCore::V8SQLTransaction::executeSqlCallback): * bindings/v8/custom/V8WebKitMutationObserverCustom.cpp: (WebCore::V8WebKitMutationObserver::observeCallback): * bindings/v8/custom/V8XMLHttpRequestCustom.cpp: (WebCore::V8XMLHttpRequest::responseAccessorGetter): 2012-04-24 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to setDOMException() (Part1) https://bugs.webkit.org/show_bug.cgi?id=84656 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to setDOMException() in custom binding code. No tests. No change in behavior. * bindings/v8/custom/V8LocationCustom.cpp: (WebCore::V8Location::protocolAccessorSetter): * bindings/v8/custom/V8SQLTransactionSyncCustom.cpp: (WebCore::V8SQLTransactionSync::executeSqlCallback): * bindings/v8/custom/V8SVGLengthCustom.cpp: (WebCore::V8SVGLength::valueAccessorGetter): (WebCore::V8SVGLength::valueAccessorSetter): (WebCore::V8SVGLength::convertToSpecifiedUnitsCallback): * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp: (WebCore::getObjectParameter): (WebCore::V8WebGLRenderingContext::getAttachedShadersCallback): (WebCore::V8WebGLRenderingContext::getExtensionCallback): (WebCore::V8WebGLRenderingContext::getFramebufferAttachmentParameterCallback): (WebCore::V8WebGLRenderingContext::getParameterCallback): (WebCore::V8WebGLRenderingContext::getProgramParameterCallback): (WebCore::V8WebGLRenderingContext::getShaderParameterCallback): (WebCore::V8WebGLRenderingContext::getUniformCallback): (WebCore::vertexAttribAndUniformHelperf): (WebCore::uniformHelperi): (WebCore::uniformMatrixHelper): 2012-04-24 Pavel Feldman <pfeldman@chromium.org> Web Inspector: encapsulate live location into the Script. https://bugs.webkit.org/show_bug.cgi?id=84722 Reviewed by Yury Semikhatsky. Live location is just a location on the script. The way it is implemented today involves too many indirections. * inspector/front-end/CompilerScriptMapping.js: * inspector/front-end/DebuggerModel.js: (WebInspector.DebuggerModel.prototype.setBreakpointByScriptLocation): (WebInspector.DebuggerModel.prototype.scriptForId): * inspector/front-end/DebuggerPresentationModel.js: (WebInspector.DebuggerPresentationModel.prototype.createLiveLocation): (WebInspector.DebuggerPresentationModel.prototype._addConsoleMessageToScript): (WebInspector.DebuggerPresentationModel.prototype._debuggerPaused): (WebInspector.DebuggerPresentationModel.prototype.set selectedCallFrame): (WebInspector.PresentationCallFrame.prototype.uiLocation): (WebInspector.DebuggerPresentationModel.CallFramePlacard): (WebInspector.DebuggerPresentationModel.Linkifier.prototype.linkifyRawLocation): * inspector/front-end/RawSourceCode.js: * inspector/front-end/ResourceScriptMapping.js: (WebInspector.ResourceScriptMapping.prototype.addScript): (WebInspector.ResourceScriptMapping.prototype._uiSourceCodeChanged): (WebInspector.ResourceScriptMapping.prototype._bindScriptToRawSourceCode): * inspector/front-end/Script.js: (WebInspector.Script): (WebInspector.Script.prototype.isInlineScript): (WebInspector.Script.prototype.setSourceMapping): (WebInspector.Script.prototype.createLocation): (WebInspector.Script.Location): (WebInspector.Script.Location.prototype.dispose): (WebInspector.Script.Location.prototype._update): * inspector/front-end/ScriptMapping.js: (WebInspector.UILocation): (WebInspector.SourceMapping): (WebInspector.SourceMapping.prototype.rawLocationToUILocation): (WebInspector.SourceMapping.prototype.uiLocationToRawLocation): (WebInspector.MainScriptMapping): (WebInspector.MainScriptMapping.prototype.addScript): (WebInspector.MainScriptMapping.prototype.reset): * inspector/front-end/SnippetsModel.js: (WebInspector.SnippetsScriptMapping.prototype._createUISourceCodeForScript): 2012-04-24 Yury Semikhatsky <yurys@chromium.org> Web Inspector: a bunch of heap profiler cleanups https://bugs.webkit.org/show_bug.cgi?id=84730 - HeapSnapshotProviderProxy passed explicitely as a parameter to HeapSnapshotGridNode constructor - Removed dead code - Removed unused parameters - Added more closure compiler annotations - Extracted code finding cycled among node ancestors into a separate method Reviewed by Pavel Feldman. * inspector/front-end/HeapSnapshot.js: (WebInspector.HeapSnapshot.prototype.createEdgesProvider): (WebInspector.HeapSnapshot.prototype.createRetainingEdgesProvider): (WebInspector.HeapSnapshot.prototype.createNodesProviderForDominator): (WebInspector.HeapSnapshotEdgesProvider): * inspector/front-end/HeapSnapshotDataGrids.js: * inspector/front-end/HeapSnapshotGridNodes.js: (WebInspector.HeapSnapshotGridNode): (WebInspector.HeapSnapshotGenericObjectNode): (WebInspector.HeapSnapshotObjectNode): (WebInspector.HeapSnapshotObjectNode.prototype._findAncestorWithSameSnapshotNodeId): (WebInspector.HeapSnapshotInstanceNode): (WebInspector.HeapSnapshotConstructorNode): (WebInspector.HeapSnapshotDiffNode): (WebInspector.HeapSnapshotDiffNode._createProvider): (WebInspector.HeapSnapshotDominatorObjectNode): * inspector/front-end/HeapSnapshotProxy.js: (WebInspector.HeapSnapshotWorker): (WebInspector.HeapSnapshotProxy.prototype.createNodesProviderForDominator): * inspector/front-end/utilities.js: 2012-04-24 Adam Klein <adamk@chromium.org> Fix includes in StrongInlines.h and ScriptValue.h https://bugs.webkit.org/show_bug.cgi?id=84659 Reviewed by Geoffrey Garen. This change was prompted by an attempt to use ScriptValue.h from a WebCore header file and running into trouble with the (as it turns out unnecessary) include of JSDOMBinding.h. * bindings/js/ScriptValue.cpp: Add include of JSDOMBinding.h, now that it's not included by the header. * bindings/js/ScriptValue.h: Remove unnecessary include of JSDOMBinding.h. 2012-04-24 Antti Koivisto <antti@apple.com> Move MediaList CSSOM wrapper ownership to parent rule or stylesheet https://bugs.webkit.org/show_bug.cgi?id=84716 Reviewed by Anders Carlsson. MediaList CSSOM wrapper should be owned by a rule or a stylesheet, not by the underlying MediaQuerySet. Remove the ref forwarding from MediaList in favor of regular refcounting. Use the usual pattern where the parent wrapper refs the child wrapper and zeroes the backpointer on destruction. * bindings/js/JSDOMBinding.h: (WebCore::root): * css/CSSImportRule.cpp: (WebCore::CSSImportRule::~CSSImportRule): (WebCore::CSSImportRule::media): * css/CSSImportRule.h: (StyleRuleImport): (CSSImportRule): * css/CSSMediaRule.cpp: (WebCore::CSSMediaRule::~CSSMediaRule): (WebCore::CSSMediaRule::media): * css/CSSMediaRule.h: (CSSMediaRule): * css/CSSStyleSheet.cpp: (WebCore::CSSStyleSheet::~CSSStyleSheet): (WebCore::CSSStyleSheet::media): * css/CSSStyleSheet.h: (CSSStyleSheet): * css/MediaList.cpp: (WebCore::MediaQuerySet::mediaText): (WebCore::MediaList::MediaList): (WebCore): (WebCore::MediaList::notifyChanged): * css/MediaList.h: (MediaQuerySet): (WebCore::MediaList::create): (WebCore::MediaList::parentRule): (WebCore::MediaList::clearParentStyleSheet): (WebCore::MediaList::clearParentRule): (WebCore::MediaList::queries): (MediaList): * css/StyleRule.h: (WebCore::StyleRuleMedia::mediaQueries): 2012-04-24 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] Should pass canvas/philip/tests/toDataURL.jpeg.alpha.html https://bugs.webkit.org/show_bug.cgi?id=83973 Reviewed by Philippe Normand. Test: canvas/philip/tests/toDataURL.jpeg.alpha.html * platform/graphics/gtk/ImageBufferGtk.cpp: (WebCore::encodeImage): Convert ARGB32 cairo surface into RGB24 when encoding JPEG images since JPEG encoder doesn't support alpha channel. 2012-04-24 Carlos Garcia Campos <cgarcia@igalia.com> [GTK] Add WebKitCookieManager::changed signal to WebKit2 GTK+ API https://bugs.webkit.org/show_bug.cgi?id=82598 Reviewed by Philippe Normand. * GNUmakefile.list.am: Add new files to compilation. * platform/gtk/TemporaryLinkStubs.cpp: Remove stubs for setCookieStoragePrivateBrowsingEnabled, startObservingCookieChanges and stopObservingCookieChanges. * platform/network/soup/CookieStorageSoup.cpp: Added. (WebCore::setCookieStoragePrivateBrowsingEnabled): (WebCore::soupCookiesChanged): Notify cookies changes using platform strategies. (WebCore::startObservingCookieChanges): Connect to changed signal of the soup cookie jar. (WebCore::stopObservingCookieChanges): Disconnect signals handlers for changed signals of the soup cookie jar. 2012-04-24 Alexis Menard <alexis.menard@openbossa.org> Rename CSSStyleApplyProperty files to StyleBuilder. https://bugs.webkit.org/show_bug.cgi?id=84721 Reviewed by Antti Koivisto. r115043 renamed CSSStyleApplyProperty class to StyleBuilder. This patch rename the files to match the new class name. No new tests : renaming of files, no behavior changes expected. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * css/CSSAllInOne.cpp: * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::collectMatchingRulesForList): * css/StyleBuilder.cpp: Renamed from Source/WebCore/css/CSSStyleApplyProperty.cpp. (WebCore): (ApplyPropertyExpanding): (WebCore::ApplyPropertyExpanding::applyInheritValue): (WebCore::ApplyPropertyExpanding::applyInitialValue): (WebCore::ApplyPropertyExpanding::applyValue): (WebCore::ApplyPropertyExpanding::createHandler): (ApplyPropertyDefaultBase): (WebCore::ApplyPropertyDefaultBase::setValue): (WebCore::ApplyPropertyDefaultBase::value): (WebCore::ApplyPropertyDefaultBase::initial): (WebCore::ApplyPropertyDefaultBase::applyInheritValue): (WebCore::ApplyPropertyDefaultBase::applyInitialValue): (WebCore::ApplyPropertyDefaultBase::applyValue): (WebCore::ApplyPropertyDefaultBase::createHandler): (ApplyPropertyDefault): (WebCore::ApplyPropertyDefault::setValue): (WebCore::ApplyPropertyDefault::applyValue): (WebCore::ApplyPropertyDefault::createHandler): (ApplyPropertyNumber): (WebCore::ApplyPropertyNumber::setValue): (WebCore::ApplyPropertyNumber::applyValue): (WebCore::ApplyPropertyNumber::createHandler): (ApplyPropertyStyleImage): (WebCore::ApplyPropertyStyleImage::applyValue): (WebCore::ApplyPropertyStyleImage::createHandler): (ApplyPropertyAuto): (WebCore::ApplyPropertyAuto::setValue): (WebCore::ApplyPropertyAuto::value): (WebCore::ApplyPropertyAuto::hasAuto): (WebCore::ApplyPropertyAuto::setAuto): (WebCore::ApplyPropertyAuto::applyInheritValue): (WebCore::ApplyPropertyAuto::applyInitialValue): (WebCore::ApplyPropertyAuto::applyValue): (WebCore::ApplyPropertyAuto::createHandler): (ApplyPropertyClip): (WebCore::ApplyPropertyClip::convertToLength): (WebCore::ApplyPropertyClip::applyInheritValue): (WebCore::ApplyPropertyClip::applyInitialValue): (WebCore::ApplyPropertyClip::applyValue): (WebCore::ApplyPropertyClip::createHandler): (WebCore::defaultInitialColor): (ApplyPropertyColor): (WebCore::ApplyPropertyColor::applyInheritValue): (WebCore::ApplyPropertyColor::applyInitialValue): (WebCore::ApplyPropertyColor::applyValue): (WebCore::ApplyPropertyColor::applyColorValue): (WebCore::ApplyPropertyColor::createHandler): (ApplyPropertyDirection): (WebCore::ApplyPropertyDirection::applyValue): (WebCore::ApplyPropertyDirection::createHandler): (ApplyPropertyLength): (WebCore::ApplyPropertyLength::setValue): (WebCore::ApplyPropertyLength::applyValue): (WebCore::ApplyPropertyLength::createHandler): (ApplyPropertyString): (WebCore::ApplyPropertyString::setValue): (WebCore::ApplyPropertyString::applyValue): (WebCore::ApplyPropertyString::createHandler): (ApplyPropertyBorderRadius): (WebCore::ApplyPropertyBorderRadius::setValue): (WebCore::ApplyPropertyBorderRadius::applyValue): (WebCore::ApplyPropertyBorderRadius::createHandler): (FillLayerAccessorTypes): (ApplyPropertyFillLayer): (WebCore::ApplyPropertyFillLayer::applyInheritValue): (WebCore::ApplyPropertyFillLayer::applyInitialValue): (WebCore::ApplyPropertyFillLayer::applyValue): (WebCore::ApplyPropertyFillLayer::createHandler): (ApplyPropertyComputeLength): (WebCore::ApplyPropertyComputeLength::setValue): (WebCore::ApplyPropertyComputeLength::applyValue): (WebCore::ApplyPropertyComputeLength::createHandler): (ApplyPropertyFont): (WebCore::ApplyPropertyFont::applyInheritValue): (WebCore::ApplyPropertyFont::applyInitialValue): (WebCore::ApplyPropertyFont::applyValue): (WebCore::ApplyPropertyFont::createHandler): (ApplyPropertyFontSize): (WebCore::ApplyPropertyFontSize::largerFontSize): (WebCore::ApplyPropertyFontSize::smallerFontSize): (WebCore::ApplyPropertyFontSize::applyInheritValue): (WebCore::ApplyPropertyFontSize::applyInitialValue): (WebCore::ApplyPropertyFontSize::applyValue): (WebCore::ApplyPropertyFontSize::createHandler): (ApplyPropertyFontWeight): (WebCore::ApplyPropertyFontWeight::applyValue): (WebCore::ApplyPropertyFontWeight::createHandler): (ApplyPropertyFontVariantLigatures): (WebCore::ApplyPropertyFontVariantLigatures::applyInheritValue): (WebCore::ApplyPropertyFontVariantLigatures::applyInitialValue): (WebCore::ApplyPropertyFontVariantLigatures::applyValue): (WebCore::ApplyPropertyFontVariantLigatures::createHandler): (ApplyPropertyBorderImage): (WebCore::ApplyPropertyBorderImage::applyValue): (WebCore::ApplyPropertyBorderImage::createHandler): (ApplyPropertyBorderImageModifier): (WebCore::ApplyPropertyBorderImageModifier::getValue): (WebCore::ApplyPropertyBorderImageModifier::setValue): (WebCore::ApplyPropertyBorderImageModifier::applyInheritValue): (WebCore::ApplyPropertyBorderImageModifier::applyInitialValue): (WebCore::ApplyPropertyBorderImageModifier::applyValue): (WebCore::ApplyPropertyBorderImageModifier::createHandler): (ApplyPropertyBorderImageSource): (WebCore::ApplyPropertyBorderImageSource::applyValue): (WebCore::ApplyPropertyBorderImageSource::createHandler): (ApplyPropertyCounter): (WebCore::ApplyPropertyCounter::emptyFunction): (WebCore::ApplyPropertyCounter::applyInheritValue): (WebCore::ApplyPropertyCounter::applyValue): (WebCore::ApplyPropertyCounter::createHandler): (ApplyPropertyCursor): (WebCore::ApplyPropertyCursor::applyInheritValue): (WebCore::ApplyPropertyCursor::applyInitialValue): (WebCore::ApplyPropertyCursor::applyValue): (WebCore::ApplyPropertyCursor::createHandler): (ApplyPropertyTextAlign): (WebCore::ApplyPropertyTextAlign::applyValue): (WebCore::ApplyPropertyTextAlign::createHandler): (ApplyPropertyTextDecoration): (WebCore::ApplyPropertyTextDecoration::applyValue): (WebCore::ApplyPropertyTextDecoration::createHandler): (ApplyPropertyUnicodeBidi): (WebCore::ApplyPropertyUnicodeBidi::applyValue): (WebCore::ApplyPropertyUnicodeBidi::createHandler): (ApplyPropertyLineHeight): (WebCore::ApplyPropertyLineHeight::applyValue): (WebCore::ApplyPropertyLineHeight::createHandler): (ApplyPropertyPageSize): (WebCore::ApplyPropertyPageSize::mmLength): (WebCore::ApplyPropertyPageSize::inchLength): (WebCore::ApplyPropertyPageSize::getPageSizeFromName): (WebCore::ApplyPropertyPageSize::applyInheritValue): (WebCore::ApplyPropertyPageSize::applyInitialValue): (WebCore::ApplyPropertyPageSize::applyValue): (WebCore::ApplyPropertyPageSize::createHandler): (ApplyPropertyTextEmphasisStyle): (WebCore::ApplyPropertyTextEmphasisStyle::applyInheritValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyInitialValue): (WebCore::ApplyPropertyTextEmphasisStyle::applyValue): (WebCore::ApplyPropertyTextEmphasisStyle::createHandler): (ApplyPropertyAnimation): (WebCore::ApplyPropertyAnimation::setValue): (WebCore::ApplyPropertyAnimation::value): (WebCore::ApplyPropertyAnimation::test): (WebCore::ApplyPropertyAnimation::clear): (WebCore::ApplyPropertyAnimation::initial): (WebCore::ApplyPropertyAnimation::map): (WebCore::ApplyPropertyAnimation::accessAnimations): (WebCore::ApplyPropertyAnimation::animations): (WebCore::ApplyPropertyAnimation::applyInheritValue): (WebCore::ApplyPropertyAnimation::applyInitialValue): (WebCore::ApplyPropertyAnimation::applyValue): (WebCore::ApplyPropertyAnimation::createHandler): (ApplyPropertyOutlineStyle): (WebCore::ApplyPropertyOutlineStyle::applyInheritValue): (WebCore::ApplyPropertyOutlineStyle::applyInitialValue): (WebCore::ApplyPropertyOutlineStyle::applyValue): (WebCore::ApplyPropertyOutlineStyle::createHandler): (ApplyPropertyResize): (WebCore::ApplyPropertyResize::applyValue): (WebCore::ApplyPropertyResize::createHandler): (ApplyPropertyVerticalAlign): (WebCore::ApplyPropertyVerticalAlign::applyValue): (WebCore::ApplyPropertyVerticalAlign::createHandler): (ApplyPropertyAspectRatio): (WebCore::ApplyPropertyAspectRatio::applyInheritValue): (WebCore::ApplyPropertyAspectRatio::applyInitialValue): (WebCore::ApplyPropertyAspectRatio::applyValue): (WebCore::ApplyPropertyAspectRatio::createHandler): (ApplyPropertyZoom): (WebCore::ApplyPropertyZoom::resetEffectiveZoom): (WebCore::ApplyPropertyZoom::applyInheritValue): (WebCore::ApplyPropertyZoom::applyInitialValue): (WebCore::ApplyPropertyZoom::applyValue): (WebCore::ApplyPropertyZoom::createHandler): (ApplyPropertyDisplay): (WebCore::ApplyPropertyDisplay::isValidDisplayValue): (WebCore::ApplyPropertyDisplay::applyInheritValue): (WebCore::ApplyPropertyDisplay::applyInitialValue): (WebCore::ApplyPropertyDisplay::applyValue): (WebCore::ApplyPropertyDisplay::createHandler): (ApplyPropertyFlex): (WebCore::ApplyPropertyFlex::applyInheritValue): (WebCore::ApplyPropertyFlex::applyInitialValue): (WebCore::ApplyPropertyFlex::applyValue): (WebCore::ApplyPropertyFlex::createHandler): (WebCore::ApplyPropertyFlex::getFlexValue): (WebCore::StyleBuilder::sharedStyleBuilder): (WebCore::StyleBuilder::StyleBuilder): * css/StyleBuilder.h: Renamed from Source/WebCore/css/CSSStyleApplyProperty.h. (WebCore): (PropertyHandler): (WebCore::PropertyHandler::PropertyHandler): (WebCore::PropertyHandler::applyInheritValue): (WebCore::PropertyHandler::applyInitialValue): (WebCore::PropertyHandler::applyValue): (WebCore::PropertyHandler::isValid): (WebCore::PropertyHandler::inheritFunction): (WebCore::PropertyHandler::initialFunction): (WebCore::PropertyHandler::applyFunction): (StyleBuilder): (WebCore::StyleBuilder::propertyHandler): (WebCore::StyleBuilder::index): (WebCore::StyleBuilder::valid): (WebCore::StyleBuilder::setPropertyHandler): 2012-04-24 Florin Malita <fmalita@chromium.org> WebCore::EventTarget::addEventListener crash https://bugs.webkit.org/show_bug.cgi?id=84171 Reviewed by Nikolas Zimmermann. Test: svg/custom/use-tref-crash.svg Adding tref target event listeners while building the shadow tree is problematic, because SVGUseElement::buildShadowAndInstanceTree() only sets the element instance<->shadow element association at a later time. Fortunately, buildShadowAndInstanceTree() also propagates the event handlers (transferEventListenersToShadowTree) - so we can simply skip them in SVGTRefElement::buildPendingResource() for shadow elements. * svg/SVGTRefElement.cpp: (WebCore::SVGTRefElement::buildPendingResource): 2012-04-24 Kent Tamura <tkent@chromium.org> Clickable area of a calendar picker indicator is too small. https://bugs.webkit.org/show_bug.cgi?id=84677 Reviewed by Kentaro Hara. Test: fast/forms/date/date-appearance.html is affected. * css/html.css: (input::-webkit-calendar-picker-indicator): - Remove unnecessary disaplay:inline-block. - Add paddings instead of the margin. (input::-webkit-calendar-picker-indicator:hover): Add hover style. 2012-04-24 Alexis Menard <alexis.menard@openbossa.org> Another unreviewed build fix for Mac. * css/CSSStyleSelector.h: (CSSStyleSelector): 2012-04-24 Alexis Menard <alexis.menard@openbossa.org> Unreviewed build fix attempt for Mac. * rendering/style/RenderStyle.h: 2012-04-24 Alexis Menard <alexis.menard@openbossa.org> Rename CSSStyleApplyProperty class to StyleBuilder. https://bugs.webkit.org/show_bug.cgi?id=84711 Reviewed by Antti Koivisto. As per discussion on bug https://bugs.webkit.org/show_bug.cgi?id=42764 the name is a bit confusing. This first patch rename the class and a following one will rename the files. We also drop the CSS prefix of the class to keep CSS prefixed classes for CSSOM types. No new tests : renaming, no behavior changes should appear. * css/CSSStyleApplyProperty.cpp: (WebCore::ApplyPropertyExpanding::applyInheritValue): (WebCore::ApplyPropertyExpanding::applyInitialValue): (WebCore::ApplyPropertyExpanding::applyValue): (WebCore::StyleBuilder::sharedStyleBuilder): (WebCore::StyleBuilder::StyleBuilder): * css/CSSStyleApplyProperty.h: (WebCore): (StyleBuilder): * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::CSSStyleSelector): (WebCore::CSSStyleSelector::collectMatchingRulesForList): * css/CSSStyleSelector.h: (CSSStyleSelector): 2012-04-24 Kent Tamura <tkent@chromium.org> Merge LocalizedCalendar into LocalizedDate https://bugs.webkit.org/show_bug.cgi?id=84685 Reviewed by Kentaro Hara. The functionality of LocalizedCalendar is very related to LocalizedDate. We should merge them. No new tests. Just refactoring. * WebCore.gypi: Remove LocalizedCalendar.h and LocalizedCalenderICU.cpp. * html/shadow/CalendarPickerElement.cpp: Include LocalizedDate.h instead of LocalizedCalendar.h. * platform/text/LocalizedCalendar.h: Removed. Merged into LocalizedDate.h. * platform/text/LocalizedCalendarICU.cpp: Removed. Merged into LocalizedDateICU.h. * platform/text/LocalizedDate.h: (WebCore): Move some functions from LocalizedCalendar.h. * platform/text/LocalizedDateICU.cpp: Move some functions from LocalizedCalendarICU.cpp. 2012-04-24 Pavel Feldman <pfeldman@chromium.org> Web Inspector: remove pure delegation code from DebuggerPresentationModel https://bugs.webkit.org/show_bug.cgi?id=84704 Reviewed by Yury Semikhatsky. This change removes the code that delegates calls to breakpoint manager and exposes the breakpoint manager in debugger presentation model itself. It allows narrowing dpm dependencies. * inspector/front-end/BreakpointsSidebarPane.js: (WebInspector.JavaScriptBreakpointsSidebarPane): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointCheckboxClicked): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._breakpointContextMenu): (WebInspector.JavaScriptBreakpointsSidebarPane.prototype._contextMenu): * inspector/front-end/DebuggerModel.js: (WebInspector.DebuggerModel.prototype.debuggerPausedDetails): (WebInspector.DebuggerModel.prototype.createRawLocationByURL): (WebInspector.DebuggerModel.prototype.isPaused): * inspector/front-end/DebuggerPresentationModel.js: (WebInspector.DebuggerPresentationModel.prototype.get breakpointManager): (WebInspector.DebuggerPresentationModel.prototype._debuggerPaused): (WebInspector.DebuggerPresentationModelResourceBinding.prototype._setContentWithInitialContent): * inspector/front-end/JavaScriptSource.js: (WebInspector.JavaScriptSource): (WebInspector.JavaScriptSource.prototype.consoleMessagesCleared): (WebInspector.JavaScriptSource.prototype.findBreakpoint): (WebInspector.JavaScriptSource.prototype.setBreakpoint): (WebInspector.JavaScriptSource.prototype.setBreakpointEnabled): (WebInspector.JavaScriptSource.prototype.removeBreakpoint): (WebInspector.JavaScriptSource.prototype.updateBreakpoint): (WebInspector.JavaScriptSource.prototype.continueToLine): (WebInspector.JavaScriptSource.prototype.canSetContent): (WebInspector.JavaScriptSource.prototype.setContent): (WebInspector.JavaScriptSource.prototype.updateBreakpointsAfterLiveEdit): * inspector/front-end/JavaScriptSourceFrame.js: (WebInspector.JavaScriptSourceFrame.prototype.canEditSource): (WebInspector.JavaScriptSourceFrame.prototype.editContent): (WebInspector.JavaScriptSourceFrame.prototype._onContentChanged): (WebInspector.JavaScriptSourceFrame.prototype.populateLineGutterContextMenu.else.editBreakpointCondition.didEditBreakpointCondition): (WebInspector.JavaScriptSourceFrame.prototype.populateLineGutterContextMenu.else): (WebInspector.JavaScriptSourceFrame.prototype.populateLineGutterContextMenu): (WebInspector.JavaScriptSourceFrame.prototype.beforeTextChanged): (WebInspector.JavaScriptSourceFrame.prototype._getPopoverAnchor): (WebInspector.JavaScriptSourceFrame.prototype._resolveObjectForPopover.showObjectPopover): (WebInspector.JavaScriptSourceFrame.prototype._resolveObjectForPopover): (WebInspector.JavaScriptSourceFrame.prototype._setBreakpoint): (WebInspector.JavaScriptSourceFrame.prototype._onMouseDown): * inspector/front-end/ScopeChainSidebarPane.js: (WebInspector.ScopeChainSidebarPane.prototype.update): * inspector/front-end/ScriptsPanel.js: (WebInspector.ScriptsPanel.prototype._debuggerPaused.else.didGetUILocation): (WebInspector.ScriptsPanel.prototype._debuggerPaused): 2012-04-24 Yury Semikhatsky <yurys@chromium.org> Web Inspector: native nodes may have snapshot id less than base snapshot max JS object id https://bugs.webkit.org/show_bug.cgi?id=84681 Make sure new nodes whose IDs less than base snapshot max JS object id will get into snapshot delta. Reviewed by Pavel Feldman. Test: inspector/profiler/heap-snapshot-comparison-dom-groups-change.html * inspector/front-end/HeapSnapshot.js: (WebInspector.HeapSnapshot.prototype._calculateDiffForClass): * inspector/front-end/HeapSnapshotDataGrids.js: (WebInspector.HeapSnapshotSortableDataGrid): Drive-by fix, made recursion counter a normal field on HeapSnapshotSortableDataGrid. (WebInspector.HeapSnapshotSortableDataGrid.prototype.recursiveSortingEnter): (WebInspector.HeapSnapshotSortableDataGrid.prototype.recursiveSortingLeave): 2012-04-24 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r115000. http://trac.webkit.org/changeset/115000 https://bugs.webkit.org/show_bug.cgi?id=84703 Breaks webkit_unit_tests on Mac in Chromium: http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac10.6/builds/15157 (Requested by mnaganov on #webkit). * platform/graphics/skia/OpaqueRegionSkia.cpp: (WebCore::paintIsOpaque): (WebCore::OpaqueRegionSkia::popCanvasLayer): (WebCore::OpaqueRegionSkia::didDraw): (WebCore::OpaqueRegionSkia::didDrawUnbounded): (WebCore::OpaqueRegionSkia::markRectAsOpaque): (WebCore::OpaqueRegionSkia::markRectAsNonOpaque): * platform/graphics/skia/OpaqueRegionSkia.h: (OpaqueRegionSkia): (WebCore::OpaqueRegionSkia::CanvasLayerState::CanvasLayerState): (CanvasLayerState): * platform/graphics/skia/PlatformContextSkia.cpp: (WebCore::PlatformContextSkia::restoreLayer): 2012-04-23 Antti Koivisto <antti@apple.com> Consolidate external stylesheet quirks handling to StyleSheetInternal https://bugs.webkit.org/show_bug.cgi?id=84632 Reviewed by Andreas Kling. Move the repeated code from StyleImportRule and HTMLLinkElement to StyleSheetInternal::parseUserStyleSheet. Remove a BUILDING_ON_LEOPARD-only quirk. * css/CSSImportRule.cpp: (WebCore::StyleRuleImport::setCSSStyleSheet): * css/CSSParser.cpp: (WebCore): (WebCore::CSSParserContext::CSSParserContext): Add new settings bits to the CSSParserContext. These are used for external stylesheet parsing quirks. * css/CSSParserMode.h: (CSSParserContext): * css/CSSStyleSheet.cpp: (WebCore::StyleSheetInternal::parseUserStyleSheet): (WebCore::StyleSheetInternal::parseString): (WebCore): (WebCore::StyleSheetInternal::parseStringAtLine): * css/CSSStyleSheet.h: (WebCore): (StyleSheetInternal): * html/HTMLLinkElement.cpp: (WebCore::HTMLLinkElement::setCSSStyleSheet): 2012-04-24 Yael Aharon <yael.aharon@nokia.com> [Qt] Move notification icon download out of WebCore https://bugs.webkit.org/show_bug.cgi?id=80700 Reviewed by Simon Hausmann. Remove the code that downloads the notification's icon out of WebCore. Other ports let the client decide if to download the icon or not. No new tests. This patch is only removing code. * notifications/Notification.cpp: (WebCore::Notification::~Notification): (WebCore::Notification::show): (WebCore::Notification::close): (WebCore::Notification::contextDestroyed): * notifications/Notification.h: (Notification): 2012-04-24 Rakesh KN <rakesh.kn@motorola.com> RadioNodeList support in HTMLFormElement::elements https://bugs.webkit.org/show_bug.cgi?id=81854 Implement RadioNodeList support spec'ed at http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#radionodelist Reviewed by Ryosuke Niwa. Test: fast/forms/form-collection-radio-node-list.html * CMakeLists.txt: Added entries for new files. * DerivedSources.cpp: Ditto. * DerivedSources.make: Ditto. * DerivedSources.pri: Ditto. * GNUmakefile.list.am: Ditto. * Target.pri: Ditto. * WebCore.gypi: Ditto. * WebCore.vcproj/WebCore.vcproj: Ditto. * WebCore.xcodeproj/project.pbxproj: Ditto. * bindings/js/JSHTMLCollectionCustom.cpp: (WebCore::getNamedItems): Modified to create RadioNodeList object when FormControlCollection has more than one element of same name/id. * bindings/scripts/CodeGeneratorJS.pm: (GenerateImplementation): Added code to include Node.h and JSNode.h in JSRadioNodeElement.cpp. * bindings/v8/custom/V8HTMLCollectionCustom.cpp: (WebCore::getNamedItems): Modified to create RadioNodeList object when FormControlCollection has more than one element of same name/id. * html/CollectionType.h: Added new FormControls type. * html/HTMLCollection.cpp: (WebCore::HTMLCollection::shouldIncludeChildren): (WebCore::HTMLCollection::isAcceptableElement): Handle FormControls collection type. * html/HTMLFormCollection.cpp: (WebCore::HTMLFormCollection::HTMLFormCollection): Contruct collection of FormControls type. * html/RadioNodeList.cpp: Added. (WebCore): (WebCore::RadioNodeList::RadioNodeList): (WebCore::RadioNodeList::~RadioNodeList): (WebCore::toRadioButtonInputElement): (WebCore::RadioNodeList::value): (WebCore::RadioNodeList::setValue): (WebCore::RadioNodeList::nodeMatches): * html/RadioNodeList.h: Added. (WebCore): (RadioNodeList): (WebCore::RadioNodeList::create): RadioNodeList implementation. * html/RadioNodeList.idl: Added. Idl for generating RadioNodeList JS/V8 bindings. 2012-04-24 Benjamin Poulain <bpoulain@apple.com> Implement the field cache of ObjcClass in WebKit types https://bugs.webkit.org/show_bug.cgi?id=84667 Reviewed by Geoffrey Garen. Every time we get a field through the Objective-C bridge, we waste some time converting the incoming string to an CFString. This patch implement the field cache based on WTF types so that we can return directly in case of a positive match. When we do not have a match on the Identifier, we allocate the memory and find the valid field as before. * bridge/objc/objc_class.h: (ObjcClass): * bridge/objc/objc_class.mm: (JSC::Bindings::deleteMethod): (Bindings): (JSC::Bindings::ObjcClass::ObjcClass): (JSC::Bindings::ObjcClass::fieldNamed): 2012-04-23 Andy Estes <aestes@apple.com> Incremental rendering should be unsuppressed after the load event or a configurable timeout, whichever occurs first. https://bugs.webkit.org/show_bug.cgi?id=84583 Reviewed by Anders Carlsson. In high-latency situations, having incremental rendering suppression enabled makes for a worse experience due to the excessively long time it takes for the load event to fire. So that clients that opt in to incremental rendering suppression can mitigate this, add a configurable timeout in which rendering is re-enabled if the load event has yet to fire. * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::setReadyState): When the document transitions to the loading state, start a timer; when it transitions to the completed state, allow visual updates. (WebCore::Document::setVisualUpdatesAllowed): If visual updates are allowed, force a repaint. Otherwise, set a flag that suppresses rendering. (WebCore::Document::visualUpdatesSuppressionTimerFired): When the timer fires, allow visual updates. (WebCore::Document::implicitClose): Remove code that is now called in setVisualUpdatesAllowed(). * dom/Document.h: (WebCore::Document::visualUpdatesAllowed): * page/Settings.cpp: (WebCore::Settings::Settings): * page/Settings.h: (WebCore::Settings::setIncrementalRenderingSuppressionTimeoutInSeconds): (WebCore::Settings::incrementalRenderingSuppressionTimeoutInSeconds): 2012-04-23 Dana Jansens <danakj@chromium.org> [chromium] Image masks are considered opaque incorrectly https://bugs.webkit.org/show_bug.cgi?id=84275 Reviewed by Adrienne Walker. Match the behaviour of SkCanvas layers more closely while tracking opaque paints. SkCanvas layers actually act as a separate device (ie. pixels) and when the layer is popped off, the pixels are copied down to the layer below. While we can use the total clip to decide what pixels the the drawing operation will affect in the final device, the blending down through layers needs to consider each layer carefully. In this case the image mask is drawn into a layer which is copied down using the DestinationIn operation. Since the layer contains non-opaque pixels, the DestinationIn copy can destroy opaque areas in the next layer. We add OpaqueRegionSkia::FillByCopy to distinguish the case where we are copying a block of pixels, and the alpha values are essentially unknown. Unit test: PlatformContextSkiaTest.trackImageMask PlatformContextSkiaTest.trackImageMaskWithOpaqueRect * platform/graphics/skia/OpaqueRegionSkia.cpp: (WebCore::paintIsOpaque): (WebCore::OpaqueRegionSkia::applyOpaqueRegionFromLayer): (WebCore::OpaqueRegionSkia::pushCanvasLayer): (WebCore::OpaqueRegionSkia::popCanvasLayer): (WebCore::OpaqueRegionSkia::didDrawRect): (WebCore::OpaqueRegionSkia::didDrawPath): (WebCore::OpaqueRegionSkia::didDrawPoints): (WebCore::OpaqueRegionSkia::didDrawBounded): (WebCore::OpaqueRegionSkia::didDraw): (WebCore::OpaqueRegionSkia::didDrawUnbounded): (WebCore::OpaqueRegionSkia::markRectAsOpaque): (WebCore::OpaqueRegionSkia::markRectAsNonOpaque): (WebCore::OpaqueRegionSkia::markAllAsNonOpaque): * platform/graphics/skia/OpaqueRegionSkia.h: (OpaqueRegionSkia): (CanvasLayerState): * platform/graphics/skia/PlatformContextSkia.cpp: (WebCore::PlatformContextSkia::restoreLayer): 2012-04-23 Kent Tamura <tkent@chromium.org> Show the format indicator in a date field https://bugs.webkit.org/show_bug.cgi?id=83872 Reviewed by Hajime Morita. Enable the fixed placeholder feature for the date type, and show the editable date format as the fixed placeholder. The format string is created by the following steps. 1. Obtain a pattern string from ICU http://icu-project.org/apiref/icu4c/classSimpleDateFormat.html#details 2. Replace a sequence of 'y', 'Y', 'M', or 'd' in the pattern with a natural language string such as "year", "month", or "day". Test: fast/forms/date/date-fixed-placeholder.html * html/DateInputType.cpp: (WebCore::DateInputType::supportsPlaceholder): Added. Returns true. (WebCore::DateInputType::usesFixedPlaceholder): Added. Returns true. (WebCore::DateInputType::fixedPlaceholder): Added. Calls localizedDateFormatText() provided by LocalizedDate.h. * html/DateInputType.h: (DateInputType): Add declarations of new override functions. * platform/LocalizedStrings.h: (WebCore): Add dateFormat{Year,Month,DayInMonth}Text() * platform/text/ICULocale.cpp: (WebCore::isICUYearSymbol): A function to improve redability. (WebCore::isICUMonthSymbol): ditto. (WebCore::isICUDayInMonthSymbol): ditto. (WebCore::localizeFormat): Step 2 of the above description. (WebCore::ICULocale::initializeLocalizedDateFormatText): Step 1 of the above description. (WebCore::ICULocale::localizedDateFormatText): * platform/text/ICULocale.h: (ICULocale): Add new functions and a data member. * platform/text/LocalizedDate.h: (WebCore): Add localizedDateFormatText(). * platform/text/LocalizedDateICU.cpp: (WebCore::localizedDateFormatText): Just call ICULocale::localizedDateFormatText(). 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to v8Array() https://bugs.webkit.org/show_bug.cgi?id=84295 Reviewed by Nate Chapin. The final objective is to pass Isolate around in V8 bindings. This patch passes the Isolate to v8Array(). (GenerateNormalAttrGetter): (NativeToJSValue): * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::TestObjV8Internal::sequenceAttrAttrGetter): (WebCore::TestObjV8Internal::methodReturningSequenceCallback): * bindings/v8/V8Binding.h: (WebCore::v8Array): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to GetNamedProperty() https://bugs.webkit.org/show_bug.cgi?id=84277 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate to GetNamedProperty(). (GenerateHeader): * bindings/v8/V8DOMWindowShell.cpp: (WebCore::getter): * bindings/v8/custom/V8HTMLDocumentCustom.cpp: (WebCore::V8HTMLDocument::GetNamedProperty): (WebCore::V8HTMLDocument::allAccessorGetter): 2012-04-23 Michael Nordman <michaeln@google.com> [chromium] DomStorage event handling mods. https://bugs.webkit.org/show_bug.cgi?id=84387 Add a few simple inline getters to allow the source Document of a storage event to be identified given a pointer to the source StorageArea so those Documents can be excluded by the event dispatching logic. Reviewed by Dimitri Glazkov. No new tests. No new functionality or change in behavior. * page/DOMWindow.h: (WebCore::DOMWindow::optionalSessionStorage): simple inline getter to avoid construction where possible (WebCore::DOMWindow::optionalLocalStorage): ditto * storage/Storage.h: (WebCore::Storage::area): simple inline getter 2012-04-23 Kenneth Russell <kbr@google.com> Change ImageData to reference Uint8ClampedArray rather than CanvasPixelArray https://bugs.webkit.org/show_bug.cgi?id=73011 Reviewed by Oliver Hunt. Changed ImageData to contain Uint8ClampedArray instead of ByteArray per current HTML5 spec. In order to avoid introducing large data copies, it was necessary to switch a few other places in WebKit to use Uint8ClampedArray at the same time, most notably the FilterEffect implementation, portions of ImageBuffer, and a couple of places in the image encoders. Note that the change in method name from "get" to "item" occurred because JSC's autogenerated indexed getters reference a method called "item". If desired, a convenience method could be introduced to avoid the renamings in the FilterEffect classes. With these changes, ByteArray and some custom code in JavaScriptCore actually become unreferenced, and can be deleted. This deletion will be done separately in Bug 83655, to keep the size of this patch manageable. Test: fast/canvas/imagedata-contains-uint8clampedarray.html * bindings/js/JSImageDataCustom.cpp: (WebCore::toJS): * bindings/js/SerializedScriptValue.cpp: (WebCore::CloneSerializer::dumpIfTerminal): (WebCore::CloneDeserializer::readTerminal): * bindings/v8/SerializedScriptValue.cpp: * bindings/v8/custom/V8ImageDataCustom.cpp: (WebCore::toV8): * bridge/qt/qt_pixmapruntime.cpp: (JSC::Bindings::QtPixmapToImageDataMethod::invoke): * html/ImageData.cpp: (WebCore::ImageData::create): (WebCore::ImageData::ImageData): * html/ImageData.h: (ImageData): (WebCore::ImageData::data): * html/ImageData.idl: * html/canvas/CanvasRenderingContext2D.cpp: (WebCore::createEmptyImageData): (WebCore::CanvasRenderingContext2D::getImageData): (WebCore::CanvasRenderingContext2D::putImageData): * platform/graphics/GraphicsContext3D.cpp: (WebCore::GraphicsContext3D::extractImageData): * platform/graphics/ImageBuffer.cpp: (WebCore::ImageBuffer::genericConvertToLuminanceMask): * platform/graphics/ImageBuffer.h: * platform/graphics/ShadowBlur.cpp: (WebCore::ShadowBlur::blurShadowBuffer): * platform/graphics/cairo/ImageBufferCairo.cpp: (WebCore::getImageData): (WebCore::ImageBuffer::getUnmultipliedImageData): (WebCore::ImageBuffer::getPremultipliedImageData): (WebCore::ImageBuffer::putByteArray): * platform/graphics/cg/ImageBufferCG.cpp: (WebCore::ImageBuffer::getUnmultipliedImageData): (WebCore::ImageBuffer::getPremultipliedImageData): (WebCore::ImageBuffer::putByteArray): (WebCore::ImageBuffer::toDataURL): (WebCore::ImageDataToDataURL): * platform/graphics/cg/ImageBufferDataCG.cpp: (WebCore::ImageBufferData::getData): (WebCore::ImageBufferData::putData): * platform/graphics/cg/ImageBufferDataCG.h: (ImageBufferData): * platform/graphics/filters/FEBlend.cpp: (WebCore::FEBlend::platformApplySoftware): * platform/graphics/filters/FEColorMatrix.cpp: (WebCore::effectType): (WebCore::FEColorMatrix::platformApplySoftware): * platform/graphics/filters/FEComponentTransfer.cpp: (WebCore::FEComponentTransfer::platformApplySoftware): * platform/graphics/filters/FEComposite.cpp: (WebCore::FEComposite::platformArithmeticSoftware): (WebCore::FEComposite::platformApplySoftware): * platform/graphics/filters/FEComposite.h: * platform/graphics/filters/FEConvolveMatrix.cpp: (WebCore::setDestinationPixels): (WebCore::FEConvolveMatrix::fastSetInteriorPixels): (WebCore::FEConvolveMatrix::fastSetOuterPixels): (WebCore::FEConvolveMatrix::platformApplySoftware): * platform/graphics/filters/FEConvolveMatrix.h: (PaintingData): * platform/graphics/filters/FECustomFilter.cpp: (WebCore::FECustomFilter::platformApplySoftware): (WebCore::FECustomFilter::bindProgramAndBuffers): * platform/graphics/filters/FECustomFilter.h: (JSC): (FECustomFilter): * platform/graphics/filters/FEDisplacementMap.cpp: (WebCore::FEDisplacementMap::platformApplySoftware): * platform/graphics/filters/FEDropShadow.cpp: (WebCore::FEDropShadow::platformApplySoftware): * platform/graphics/filters/FEGaussianBlur.cpp: (WebCore::boxBlur): (WebCore::FEGaussianBlur::platformApplyGeneric): (WebCore::FEGaussianBlur::platformApply): (WebCore::FEGaussianBlur::platformApplySoftware): * platform/graphics/filters/FEGaussianBlur.h: (PlatformApplyParameters): (FEGaussianBlur): * platform/graphics/filters/FELighting.cpp: (WebCore::FELighting::LightingData::topLeft): (WebCore::FELighting::LightingData::topRow): (WebCore::FELighting::LightingData::topRight): (WebCore::FELighting::LightingData::leftColumn): (WebCore::FELighting::LightingData::interior): (WebCore::FELighting::LightingData::rightColumn): (WebCore::FELighting::LightingData::bottomLeft): (WebCore::FELighting::LightingData::bottomRow): (WebCore::FELighting::LightingData::bottomRight): (WebCore::FELighting::inlineSetPixel): (WebCore::FELighting::drawLighting): (WebCore::FELighting::platformApplySoftware): * platform/graphics/filters/FELighting.h: (LightingData): (FELighting): * platform/graphics/filters/FEMorphology.cpp: (WebCore::FEMorphology::platformApplyGeneric): (WebCore::FEMorphology::platformApplySoftware): * platform/graphics/filters/FEMorphology.h: (PaintingData): * platform/graphics/filters/FETurbulence.cpp: (WebCore::FETurbulence::fillRegion): (WebCore::FETurbulence::platformApplySoftware): * platform/graphics/filters/FETurbulence.h: (FillRegionParameters): (FETurbulence): * platform/graphics/filters/FilterEffect.cpp: (WebCore::FilterEffect::forceValidPreMultipliedPixels): (WebCore::FilterEffect::asUnmultipliedImage): (WebCore::FilterEffect::asPremultipliedImage): (WebCore::FilterEffect::copyImageBytes): (WebCore::FilterEffect::copyUnmultipliedImage): (WebCore::FilterEffect::copyPremultipliedImage): (WebCore::FilterEffect::createUnmultipliedImageResult): (WebCore::FilterEffect::createPremultipliedImageResult): * platform/graphics/filters/FilterEffect.h: (FilterEffect): * platform/graphics/filters/arm/FEGaussianBlurNEON.h: (WebCore::FEGaussianBlur::platformApplyNeon): * platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp: (WebCore::GraphicsContext3D::paintRenderingResultsToImageData): * platform/graphics/qt/ImageBufferQt.cpp: (WebCore::getImageData): (WebCore::ImageBuffer::getUnmultipliedImageData): (WebCore::ImageBuffer::getPremultipliedImageData): (WebCore::ImageBuffer::putByteArray): * platform/graphics/skia/ImageBufferSkia.cpp: (WebCore::getImageData): (WebCore::ImageBuffer::getUnmultipliedImageData): (WebCore::ImageBuffer::getPremultipliedImageData): (WebCore::ImageBuffer::putByteArray): * platform/graphics/texmap/TextureMapperGL.cpp: * platform/graphics/wince/ImageBufferWinCE.cpp: (WebCore::getImageData): (WebCore::ImageBuffer::getUnmultipliedImageData): (WebCore::ImageBuffer::getPremultipliedImageData): (WebCore::ImageBuffer::putByteArray): * platform/graphics/wx/ImageBufferWx.cpp: (WebCore::ImageBuffer::getUnmultipliedImageData): (WebCore::ImageBuffer::getPremultipliedImageData): (WebCore::ImageBuffer::putByteArray): * platform/image-encoders/skia/JPEGImageEncoder.cpp: (WebCore::JPEGImageEncoder::encode): * platform/image-encoders/skia/PNGImageEncoder.cpp: (WebCore::PNGImageEncoder::encode): * platform/image-encoders/skia/WEBPImageEncoder.cpp: (WebCore::WEBPImageEncoder::encode): 2012-04-23 Ryan Sleevi <rsleevi@chromium.org> [chromium] Remove deleted files from WebCore.gypi and fix typo https://bugs.webkit.org/show_bug.cgi?id=84651 Reviewed by Ryosuke Niwa. No new tests. No behavior change. * WebCore.gypi: Remove references to PlatformMouseEventQt.cpp and WheelEventQt.cpp. Add a missing comma. 2012-04-23 Erik Arvidsson <arv@chromium.org> [V8] Fix issue with trying to access a constructor in a frame that has been removed https://bugs.webkit.org/show_bug.cgi?id=84640 Reviewed by Kentaro Hara. This regressed in r113250. Now we do what we did before and return undefined if the frame does not have a context. Test: fast/dom/constructor-in-removed-frame.html * bindings/v8/V8DOMWrapper.cpp: (WebCore::V8DOMWrapper::constructorForType): 2012-04-23 Chris Rogers <crogers@google.com> Oscillator::setWaveTable() should not reset oscillator phase https://bugs.webkit.org/show_bug.cgi?id=84647 Reviewed by Kenneth Russell. * Modules/webaudio/Oscillator.cpp: (WebCore::Oscillator::setWaveTable): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8][Refactoring] Remove V8Proxy::throwSyntaxError() https://bugs.webkit.org/show_bug.cgi?id=84627 Reviewed by Nate Chapin. This patch removes V8Proxy::throwSyntaxError() since it is no longer used. No tests. No change in behavior. * bindings/v8/V8Proxy.cpp: * bindings/v8/V8Proxy.h: (V8Proxy): 2012-04-18 James Robinson <jamesr@chromium.org> [chromium] Use TextureLayerChromium for WebGL content instead of a dedicated layer type https://bugs.webkit.org/show_bug.cgi?id=84311 Reviewed by Adrienne Walker. WebGL content's interface with the compositor can be expressed in terms of two basic operations: 1.) Do some stuff 2.) Provide a texture ID for the compositor to use This implements (1) in DrawingBufferChromium and uses the already-existing TextureLayerChromium to handle (2). This cuts down the compositor interface significantly and allows for more code reuse in exchange for more code in TextureLayerChromium to handle the features WebGL needs. * WebCore.gypi: * platform/graphics/chromium/DrawingBufferChromium.cpp: (WebCore::DrawingBuffer::~DrawingBuffer): (DrawingBufferPrivate): (WebCore::DrawingBufferPrivate::DrawingBufferPrivate): (WebCore::DrawingBufferPrivate::~DrawingBufferPrivate): (WebCore::DrawingBufferPrivate::layer): (WebCore): (WebCore::DrawingBuffer::platformLayer): * platform/graphics/chromium/LayerRendererChromium.cpp: * platform/graphics/chromium/TextureLayerChromium.h: (TextureLayerChromiumClient): (WebCore::TextureLayerChromiumClient::~TextureLayerChromiumClient): (WebCore): (TextureLayerChromium): (WebCore::TextureLayerChromium::clearClient): * platform/graphics/chromium/WebGLLayerChromium.cpp: Removed. * platform/graphics/chromium/WebGLLayerChromium.h: Removed. * platform/graphics/gpu/DrawingBuffer.h: (WebCore): (WebCore::DrawingBuffer::graphicsContext3D): (DrawingBuffer): 2012-04-23 Alec Flett <alecflett@chromium.org> IndexedDB: remove IDB(Index|ObjectStore)BackendImpl::get/getKey for IDBKey https://bugs.webkit.org/show_bug.cgi?id=84285 Reviewed by Dimitri Glazkov. No new tests required, this code is no longer called. This is old code supporting IDBKey-based lookup, supplanted by IDBKeyRange. Now that chromium IPC/proxy code has landed, these functions can be removed. * Modules/indexeddb/IDBIndexBackendInterface.h: (IDBIndexBackendInterface): * Modules/indexeddb/IDBObjectStoreBackendInterface.h: (IDBObjectStoreBackendInterface): 2012-04-22 Martin Robinson <mrobinson@igalia.com> REGRESSION(113604): [Soup] Some pages that use synchronous XMLHttpRequests freeze the browser https://bugs.webkit.org/show_bug.cgi?id=84560 Reviewed by Xan Lopez. When kicking off a synchronous XMLHttpRequest, add one to the connection limit. This ensures that when a page starts a synchronous request, while already at the connection limit the request will not deadlock. * platform/network/soup/ResourceHandleSoup.cpp: (WebCore::WebCoreSynchronousLoader::WebCoreSynchronousLoader): Accept a new SoupSession argument so that we can get the correct SoupSession for the networking context. Bump the connection limit. (WebCore::WebCoreSynchronousLoader::~WebCoreSynchronousLoader): Decrement the connection limit. (WebCore::WebCoreSynchronousLoader::adjustMaxConnections): Added this helper. (WebCoreSynchronousLoader): Added a new SoupSession member. (WebCore::sessionFromContext): Added this helper. (WebCore::ResourceHandleInternal::soupSession): Use the new sessionFromContext helper. (WebCore::ResourceHandle::loadResourceSynchronously): Pass the SoupSession from the NetworkingContext to the synchronous loader. 2012-04-23 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r114965. http://trac.webkit.org/changeset/114965 https://bugs.webkit.org/show_bug.cgi?id=84665 Four new resource load delegate test failures (Requested by jernoble on #webkit). * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::willCancel): (WebCore::SubresourceLoader::releaseResources): 2012-04-23 Beth Dakin <bdakin@apple.com> https://bugs.webkit.org/show_bug.cgi?id=84649 RenderMathMLOperator currently ignores font families, fails to use Stix Reviewed by Dan Bernstein. This patch makes RenderMathMLOperator honor the font-family list. This means that by default, Stix glyphs will now be used for operators just like for other MathML content. Unfortunately, just doing that resulted in a bug because of the fragile hardcoded glyph sizes. The Stix vertical bar glyph is much smaller than the code assumed any glyphs would be. That code should be re-written, but in the meantime, I put a fix in place to try to make it work for small glyphs. These new functions should be used instead of accessing gGlyphHeight or gGlyphLineHeight directly. If the glyph is smaller than the expected hardcoded value, then the actual glyph height is used, and a new line height based on the glyph height is used. (WebCore::RenderMathMLOperator::glyphHeightForCharacter): (WebCore::RenderMathMLOperator::lineHeightForCharacter): Use the style's FontDescription to honor the font family list and the style's FontSelector to honor @font-face. Also use glyphHeightForCharacter() instead of gGlyphHeight. And now that createGlyph() takes a lineHeight, use lineHeightForCharacter() to determine the right value. (WebCore::RenderMathMLOperator::updateFromElement): size was an ambiguous variable name, so I renamed it to the more accurate maxHeightForRenderer. This function also now takes a lineHeight instead of using gGlyphLineHeight. And again, use the style's FontDescription and FontSelector. (WebCore::RenderMathMLOperator::createStackableStyle): Re-name size to maxHeightForRenderer, and take lineHeight as a parameter. (WebCore::RenderMathMLOperator::createGlyph): * rendering/mathml/RenderMathMLOperator.h: (RenderMathMLOperator): 2012-04-23 Eriq Augustine <eaugusti@chromium.org> Return value from executed script in Chromium. https://bugs.webkit.org/show_bug.cgi?id=79851 Reviewed by Adam Barth. Providing a varaiant of evaluateScriptInIsolatedWorld that returns the value of the evaluated script. Test: platform/chromium/http/tests/misc/execute-and-return-value.html * bindings/v8/ScriptController.cpp: (WebCore::ScriptController::evaluateInIsolatedWorld): * bindings/v8/ScriptController.h: (ScriptController): * bindings/v8/V8Proxy.cpp: (WebCore::V8Proxy::evaluateInIsolatedWorld): * bindings/v8/V8Proxy.h: (V8Proxy): 2012-04-23 Kent Tamura <tkent@chromium.org> RenderDetailsMarker should draw the triangle inside the content box https://bugs.webkit.org/show_bug.cgi?id=84557 Reviewed by Hajime Morita. RenderDetailsMarker didn't support cases in which a marker has borders and/or padings, or non-square size. Test: fast/html/details-marker-style.html * rendering/RenderDetailsMarker.cpp: (WebCore::RenderDetailsMarker::getPath): Scale by contentWidth() and contentHeight(). (WebCore::RenderDetailsMarker::paint): Move the trianle origin by the ammount of left/top borders and paddings. 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8() (Part6) https://bugs.webkit.org/show_bug.cgi?id=84273 Reviewed by Nate Chapin. The objective is to pass Isolate to all toV8()s. Since there are a lot of toV8()s, I'll make the change step by step. This patch passes Isolate to toV8() in several custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8HTMLAllCollectionCustom.cpp: (WebCore::getNamedItems): (WebCore::getItem): (WebCore::V8HTMLAllCollection::namedPropertyGetter): (WebCore::V8HTMLAllCollection::itemCallback): (WebCore::V8HTMLAllCollection::namedItemCallback): (WebCore::V8HTMLAllCollection::callAsFunctionCallback): * bindings/v8/custom/V8HTMLCollectionCustom.cpp: (WebCore::getNamedItems): (WebCore::V8HTMLCollection::namedPropertyGetter): (WebCore::V8HTMLCollection::namedItemCallback): (WebCore::toV8): * bindings/v8/custom/V8SVGPathSegCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8StyleSheetCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8StyleSheetListCustom.cpp: (WebCore::V8StyleSheetList::namedPropertyGetter): * bindings/v8/custom/V8TrackEventCustom.cpp: (WebCore::V8TrackEvent::trackAccessorGetter): * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp: (WebCore::toV8Object): (WebCore::getObjectParameter): (WebCore::V8WebGLRenderingContext::getAttachedShadersCallback): (WebCore::V8WebGLRenderingContext::getExtensionCallback): (WebCore::V8WebGLRenderingContext::getFramebufferAttachmentParameterCallback): (WebCore::V8WebGLRenderingContext::getParameterCallback): (WebCore::V8WebGLRenderingContext::getProgramParameterCallback): (WebCore::V8WebGLRenderingContext::getShaderParameterCallback): (WebCore::V8WebGLRenderingContext::getUniformCallback): * bindings/v8/custom/V8XMLHttpRequestCustom.cpp: (WebCore::V8XMLHttpRequest::responseAccessorGetter): * bindings/v8/custom/V8XSLTProcessorCustom.cpp: (WebCore::V8XSLTProcessor::transformToFragmentCallback): (WebCore::V8XSLTProcessor::transformToDocumentCallback): 2012-04-23 Kent Tamura <tkent@chromium.org> Move the content of LocalizedCalendarICU.cpp and LocalizedDateICU.cpp to ICULocale.cpp. https://bugs.webkit.org/show_bug.cgi?id=84568 Reviewed by Hajime Morita. Move it to ICULocal.cpp because we want to share UDateFormat object in LocalizedDate functions and LocalizedCalendar functions, and it becomes easier to cache the UDateFormat object, and making unit tests for these functions easier. No new tests because of no bahevior changes. * platform/text/ICULocale.cpp: (WebCore::ICULocale::ICULocale): Initialize new members. (WebCore::ICULocale::~ICULocale): Delete m_shortDateFormat. (WebCore::ICULocale::initializeShortDateFormat): Moved from creteShortDateFormatter of LocalizedDateICU.cpp. (WebCore::ICULocale::parseLocalizedDate): Moved from LocalizedDate.cpp, use m_shortDateFormat. (WebCore::ICULocale::formatLocalizedDate): ditto. (WebCore::ICULocale::createLabelVector): Moved from LocalizedCalendarICU.cpp, use m_shortDateFormat. (WebCore::createFallbackMonthLabels): Moved from LocalizedCalendarICU.cpp. (WebCore::createFallbackWeekDayShortLabels): ditto. (WebCore::ICULocale::initializeCalendar): lazy initialization of m_monthLabels, m_weekDayShortLabels, and m_firstDayOfWeek. (WebCore::ICULocale::monthLabels): (WebCore::ICULocale::weekDayShortLabels): (WebCore::ICULocale::firstDayOfWeek): * platform/text/ICULocale.h: (ICULocale): Add declarations. * platform/text/LocalizedCalendarICU.cpp: (WebCore::monthLabels): Use ICULocale::currentLocale(). (WebCore::weekDayShortLabels): ditto. (WebCore::firstDayOfWeek): ditto. * platform/text/LocalizedDateICU.cpp: (WebCore::parseLocalizedDate): ditto. (WebCore::formatLocalizedDate): ditto. 2012-04-23 Raymond Toy <rtoy@google.com> Move AudioDestinationChromium FIFO class to its own class. https://bugs.webkit.org/show_bug.cgi?id=84058 Reviewed by Chris Rogers. Current tests cover the changes. * WebCore.gypi: Update with new files. * platform/audio/AudioPullFIFO.cpp: Copied from Source/WebKit/chromium/src/AudioDestinationChromium.cpp. (WebCore): Renamed old class the AudioPullFIFO. (WebCore::AudioPullFIFO::AudioPullFIFO): (WebCore::AudioPullFIFO::consume): (WebCore::AudioPullFIFO::findWrapLengths): (WebCore::AudioPullFIFO::fillBuffer): * platform/audio/AudioPullFIFO.h: Added. (WebCore): (AudioPullFIFO): (WebCore::AudioPullFIFO::updateIndex): 2012-04-23 Nate Chapin <japhet@chromium.org> REGRESSION (r100311): YummySoup app crashes when trying to print https://bugs.webkit.org/show_bug.cgi?id=83918 Reviewed by Alexey Proskuryakov. Test: http/tests/xmlhttprequest/cancel-during-failure-crash.html * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didFinishLoading): (WebCore::SubresourceLoader::didFail): (WebCore::SubresourceLoader::willCancel): Now that we might enter the function if we're already Finishing, some cleanup needs to be done in the Initialized state only. (WebCore::SubresourceLoader::releaseResources): Move requesting counting decrement and laodDone() to the finishing functions. 2012-04-23 Shawn Singh <shawnsingh@chromium.org> [chromium] Visualize accelerated compositor rects. https://bugs.webkit.org/show_bug.cgi?id=79400 Reviewed by Adrienne Walker. No tests, all the code added is only debugging code. This patch adds support for visualizing three different types of rects on the chromium heads-up display: 1. updateRects that indicate what was painted/uploaded to a resource 2. propertyChangedRects that indicate layers that has property changes 3. surfaceDamageRects that are the accumulation of updateRects and propertyChangedRects, indicating what pixels on the screen have actually changed. (Surface damage also accounts for newly exposed areas but that is not explicitly visualized.) In addition to adding support for visualizing this, the CCHeadsUpDisplay was significantly refactored, separating the FPS Counter functionality into a different class, so that the heads-up display is all about visualizing annotations, and those annotations (frame rate, debug rects) are logged separately. * WebCore.gypi: * platform/graphics/chromium/cc/CCDebugRectHistory.cpp: Added. (WebCore): (WebCore::CCDebugRectHistory::CCDebugRectHistory): (WebCore::CCDebugRectHistory::enabled): (WebCore::CCDebugRectHistory::saveDebugRectsForCurrentFrame): (WebCore::CCDebugRectHistory::savePaintRects): (WebCore::CCDebugRectHistory::savePropertyChangedRects): (WebCore::CCDebugRectHistory::saveSurfaceDamageRects): * platform/graphics/chromium/cc/CCDebugRectHistory.h: Added. (WebCore): (WebCore::CCDebugRect::CCDebugRect): (CCDebugRect): (CCDebugRectHistory): (WebCore::CCDebugRectHistory::create): (WebCore::CCDebugRectHistory::debugRects): * platform/graphics/chromium/cc/CCFrameRateCounter.cpp: Added. (WebCore): (WebCore::safeMod): (WebCore::CCFrameRateCounter::frameIndex): (WebCore::CCFrameRateCounter::CCFrameRateCounter): (WebCore::CCFrameRateCounter::markBeginningOfFrame): (WebCore::CCFrameRateCounter::markEndOfFrame): (WebCore::CCFrameRateCounter::isBadFrameInterval): (WebCore::CCFrameRateCounter::isBadFrame): (WebCore::CCFrameRateCounter::getAverageFPSAndStandardDeviation): (WebCore::CCFrameRateCounter::timeStampOfRecentFrame): * platform/graphics/chromium/cc/CCFrameRateCounter.h: Added. (WebCore): (CCFrameRateCounter): (WebCore::CCFrameRateCounter::create): (WebCore::CCFrameRateCounter::currentFrameNumber): (WebCore::CCFrameRateCounter::timeStampHistorySize): * platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp: (WebCore): (WebCore::CCHeadsUpDisplay::enabled): (WebCore::CCHeadsUpDisplay::showDebugRects): (WebCore::CCHeadsUpDisplay::draw): (WebCore::CCHeadsUpDisplay::drawHudContents): (WebCore::CCHeadsUpDisplay::drawFPSCounter): (WebCore::CCHeadsUpDisplay::drawFPSCounterText): (WebCore::CCHeadsUpDisplay::drawDebugRects): * platform/graphics/chromium/cc/CCHeadsUpDisplay.h: (WebCore): (CCHeadsUpDisplay): (WebCore::CCHeadsUpDisplay::CCHeadsUpDisplay): * platform/graphics/chromium/cc/CCLayerTreeHost.h: (WebCore::CCSettings::CCSettings): (CCSettings): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::CCLayerTreeHostImpl): (WebCore::CCLayerTreeHostImpl::calculateRenderPasses): (WebCore::CCLayerTreeHostImpl::drawLayers): (WebCore::CCLayerTreeHostImpl::swapBuffers): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: (WebCore): (WebCore::CCLayerTreeHostImpl::fpsCounter): (WebCore::CCLayerTreeHostImpl::debugRectHistory): (CCLayerTreeHostImpl): 2012-04-23 Julien Chaffraix <jchaffraix@webkit.org> Cut dependency on RenderLayer::scrollRectToVisible outside rendering https://bugs.webkit.org/show_bug.cgi?id=84607 Reviewed by Simon Fraser. Layering fix only, there should be no change behavior. Because we don't have an accessor on RenderObject, a lot of the code needs to know about RenderLayer. This is not necessary and exposes RenderLayer to objects that shouldn't know about it. This patch adds a RenderObject::scrollRectToVisible with the ad-hoc explanation as to why it isn't on RenderBox (scrolling is a RenderBox concept). * WebCore.exp.in: * WebCore.order: Updated to expose the new method. * dom/Element.cpp: (WebCore::Element::scrollIntoView): (WebCore::Element::scrollIntoViewIfNeeded): (WebCore::Element::updateFocusAppearance): * editing/Editor.cpp: (WebCore::Editor::findStringAndScrollToVisible): * editing/FrameSelection.cpp: (WebCore::FrameSelection::revealSelection): * page/FrameView.cpp: (WebCore::FrameView::scrollToAnchor): Updated those call sites to use the new function. * rendering/RenderLayer.h: Removed ScrollBehavior.h #include and default argument values as we are always called through RenderObject now. * rendering/RenderObject.cpp: (WebCore::RenderObject::scrollRectToVisible): * rendering/RenderObject.h: Added a new function that just forwards to the enclosing layer if any. We return whether we actually tried to scroll to match some call sites expectations. 2012-04-23 Zhenyao Mo <zmo@google.com> framebuffer binding should not be changed after canvas resize or compositing https://bugs.webkit.org/show_bug.cgi?id=84609 Reviewed by Kenneth Russell. Test: fast/canvas/webgl/framebuffer-bindings-unaffected-on-resize.html * html/canvas/WebGLRenderingContext.cpp: set framebuffer binding to DrawingBuffer. (WebCore): (WebCore::WebGLRenderingContext::bindFramebuffer): (WebCore::WebGLRenderingContext::deleteFramebuffer): (WebCore::WebGLRenderingContext::loseContextImpl): * platform/graphics/cairo/DrawingBufferCairo.cpp: initialize m_framebufferBinding. (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/chromium/DrawingBufferChromium.cpp: Ditto. (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/chromium/WebGLLayerChromium.cpp: Recover framebuffer binding after update(). (WebCore::WebGLLayerChromium::update): * platform/graphics/gpu/DrawingBuffer.cpp: Add a function to restore framebuffer binding. (WebCore::DrawingBuffer::restoreFramebufferBinding): (WebCore): * platform/graphics/gpu/DrawingBuffer.h: Ditto. (WebCore::DrawingBuffer::setTexture2DBinding): (DrawingBuffer): (WebCore::DrawingBuffer::setFramebufferBinding): * platform/graphics/gpu/mac/DrawingBufferMac.mm: initialize m_framebufferBinding. (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/gpu/qt/DrawingBufferQt.cpp: initialize m_framebufferBinding. (WebCore::DrawingBuffer::DrawingBuffer): 2012-04-23 Victor Carbune <vcarbune@adobe.com> Simplify volume slider rendering https://bugs.webkit.org/show_bug.cgi?id=82150 Reviewed by Eric Carlson. Test: media/video-controls-rendering-toggle-display-none.html * css/mediaControlsChromium.css: Update controls css for Chromium. (audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel): (audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button): (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container): * css/mediaControlsGtk.css: Update controls css for GTK. (audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button): (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container): * css/mediaControlsQuickTime.css: Update controls css for Safari. (audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button): (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container): (audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider): * html/shadow/MediaControlElements.cpp: Removed particular renderer. (WebCore): * html/shadow/MediaControlElements.h: (MediaControlVolumeSliderContainerElement): Remoed particular renderer. * html/shadow/MediaControlRootElement.cpp: (WebCore::MediaControlRootElement::create): Added a div element as a container. Removed extra unused mute button. * html/shadow/MediaControlRootElementChromium.cpp: Added an extra div element as a container for the mute button and the volume slider to easily position them relative to each other. (WebCore::MediaControlRootElementChromium::create): 2012-04-23 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r109981. http://trac.webkit.org/changeset/109981 https://bugs.webkit.org/show_bug.cgi?id=84630 Broke Twitter map buddy icon (see https://bugs.webkit.org/show_bug.cgi?id=84558) (Requested by thorton on #webkit). * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::addToOverlapMap): (WebCore::RenderLayerCompositor::computeCompositingRequirements): 2012-04-23 Emil A Eklund <eae@chromium.org> Crash in RenderInline::clippedOverflowRectForRepaint for PrintPreview https://bugs.webkit.org/show_bug.cgi?id=84300 Reviewed by Simon Fraser. No new tests, have not been able to come up with a reliable reduction. * rendering/RenderInline.cpp: (WebCore::RenderInline::clippedOverflowRectForRepaint): Add NULL check for containingBlock() as it can return NULL when detached from the tree. 2012-04-23 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r114929. http://trac.webkit.org/changeset/114929 https://bugs.webkit.org/show_bug.cgi?id=84623 Broke 35 canvas/webgl tests (Requested by jernoble on #webkit). * html/canvas/WebGLRenderingContext.cpp: (WebCore): (WebCore::WebGLRenderingContext::bindFramebuffer): (WebCore::WebGLRenderingContext::deleteFramebuffer): (WebCore::WebGLRenderingContext::loseContextImpl): * platform/graphics/cairo/DrawingBufferCairo.cpp: (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/chromium/DrawingBufferChromium.cpp: (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/chromium/WebGLLayerChromium.cpp: (WebCore::WebGLLayerChromium::update): * platform/graphics/gpu/DrawingBuffer.cpp: * platform/graphics/gpu/DrawingBuffer.h: (WebCore::DrawingBuffer::setTexture2DBinding): (DrawingBuffer): * platform/graphics/gpu/mac/DrawingBufferMac.mm: (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/gpu/qt/DrawingBufferQt.cpp: (WebCore::DrawingBuffer::DrawingBuffer): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate around in V8Collection.h https://bugs.webkit.org/show_bug.cgi?id=84299 Reviewed by Nate Chapin. The objective is to pass Isolate around in V8 bindings. This patch passes Isolate around in V8Collection.h. No tests. No change in behavior. * bindings/v8/V8Collection.h: (WebCore::getV8Object): (WebCore::getNamedPropertyOfCollection): (WebCore::collectionNamedPropertyGetter): (WebCore::getIndexedPropertyOfCollection): (WebCore::collectionIndexedPropertyGetter): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8() (Part5) https://bugs.webkit.org/show_bug.cgi?id=84271 Reviewed by Nate Chapin. The objective is to pass Isolate to all toV8()s. Since there are a lot of toV8(), I'll make the change step by step. This patch passes Isolate to toV8() in several custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8MessageChannelConstructor.cpp: (WebCore::V8MessageChannel::constructorCallback): * bindings/v8/custom/V8MessageEventCustom.cpp: (WebCore::V8MessageEvent::dataAccessorGetter): (WebCore::V8MessageEvent::portsAccessorGetter): * bindings/v8/custom/V8MutationCallbackCustom.cpp: (WebCore::V8MutationCallback::handleEvent): * bindings/v8/custom/V8NamedNodeMapCustom.cpp: (WebCore::V8NamedNodeMap::indexedPropertyGetter): (WebCore::V8NamedNodeMap::namedPropertyGetter): (WebCore::toV8): * bindings/v8/custom/V8NodeListCustom.cpp: (WebCore::V8NodeList::namedPropertyGetter): * bindings/v8/custom/V8NotificationCenterCustom.cpp: (WebCore::V8NotificationCenter::createHTMLNotificationCallback): (WebCore::V8NotificationCenter::createNotificationCallback): * bindings/v8/custom/V8PerformanceCustom.cpp: (WebCore::V8Performance::memoryAccessorGetter): * bindings/v8/custom/V8PopStateEventCustom.cpp: (WebCore::V8PopStateEvent::stateAccessorGetter): * bindings/v8/custom/V8SQLTransactionSyncCustom.cpp: (WebCore::V8SQLTransactionSync::executeSqlCallback): * bindings/v8/custom/V8SVGPathSegCustom.cpp: (WebCore::toV8): 2012-04-23 Zhenyao Mo <zmo@google.com> framebuffer binding should not be changed after canvas resize or compositing https://bugs.webkit.org/show_bug.cgi?id=84609 Reviewed by Kenneth Russell. Test: fast/canvas/webgl/framebuffer-bindings-unaffected-on-resize.html * html/canvas/WebGLRenderingContext.cpp: set framebuffer binding to DrawingBuffer. (WebCore): (WebCore::WebGLRenderingContext::bindFramebuffer): (WebCore::WebGLRenderingContext::deleteFramebuffer): (WebCore::WebGLRenderingContext::loseContextImpl): * platform/graphics/cairo/DrawingBufferCairo.cpp: initialize m_framebufferBinding. (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/chromium/DrawingBufferChromium.cpp: Ditto. (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/chromium/WebGLLayerChromium.cpp: Recover framebuffer binding after update(). (WebCore::WebGLLayerChromium::update): * platform/graphics/gpu/DrawingBuffer.cpp: Add a function to restore framebuffer binding. (WebCore::DrawingBuffer::restoreFramebufferBinding): (WebCore): * platform/graphics/gpu/DrawingBuffer.h: Ditto. (WebCore::DrawingBuffer::setTexture2DBinding): (DrawingBuffer): (WebCore::DrawingBuffer::setFramebufferBinding): * platform/graphics/gpu/mac/DrawingBufferMac.mm: initialize m_framebufferBinding. (WebCore::DrawingBuffer::DrawingBuffer): * platform/graphics/gpu/qt/DrawingBufferQt.cpp: initialize m_framebufferBinding. (WebCore::DrawingBuffer::DrawingBuffer): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8() (Part4) https://bugs.webkit.org/show_bug.cgi?id=84269 Reviewed by Nate Chapin. The objective is to pass Isolate to all toV8()s. Since there are a lot of toV8()s, I'll make the change step by step. This patch passes Isolate to toV8() in several custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8HTMLCanvasElementCustom.cpp: (WebCore::V8HTMLCanvasElement::getContextCallback): * bindings/v8/custom/V8HTMLCollectionCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8HTMLDocumentCustom.cpp: (WebCore::V8HTMLDocument::allAccessorGetter): * bindings/v8/custom/V8HTMLElementCustom.cpp: (WebCore::toV8Object): (WebCore::V8HTMLElement::itemValueAccessorGetter): * bindings/v8/custom/V8HTMLFormElementCustom.cpp: (WebCore::V8HTMLFormElement::indexedPropertyGetter): (WebCore::V8HTMLFormElement::namedPropertyGetter): * bindings/v8/custom/V8HTMLFrameSetElementCustom.cpp: (WebCore::V8HTMLFrameSetElement::namedPropertyGetter): * bindings/v8/custom/V8HTMLImageElementConstructor.cpp: (WebCore::v8HTMLImageElementConstructorCallback): * bindings/v8/custom/V8HTMLLinkElementCustom.cpp: (WebCore::V8HTMLLinkElement::sizesAccessorGetter): * bindings/v8/custom/V8HTMLOptionsCollectionCustom.cpp: (WebCore::V8HTMLOptionsCollection::indexedPropertyGetter): * bindings/v8/custom/V8HTMLOutputElementCustom.cpp: (WebCore::V8HTMLOutputElement::htmlForAccessorGetter): * bindings/v8/custom/V8HTMLSelectElementCustom.cpp: (WebCore::V8HTMLSelectElement::indexedPropertyGetter): * bindings/v8/custom/V8ImageDataCustom.cpp: (WebCore::toV8): 2012-04-23 Emil A Eklund <eae@chromium.org> Clean up subpixel unit handling in hit testing code https://bugs.webkit.org/show_bug.cgi?id=84496 Reviewed by Eric Seidel. Fix use of IntRect and LayoutRect in hit testing code in preparation for subpixel layout. No new tests, no change in functionality. * rendering/HitTestResult.cpp: (WebCore::HitTestResult::rectForPoint): Revert rectForPoint to IntRect as all call sites converted it to an IntRect anyway to compare it with an IntPoint or another IntRect. * rendering/HitTestingTransformState.cpp: (WebCore::HitTestingTransformState::boundsOfMappedQuad): * rendering/HitTestingTransformState.h: Convert boundsOfMappedQuad to LayoutRect as the TransformationMatrix now has subpixel precision. 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8() (Part3) https://bugs.webkit.org/show_bug.cgi?id=84261 Reviewed by Nate Chapin. The objective is to pass Isolate to all toV8()s. Since there are a lot of toV8(), I'll make the change step by step. This patch passes Isolate to toV8() in several custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8DOMWindowCustom.cpp: (WebCore::V8DOMWindow::openCallback): (WebCore::V8DOMWindow::indexedPropertyGetter): (WebCore::V8DOMWindow::namedPropertyGetter): * bindings/v8/custom/V8DirectoryEntrySyncCustom.cpp: (WebCore::V8DirectoryEntrySync::getDirectoryCallback): (WebCore::V8DirectoryEntrySync::getFileCallback): * bindings/v8/custom/V8DocumentCustom.cpp: (WebCore::V8Document::evaluateCallback): (WebCore::V8Document::getCSSCanvasContextCallback): (WebCore::V8Document::createTouchListCallback): * bindings/v8/custom/V8DocumentLocationCustom.cpp: (WebCore::V8Document::locationAccessorGetter): * bindings/v8/custom/V8EntryCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8EntrySyncCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8EventCustom.cpp: (WebCore::V8Event::dataTransferAccessorGetter): (WebCore::V8Event::clipboardDataAccessorGetter): (WebCore): * bindings/v8/custom/V8FileReaderCustom.cpp: (WebCore::V8FileReader::resultAccessorGetter): * bindings/v8/custom/V8HTMLAllCollectionCustom.cpp: (WebCore::getItem): (WebCore::V8HTMLAllCollection::callAsFunctionCallback): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8() (Part2) https://bugs.webkit.org/show_bug.cgi?id=84259 Reviewed by Nate Chapin. The objective is to pass Isolate to all toV8()s. Since there are a lot of toV8(), I'll make the change step by step. This patch passes Isolate to toV8() in several custom bindings. No tests. No change in behavior. * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSRuleCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSStyleSheetCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSValueCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CanvasRenderingContext2DCustom.cpp: (WebCore::toV8Object): (WebCore::V8CanvasRenderingContext2D::strokeStyleAccessorGetter): (WebCore::V8CanvasRenderingContext2D::fillStyleAccessorGetter): * bindings/v8/custom/V8ConsoleCustom.cpp: (WebCore::V8Console::memoryAccessorGetter): * bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp: (WebCore::V8SQLStatementErrorCallback::handleEvent): * bindings/v8/custom/V8DOMStringMapCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DOMTokenListCustom.cpp: (WebCore::toV8): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8][Refactoring] Remove V8Proxy::toV8() https://bugs.webkit.org/show_bug.cgi?id=84257 Reviewed by Nate Chapin. Some constructorCallback()s are using V8Proxy::toV8(), other constructorCallback()s are directly using setJSWrapperForXXX() (XXX can be DOMObject, ActiveDOMObject, Node or ActiveNode). We should unify them. Considering the fact that V8Proxy::toV8() just supports XXX=DOMObject and thus is not flexible, replacing V8Proxy::toV8() with setJSWrapperForDOMObject() would make sense. No tests. No change in behavior. * bindings/v8/V8Proxy.h: Removed toV8(). * bindings/scripts/CodeGeneratorV8.pm: Replaced toV8() with setJSWrapperForDOMObject(). (GenerateEventConstructorCallback): * bindings/v8/custom/V8ArrayBufferCustom.cpp: Ditto. (WebCore::V8ArrayBuffer::constructorCallback): * bindings/v8/custom/V8ArrayBufferViewCustom.h: Ditto. (WebCore::constructWebGLArrayWithArrayBufferArgument): (WebCore::constructWebGLArray): * bindings/v8/custom/V8DOMFormDataCustom.cpp: Ditto. (WebCore::V8DOMFormData::constructorCallback): * bindings/v8/custom/V8DataViewCustom.cpp: Ditto. (WebCore::V8DataView::constructorCallback): * bindings/v8/custom/V8MessageChannelConstructor.cpp: Ditto. (WebCore::V8MessageChannel::constructorCallback): * bindings/v8/custom/V8WebKitPointConstructor.cpp: Ditto. (WebCore::V8WebKitPoint::constructorCallback): * bindings/scripts/test/V8/V8TestEventConstructor.cpp: Updated run-bindings-tests results. (WebCore::V8TestEventConstructor::constructorCallback): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8() (Part1) https://bugs.webkit.org/show_bug.cgi?id=84250 Reviewed by Nate Chapin. The final objective is to pass Isolate around in V8 bindings. This patch makes a change in CodeGeneratorV8.pm so that the generated code passes Isolate to toV8(). No tests. No change in behavior. * bindings/scripts/CodeGeneratorV8.pm: Modified as described above. (GenerateNormalAttrGetter): (GenerateNamedConstructorCallback): (GenerateCallbackImplementation): (GenerateFunctionCallString): (NativeToJSValue): * bindings/scripts/test/V8/V8Float64Array.cpp: Updated run-bindings-tests results. (WebCore::Float64ArrayV8Internal::fooCallback): * bindings/scripts/test/V8/V8TestCallback.cpp: (WebCore::V8TestCallback::callbackWithClass1Param): (WebCore::V8TestCallback::callbackWithClass2Param): (WebCore::V8TestCallback::callbackWithStringList): (WebCore::V8TestCallback::callbackRequiresThisToPass): * bindings/scripts/test/V8/V8TestInterface.cpp: (WebCore::TestInterfaceV8Internal::supplementalMethod2Callback): * bindings/scripts/test/V8/V8TestNamedConstructor.cpp: (WebCore::V8TestNamedConstructorConstructorCallback): * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::TestObjV8Internal::readOnlyTestObjAttrAttrGetter): (WebCore::TestObjV8Internal::testObjAttrAttrGetter): (WebCore::TestObjV8Internal::XMLObjAttrAttrGetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAttributeAttrGetter): (WebCore::TestObjV8Internal::withScriptStateAttributeRaisesAttrGetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAttributeRaisesAttrGetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateAttributeAttrGetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateAttributeRaisesAttrGetter): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateWithSpacesAttributeAttrGetter): (WebCore::TestObjV8Internal::withScriptArgumentsAndCallStackAttributeAttrGetter): (WebCore::TestObjV8Internal::cachedAttribute1AttrGetter): (WebCore::TestObjV8Internal::cachedAttribute2AttrGetter): (WebCore::TestObjV8Internal::mutablePointAttrGetter): (WebCore::TestObjV8Internal::immutablePointAttrGetter): (WebCore::TestObjV8Internal::objMethodCallback): (WebCore::TestObjV8Internal::objMethodWithArgsCallback): (WebCore::TestObjV8Internal::methodThatRequiresAllArgsAndThrowsCallback): (WebCore::TestObjV8Internal::withScriptStateObjCallback): (WebCore::TestObjV8Internal::withScriptStateObjExceptionCallback): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateObjExceptionCallback): (WebCore::TestObjV8Internal::withScriptExecutionContextAndScriptStateWithSpacesCallback): (WebCore::TestObjV8Internal::mutablePointFunctionCallback): (WebCore::TestObjV8Internal::immutablePointFunctionCallback): (WebCore::TestObjV8Internal::strictFunctionCallback): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: (WebCore::TestSerializedScriptValueInterfaceV8Internal::portsAttrGetter): 2012-04-23 Kentaro Hara <haraken@chromium.org> [V8] Add an optional Isolate argument to setDOMException() and throwError() https://bugs.webkit.org/show_bug.cgi?id=84310 Reviewed by Nate Chapin. The objective is to pass Isolate to setDOMException() and throwError(). This patch adds an optional Isolate argument to setDOMException() and throwError(). I'll pass the Isolate to these methods in the following patches. No tests. No change in behavior. * bindings/v8/V8Proxy.cpp: (WebCore): (WebCore::V8Proxy::setDOMException): (WebCore::V8Proxy::throwError): * bindings/v8/V8Proxy.h: (V8Proxy): (WebCore): (WebCore::throwError): 2012-04-23 Ian Vollick <vollick@chromium.org> [chromium] Properly ignore unsupported animation directions. https://bugs.webkit.org/show_bug.cgi?id=84599 Reviewed by Adrienne Walker. Tested in CCLayerAnimationControllerTest.ignoreUnsupportedAnimationDirections. * platform/graphics/chromium/cc/CCLayerAnimationController.cpp: 2012-04-17 Kentaro Hara <haraken@chromium.org> [Performance][V8] Skip Isolate look-up to find StringCache https://bugs.webkit.org/show_bug.cgi?id=84103 Reviewed by Nate Chapin. This patch improves the performance of a lot of DOM attribute getters that return a string. - Improves the performance of Dromaeo/dom-attr.html(element.property) by 27.7%. - Improves the performance of Dromaeo/dom-attr.html(getAttribute) by 10.6%. - Improves the performance of div.id, div.className, div.nodeName, text.nodeValue, text.textContent by 12% -- 21%. The followings are the test results in my Linux desktop. Performance test: Dromaeo/dom-attr.html Total: 674.64runs/s -> 707.03runs/s (+ 4.8%) getAttribute: 1537.60runs/s -> 1700.20runs/s (+10.6%) element.property: 1389.00runs/s -> 1774.20runs/s (+27.7%) setAttribute: 538.88runs/s -> 548.87runs/s (+ 1.9%) element.property = value: 644.07runs/s -> 656.67runs/s (+ 2.0%) element.expando = value: 219.76runs/s -> 207.14runs/s (- 6.8%) element.expando: 578.77runs/s -> 554.67runs/s (- 4.2%) Performance test: https://bugs.webkit.org/attachment.cgi?id=137440 div.id: 30.70ns -> 26.70ns (+15%) div.className: 31.10ns -> 26.40ns (+18%) div.nodeName: 37.70ns -> 33.00ns (+14%) text.nodeValue: 31.40ns -> 25.90ns (+21%) text.textContent: 51.50ns -> 45.90ns (+12%) Previously V8 bindings need to look up an Isolate to find an Isolate-local StringCache. This patch skips the look-up by getting the Isolate from AccessorInfo.GetIsolate() or Arguments.GetIsolate(). No tests. No change in behavior. * bindings/scripts/CodeGeneratorV8.pm: (GenerateNormalAttrGetter): (GenerateFunctionCallString): (NativeToJSValue): * bindings/v8/V8Binding.cpp: (WebCore::getElementStringAttr): * bindings/v8/V8Binding.h: (WebCore::v8ExternalString): Make 'isolate' an optional argument. Ideally we want to make 'isolate' a non-optional argument, but it is difficult to rewrite all v8ExternalString() callers at a breath. We can rewrite them incrementally. (WebCore::v8String): Ditto. (WebCore::v8StringOrNull): Ditto. (WebCore::v8StringOrUndefined): Ditto. (WebCore::v8StringOrFalse): Ditto. * bindings/scripts/test/V8/V8TestEventConstructor.cpp: Updated run-bindings-tests results. (WebCore::TestEventConstructorV8Internal::attr1AttrGetter): (WebCore::TestEventConstructorV8Internal::attr2AttrGetter): * bindings/scripts/test/V8/V8TestInterface.cpp: (WebCore::TestInterfaceV8Internal::supplementalStr1AttrGetter): (WebCore::TestInterfaceV8Internal::supplementalStr2AttrGetter): * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::TestObjV8Internal::readOnlyStringAttrAttrGetter): (WebCore::TestObjV8Internal::stringAttrAttrGetter): (WebCore::TestObjV8Internal::reflectedStringAttrAttrGetter): (WebCore::TestObjV8Internal::reflectedURLAttrAttrGetter): (WebCore::TestObjV8Internal::reflectedCustomURLAttrAttrGetter): (WebCore::TestObjV8Internal::stringAttrWithGetterExceptionAttrGetter): (WebCore::TestObjV8Internal::stringAttrWithSetterExceptionAttrGetter): (WebCore::TestObjV8Internal::hashAttrGetter): (WebCore::TestObjV8Internal::conditionalMethod1Callback): 2012-04-17 Kentaro Hara <haraken@chromium.org> [V8] Add an optional Isolate argument to wrap() https://bugs.webkit.org/show_bug.cgi?id=84202 Reviewed by Nate Chapin. The final objective is to pass Isolate around in V8 bindings. This patch adds an optional Isolate argument to wrap(). After rewriting all wrap() callers so that they pass Isolate to wrap(), I'll make the Isolate argument non-optional. No tests. No change in behavior. * bindings/scripts/CodeGeneratorV8.pm: Modified as described above. (GenerateHeader): * bindings/v8/custom/V8DocumentCustom.cpp: Ditto. (WebCore::toV8): * bindings/v8/custom/V8HTMLDocumentCustom.cpp: Ditto. (WebCore::toV8): * bindings/v8/custom/V8NodeCustom.cpp: Ditto. (WebCore::toV8Slow): * bindings/v8/custom/V8SVGDocumentCustom.cpp: Ditto. (WebCore::toV8): * dom/make_names.pl: Ditto. (printWrapperFactoryCppFile): * bindings/scripts/test/V8/V8Float64Array.h: Updated run-bindings-tests results. (V8Float64Array): (WebCore::V8Float64Array::wrap): * bindings/scripts/test/V8/V8TestActiveDOMObject.h: (V8TestActiveDOMObject): (WebCore::V8TestActiveDOMObject::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestCustomNamedGetter.h: (V8TestCustomNamedGetter): (WebCore::V8TestCustomNamedGetter::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestEventConstructor.h: (V8TestEventConstructor): (WebCore::V8TestEventConstructor::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestEventTarget.h: (V8TestEventTarget): (WebCore::V8TestEventTarget::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestInterface.h: (V8TestInterface): (WebCore::V8TestInterface::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestMediaQueryListListener.h: (V8TestMediaQueryListListener): (WebCore::V8TestMediaQueryListListener::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestNamedConstructor.h: (V8TestNamedConstructor): (WebCore::V8TestNamedConstructor::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestNode.h: (V8TestNode): (WebCore::V8TestNode::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestObj.h: (V8TestObj): (WebCore::V8TestObj::wrap): (WebCore::toV8): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h: (V8TestSerializedScriptValueInterface): (WebCore::V8TestSerializedScriptValueInterface::wrap): (WebCore::toV8): 2012-04-17 Kentaro Hara <haraken@chromium.org> [V8] Pass Isolate to toV8Slow() https://bugs.webkit.org/show_bug.cgi?id=84173 Reviewed by Nate Chapin. The final objective is to pass Isolate around in V8 bindings. This patch passes the Isolate to toV8Slow(). No tests. No change in behavior. * bindings/scripts/CodeGeneratorV8.pm: (GenerateHeader): * bindings/v8/custom/V8NodeCustom.cpp: (WebCore::toV8Slow): 2012-04-17 Kentaro Hara <haraken@chromium.org> [V8] Add an optional Isolate argument to toV8(). https://bugs.webkit.org/show_bug.cgi?id=84161 Reviewed by Nate Chapin. The final objective is to pass Isolate around in V8 bindings. This patch adds an optional Isolate argument to toV8(). After rewriting all toV8() callers so that they pass Isolate, I will make the Isolate argument non-optional. No tests. No change in behavior. * bindings/scripts/CodeGeneratorV8.pm: Modified as described above. (GenerateHeader): (NativeToJSValue): * bindings/v8/custom/V8BlobCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSRuleCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSStyleSheetCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CSSValueCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8CanvasPixelArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DOMStringMapCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DOMTokenListCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DOMWindowCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DataViewCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8DocumentCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8EntryCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8EntrySyncCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8EventCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Float32ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Float64ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8HTMLCollectionCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8HTMLDocumentCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8HTMLElementCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8IDBAnyCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8IDBKeyCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8ImageDataCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Int16ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Int32ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Int8ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8LocationCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8NamedNodeMapCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8NodeCustom.cpp: (WebCore::toV8Slow): * bindings/v8/custom/V8SVGDocumentCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8SVGElementCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8SVGPathSegCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8ScriptProfileCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8ScriptProfileNodeCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8StyleSheetCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint16ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint32ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint8ArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8Uint8ClampedArrayCustom.cpp: (WebCore::toV8): * bindings/v8/custom/V8WorkerContextCustom.cpp: (WebCore::toV8): * bindings/scripts/test/V8/V8Float64Array.h: Updated run-bindings-tests results. (WebCore): (WebCore::toV8): * bindings/scripts/test/V8/V8TestActiveDOMObject.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestCustomNamedGetter.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestEventConstructor.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestEventTarget.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestInterface.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestMediaQueryListListener.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestNamedConstructor.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestNode.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestObj.h: (WebCore::toV8): * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h: (WebCore::toV8): 2012-04-23 Michał Pakuła vel Rutka <m.pakula@samsung.com> [EFL][WK2] Fix build break when non-cross platform CONTEXT_MENUS are enabled. https://bugs.webkit.org/show_bug.cgi?id=84136 Reviewed by Andreas Kling. There was a mismatch between contextMenuItemVector declaration and definition. Fixed by changing PlatformMenuDescription for EFL port by adding a const modifier. No new tests required. * platform/PlatformMenuDescription.h: (WebCore): Added const modifier to PlatformMenuDescription definition. 2012-04-23 Pierre Rossi <pierre.rossi@gmail.com> [Qt] Ensure zero-width space effectively accounts for a width of zero. https://bugs.webkit.org/show_bug.cgi?id=84595 Reviewed by Simon Hausmann. The logic so far relies on FontCache::getFontDataForCharacters to return a valid fontData in the case where the fonts specified don't have a glyph for the zero-width space character. QTextLayout::glyphRuns simply ignores characters that don't render in the glyph runs it returns, so we need to ensure that the subsequent call to platformWidthForGlyph doesn't lead to a non-zero width. Covered by tests containing control characters such as a soft-hyphen like it's the case in: svg/as-image/img-preserveAspectRatio-support-1.html * platform/graphics/qt/SimpleFontDataQt.cpp: (WebCore::SimpleFontData::platformWidthForGlyph): 2012-04-23 Ian Vollick <vollick@chromium.org> [chromium] When prepareToDraw fails due to animation checkerboard, we need to call setNeedsCommit https://bugs.webkit.org/show_bug.cgi?id=84520 Reviewed by Adrienne Walker. Tested in CCLayerTreeHostImplTest.prepareToDrawFailsWhenAnimationUsesCheckerboard * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::prepareToDraw): 2012-04-23 Alexis Menard <alexis.menard@openbossa.org> Simplify CSSParser::parseFont. https://bugs.webkit.org/show_bug.cgi?id=78698 Reviewed by Antti Koivisto. Simplify parseFont by sharing the code we have for the longhands of the font property. No new tests : Extend the existing font shorthand test and modify expected files as now the order of the longhands added in the property list of the style has changed. It's very unlikely that some code is relying on this order though. It will also match the way the spec order them http://www.w3.org/TR/css3-fonts/#font-prop even though the order is arbitrary for some values. * css/CSSParser.cpp: (WebCore::CSSParser::parseValue): (WebCore::CSSParser::parseFont): (WebCore::CSSParser::parseLineHeight): (WebCore): (WebCore::CSSParser::parseFontSize): (WebCore::CSSParser::parseFontWeight): Fix a bug discovered while using parseFontWeight from the parseFont (case font: 0/0, Arial, sans-serif; in a layout test), we should return true only when we add something in the property list. * css/CSSParser.h: 2012-04-23 Yury Semikhatsky <yurys@chromium.org> Web Inspector: improve the way heap snapshot diff is calculated https://bugs.webkit.org/show_bug.cgi?id=84590 Diff calculation now consists of the following steps: 1. Collect data about nodes in the base heap snapshot 2. Pass it to the second snapshot. 3. Calculate delta for each class. Reviewed by Pavel Feldman. * inspector/front-end/HeapSnapshot.js: (WebInspector.HeapSnapshot): (WebInspector.HeapSnapshot.prototype.dispose): (WebInspector.HeapSnapshot.prototype.aggregatesForDiff): (WebInspector.HeapSnapshot.prototype.calculateSnapshotDiff): (WebInspector.HeapSnapshot.prototype._calculateDiffForClass): (WebInspector.HeapSnapshot.prototype.createAddedNodesProvider): (WebInspector.HeapSnapshot.prototype.createDeletedNodesProvider): * inspector/front-end/HeapSnapshotDataGrids.js: (WebInspector.HeapSnapshotDiffDataGrid.prototype._populateChildren.aggregatesForDiffReceived.didCalculateSnapshotDiff): (WebInspector.HeapSnapshotDiffDataGrid.prototype._populateChildren): * inspector/front-end/HeapSnapshotGridNodes.js: (WebInspector.HeapSnapshotIteratorsTuple): (WebInspector.HeapSnapshotDiffNode): (WebInspector.HeapSnapshotDiffNode.prototype._createChildNode): (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider): * inspector/front-end/HeapSnapshotProxy.js: (WebInspector.HeapSnapshotProxy.prototype.aggregatesForDiff): (WebInspector.HeapSnapshotProxy.prototype.calculateSnapshotDiff): (WebInspector.HeapSnapshotProxy.prototype.createAddedNodesProvider): (WebInspector.HeapSnapshotProxy.prototype.createDeletedNodesProvider): * inspector/front-end/HeapSnapshotView.js: (WebInspector.HeapSnapshotView.prototype._changeBase): 2012-04-23 Pavel Feldman <pfeldman@chromium.org> Web Inspector: Rename and extract UISourceCodeImpl into JavaScriptSource https://bugs.webkit.org/show_bug.cgi?id=84587 Reviewed by Yury Semikhatsky. No changes other than extraction here. This is the first step in the Resource hierarchy refactoring described in bug 84586. * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * inspector/compile-front-end.py: * inspector/front-end/CompilerScriptMapping.js: (WebInspector.CompilerScriptMapping.prototype.addScript): * inspector/front-end/DebuggerPresentationModel.js: * inspector/front-end/JavaScriptSource.js: Added. (WebInspector.JavaScriptSource): (WebInspector.JavaScriptSource.prototype.breakpoints): (WebInspector.JavaScriptSource.prototype.breakpointAdded): (WebInspector.JavaScriptSource.prototype.breakpointRemoved): (WebInspector.JavaScriptSource.prototype.consoleMessages): (WebInspector.JavaScriptSource.prototype.consoleMessageAdded): (WebInspector.JavaScriptSource.prototype.consoleMessagesCleared): * inspector/front-end/RawSourceCode.js: (WebInspector.RawSourceCode.prototype._createUISourceCode): * inspector/front-end/SnippetsModel.js: (WebInspector.SnippetsScriptMapping.prototype._snippetAdded): (WebInspector.SnippetsScriptMapping.prototype._createUISourceCodeForScript): * inspector/front-end/WebKit.qrc: * inspector/front-end/inspector.html: 2012-04-23 Gavin Peters <gavinp@chromium.org> Move ReferrerPolicy out of SecurityPolicy class into its own header in platform. https://bugs.webkit.org/show_bug.cgi?id=84516 Reviewed by Adam Barth. No change in behaviour; same enum, different class. * GNUmakefile.list.am: * Target.pri: * WebCore.exp.in: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::processReferrerPolicy): * dom/Document.h: (WebCore::Document::referrerPolicy): (Document): * page/SecurityPolicy.h: * platform/ReferrerPolicy.h: Added. (WebCore): 2012-04-23 Vineet Chaudhary <rgf748@motorola.com> JS binding code generator doesn't handle "attribute unsigned long[]" well https://bugs.webkit.org/show_bug.cgi?id=84540 Reviewed by Kentaro Hara. Codegenerator should handle spaces with the sequence<> to support numeric types like "unsigned long", "int" .. etc. and primitive types like "boolean", "Date" etc. Tests: bindings/scripts/test/TestObj.idl * bindings/scripts/CodeGenerator.pm: (SkipIncludeHeader): Rename AvoidInclusionOfType to SkipIncludeHeader. (GetArrayType): * bindings/scripts/CodeGeneratorJS.pm: (AddIncludesForType): (NativeToJSValue): * bindings/scripts/CodeGeneratorObjC.pm: (AddIncludesForType): (GenerateImplementation): * bindings/scripts/CodeGeneratorV8.pm: (AddIncludesForType): (GetHeaderClassInclude): (GenerateNormalAttrGetter): (NativeToJSValue): * bindings/scripts/IDLStructure.pm: * bindings/scripts/test/JS/JSTestObj.cpp: (WebCore): (WebCore::jsTestObjIntSequenceAttr): (WebCore::jsTestObjShortSequenceAttr): (WebCore::jsTestObjLongSequenceAttr): (WebCore::jsTestObjLongLongSequenceAttr): (WebCore::jsTestObjUnsignedIntSequenceAttr): (WebCore::jsTestObjUnsignedShortSequenceAttr): (WebCore::jsTestObjUnsignedLongSequenceAttr): (WebCore::jsTestObjUnsignedLongLongSequenceAttr): (WebCore::jsTestObjFloatSequenceAttr): (WebCore::jsTestObjDoubleSequenceAttr): (WebCore::jsTestObjBooleanSequenceAttr): (WebCore::jsTestObjVoidSequenceAttr): (WebCore::jsTestObjDateSequenceAttr): (WebCore::setJSTestObjSequenceAttr): (WebCore::setJSTestObjIntSequenceAttr): (WebCore::setJSTestObjShortSequenceAttr): (WebCore::setJSTestObjLongSequenceAttr): (WebCore::setJSTestObjLongLongSequenceAttr): (WebCore::setJSTestObjUnsignedIntSequenceAttr): (WebCore::setJSTestObjUnsignedShortSequenceAttr): (WebCore::setJSTestObjUnsignedLongSequenceAttr): (WebCore::setJSTestObjUnsignedLongLongSequenceAttr): (WebCore::setJSTestObjFloatSequenceAttr): (WebCore::setJSTestObjDoubleSequenceAttr): (WebCore::setJSTestObjBooleanSequenceAttr): (WebCore::setJSTestObjVoidSequenceAttr): (WebCore::setJSTestObjDateSequenceAttr): * bindings/scripts/test/JS/JSTestObj.h: (WebCore): * bindings/scripts/test/ObjC/DOMTestObj.h: * bindings/scripts/test/TestObj.idl: * bindings/scripts/test/V8/V8TestObj.cpp: (WebCore::TestObjV8Internal::intSequenceAttrAttrGetter): (TestObjV8Internal): (WebCore::TestObjV8Internal::intSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::shortSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::shortSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::longSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::longSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::longLongSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::longLongSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::unsignedIntSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedIntSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::unsignedShortSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedShortSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::unsignedLongSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedLongSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::unsignedLongLongSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::unsignedLongLongSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::floatSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::floatSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::doubleSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::doubleSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::booleanSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::booleanSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::voidSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::voidSequenceAttrAttrSetter): (WebCore::TestObjV8Internal::dateSequenceAttrAttrGetter): (WebCore::TestObjV8Internal::dateSequenceAttrAttrSetter): (WebCore): 2012-04-23 Andreas Kling <kling@webkit.org> Unreviewed assertion fix for Chromium bots. Skip unnecessary Attr::attachToElement() after constructing an Attr using the constructor that attaches to an Element. * dom/ElementAttributeData.cpp: (WebCore::ElementAttributeData::ensureAttr): 2012-04-23 Andreas Kling <kling@webkit.org> REGRESSION(r114870): Assertion failure in ElementAttributeData::setAttr(). <http://webkit.org/b/84581> Reviewed by Antti Koivisto. Attach the Attr and bump m_attrCount manually in ensureAttr() instead of calling setAttr(). The latter asserts that the Attr isn't present in the map, which obviously isn't true after we've just added it. This has the added effect of removing one unnecessary hash lookup. * dom/ElementAttributeData.cpp: (WebCore::ElementAttributeData::ensureAttr): 2012-04-23 Pavel Feldman <pfeldman@chromium.org> Web Inspector: make ParsedURL.prototype.displayName data url friendly. https://bugs.webkit.org/show_bug.cgi?id=84578 Reviewed by Yury Semikhatsky. We'd like to define valid URL as the one that has scheme, host and path. We can append to this URL and manipulate its content. We still want possibly invalid specs (such as data or about) to exist and have nice display names. * inspector/front-end/ResourceUtils.js: (WebInspector.ParsedURL): (WebInspector.ParsedURL.prototype.get displayName): 2012-04-23 Pavel Feldman <pfeldman@chromium.org> Web Inspector: introduce String.prototype.starts/endsWith and use it all over the place. https://bugs.webkit.org/show_bug.cgi?id=84574 Reviewed by Yury Semikhatsky. * inspector/front-end/AuditRules.js: (WebInspector.AuditRules.VendorPrefixedCSSProperties.prototype.visitProperty): * inspector/front-end/BreakpointsSidebarPane.js: (WebInspector.EventListenerBreakpointsSidebarPane.prototype._setBreakpoint): (WebInspector.EventListenerBreakpointsSidebarPane.prototype._removeBreakpoint): * inspector/front-end/CSSCompletions.js: (WebInspector.CSSCompletions.prototype.startsWith): (WebInspector.CSSCompletions.prototype._firstIndexOfPrefix): * inspector/front-end/ConsoleView.js: (WebInspector.ConsoleView.prototype._reportCompletions): * inspector/front-end/CookieItemsView.js: (WebInspector.Cookies.cookieMatchesResourceURL): * inspector/front-end/DatabaseQueryView.js: (WebInspector.DatabaseQueryView.prototype.completions): * inspector/front-end/ElementsTreeOutline.js: (WebInspector.ElementsTreeElement.prototype._buildAttributeDOM): * inspector/front-end/ProfileView.js: * inspector/front-end/ProfilesPanel.js: (WebInspector.ProfilesPanel.prototype.addProfileHeader): (WebInspector.ProfilesPanel.prototype.displayTitleForProfileLink): (WebInspector.ProfileSidebarTreeElement): (WebInspector.ProfileSidebarTreeElement.prototype.get mainTitle): * inspector/front-end/ResourceUtils.js: (WebInspector.ParsedURL): (WebInspector.displayNameForURL): (WebInspector.linkifyStringAsFragmentWithCustomLinkifier): (WebInspector.completeURL): * inspector/front-end/SnippetsModel.js: (WebInspector.SnippetsModel.prototype.snippetIdForSourceURL): * inspector/front-end/SourceCSSTokenizer.js: (WebInspector.SourceCSSTokenizer.prototype.nextToken): * inspector/front-end/SourceCSSTokenizer.re2js: * inspector/front-end/TextPrompt.js: (WebInspector.TextPrompt.prototype._completeCommonPrefix): * inspector/front-end/UIUtils.js: (WebInspector.startEditing): * inspector/front-end/utilities.js: 2012-04-23 Andreas Kling <kling@webkit.org> REGRESSION(r114870): Performance hit on DOM/CloneNodes and DOM/CreateNodes. <http://webkit.org/b/84575> Reviewed by Antti Koivisto. Simplify the cloning of Attributes from one Element to another by simply assigning to m_attributes. This avoids default-constructing a bunch of Attribute objects that we overwrite immediately anyway (this used to be fine because they were RefPtr<Attribute> but now that a default-constructed Attribute contains a QualifiedName, we were doing a bunch of extra hash lookups, etc.) * dom/ElementAttributeData.cpp: (WebCore::ElementAttributeData::setAttributes): 2012-04-20 Pavel Feldman <pfeldman@chromium.org> Web Inspector: implement "open stylesheet" dialog. https://bugs.webkit.org/show_bug.cgi?id=84466 Reviewed by Yury Semikhatsky. This change introduces abstract OpenResourceDialog and re-uses it in OpenScriptDialog and OpenStylesheetDialog. Drive-by fix for data: url representation in the navigator and open resource dialogs. * inspector/front-end/FilteredItemSelectionDialog.js: (WebInspector.FilteredItemSelectionDialog.prototype.position): (WebInspector.OpenResourceDialog.filterOutEmptyURLs): (WebInspector.OpenResourceDialog.compareFunction): (WebInspector.OpenResourceDialog): (WebInspector.OpenResourceDialog.prototype.itemTitleAt): (WebInspector.OpenResourceDialog.prototype.itemKeyAt): (WebInspector.OpenResourceDialog.prototype.itemsCount): (WebInspector.OpenResourceDialog.prototype.requestItems): (WebInspector.OpenResourceDialog.prototype.selectItem): (WebInspector.OpenScriptDialog): (WebInspector.OpenScriptDialog.install): (WebInspector.OpenScriptDialog._show): (WebInspector.OpenScriptDialog.prototype.selectItem): * inspector/front-end/ResourceUtils.js: (WebInspector.ParsedURL): * inspector/front-end/ScriptsPanel.js: * inspector/front-end/StylesPanel.js: (WebInspector.StylesPanel): (WebInspector.StylesPanel.prototype._showOpenStylesheetDialog): (WebInspector.OpenStylesheetDialog): (WebInspector.OpenStylesheetDialog.prototype.selectItem): * inspector/front-end/inspector.html: 2012-04-23 Kent Tamura <tkent@chromium.org> Add test function to get placeholder string https://bugs.webkit.org/show_bug.cgi?id=84536 Reviewed by Ryosuke Niwa. Add window.internals.visiblePlaceholder(element), which returns a placeholder string only when it's visible. * WebCore.exp.in: Expose HTMLTextFormControlElement::placeholderShouldBeVisible(). * testing/Internals.cpp: (WebCore::Internals::visiblePlaceholder): Added. (WebCore::Internals::selectColorInColorChooser): Omit HTMLNames::. * testing/Internals.h: (Internals): Add visiblePlaceholder(). * testing/Internals.idl: ditto. 2012-04-23 Szilard Ledan <szledan@inf.u-szeged.hu> Incorrect handling of CSS escape sequences that encode surrogates https://bugs.webkit.org/show_bug.cgi?id=76152 Reviewed by Kent Tamura. Test: fast/css/parsing-css-surrogate-pairs.html * css/CSSParser.cpp: (WebCore::CSSParser::parseEscape): 2012-04-22 Yury Semikhatsky <yurys@chromium.org> Web Inspector: make populateChildren methods private in heap profiler front-end https://bugs.webkit.org/show_bug.cgi?id=84562 - populateChildren method on HeapSnapshotConstructorsDataGrid and HeapSnapshotDiffDataGrid now is private. - Made _defaultPopulateCount a public method on HeapSnapshotSortableDataGrid which is overriden in some descendants - Removed unused HeapSnapshotPathFinderProxy - added closure compiler annotations Reviewed by Pavel Feldman. * inspector/front-end/HeapSnapshotDataGrids.js: (WebInspector.HeapSnapshotSortableDataGrid.prototype.defaultPopulateCount): (WebInspector.HeapSnapshotConstructorsDataGrid.prototype.setDataSource): (WebInspector.HeapSnapshotConstructorsDataGrid.prototype._filterSelectIndexChanged): (WebInspector.HeapSnapshotDiffDataGrid.prototype.defaultPopulateCount): (WebInspector.HeapSnapshotDiffDataGrid.prototype.setBaseDataSource): (WebInspector.HeapSnapshotDominatorsDataGrid.prototype.defaultPopulateCount): * inspector/front-end/HeapSnapshotGridNodes.js: (WebInspector.HeapSnapshotGridNode): (WebInspector.HeapSnapshotGridNode.prototype.populateChildren.callSerialize): (WebInspector.HeapSnapshotDiffNode): (WebInspector.HeapSnapshotDiffNode.prototype.populateChildren.firstProviderPopulated): * inspector/front-end/HeapSnapshotProxy.js: 2012-04-22 Andreas Kling <kling@webkit.org> Unreviewed build fix, remove Attribute.cpp from DOMAllInOne.cpp. * dom/DOMAllInOne.cpp: My nemesis. 2012-04-22 Andreas Kling <kling@webkit.org> Optimize Element attribute storage for the common case (no Attr objects.) <http://webkit.org/b/83440> Reviewed by Antti Koivisto. Reduce Attribute to its smallest possible size; a qname/value pair. They are no-longer ref-counted, which allows us to store them in Vectors. Refactored the DOM Attr object to go with the new Attribute: Attr now wraps either {element, qname} or {qname, value}. The latter is for the case where a standalone Attr object is instantiated via DOM APIs. ElementAttributeData.cpp manages a map of pair<element, qname> => Attr. Each Element (well, ElementAttributeData) keeps track of how many Attr objects are pointing to it. This is so we can avoid hash lookups during common operations in the typical case where you have zero Attrs. Also removed the inline capacity (was 4) from AttributeVector as that would significantly increase bloat now that we store Attribute (2 pointers) rather than RefPtr<Attribute>. We trade this one piece of indirection for the removal of per-Attribute indirection. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * dom/Attr.cpp: (WebCore::Attr::Attr): (WebCore): (WebCore::Attr::create): (WebCore::Attr::~Attr): (WebCore::Attr::createTextChild): (WebCore::Attr::setPrefix): (WebCore::Attr::setValue): (WebCore::Attr::cloneNode): (WebCore::Attr::childrenChanged): (WebCore::Attr::style): (WebCore::Attr::value): (WebCore::Attr::elementAttribute): (WebCore::Attr::detachFromElementWithValue): (WebCore::Attr::attachToElement): * dom/Attr.h: (WebCore): (Attr): (WebCore::Attr::qualifiedName): (WebCore::Attr::localName): (WebCore::Attr::namespaceURI): (WebCore::Attr::prefix): * dom/Attribute.cpp: Removed. * dom/Attribute.h: (WebCore::Attribute::Attribute): (Attribute): * dom/Document.cpp: (WebCore::Document::importNode): (WebCore::Document::createAttributeNS): * dom/Element.cpp: (WebCore::Element::~Element): (WebCore::Element::detachAttribute): (WebCore): (WebCore::Element::removeAttribute): (WebCore::Element::setAttributeInternal): (WebCore::Element::parserSetAttributes): (WebCore::Element::setAttributeNode): (WebCore::Element::removeAttributeNode): (WebCore::Element::normalizeAttributes): (WebCore::Element::didRemoveAttribute): (WebCore::Element::attrIfExists): (WebCore::Element::ensureAttr): * dom/Element.h: (Element): (WebCore::Element::getAttributeItemIndex): * dom/ElementAttributeData.cpp: (WebCore): (WebCore::attrMap): (WebCore::ElementAttributeData::attrIfExists): (WebCore::ElementAttributeData::ensureAttr): (WebCore::ElementAttributeData::setAttr): (WebCore::ElementAttributeData::removeAttr): (WebCore::AttributeVector::removeAttribute): (WebCore::ElementAttributeData::~ElementAttributeData): (WebCore::ElementAttributeData::addAttribute): (WebCore::ElementAttributeData::removeAttribute): (WebCore::ElementAttributeData::isEquivalent): (WebCore::ElementAttributeData::detachAttributesFromElement): (WebCore::ElementAttributeData::getAttributeItemIndexSlowCase): (WebCore::ElementAttributeData::setAttributes): (WebCore::ElementAttributeData::clearAttributes): (WebCore::ElementAttributeData::replaceAttribute): (WebCore::ElementAttributeData::getAttributeNode): * dom/ElementAttributeData.h: (WebCore): (WebCore::AttributeVector::AttributeVector): (AttributeVector): (WebCore::AttributeVector::getAttributeItem): (WebCore::AttributeVector::getAttributeItemIndex): (WebCore::AttributeVector::insertAttribute): (WebCore::ElementAttributeData::attributeItem): (ElementAttributeData): (WebCore::ElementAttributeData::ElementAttributeData): (WebCore::ElementAttributeData::attributeVector): (WebCore::ElementAttributeData::clonedAttributeVector): (WebCore::ElementAttributeData::removeAttribute): (WebCore::ElementAttributeData::getAttributeItem): (WebCore::ElementAttributeData::getAttributeItemIndex): * dom/NamedNodeMap.cpp: (WebCore::NamedNodeMap::getNamedItem): (WebCore::NamedNodeMap::getNamedItemNS): (WebCore::NamedNodeMap::removeNamedItem): (WebCore::NamedNodeMap::removeNamedItemNS): (WebCore::NamedNodeMap::item): * dom/Node.cpp: (WebCore::Node::compareDocumentPosition): * html/HTMLAnchorElement.cpp: (WebCore::HTMLAnchorElement::parseAttribute): * html/HTMLSelectElement.cpp: (WebCore::HTMLSelectElement::parseAttribute): * html/parser/HTMLConstructionSite.cpp: (WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML): (WebCore::HTMLConstructionSite::mergeAttributesFromTokenIntoElement): (WebCore::HTMLConstructionSite::insertScriptElement): (WebCore::HTMLConstructionSite::createElement): (WebCore::HTMLConstructionSite::createHTMLElement): (WebCore::HTMLConstructionSite::createHTMLElementFromSavedElement): * html/parser/HTMLToken.h: (WebCore::AtomicHTMLToken::AtomicHTMLToken): * html/parser/HTMLTreeBuilder.cpp: (WebCore::HTMLTreeBuilder::processFakeStartTag): (WebCore::HTMLTreeBuilder::attributesForIsindexInput): (WebCore::HTMLTreeBuilder::processIsindexStartTagForInBody): (WebCore): (WebCore::HTMLTreeBuilder::processStartTagForInBody): * html/parser/HTMLTreeBuilder.h: * html/parser/TextDocumentParser.cpp: (WebCore::TextDocumentParser::insertFakePreElement): * page/PageSerializer.cpp: (WebCore::SerializerMarkupAccumulator::appendCustomAttributes): * svg/SVGFitToViewBox.cpp: * svg/properties/SVGAnimatedPropertySynchronizer.h: * xml/XMLErrors.cpp: (WebCore::createXHTMLParserErrorHeader): (WebCore::XMLErrors::insertErrorMessageBlock): * xml/XPathNodeSet.cpp: (WebCore::XPath::NodeSet::traversalSort): * xml/XPathStep.cpp: (WebCore::XPath::Step::nodesInAxis): * xml/parser/MarkupTokenBase.h: (WebCore::AtomicMarkupTokenBase::AtomicMarkupTokenBase): (WebCore::AtomicMarkupTokenBase::getAttributeItem): (WebCore::AtomicMarkupTokenBase::attributes): (AtomicMarkupTokenBase): (WebCore::::initializeAttributes): * xml/parser/XMLToken.h: (WebCore::AtomicXMLToken::AtomicXMLToken): * xml/parser/XMLTreeBuilder.cpp: (WebCore::XMLTreeBuilder::processNamespaces): (WebCore::XMLTreeBuilder::processAttributes): 2012-04-22 Sriram Neelakandan <sriram.neelakandan@gmail.com> Sync the MOZ_X11 changes from r14 of http://code.google.com/p/npapi-sdk/ also, modified required build flags for Qt,Gtk and CMake [Qt] Added MOZ_X11 build flag for !embedded https://bugs.webkit.org/show_bug.cgi?id=40785 Reviewed by Anders Carlsson. No new tests. This does not change functionality. Affects all X11 Ports. Build should break if MOZ_X11 is not passed where required * WebCore.pri: * plugins/npapi.h: 2012-04-22 Pablo Flouret <pablof@motorola.com> Reset event propagation and canceled flags in Event.initEvent https://bugs.webkit.org/show_bug.cgi?id=83964 Reviewed by Ryosuke Niwa. Step 3 in http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-event-initevent Useful for re-configuring an event before dispatching. Test: fast/events/flags-unset-on-init-event.html * dom/Event.cpp: (WebCore::Event::initEvent): 2012-04-22 Martin Robinson <mrobinson@igalia.com> [Cairo] Implement CompositeDifference https://bugs.webkit.org/show_bug.cgi?id=77354 Reviewed by Alejandro G. Castro. No new tests. The difference compositing operator are not exposed to web content, so this change is simply in preparation for a time in which it is used. Properly map the difference compositing blend modes to a Cairo operator. * platform/graphics/cairo/CairoUtilities.cpp: (WebCore::toCairoOperator): Add a mapping for difference. Remove code supporting versions of Cairo before 1.10, since the Cairo backend requires 1.10 or greater already. 2012-04-22 Jon Lee <jonlee@apple.com> Remove notifications support on Mac Lion. https://bugs.webkit.org/show_bug.cgi?id=84554 <rdar://problem/11297128> Reviewed by Sam Weinig. * Configurations/FeatureDefines.xcconfig: 2012-04-22 Shawn Singh <shawnsingh@chromium.org> [chromium] Damage Tracker needs to use CCMathUtil transforms https://bugs.webkit.org/show_bug.cgi?id=84070 Reviewed by Adrienne Walker. Unit test added to CCDamageTracker.cpp. This patch makes CCDamageTracker use CCMathUtil transforms, so that perspective w < 0 problem is correctly handled. * platform/graphics/chromium/cc/CCDamageTracker.cpp: (WebCore::CCDamageTracker::extendDamageForLayer): (WebCore::CCDamageTracker::extendDamageForRenderSurface): 2012-04-20 Jon Lee <jonlee@apple.com> Add Notification constructor https://bugs.webkit.org/show_bug.cgi?id=80477 <rdar://problem/10912431> Reviewed by Jian Li. Tests will be added once there is support for web notifications on the Mac ports. * WebCore.exp.in: Export finalize() function. Modify Dictionary to support creation of event listeners. * bindings/js/Dictionary.h: (WebCore::Dictionary::isObject): Return true if the JSDictionary is valid. (WebCore::Dictionary::isUndefinedOrNull): Return true if the JSDictionary is not valid. (WebCore::Dictionary::get): Add convenience function to take const char* for property name, to prevent having to do implicit conversion to WTF::String. (WebCore::Dictionary::getEventListener): Add function to create event listener from the dictionary. (WebCore::Dictionary::asJSObject): Helper to convert WebCore objects to JS wrapper. * bindings/js/Dictionary.cpp: (WebCore::Notification): Implement asJSObject() for Notification. * bindings/js/JSDictionary.h: (WebCore::JSDictionary::execState): Expose the exec state so that the Dictionary can obtain its world for creating the event listener. * bindings/v8/Dictionary.h: (WebCore::Dictionary::getEventListener): Stub implementation. Add new constructor to idl definitions. * notifications/DOMWindowNotifications.idl: Add Notification constructor, if ENABLE(NOTIFICATIONS) is on. * notifications/Notification.idl: If ENABLE(NOTIFICATIONS) is turned on, define the constructor. Otherwise, use OmitConstructor. * notifications/NotificationCenter.idl: Wrap creation functions in ENABLE(LEGACY_NOTIFICATIONS). * notifications/NotificationCenter.h: Ditto. (NotificationCenter): * notifications/Notification.h: (Notification): Wrap legacy constructors in ENABLE(LEGACY_NOTIFICATIONS). (WebCore::Notification::create): New creation function based on discussions in WG. * notifications/Notification.cpp: (WebCore::getAndAddEventListener): Helper function to get the listener from the dictionary, and attach to the notification. (WebCore::Notification::create): Create the notification, then apply whatever properties can be found in the dictionary to the notification. In order to attach the event listeners, the notification has to have been created, which is why this all happens in the factory method and not in the constructor. (WebCore::Notification::setBody): Added so that it can be set if we find it in the dictionary. The new constructor queues a task to show when it is created. To support this, we use a one-shot timer that calls show() in the next iteration of the run loop. (WebCore::Notification::Notification): Start the timer. (WebCore::Notification::showTaskTimerFired): Call show(). Notifications, not being attached to the DOM, could be GC'ed by the JS engine before its life cycle has completed. We add calls to setPendingActivity() when the notification has been shown, and when it is closed, we unsetPendingActivity(). To guarantee that we only call this once, we add a new state to the Notification state machine, called NotificationState::Closed. (WebCore::Notification::show): Call setPendingActivity() for all ports. Remove conditional on Mac. (WebCore::Notification::close): Include Closed state to machine; do nothing. (WebCore::Notification::dispatchCloseEvent): Call finalize(). (WebCore::Notification::finalize): If the state is not Closed, we unsetPendingActivity() to make it available for GC. (WebCore::Notification::finishLoading): Remove the unsetPendingActivity(). That call was to balance the setPendingActivity() called for loading the icon. Instead of wrapping around the icon load, we wrap around the show() -> finalize() loop. In Notification, rename some of the stages and functions to more clearly communicate that they mostly deal with the icon of the notification, instead of general loading. (WebCore::Notification::show): Refactored to use LoadingIcon and CancelledIcon. (WebCore::Notification::close): Refactored to use LoadingIcon and CancelledIcon. (WebCore::Notification::~Notification): Refactor to use LoadingIcon. (WebCore::Notification::startLoadingIcon): Renamed from startLoading(). (WebCore::Notification::stopLoadingIcon): Renamed from stopLoading(). (WebCore::Notification::finishLoadingIcon): Renamed from finishLoading(). (WebCore::Notification::didFinishLoading): (WebCore::Notification::didFail): (WebCore::Notification::didFailRedirectCheck): (WebCore::Notification::didReceiveResponse): (WebCore::Notification::finishLoading): Add Dictionary.cpp. * GNUmakefile.list.am: * Target.pri: * UseJSC.cmake: * WebCore.gypi: Fix bug in V8 bindings generation code. If the constructor doesn't raise an exception, don't use an exception code. * bindings/scripts/CodeGeneratorV8.pm: (GenerateParametersCheck): * bindings/scripts/test/V8/V8TestObj.cpp: Reset results. (WebCore::TestObjV8Internal::optionsObjectCallback): 2012-04-21 Benjamin C Meyer <bmeyer@rim.com> Support loading the same plugin in multiple locations in the Blackberry port. https://bugs.webkit.org/show_bug.cgi?id=84537 The hash for the plugin is only based upon the plugin meta information which will be the same for the same plugin in the system and user's plugin folders. It looks like this code was copied/based on the windows port which doesn't allow the same plugin to be loaded more than once. Because we want to support multiple copies of the same plugin in the blackberry port we want to incorperate the path of the plugin into the hash. PR 150404 Reviewed by Adam Treat. * plugins/blackberry/PluginPackageBlackBerry.cpp: (WebCore::PluginPackage::hash): 2012-04-21 Benjamin C Meyer <bmeyer@rim.com> System plugins are preferred over application plugins https://bugs.webkit.org/show_bug.cgi?id=84538 Set the preferred paths for plugins so that plugins that reside inside of the bar will be preferred over plugins that are in the system folder. PR 150404 Reviewed by Adam Treat. * plugins/PluginDatabase.cpp: (WebCore::PluginDatabase::isPreferredPluginDirectory): 2012-04-21 Darin Adler <darin@apple.com> Improve performance of removing user and password from URLs https://bugs.webkit.org/show_bug.cgi?id=84525 Reviewed by Dan Bernstein. Performance improvement only. Correctness covered by existing regression tests. The most common use of KURL::setUser and KURL::setPass, by far, is to remove the user and password from a URL that already has neither. Optimize this by not re-parsing the URL in that case. * platform/KURL.cpp: (WebCore::KURL::setUser): Restructure code so that the code path that removes the user does no work when there is nothing to remove. Otherwise, leave the logic of the function untouched. (WebCore::KURL::setPass): Same thing, only for password rather than user. 2012-04-20 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r114768. http://trac.webkit.org/changeset/114768 https://bugs.webkit.org/show_bug.cgi?id=84521 Original patch was not the problem, re-applying (Requested by pfeldman_ on #webkit). * bindings/v8/V8IsolatedContext.cpp: (WebCore::setInjectedScriptContextDebugId): (WebCore): (WebCore::V8IsolatedContext::V8IsolatedContext): * bindings/v8/V8Proxy.cpp: (WebCore::V8Proxy::evaluateInIsolatedWorld): * bindings/v8/V8Proxy.h: (V8Proxy): 2012-04-20 Adrienne Walker <enne@google.com> [chromium] Refactor opaque content transform out of Skia context https://bugs.webkit.org/show_bug.cgi?id=83608 Reviewed by James Robinson. Having PlatformContextSkia know about the transform into content space for a layer is a layering violation. This change lets the PlatformContextSkia deal with opaque rects in its own space and lets the caller handle transforming it into its own space. This also prevents a matrix multiply per draw into the Skia canvas and does it just once at the end to transform the final rect. This is an incremental refactoring so that additional tracking for text rects can be added and use the same space as opaque rects. Tests: LayerTextureUpdaterTest.testPartialOpaqueRectNoTransform LayerTextureUpdaterTest.testPartialOpaqueRectTranslation LayerTextureUpdaterTest.testPartialOpaqueRectScale * platform/graphics/chromium/BitmapCanvasLayerTextureUpdater.cpp: (WebCore::BitmapCanvasLayerTextureUpdater::prepareToUpdate): * platform/graphics/chromium/BitmapCanvasLayerTextureUpdater.h: (BitmapCanvasLayerTextureUpdater): * platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.cpp: (WebCore::BitmapSkPictureCanvasLayerTextureUpdater::prepareToUpdate): * platform/graphics/chromium/BitmapSkPictureCanvasLayerTextureUpdater.h: (BitmapSkPictureCanvasLayerTextureUpdater): * platform/graphics/chromium/CanvasLayerTextureUpdater.cpp: (WebCore::CanvasLayerTextureUpdater::paintContents): * platform/graphics/chromium/CanvasLayerTextureUpdater.h: (CanvasLayerTextureUpdater): * platform/graphics/chromium/LayerTextureUpdater.h: (WebCore::LayerTextureUpdater::prepareToUpdate): * platform/graphics/chromium/SkPictureCanvasLayerTextureUpdater.cpp: (WebCore::SkPictureCanvasLayerTextureUpdater::prepareToUpdate): * platform/graphics/chromium/SkPictureCanvasLayerTextureUpdater.h: (SkPictureCanvasLayerTextureUpdater): * platform/graphics/chromium/TiledLayerChromium.cpp: (WebCore::TiledLayerChromium::updateTiles): * platform/graphics/skia/OpaqueRegionSkia.cpp: (WebCore::OpaqueRegionSkia::didDrawRect): (WebCore::OpaqueRegionSkia::didDrawPath): (WebCore::OpaqueRegionSkia::didDrawPoints): (WebCore::OpaqueRegionSkia::didDrawBounded): (WebCore::OpaqueRegionSkia::didDraw): * platform/graphics/skia/OpaqueRegionSkia.h: (OpaqueRegionSkia): * platform/graphics/skia/PlatformContextSkia.cpp: (WebCore::PlatformContextSkia::didDrawRect): (WebCore::PlatformContextSkia::didDrawPath): (WebCore::PlatformContextSkia::didDrawPoints): (WebCore::PlatformContextSkia::didDrawBounded): * platform/graphics/skia/PlatformContextSkia.h: (PlatformContextSkia): 2012-04-20 Enrica Casucci <enrica@apple.com> CRASH at WebCore::ReplaceSelectionCommand::removeRedundantMarkup https://bugs.webkit.org/show_bug.cgi?id=84518 <rdar://problem/10714790> Reviewed by Simon Fraser. There are cases where the m_lastNodeInserted is NULL to begin with or gets deleted by removeRedundantStylesAndKeepStyleSpanInline. This change handles those cases properly. Tests: editing/pasteboard/paste-sanitize-crash-1.html editing/pasteboard/paste-sanitize-crash-2.html * editing/ReplaceSelectionCommand.h: (WebCore::ReplaceSelectionCommand::InsertedNodes::pastLastLeaf): * editing/SimplifyMarkupCommand.cpp: (WebCore::SimplifyMarkupCommand::doApply): 2012-04-20 Michael Nordman <michaeln@google.com> [chromium] Tiny change to DomStorage v8 bindings to avoid a relatively expensive test in a couple of places by reordering the expressions in compound conditions, if (fastTest && moreExpensiveTest) https://bugs.webkit.org/show_bug.cgi?id=84500 Reviewed by Kentaro Hara. No new tests, no new functionality. * bindings/v8/custom/V8StorageCustom.cpp: (WebCore::storageGetter): (WebCore::V8Storage::namedPropertyQuery): 2012-04-20 Dan Bernstein <mitz@apple.com> REGRESSION (r114784): svg/text/foreignObject-text-clipping-bug.xml failing on Mountain Lion Debug Tests https://bugs.webkit.org/show_bug.cgi?id=84505 Reviewed by Anders Carlsson. * rendering/RenderBlock.cpp: (WebCore::RenderBlock::blockBeforeWithinSelectionRoot): Changed to not assume that boxes only have boxes as siblings. 2012-04-20 Dana Jansens <danakj@chromium.org> [chromium] Remove special case for recreating layers during sync https://bugs.webkit.org/show_bug.cgi?id=84458 Reviewed by James Robinson. We no longer delete layers on the impl side, unless it is due to deleting the layer on webkit side. So we will no longer have a situation where we need to push properties from an old LayerChromium to a new CCLayerImpl. * platform/graphics/chromium/TreeSynchronizer.cpp: (WebCore::TreeSynchronizer::reuseOrCreateCCLayerImpl): 2012-04-20 Dana Jansens <danakj@chromium.org> [chromium] WebFilterOperations API does not compile or dynamically link https://bugs.webkit.org/show_bug.cgi?id=84506 Reviewed by James Robinson. Non-inline functions need WEBKIT_EXPORT in their declarations, and the type used in the WebPrivateOwnPtr needs to be forward- declared even when WEBKIT_IMPLEMENTATION is not defined. * platform/chromium/support/WebFilterOperations.cpp: (WebKit::WebFilterOperations::initialize): 2012-04-20 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r114333. http://trac.webkit.org/changeset/114333 https://bugs.webkit.org/show_bug.cgi?id=84511 perf regression (Requested by morrita on #webkit). * dom/Node.cpp: * dom/Node.h: (WebCore): (Node): (WebCore::Node::isElementNode): (WebCore::Node::isContainerNode): (WebCore::Node::isTextNode): (WebCore::Node::isHTMLElement): (WebCore::Node::isSVGElement): (WebCore::Node::isStyledElement): (WebCore::Node::isShadowRoot): (WebCore::Node::parentNode): (WebCore::Node::parentNodeGuaranteedHostFree): 2012-04-20 Alec Flett <alecflett@chromium.org> IndexedDB: Support get/getKey(keyRange) https://bugs.webkit.org/show_bug.cgi?id=83638 Reviewed by Ojan Vafai. Support IDBKeyRange as a parameter to all the various get/getKey combinations. Switches the existing get/getKey versions that use IDBKey directly to start using IDBKeyRange.only(). Test: storage/indexeddb/get-keyrange.html * Modules/indexeddb/IDBIndex.cpp: (WebCore::IDBIndex::get): (WebCore): (WebCore::IDBIndex::getKey): * Modules/indexeddb/IDBIndex.h: (IDBIndex): * Modules/indexeddb/IDBIndex.idl: * Modules/indexeddb/IDBIndexBackendImpl.cpp: (WebCore::IDBIndexBackendImpl::getInternal): (WebCore): (WebCore::IDBIndexBackendImpl::getByRangeInternal): (WebCore::IDBIndexBackendImpl::getKeyInternal): (WebCore::IDBIndexBackendImpl::getKeyByRangeInternal): (WebCore::IDBIndexBackendImpl::get): (WebCore::IDBIndexBackendImpl::getKey): * Modules/indexeddb/IDBIndexBackendImpl.h: (IDBIndexBackendImpl): * Modules/indexeddb/IDBIndexBackendInterface.h: (IDBIndexBackendInterface): * Modules/indexeddb/IDBObjectStore.cpp: (WebCore::IDBObjectStore::get): (WebCore): * Modules/indexeddb/IDBObjectStore.h: (IDBObjectStore): * Modules/indexeddb/IDBObjectStore.idl: * Modules/indexeddb/IDBObjectStoreBackendImpl.cpp: (WebCore): (WebCore::IDBObjectStoreBackendImpl::get): (WebCore::IDBObjectStoreBackendImpl::getByRangeInternal): (WebCore::IDBObjectStoreBackendImpl::getInternal): * Modules/indexeddb/IDBObjectStoreBackendImpl.h: (IDBObjectStoreBackendImpl): * Modules/indexeddb/IDBObjectStoreBackendInterface.h: (IDBObjectStoreBackendInterface): 2012-04-20 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r114789. http://trac.webkit.org/changeset/114789 https://bugs.webkit.org/show_bug.cgi?id=84515 Caused 5 tests to fail on mac/ (Requested by jernoble on #webkit). * css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): * css/CSSValueKeywords.in: * platform/ThemeTypes.h: * rendering/RenderTheme.cpp: (WebCore::RenderTheme::paint): 2012-04-20 Brady Eidson <beidson@apple.com> https://bugs.webkit.org/show_bug.cgi?id=84512 Repurpose ActiveDOMObject::WillShowDialog to WillDeferLoading Reviewed by Eric Carlson. No new tests. (Refactor, no behavior change) Rename WillShowDialog to WillDeferLoading: * dom/ActiveDOMObject.h: * html/HTMLMediaElement.cpp: (WebCore::HTMLMediaElement::suspend): Don't take a ReasonForSuspension argument anymore, just use WillDeferLoading: * page/PageGroupLoadDeferrer.cpp: (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer): * page/PageGroupLoadDeferrer.h: Don't pass a Reason anymore as WillDeferLoading is used by default: * page/Chrome.cpp: (WebCore::Chrome::runModal): (WebCore::Chrome::runBeforeUnloadConfirmPanel): (WebCore::Chrome::runJavaScriptAlert): (WebCore::Chrome::runJavaScriptConfirm): (WebCore::Chrome::runJavaScriptPrompt): (WebCore::Chrome::shouldInterruptJavaScript): 2012-04-20 James Robinson <jamesr@chromium.org> [chromium] Plumb a compositor surface ready notification through to the threaded compositor https://bugs.webkit.org/show_bug.cgi?id=84305 Reviewed by Adrienne Walker. Plumb setSurfaceReady through to the scheduler. * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: (WebCore::CCLayerTreeHost::setSurfaceReady): (WebCore): * platform/graphics/chromium/cc/CCLayerTreeHost.h: (CCLayerTreeHost): * platform/graphics/chromium/cc/CCProxy.h: (CCProxy): * platform/graphics/chromium/cc/CCSingleThreadProxy.cpp: (WebCore::CCSingleThreadProxy::setSurfaceReady): (WebCore): * platform/graphics/chromium/cc/CCSingleThreadProxy.h: (CCSingleThreadProxy): * platform/graphics/chromium/cc/CCThreadProxy.cpp: (WebCore::CCThreadProxy::setSurfaceReady): (WebCore): (WebCore::CCThreadProxy::setSurfaceReadyOnImplThread): (WebCore::CCThreadProxy::initializeImplOnImplThread): * platform/graphics/chromium/cc/CCThreadProxy.h: (CCThreadProxy): 2012-04-20 Mark Pilgrim <pilgrim@chromium.org> [Chromium] Call memoryUsageMB directly https://bugs.webkit.org/show_bug.cgi?id=84376 Reviewed by Kentaro Hara. Now that memoryUsageMB has been moved from PlatformSupport.h to Platform.h, we need to be able to call it directly from WebCore/bindings/v8/V8GCController.cpp. That means we need a new MemoryUsageSupport class in WebCore/platform/ and an implementation in WebCore/platform/chromium/MemoryUsageSupportChromium.cpp. Other ports are welcome to implement their memory usage functions if they wish. This pattern was based on the HistogramSupport/HistogramSupportChromium classes. Part of a refactoring series. See tracking bug 82948. * CMakeLists.txt: * GNUmakefile.list.am: * Target.pri: * WebCore.gypi: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * bindings/v8/V8GCController.cpp: (WebCore): * platform/MemoryUsageSupport.cpp: Added. (WebCore): (WebCore::MemoryUsageSupport::memoryUsageMB): * platform/MemoryUsageSupport.h: Added. (WebCore): (MemoryUsageSupport): * platform/chromium/MemoryUsageSupportChromium.cpp: Added. (WebCore): (WebCore::MemoryUsageSupport::memoryUsageMB): * platform/chromium/PlatformSupport.h: (PlatformSupport): 2012-04-20 Anders Carlsson <andersca@apple.com> Re-land. The non-fast scrollable region is now always updated after layout, and frameViewScrollableAreasDidChange has been removed. computeNonFastScrollableRegion needs to traverse the entire frame tree https://bugs.webkit.org/show_bug.cgi?id=84409 <rdar://problem/11285741> Reviewed by Dan Bernstein. Now that scrollable areas won't be in the set of scrollable areas unless they are actually scrollable, we need to look for scrollable areas in the entire frame tree since there can be a scrollable frame that's a subframe of a non-scrollable frame for example. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::computeNonFastScrollableRegion): (WebCore::ScrollingCoordinator::frameViewLayoutUpdated): 2012-04-20 Adrienne Walker <enne@google.com> [chromium] Clip TransparencyWin to prevent OOM from large Skia canvas https://bugs.webkit.org/show_bug.cgi?id=84289 Reviewed by James Robinson. TransparencyWin will create a Skia canvas of whatever size is passed in, even if the result will ultimately be clipped. Handle the clip implicitly and try (in some cases) to create a smaller canvas. This can happen due to RenderBox::paintBoxDecorations passing a paint rect down of the entire element's size. Modes with more complicated transforms (ScaleTransform, UnTransform) are not handled yet. Tests: TransparencyWin.ClippedKeepTransformNoLayer TransparencyWin.ClippedKeepTransformOpaqueCompositeLayer TransparencyWin.ClippedKeepTransformOpaqueWhiteLayer * platform/graphics/chromium/TransparencyWin.cpp: (WebCore::TransparencyWin::computeLayerSize): 2012-04-04 Jer Noble <jer.noble@apple.com> apple.com top navigation bar appears inside video during full screen exit animation https://bugs.webkit.org/show_bug.cgi?id=83095 Reviewed by Eric Carlson. Test: fullscreen/full-screen-exit-animation-stacking-context.html Only tell ancestors of the full screen element that they are no longer ancestors once the full screen animation is complete: * dom/Document.cpp: (WebCore::Document::webkitWillExitFullScreenForElement): (WebCore::Document::webkitDidExitFullScreenForElement): To facilitate writing reproducible LayoutTests, expose webkitWill/Did/Enter/ExitFullScreen from the Internals object, so scripts can call them explicitly: * testing/Internals.cpp: (WebCore::Internals::webkitWillEnterFullScreenForElement): Call the Document equivalent. (WebCore::Internals::webkitDidEnterFullScreenForElement): Ditto. (WebCore::Internals::webkitWillExitFullScreenForElement): Ditto. (WebCore::Internals::webkitDidExitFullScreenForElement): Ditto. * testing/Internals.h: * testing/Internals.idl: 2012-04-17 Jer Noble <jer.noble@apple.com> media-exit-fullscreen-button (and related enums) is unnecessary and should be removed. https://bugs.webkit.org/show_bug.cgi?id=84162 Reviewed by Eric Carlson. No new tests; no change in functionality so covered by existing tests. Remove the media-exit-fullscreen-button keyword, and rename media-enter-fullscreen-button to media-fullscreen-button. * css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): * css/CSSValueKeywords.in: * css/mediaControls.css: (audio::-webkit-media-controls-fullscreen-button, video::-webkit-media-controls-fullscreen-button): * platform/ThemeTypes.h: * rendering/RenderTheme.cpp: (WebCore::RenderTheme::paint): 2012-04-20 Alexandre Elias <aelias@google.com> [chromium] Fix compile errors when DEBUG_GL_CALLS is enabled https://bugs.webkit.org/show_bug.cgi?id=84491 Reviewed by Ojan Vafai. DEBUG_GL_CALLS had not been used in a while and the mode no longer compiled when I tried it. I improved the GLC macro to support either raw pointers or RefPtrs, and to be a single expression in order to interact properly with if/else blocks. I fixed the cases where we were passing in the "context" method pointer by mistake, and removed the now-unnecessary "get()" calls for the RefPtrs. No new tests. (No-op change in release builds.) * platform/graphics/chromium/LayerRendererChromium.cpp: (WebCore::LayerRendererChromium::initialize): (WebCore::LayerRendererChromium::clearRenderSurface): (WebCore::LayerRendererChromium::beginDrawingFrame): (WebCore::LayerRendererChromium::doNoOp): (WebCore::LayerRendererChromium::drawQuad): (WebCore::LayerRendererChromium::drawTextureQuad): (WebCore::LayerRendererChromium::drawHeadsUpDisplay): (WebCore::LayerRendererChromium::finishDrawingFrame): (WebCore::LayerRendererChromium::useRenderSurface): (WebCore::LayerRendererChromium::bindFramebufferToTexture): (WebCore::LayerRendererChromium::setScissorToRect): (WebCore::LayerRendererChromium::setDrawViewportRect): (WebCore::LayerRendererChromium::initializeSharedObjects): (WebCore::LayerRendererChromium::cleanupSharedObjects): * platform/graphics/chromium/LayerRendererChromium.h: (WebCore): 2012-04-20 Anders Carlsson <andersca@apple.com> Fix build. * page/scrolling/ScrollingCoordinator.cpp: (WebCore::ScrollingCoordinator::updateMainFrameScrollPositionAndScrollLayerPosition): 2012-04-19 Simon Fraser <simon.fraser@apple.com> Set m_compositingDependsOnGeometry to false if possible https://bugs.webkit.org/show_bug.cgi?id=84391 Reviewed by James Robinson. For some kinds of elements, RenderLayerCompositor has to delay decisions about compositing until the element's size and/or position are known. This was previsouly based on the confusingly named m_compositingDependsOnGeometry flag, but another variant of the same technique, with an additional flag m_compositingNeedsUpdate, was added in r98627. Also, once the m_compositingDependsOnGeometry flag was set to true, nothing set it to false, so every compositing layer update resulted in a computeCompositingRequirements() pass over the layers. Rename the m_compositingDependsOnGeometry flag to m_reevaluateCompositingAfterLayout, and clear the flag when we do a layout-related compositing layer update. Use the same flag for position:fixed compositing. This requires RenderLayerCompositor to distinguish between style- and layout- related updates, requiring some minor refactoring in FrameView. Should not change behavior. * dom/Document.cpp: (WebCore::Document::recalcStyle): (WebCore::Document::implicitClose): * page/FrameView.cpp: (WebCore::FrameView::updateCompositingLayersAfterStyleChange): (WebCore::FrameView::updateCompositingLayersAfterLayout): (WebCore::FrameView::restoreBackingStores): (WebCore::FrameView::layout): * page/FrameView.h: (FrameView): * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::RenderLayerCompositor): (WebCore::RenderLayerCompositor::updateCompositingLayersTimerFired): (WebCore::RenderLayerCompositor::updateCompositingLayers): (WebCore::RenderLayerCompositor::layerTreeAsText): (WebCore::RenderLayerCompositor::requiresCompositingForPlugin): (WebCore::RenderLayerCompositor::requiresCompositingForFrame): (WebCore::RenderLayerCompositor::requiresCompositingForPosition): * rendering/RenderLayerCompositor.h: (RenderLayerCompositor): 2012-04-20 Dan Bernstein <mitz@apple.com> <rdar://problem/10786000> Selection highlights of lines in adjoining blocks can overlap https://bugs.webkit.org/show_bug.cgi?id=84489 Reviewed by Anders Carlsson. Test: fast/block/line-layout/selection-highlight-overlap.html * rendering/EllipsisBox.cpp: (WebCore::EllipsisBox::selectionRect): Changed to use selection{Top,Height}AdjustedForPrecedingBlock(). * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paintSelection): Ditto. * rendering/RenderBlock.cpp: (WebCore::RenderBlock::inlineSelectionGaps): Ditto. (WebCore::RenderBlock::blockBeforeWithinSelectionRoot): Added. Returns the block which is likely to contain the selected line just before the first line in this block, if it is within the same selection root. * rendering/RenderBlock.h: * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::selectionTopAdjustedForPrecedingBlock): Added. If the selection starts before our block, finds the last line in the preceding block and adjusts the selection top to avoid overlap with that line’s selection bottom. * rendering/RootInlineBox.h: (WebCore::RootInlineBox::selectionHeightAdjustedForPrecedingBlock): Added. Like selectionHeight(), but uses selectionTopAdjustedForPrecedingBlock(). 2012-04-20 Xianzhu Wang <wangxianzhu@chromium.org> Crash in getOrDrawNodeHighlight after r114659 https://bugs.webkit.org/show_bug.cgi?id=84486 Reviewed by Daniel Bates. No new tests. Fixes a crash in test: inspector/elements/elements-panel-selection-on-refresh.html. * inspector/DOMNodeHighlighter.cpp: 2012-04-20 Brady Eidson <beidson@apple.com> https://bugs.webkit.org/show_bug.cgi?id=84490 PageGroupLoadDeferrer needs to take a ReasonForSuspension argument Reviewed by Anders Carlsson. No new tests. (Refactor, no change in behavior) - Make PageGroupLoadDeferrer take a ReasonForSuspension argument so it can pass it along. * page/PageGroupLoadDeferrer.cpp: (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer): * page/PageGroupLoadDeferrer.h: - Change suspendScheduledTasks to take a ReasonForSuspension. - As long as we're changing Document.h, add a m_suspendedScheduledTasks flag and some ASSERTs to catch what would be epically wrong behavior in the future. * dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::suspendScheduledTasks): (WebCore::Document::resumeScheduledTasks): * dom/Document.h: - Pass ActiveDOMObject::WillShowDialog along to all PageGroupLoadDeferrers, as it used to be the default behavior * page/Chrome.cpp: (WebCore::Chrome::runModal): (WebCore::Chrome::runBeforeUnloadConfirmPanel): (WebCore::Chrome::runJavaScriptAlert): (WebCore::Chrome::runJavaScriptConfirm): (WebCore::Chrome::runJavaScriptPrompt): (WebCore::Chrome::shouldInterruptJavaScript): 2012-04-20 Anders Carlsson <andersca@apple.com> Scrolling after going to a find-in-page result jumps to the top of the page https://bugs.webkit.org/show_bug.cgi?id=84485 <rdar://problem/11273734> Reviewed by Beth Dakin. If we're both updating the requested scroll position and entering slow mode in the same commit, the probable main thread scroll position should be the requested scroll position. * page/scrolling/mac/ScrollingTreeNodeMac.mm: (WebCore::ScrollingTreeNodeMac::update): 2012-04-20 James Robinson <jamesr@chromium.org> Avoid synchronously recalculating the nonFastScrollableRegion when the ScrollableArea set changes https://bugs.webkit.org/show_bug.cgi?id=84470 Reviewed by Anders Carlsson. When a scrollable area is added or removed, we shouldn't recalculate the nonFastScrollableRegion synchronously since this is slow, the RenderObject tree might not be in an up-to-date state, and we'll typically do layout soon anyway. * page/FrameView.cpp: (WebCore::FrameView::addScrollableArea): (WebCore::FrameView::removeScrollableArea): * page/scrolling/ScrollingCoordinator.cpp: * page/scrolling/ScrollingCoordinator.h: (ScrollingCoordinator): 2012-04-20 Emil A Eklund <eae@chromium.org> Fix use of LayoutUnits in DOMNodeHighlighter https://bugs.webkit.org/show_bug.cgi?id=84472 Reviewed by Eric Seidel. Fix use of subpixel units and rounding in new code introduced in r114659. No new tests, no change in functionality. * inspector/DOMNodeHighlighter.cpp: 2012-04-17 Antonio Gomes <agomes@rim.com> Relax ScrollView::adjustScrollPositionWithinRange in case constrainsScrollingToContentEdge is false https://bugs.webkit.org/show_bug.cgi?id=84178 Reviewed by Adam Treat. No new tests since it is not easily testable. When a port has both delegatesScrolling and constrainsScrollingToContentEdge set to FALSE (i.e. it accepts overscrolled position), calling ScrollView::setScrollPosition with an overscrolled position still gets the position clamped to the content size edges. Patch relaxes ::adjustScrollPositionWithinRange in that sense in order to track the actual scroll position. Note: ScrollView::setScrollOffset already does something similar. * platform/ScrollView.cpp: (WebCore::ScrollView::adjustScrollPositionWithinRange): 2012-04-20 Sheriff Bot <webkit.review.bot@gmail.com> Unreviewed, rolling out r114535. http://trac.webkit.org/changeset/114535 https://bugs.webkit.org/show_bug.cgi?id=84475 It might have caused V8 crashes. (Requested by pfeldman_ on #webkit). * bindings/v8/V8IsolatedContext.cpp: (WebCore::V8IsolatedContext::V8IsolatedContext): * bindings/v8/V8Proxy.cpp: (WebCore::V8Proxy::evaluateInIsolatedWorld): (WebCore::V8Proxy::setInjectedScriptContextDebugId): (WebCore): * bindings/v8/V8Proxy.h: (V8Proxy): 2012-04-20 Dean Jackson <dino@apple.com> -webkit-filter missing from computed style enumeration https://bugs.webkit.org/show_bug.cgi?id=84468 Reviewed by Timothy Hatcher. CSSComputedStyleDeclaration has a list of properties that it exposes. While the computed style for filter was available, the property wasn't listed and hence missing in clients like the Web Inspector. Covered by existing tests. * css/CSSComputedStyleDeclaration.cpp: (WebCore): add CSSPropertyWebkitFilter 2012-04-20 Emil A Eklund <eae@chromium.org> [win] Update windows platform code to use pixel snapped values https://bugs.webkit.org/show_bug.cgi?id=84283 Reviewed by Eric Seidel. No new tests, no change in functionality. * accessibility/AccessibilityObject.h: (WebCore::AccessibilityObject::pixelSnappedElementRect): Use pixel snapped values when computing screenRect. * platform/win/PopupMenuWin.cpp: (WebCore::PopupMenuWin::calculatePositionAndSize): (WebCore::PopupMenuWin::paint): Cast client padding to ints as they are guaranteed to align with device pixels. 2012-04-20 Dana Jansens <danakj@chromium.org> [chromium] Some filters require inflating damage rect in CCDamageTracker https://bugs.webkit.org/show_bug.cgi?id=84373 Reviewed by James Robinson. When a layer is blurred, damaged pixels are blurred out into a radius and their damage should be expanded to include total blurred region. Unit test: CCDamageTrackerTest.verifyDamageForBlurredSurface * platform/graphics/chromium/cc/CCDamageTracker.cpp: (WebCore::CCDamageTracker::updateDamageTrackingState): (WebCore::CCDamageTracker::expandDamageRectWithForegroundFilters): (WebCore): * platform/graphics/chromium/cc/CCDamageTracker.h: (WebCore): (CCDamageTracker): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::trackDamageForAllSurfaces): 2012-04-20 Sami Kyostila <skyostil@chromium.org> [chromium] Don't crash when scrolling empty layer tree https://bugs.webkit.org/show_bug.cgi?id=84455 Reviewed by James Robinson. Do not try to calculate render passes when there are no layers in the layer tree. Added new unit test. * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::calculateRenderPasses): 2012-04-20 Victor Carbune <vcarbune@adobe.com> Ensure text is centered for default captions https://bugs.webkit.org/show_bug.cgi?id=84450 Reviewed by Eric Carlson. Updated existing test. * html/track/TextTrackCue.cpp: (WebCore::TextTrackCue::getDisplayTree): Added default width. 2012-04-20 Pavel Feldman <pfeldman@chromium.org> Web Inspector: open file dialog is not centered. https://bugs.webkit.org/show_bug.cgi?id=84464 Reviewed by Yury Semikhatsky. There was an error in the positioning logic. * inspector/front-end/FilteredItemSelectionDialog.js: (WebInspector.FilteredItemSelectionDialog.prototype.position): 2012-04-20 Allan Sandfeld Jensen <allan.jensen@nokia.com> [Qt] PlatformMouseEventQt.cpp should be deleted. https://bugs.webkit.org/show_bug.cgi?id=84437 Reviewed by Kenneth Rohde Christiansen. * platform/qt/PlatformMouseEventQt.cpp: Removed. 2012-04-20 Pavel Feldman <pfeldman@chromium.org> Web Inspector: follow up to r114729: more @return annotations added. https://bugs.webkit.org/show_bug.cgi?id=84447 Reviewed by Yury Semikhatsky. * inspector/front-end/Resource.js: (WebInspector.Resource): (WebInspector.ResourceRevision.prototype.get content): * inspector/front-end/ResourceTreeModel.js: (WebInspector.ResourceTreeFrame.prototype._addRequest): * inspector/front-end/ResourceUtils.js: (String.prototype.asParsedURL): 2012-04-20 Pavel Feldman <pfeldman@chromium.org> Web Inspector: migrate from ScriptsNavigator to NavigatorView in the Styles panel https://bugs.webkit.org/show_bug.cgi?id=84459 Reviewed by Yury Semikhatsky. Now that NavigatorView has all the functionality we need, we can use it. * inspector/front-end/NavigatorView.js: (WebInspector.NavigatorScriptTreeElement.prototype.ondblclick): * inspector/front-end/ScriptsNavigator.js: (WebInspector.ScriptsNavigator): * inspector/front-end/StylesPanel.js: (WebInspector.StylesPanel): (WebInspector.StylesPanel.prototype._resourceAdded): (WebInspector.StylesPanel.prototype._reset): (WebInspector.StylesPanel.prototype._itemSelected): (WebInspector.StylesPanel.prototype._showFile): * inspector/front-end/navigatorView.css: (.navigator-tabbed-pane .tabbed-pane-content): (.navigator-tabbed-pane .navigator-container): (.navigator-tabbed-pane .navigator): (.navigator-tabbed-pane .tabbed-pane-header): (.navigator-tabbed-pane .tabbed-pane-header-contents): * inspector/front-end/scriptsPanel.css: 2012-04-20 Sam D <dsam2912@gmail.com> Web Inspector: Does not have search navigation button for going through matches