REGRESSION (r154614): Setting the document scroll position isn't symmetric; can successfully set document.body.scrollTop, but can only read from document.documentElement.scrollTop
https://bugs.webkit.org/show_bug.cgi?id=121876

Patch by Gurpreet Kaur <k.gurpreet@samsung.com> on 2013-09-28
Reviewed by Darin Adler.

Source/WebCore:

Non-Quirks mode should set/get scrolltop/scrollleft through
document.documentElement.scrollTop/document.documentElement.scrollLeft
Quirks mode should set/get scrolltop/scrollleft through
document.body.scrollTop/document.body.scrollLeft.

Tests: fast/dom/Element/body-scrollLeft-Quirks.html
       fast/dom/Element/body-scrollLeft.html
       fast/dom/Element/body-scrollTop-Quirks.html
       fast/dom/Element/body-scrollTop.html
       fast/dom/Element/documentElement-scrollLeft-Quirks.html
       fast/dom/Element/documentElement-scrollLeft.html
       fast/dom/Element/documentElement-scrollTop-Quirks.html
       fast/dom/Element/documentElement-scrollTop.html

* dom/Element.cpp:
(WebCore::Element::setScrollLeft):
(WebCore::Element::setScrollTop):
* html/HTMLBodyElement.cpp:
(WebCore::HTMLBodyElement::setScrollLeft):
(WebCore::HTMLBodyElement::setScrollTop):
Need to set the scrollTop and scrollLeft after checking if document
is in quirks or non-quirks mode. Incase it is body.scrollLeft/
body.scrollTop set only if document is in quirks mode. If document is
non-quirks mode set documentElement.scrollLeft/documentElement.scrollTop.

LayoutTests:

* fast/dom/Element/body-scrollLeft-Quirks-expected.txt: Added.
* fast/dom/Element/body-scrollLeft-Quirks.html: Added.
* fast/dom/Element/body-scrollLeft-expected.txt: Added.
* fast/dom/Element/body-scrollLeft.html: Added.
* fast/dom/Element/body-scrollTop-Quirks-expected.txt: Added.
* fast/dom/Element/body-scrollTop-Quirks.html: Added.
* fast/dom/Element/body-scrollTop-expected.txt: Added.
* fast/dom/Element/body-scrollTop.html: Added.
* fast/dom/Element/documentElement-scrollLeft-Quirks-expected.txt: Added.
* fast/dom/Element/documentElement-scrollLeft-Quirks.html: Added.
* fast/dom/Element/documentElement-scrollLeft-expected.txt: Added.
* fast/dom/Element/documentElement-scrollLeft.html: Added.
* fast/dom/Element/documentElement-scrollTop-Quirks-expected.txt: Added.
* fast/dom/Element/documentElement-scrollTop-Quirks.html: Added.
* fast/dom/Element/documentElement-scrollTop-expected.txt: Added.
* fast/dom/Element/documentElement-scrollTop.html: Added.
Added test cases for verifying that Non-Quirks mode should set
scrolltop/scrollleft through document.documentElement.scrollTop/
document.documentElement.scrollLeft and Quirks mode should set/get
scrolltop/scrollleft through document.body.scrollTop/document.body.scrollLeft.

* fast/multicol/scrolling-overflow.html:
Rebaselining existing tests as per the new behavior. To set
document.body.scrollLeft document to be in Quirks mode.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156605 268f45cc-cd09-0410-ab3c-d52691b4dbfc
filter: drop-shadow doesnot support viewport units
https://bugs.webkit.org/show_bug.cgi?id=122053

Patch by Gurpreet Kaur <k.gurpreet@samsung.com> on 2013-09-28
Reviewed by Darin Adler.

Source/WebCore:

drop-shadow properties were not applied incase its values
were given in vh, vw, vmax, vmin units.

Tests: fast/css/drop-shadow-viewport-height.html
       fast/css/drop-shadow-viewport-vmax.html
       fast/css/drop-shadow-viewport-vmin.html
       fast/css/drop-shadow-viewport-width.html

* css/StyleResolver.cpp:
(WebCore::StyleResolver::createFilterOperations):
Calculating the drop-shadow values which has been specified in viewport
units.The vh/vw units are calcultated as percent of viewport height and
viewport width respectively. 1vmax: 1vw or 1vh, whatever is largest.
1vmin: 1vw or 1vh, whatever is smallest.

LayoutTests:

* fast/css/drop-shadow-viewport-height-expected-mismatch.html: Added.
* fast/css/drop-shadow-viewport-height.html: Added.
* fast/css/drop-shadow-viewport-vmax-expected-mismatch.html: Added.
* fast/css/drop-shadow-viewport-vmax.html: Added.
* fast/css/drop-shadow-viewport-vmin-expected-mismatch.html: Added.
* fast/css/drop-shadow-viewport-vmin.html: Added.
* fast/css/drop-shadow-viewport-width-expected-mismatch.html: Added.
* fast/css/drop-shadow-viewport-width.html: Added.
Added new tests for verifying that drop-shadow properties are applied
when its values are viewport units.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156606 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add Frame::mainFrame and Frame::isMainFrame
https://bugs.webkit.org/show_bug.cgi?id=122064

Reviewed by Andreas Kling.

Source/WebCore:

* WebCore.exp.in: Removed exports of FrameView::isMainFrameView and
Page::frameIsMainFrame. Since the new isMainFrame function is inline, it
does not need to be exported.

* history/PageCache.cpp:
(WebCore::PageCache::markPagesForFullStyleRecalc):
(WebCore::PageCache::markPagesForDeviceScaleChanged):
These two were the only functions I found that really wanted the equivalent
of Page::frameIsMainFrame, so wrote it out here instead of using a function
call.

* inspector/InspectorAgent.cpp: Removed the unused isMainResourceLoader function.
* inspector/InspectorAgent.h: Removed declarations of a few nonexistent or
unused private member functions. Also removed the InjectedScriptForOriginMap
typedef: It's mor readable to use the type directly

* loader/FrameLoader.h: Removed isLoadingMainFrame. It's not better than
calling frame().isMainFrame() directly.

* page/Frame.cpp:
(WebCore::Frame::Frame): Initialize m_mainFrame and call selfOnlyRef, keeping
the MainFrame alive as long as any of its subframes is alive.
(WebCore::Frame::~Frame): Call selfOnlyDeref.
(WebCore::Frame::createView): Use isMainFrame.
(WebCore::Frame::setPageAndTextZoomFactors): Ditto.

* page/Frame.h: Added Frame::mainFrame, Frame::isMainFrame, and Frame::m_mainFrame.

* page/FrameView.h: Removed the isMainFrameView function. It's not better than
calling frame().isMainFrame() directly.

* page/MainFrame.cpp:
(WebCore::MainFrame::MainFrame): Initialize m_selfOnlyRefCount to 0.
(WebCore::MainFrame::selfOnlyRef): Added.
(WebCore::MainFrame::selfOnlyDeref): Added.
(WebCore::MainFrame::dropChildren): Added. Called when the self-only reference
count reaches 0 to avoid a reference cycle with subframes.

* page/MainFrame.h: Added new data members as mentioned above. Also, the
definition of the Frame::isMainFrame inline function goes here, since it can't
compile without the MainFrame class definition. This means that callers of
isMainFrame need to include MainFrame.h, which seems reasonable and is easy
to do.

* page/Page.cpp:
* page/Page.h: Added assertion to Page::mainFrame since it returns a reference.
Removed Page::frameIsMainFrame since it's not better than calling isMainFrame
on the frame.

* dom/Document.cpp:
(WebCore::Document::setVisualUpdatesAllowed):
(WebCore::Document::didBecomeCurrentDocumentInFrame):
(WebCore::Document::updateViewportArguments):
(WebCore::Document::setInPageCache):
(WebCore::Document::ensurePlugInsInjectedScript):
* history/CachedFrame.cpp:
(WebCore::CachedFrame::CachedFrame):
* history/CachedPage.cpp:
(WebCore::CachedPage::restore):
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn):
* html/ImageDocument.cpp:
(WebCore::ImageDocument::shouldShrinkToFit):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::didClearWindowObjectInWorld):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didCommitLoadImpl):
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::didClearWindowObjectInWorld):
(WebCore::InspectorPageAgent::frameNavigated):
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::willSendRequest):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::transitionToCommitted):
(WebCore::FrameLoader::prepareForCachedPageRestore):
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
(WebCore::FrameLoader::didLayout):
(WebCore::FrameLoader::checkLoadComplete):
(WebCore::FrameLoader::addExtraFieldsToRequest):
(WebCore::FrameLoader::loadResourceSynchronously):
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
(WebCore::FrameLoader::dispatchDidCommitLoad):
(WebCore::FrameLoader::loadProgressingStatusChanged):
* loader/HistoryController.cpp:
(WebCore::HistoryController::saveScrollPositionAndViewStateToItem):
(WebCore::HistoryController::restoreScrollPositionAndViewState):
(WebCore::HistoryController::updateForCommit):
(WebCore::HistoryController::updateForSameDocumentNavigation):
(WebCore::HistoryController::updateBackForwardListClippedAtTarget):
(WebCore::HistoryController::pushState):
* loader/icon/IconController.cpp:
(WebCore::IconController::startLoader):
* page/AutoscrollController.cpp:
(WebCore::AutoscrollController::stopAutoscrollTimer):
* page/ContextMenuController.cpp:
(WebCore::ContextMenuController::populate):
* page/DOMWindow.cpp:
(WebCore::allowsBeforeUnloadListeners):
(WebCore::DOMWindow::focus):
(WebCore::DOMWindow::blur):
(WebCore::DOMWindow::close):
(WebCore::DOMWindow::allowedToChangeWindowGeometry):
* page/EventHandler.cpp:
(WebCore::EventHandler::hitTestResultAtPoint):
(WebCore::EventHandler::selectCursor):
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::EventHandler::keyEvent):
* page/FrameTree.cpp:
(WebCore::FrameTree::find):
(WebCore::FrameTree::traverseNextWithWrap):
* page/FrameView.cpp:
(WebCore::FrameView::FrameView):
(WebCore::FrameView::setFrameRect):
(WebCore::FrameView::createScrollbar):
(WebCore::FrameView::applyOverflowToViewport):
(WebCore::FrameView::setHeaderHeight):
(WebCore::FrameView::setFooterHeight):
(WebCore::FrameView::minimumScrollPosition):
(WebCore::FrameView::maximumScrollPosition):
(WebCore::FrameView::shouldUpdateFixedElementsAfterScrolling):
(WebCore::FrameView::beginDeferredRepaints):
(WebCore::FrameView::endDeferredRepaints):
(WebCore::FrameView::performPostLayoutTasks):
(WebCore::FrameView::sendResizeEventIfNeeded):
(WebCore::FrameView::pagination):
(WebCore::FrameView::visibleContentScaleFactor):
(WebCore::FrameView::setVisibleScrollerThumbRect):
(WebCore::FrameView::scrollbarStyleChanged):
(WebCore::FrameView::paintScrollCorner):
(WebCore::FrameView::paintScrollbar):
(WebCore::FrameView::paintOverhangAreas):
* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::coordinatesScrollingForFrameView):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::RenderLayerBacking):
Use the new functions where possible instead of Page::frameIsMainFrame,
Page::mainFrame, FrameLoader::isLoadingMainFrame, and FrameView::isMainFrameView.

Source/WebKit/blackberry:

* WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
(WebCore::FrameLoaderClientBlackBerry::dispatchWillSendRequest):
Call isMainFrame.

Source/WebKit/efl:

* WebCoreSupport/FrameLoaderClientEfl.cpp:
(WebCore::FrameLoaderClientEfl::dispatchWillSendRequest):
(WebCore::FrameLoaderClientEfl::assignIdentifierToInitialRequest):
(WebCore::FrameLoaderClientEfl::updateGlobalHistory):
Call isMainFrame.

Source/WebKit/gtk:

* WebCoreSupport/FrameLoaderClientGtk.cpp:
(WebKit::FrameLoaderClient::assignIdentifierToInitialRequest):
Call isMainFrame.

Source/WebKit/mac:

* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::canHandleRequest):
(WebFrameLoaderClient::transitionToCommittedForNewPage):
* WebView/WebFrameView.mm:
(-[WebFrameView _install]):
Call isMainFrame.

Source/WebKit2:

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::shouldUseTiledBackingForFrameView):
Call isMainFrame.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@156607 268f45cc-cd09-0410-ab3c-d52691b4dbfc