2011-01-21 Charlie Reis Reviewed by Darin Fisher. Crash in WebCore::HistoryController::itemsAreClones https://bugs.webkit.org/show_bug.cgi?id=52819 Adds sanity checks to help diagnose the crash. * loader/HistoryController.cpp: 2011-01-21 Andreas Kling Reviewed by Ariya Hidayat. [Qt] Let QPainter decide whether a composition mode is supported or not Lacking Porter-Duff support in the paint engine shouldn't exclude the Source and Source-Over modes (and has nothing to do with the blend and raster-op modes.) Delegate this decision to QPainter instead (this will cause warnings if an unsupported mode is used, but that's a good thing.) * platform/graphics/qt/GraphicsContextQt.cpp: (WebCore::GraphicsContext::clearRect): (WebCore::GraphicsContext::setPlatformCompositeOperation): * platform/graphics/qt/TransparencyLayer.h: (WebCore::TransparencyLayer::TransparencyLayer): 2011-01-21 Chris Rogers Reviewed by Kenneth Russell. fix audio build: header file should be "Noncopyable.h" and not "NonCopyable.h" https://bugs.webkit.org/show_bug.cgi?id=52933 No new tests since this just fixes the build * webaudio/RealtimeAnalyser.h: 2011-01-21 Chris Rogers Reviewed by Kenneth Russell. Fix audio build: change ChromiumBridge to PlatformBridge https://bugs.webkit.org/show_bug.cgi?id=52928 No new tests since audio API is not yet implemented. * platform/audio/chromium/AudioBusChromium.cpp: (WebCore::AudioBus::loadPlatformResource): 2011-01-21 Chris Rogers Reviewed by Kenneth Russell. Add FFTFrameStub to avoid link errors during bringup on platforms without an FFT implementation https://bugs.webkit.org/show_bug.cgi?id=52922 No new tests since audio API is not yet implemented. * WebCore.gypi: * platform/audio/FFTFrameStub.cpp: Added. (WebCore::FFTFrame::FFTFrame): (WebCore::FFTFrame::~FFTFrame): (WebCore::FFTFrame::multiply): (WebCore::FFTFrame::doFFT): (WebCore::FFTFrame::doInverseFFT): (WebCore::FFTFrame::cleanup): (WebCore::FFTFrame::realData): (WebCore::FFTFrame::imagData): 2011-01-21 Tony Chang Reviewed by Sam Weinig. reduce number of FrameLoaderClient::didChangeScrollOffset calls https://bugs.webkit.org/show_bug.cgi?id=52915 Only notify of changes in scroll offset when there actually is a change. This regressed in r76291. Covered by Chromium browser_tests. * platform/ScrollAnimator.cpp: (WebCore::ScrollAnimator::scrollToOffsetWithoutAnimation): 2011-01-21 Pavel Feldman Reviewed by Yury Semikhatsky. Web Inspector: ~InspectorResourceAgent crashes on closing inspected page. https://bugs.webkit.org/show_bug.cgi?id=52900 * inspector/InspectorController.cpp: (WebCore::InspectorController::~InspectorController): (WebCore::InspectorController::inspectedPageDestroyed): 2011-01-21 Chris Rogers Reviewed by Darin Fisher. Add run-time enable support for the web audio API https://bugs.webkit.org/show_bug.cgi?id=52741 No new tests since audio API is not yet implemented. * WebCore.exp.in: * bindings/generic/RuntimeEnabledFeatures.cpp: * bindings/generic/RuntimeEnabledFeatures.h: (WebCore::RuntimeEnabledFeatures::setWebkitAudioContextEnabled): (WebCore::RuntimeEnabledFeatures::webkitAudioContextEnabled): * page/DOMWindow.idl: * page/Settings.cpp: (WebCore::Settings::Settings): (WebCore::Settings::setWebAudioEnabled): * page/Settings.h: (WebCore::Settings::webAudioEnabled): 2011-01-21 Martin Robinson Reviewed by Xan Lopez. [GTK] Menulist text often collides with separator https://bugs.webkit.org/show_bug.cgi?id=51155 Move menulist rendering to RenderThemeGtk and correct padding code for separators in menulists. * platform/gtk/RenderThemeGtk.cpp: (WebCore::RenderThemeGtk::RenderThemeGtk): Initialize new widget members. (WebCore::RenderThemeGtk::getComboBoxSeparatorWidth): Added. (WebCore::RenderThemeGtk::comboBoxArrowSize): Added. (WebCore::getButtonInnerBorder): Added. (WebCore::RenderThemeGtk::getComboBoxPadding): Do this manually instead of using Mozilla code. (WebCore::RenderThemeGtk::paintMenuList): Ditto. (WebCore::setupWidget): Abstracted this part of the setupWidgetAndAddToContainer out to handle child widgets of comboboxes. (WebCore::RenderThemeGtk::setupWidgetAndAddToContainer): Abstracted out setupWidget. (WebCore::RenderThemeGtk::gtkContainer): Added. (WebCore::getGtkComboBoxButton): Added. (WebCore::getGtkComboBoxPieces): Added. (WebCore::RenderThemeGtk::gtkComboBox): Call setupWidget here. (WebCore::RenderThemeGtk::refreshComboBoxChildren): Added. (WebCore::RenderThemeGtk::gtkComboBoxButton): Added. (WebCore::RenderThemeGtk::gtkComboBoxArrow): Added. (WebCore::RenderThemeGtk::gtkComboBoxSeparator): Added. * platform/gtk/RenderThemeGtk.h: Added new members and methods. * platform/gtk/WidgetRenderingContext.h: Added new members and methods. * platform/gtk/WidgetRenderingContextGtk2.cpp: (WebCore::WidgetRenderingContext::gtkPaintArrow): (WebCore::WidgetRenderingContext::gtkPaintVLine): * platform/gtk/WidgetRenderingContextGtk3.cpp: (WebCore::WidgetRenderingContext::gtkPaintArrow): (WebCore::WidgetRenderingContext::gtkPaintVLine): * platform/gtk/gtk2drawing.c: Removed code for drawing menulists and buttons. (moz_gtk_init): (moz_gtk_get_widget_border): (moz_gtk_widget_paint): * platform/gtk/gtk3drawing.c: (moz_gtk_init): (moz_gtk_get_widget_border): (moz_gtk_widget_paint): * platform/gtk/gtkdrawing.h: 2011-01-21 Sam Weinig Fix chromium mac build. * platform/chromium/ScrollbarThemeChromiumMac.mm: (WebCore::scrollbarStateToThemeState): (WebCore::ScrollbarThemeChromiumMac::paint): 2011-01-21 Sam Weinig Fix the windows build. * platform/ScrollbarThemeComposite.cpp: (WebCore::ScrollbarThemeComposite::paint): 2011-01-21 Chris Rogers Reviewed by Kenneth Russell. Add chromium bundled audio spatialization resources to WebAudio.grd https://bugs.webkit.org/show_bug.cgi?id=52651 No new tests since audio API is not yet implemented. * WebCore.gyp/WebCore.gyp: * platform/audio/chromium/AudioBusChromium.cpp: (WebCore::AudioBus::loadPlatformResource): 2011-01-21 Xiyuan Xia Reviewed by Tony Chang. Use WebThemeEngine for relevant RenderTheme parts for chromium/linux. https://bugs.webkit.org/show_bug.cgi?id=52826 * platform/chromium/ChromiumBridge.h: * rendering/RenderThemeChromiumLinux.cpp: (WebCore::getWebThemeState): (WebCore::RenderThemeChromiumLinux::adjustSliderThumbSize): (WebCore::RenderThemeChromiumLinux::paintCheckbox): (WebCore::RenderThemeChromiumLinux::setCheckboxSize): (WebCore::RenderThemeChromiumLinux::paintRadio): (WebCore::RenderThemeChromiumLinux::setRadioSize): (WebCore::RenderThemeChromiumLinux::paintButton): (WebCore::RenderThemeChromiumLinux::paintTextField): (WebCore::RenderThemeChromiumLinux::paintMenuList): (WebCore::RenderThemeChromiumLinux::paintSliderTrack): (WebCore::RenderThemeChromiumLinux::paintSliderThumb): (WebCore::RenderThemeChromiumLinux::adjustInnerSpinButtonStyle): (WebCore::RenderThemeChromiumLinux::paintInnerSpinButton): (WebCore::RenderThemeChromiumLinux::paintProgressBar): * rendering/RenderThemeChromiumLinux.h: * rendering/RenderThemeChromiumSkia.cpp: (WebCore::RenderThemeChromiumSkia::setCheckboxSize): (WebCore::RenderThemeChromiumSkia::setSizeIfAuto): (WebCore::RenderThemeChromiumSkia::indeterminateProgressValueRectFor): * rendering/RenderThemeChromiumSkia.h: 2011-01-21 Sam Weinig Reviewed by Anders Carlsson. Part 2 of "Cleanup Scrollbar/ScrollbarClient relationship" https://bugs.webkit.org/show_bug.cgi?id=52779 Rename ScrollbarClient -> ScrollableArea. - Also replaces Scrollbar::setClient with Scrollbar::disconnectFromScrollableArea since that was its only use case. * CMakeLists.txt: * GNUmakefile.am: * WebCore.gypi: * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: * accessibility/AccessibilityScrollbar.cpp: (WebCore::AccessibilityScrollbar::setValue): * css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::SelectorChecker::checkScrollbarPseudoClass): * page/FrameView.h: * platform/PopupMenuClient.h: * platform/ScrollAnimator.cpp: (WebCore::ScrollAnimator::create): (WebCore::ScrollAnimator::ScrollAnimator): (WebCore::ScrollAnimator::scroll): (WebCore::ScrollAnimator::notityPositionChanged): * platform/ScrollAnimator.h: * platform/ScrollAnimatorWin.cpp: (WebCore::ScrollAnimator::create): (WebCore::ScrollAnimatorWin::ScrollAnimatorWin): (WebCore::ScrollAnimatorWin::scroll): * platform/ScrollAnimatorWin.h: * platform/ScrollView.cpp: (WebCore::ScrollView::scroll): (WebCore::ScrollView::updateScrollbars): (WebCore::ScrollView::wheelEvent): * platform/ScrollView.h: * platform/ScrollableArea.cpp: Copied from WebCore/platform/ScrollbarClient.cpp. (WebCore::ScrollableArea::ScrollableArea): (WebCore::ScrollableArea::~ScrollableArea): (WebCore::ScrollableArea::scroll): (WebCore::ScrollableArea::scrollToOffsetWithoutAnimation): (WebCore::ScrollableArea::scrollToXOffsetWithoutAnimation): (WebCore::ScrollableArea::scrollToYOffsetWithoutAnimation): (WebCore::ScrollableArea::setScrollOffsetFromAnimation): * platform/ScrollableArea.h: Copied from WebCore/platform/ScrollbarClient.h. * platform/Scrollbar.cpp: (WebCore::Scrollbar::createNativeScrollbar): (WebCore::Scrollbar::Scrollbar): (WebCore::Scrollbar::offsetDidChange): (WebCore::Scrollbar::autoscrollPressedPart): (WebCore::Scrollbar::moveThumb): (WebCore::Scrollbar::mouseMoved): (WebCore::Scrollbar::isWindowActive): (WebCore::Scrollbar::invalidateRect): (WebCore::Scrollbar::convertToContainingView): (WebCore::Scrollbar::convertFromContainingView): * platform/Scrollbar.h: (WebCore::Scrollbar::disconnectFromScrollableArea): (WebCore::Scrollbar::scrollableArea): * platform/ScrollbarClient.cpp: Removed. * platform/ScrollbarClient.h: Removed. * platform/ScrollbarThemeComposite.cpp: * platform/chromium/FramelessScrollView.h: * platform/chromium/ScrollbarThemeChromium.cpp: (WebCore::ScrollbarThemeChromium::paintTickmarks): * platform/efl/ScrollbarEfl.cpp: (Scrollbar::createNativeScrollbar): (ScrollbarEfl::ScrollbarEfl): (scrollbarEflEdjeMessage): * platform/efl/ScrollbarEfl.h: * platform/gtk/MainFrameScrollbarGtk.cpp: (MainFrameScrollbarGtk::create): (MainFrameScrollbarGtk::MainFrameScrollbarGtk): (MainFrameScrollbarGtk::gtkValueChanged): * platform/gtk/MainFrameScrollbarGtk.h: * platform/mac/ScrollAnimatorMac.h: * platform/mac/ScrollAnimatorMac.mm: (WebCore::ScrollAnimator::create): (WebCore::ScrollAnimatorMac::ScrollAnimatorMac): (WebCore::ScrollAnimatorMac::scroll): * platform/mac/ScrollbarThemeMac.mm: (WebCore::ScrollbarThemeMac::paint): * platform/qt/ScrollbarQt.cpp: (WebCore::Scrollbar::contextMenu): * platform/win/PopupMenuWin.cpp: (WebCore::PopupMenuWin::scrollToRevealSelection): (WebCore::PopupMenuWin::wndProc): * platform/win/PopupMenuWin.h: * platform/win/ScrollbarThemeSafari.cpp: (WebCore::ScrollbarThemeSafari::paintTrackBackground): (WebCore::ScrollbarThemeSafari::paintButton): (WebCore::ScrollbarThemeSafari::paintThumb): * platform/wx/ScrollbarThemeWx.cpp: (WebCore::ScrollbarThemeWx::paint): * rendering/RenderDataGrid.h: * rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollToOffset): (WebCore::RenderLayer::destroyScrollbar): (WebCore::RenderLayer::scroll): * rendering/RenderLayer.h: * rendering/RenderListBox.cpp: (WebCore::RenderListBox::scrollToRevealElementAtListIndex): (WebCore::RenderListBox::scroll): (WebCore::RenderListBox::logicalScroll): (WebCore::RenderListBox::setScrollTop): (WebCore::RenderListBox::destroyScrollbar): * rendering/RenderListBox.h: * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::createScrollbar): * rendering/RenderMenuList.h: * rendering/RenderScrollbar.cpp: (WebCore::RenderScrollbar::createCustomScrollbar): (WebCore::RenderScrollbar::RenderScrollbar): * rendering/RenderScrollbar.h: * rendering/RenderTextControlSingleLine.cpp: (WebCore::RenderTextControlSingleLine::createScrollbar): * rendering/RenderTextControlSingleLine.h: 2011-01-21 Darin Adler Fix Leopard build. * rendering/mathml/RenderMathMLFraction.cpp: (WebCore::RenderMathMLFraction::layout): Use ceilf instead of ceil. 2011-01-21 Anton Muhin Reviewed by Nate Chapin. [v8] Properly deal with the case when conversion to string throws an exception for HTMLCollection accessors https://bugs.webkit.org/show_bug.cgi?id=52901 Test: fast/dom/htmlcollection-conversion-throws-exception.html * bindings/v8/custom/V8HTMLCollectionCustom.cpp: (WebCore::getItem): 2011-01-21 Adam Roben Separate flushing layer changes from rendering in CACFLayerTreeHost Old model: 1) A change is made to a GraphicsLayer. 2) CACFLayerTreeHost::flushPendingGraphicsLayerChangesSoon is called, which schedules the render timer. 3) The timer fires, which calls through to CACFLayerTreeHost::render, which performs the flush and then renders. New model: 1) A change is made to a GraphicsLayer. 2) CACFLayerTreeHost::flushPendingGraphicsLayerChangesSoon is called, which tells the new LayerChangesFlusher singleton that this host has changes that need to be flushed. 3) LayerChangesFlusher sets up a Windows hook that will get called on the next iteration of the message loop. 4) LayerChangesFlusher's hook is called, which calls through to CACFLayerTreeHost::flushPendingLayerChangesNow. 5) CACFLayerTreeHost::flushPendingLayerChangesNow schedules the render timer so the changes that were just flushed to the context will be rendered. When a change is made to a PlatformCALayer that doesn't have a corresponding GraphicsLayer (e.g., for rendering