[GStreamer] support preload="metadata"
https://bugs.webkit.org/show_bug.cgi?id=116817

Reviewed by Eric Carlson.

Source/WebCore:

Add appropriate behavior for preload="metadata". Delay enabling download buffering
until playback is started in this case. This behavior fits with the standard quite
well and this is the most exact match we can get (at least without adding too much
extra complexity). What matters mostly is that we can avoid loading the media
before playback but we have the first frame and the metadata.

Test: media/video-load-preload-metadata.html

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::prepareToPlay): Set |m_preload| to |Auto|
so we will start download buffering if we did not start it yet.
(WebCore::MediaPlayerPrivateGStreamer::play): Ditto.
(MediaPlayerPrivateGStreamer::setDownloadBuffering): Only start download
buffering if |m_preload == Auto|. Also make sure we don't clear the download
flag once we started downloading because it would result in not well defined
behavior and it does not really makes sense.
(MediaPlayerPrivateGStreamer::setPreload): Set download buffering accordingly.

LayoutTests:

* media/video-load-preload-metadata.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152391 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Port FileSystemWin.cpp to WinCE
https://bugs.webkit.org/show_bug.cgi?id=117935

Reviewed by Brent Fulgham.

Add #if !OS(WINCE) around a few lines of the code, so it can be used by the WinCE port too.

* PlatformWinCE.cmake:
* platform/win/FileSystemWin.cpp:
(WebCore::storageDirectory):
* platform/wince/FileSystemWinCE.cpp: Removed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152392 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CMake] Add STATICALLY_LINKED_WITH_WTF to JavaScriptCore project
https://bugs.webkit.org/show_bug.cgi?id=118120

Reviewed by Gyuyoung Kim.

Since WTF is a static library linked to JavaScriptCore on all CMake ports
we need to define STATICALLY_LINKED_WITH_WTF for all of them.
This makes only a difference for Windows, since WTF_EXPORT and WTF_IMPORT
are the same on all other platforms.

* CMakeLists.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152393 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL] Gardening. Unskip tests related with editing
https://bugs.webkit.org/show_bug.cgi?id=118379

Unreviewed gardening.

Patch by KyungTae Kim <ktf.kim@samsung.com> on 2013-07-04

* platform/efl-wk2/TestExpectations:
  Unskip editing/selection/doubleclick-beside-cr-span.html and
  editing/selection/doubleclick-whitespace.html, which are passed after r150289
* platform/efl/editing/style/5065910-expected.txt: Removed (wrong expected result).
* platform/efl/editing/style/5065910-expected.png: Removed (wrong expected result).

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152394 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CMake] Add generation of JITStubs for x86_64 MSVC
https://bugs.webkit.org/show_bug.cgi?id=116666

Reviewed by Laszlo Gombos.

Also move the generation for ARM CPU into the CMakeLists.txt,
since it's compiler specific and not dedicated to Windows CE.

* CMakeLists.txt:
* PlatformWinCE.cmake: Removed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152395 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[ATK] Do not expose '\n' for wrapped lines with ATK_TEXT_BOUNDARY_CHAR
https://bugs.webkit.org/show_bug.cgi?id=118359

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Do not expose a '\n' character for every visual line break.

* accessibility/atk/WebKitAccessibleInterfaceText.cpp:
(webkitAccessibleTextGetChar): Removed wrong code.

Source/WebKit/gtk:

Added new unit test to make sure we exposed line breaks properly.

* tests/testatk.c:
(testWebkitAtkGetTextAtOffsetWithWrappedLines): New unit test.
(main): Added new test to the test suite.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152396 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[ATK] Leak: AtkAttributeSet* should be freed
https://bugs.webkit.org/show_bug.cgi?id=118307

Patch by Brian Holt <brian.holt@samsung.com> on 2013-07-04
Reviewed by Christophe Dumez.

Source/WebCore:

Use AtkAttributeSet* instead of GSList*.

* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetObjectLocale):

Tools:

Fixed memory leaks for AtkAttributeSet by calling
atk_attribute_set_free().

* DumpRenderTree/atk/AccessibilityControllerAtk.cpp:
(AccessibilityController::childElementById):
* DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
(getAtkAttributeSetAsString):
(AccessibilityUIElement::allAttributes):
(AccessibilityUIElement::stringAttributeValue):
* WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:
(WTR::childElementById):
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::getAtkAttributeSetAsString):
(WTR::AccessibilityUIElement::allAttributes):
(WTR::AccessibilityUIElement::stringAttributeValue):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152397 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] Leak: Free PangoFontDescription* in RenderThemeGtk3
https://bugs.webkit.org/show_bug.cgi?id=118386

Patch by Brian Holt <brian.holt@samsung.com> on 2013-07-04
Reviewed by Carlos Garcia Campos.

Free PangoFontDescription* allocated by gtk_style_context_get (transfer full).

* platform/gtk/RenderThemeGtk3.cpp:
(WebCore::spinButtonArrowSize):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Change static_cast<SVGImageElement*> with toSVGImageElement
https://bugs.webkit.org/show_bug.cgi?id=118387

Reviewed by Andreas Kling.

As a step to change static_cast with toXXX, static_cast<SVGImageElement*> can
be changed with toSVGImageElement().

Blink merge from https://src.chromium.org/viewvc/blink?view=rev&revision=153557

* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::updateImageViewport):
(WebCore::RenderSVGImage::layout):
(WebCore::RenderSVGImage::paintForeground):
* svg/SVGImageElement.h:
(WebCore::toSVGImageElement):
* svg/SVGImageLoader.cpp:
(WebCore::SVGImageLoader::dispatchLoadEvent):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152399 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed build fix after r152399.

Add missing header include for SVGNames.h.

* svg/SVGImageElement.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152400 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Take document height into account when determining when it is considered visually non-empy
https://bugs.webkit.org/show_bug.cgi?id=118272

Reviewed by Darin Adler.

The current visually non-empy mechanism takes into account only the amount of contents in renderers. 
Add a simple layout dependency so that we don't consider page non-empty until the document height
exceed a (low) height threshold (or the load completes).

* page/FrameView.cpp:
(WebCore::FrameView::performPostLayoutTasks):
        
    Don't send layout callbacks until we have actually some content.

(WebCore::FrameView::qualifiesAsVisuallyNonEmpty):
(WebCore::FrameView::updateIsVisuallyNonEmpty):
        
    Factor into functions.

* page/FrameView.h:
(WebCore::FrameView::incrementVisuallyNonEmptyCharacterCount):
(WebCore::FrameView::incrementVisuallyNonEmptyPixelCount):
* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::RenderEmbeddedObject):
* rendering/RenderHTMLCanvas.cpp:
(WebCore::RenderHTMLCanvas::RenderHTMLCanvas):
        
     The size is not known but the estimate provided here is always bigger than the threshold so
     the functionality is unchanged.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152401 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove PageThrottler::m_activeThrottleBlockers
https://bugs.webkit.org/show_bug.cgi?id=118375

Reviewed by Mark Rowe.

This is simply m_activityTokens.size().

Also, fold preventThrottling into addActivityToken & allowThrottling into removeActivityToken
(these should no longer be called directly, and should not be public).

* page/PageThrottler.cpp:
(WebCore::PageThrottler::PageThrottler):
    - removed m_activeThrottleBlockers
(WebCore::PageThrottler::startThrottleHysteresisTimer):
    - m_activeThrottleBlockers -> m_activityTokens.size()
(WebCore::PageThrottler::throttleHysteresisTimerFired):
    - m_activeThrottleBlockers -> m_activityTokens.size()
(WebCore::PageThrottler::addActivityToken):
    - added functionality from preventThrottling
(WebCore::PageThrottler::removeActivityToken):
    - added functionality from allowThrottling
* page/PageThrottler.h:
    - removed preventThrottling, allowThrottling, and m_activeThrottleBlockers.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152402 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Crash when createPluginInternal ends up destroying the plug-in
https://bugs.webkit.org/show_bug.cgi?id=118397
<rdar://problem/14155051>

Reviewed by Simon Fraser.

Keep the WebProcessConnection object alive while calling createPluginInternal and handle
the IPC connection going away.

* PluginProcess/WebProcessConnection.cpp:
(WebKit::WebProcessConnection::createPluginAsynchronously):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152403 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Have SVGTextContentElement inherit SVGGraphicsElement
https://bugs.webkit.org/show_bug.cgi?id=118351

Reviewed by Dirk Schulze.

Source/WebCore:

Have SVGTextContentElement inherit SVGGraphicsElement instead of
SVGStyledElement in order to match the latest SVG2 specification:
https://svgwg.org/svg2-draft/text.html#InterfaceSVGTextContentElement

This patch also removes the SVGTransformable and SVGLocatable IDL
interfaces as they are no longer needed (were merged into
SVGGraphicsElement in the latest specification).

This is one step towards getting rid of multiple inheritance in
SVG, and complying with the latest SVG2 specification.

No new tests, covered by existing tests.

* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/scripts/CodeGeneratorJS.pm:
(GetGnuVTableOffsetForType):
* bindings/scripts/CodeGeneratorObjC.pm:
* svg/SVGAnimateMotionElement.cpp:
(WebCore::SVGAnimateMotionElement::hasValidAttributeType):
* svg/SVGElement.cpp:
(WebCore::SVGElement::getBoundingBox):
* svg/SVGLocatable.idl: Removed.
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::SVGTextContentElement):
(WebCore::SVGTextContentElement::isSupportedAttribute):
(WebCore::SVGTextContentElement::isPresentationAttribute):
(WebCore::SVGTextContentElement::collectStyleForPresentationAttribute):
(WebCore::SVGTextContentElement::parseAttribute):
(WebCore::SVGTextContentElement::svgAttributeChanged):
* svg/SVGTextContentElement.h:
* svg/SVGTextContentElement.idl:
* svg/SVGTextElement.cpp:
(WebCore::SVGTextElement::SVGTextElement):
(WebCore::SVGTextElement::animatedLocalTransform):
* svg/SVGTextElement.h:
* svg/SVGTextElement.idl:
* svg/SVGTransformable.idl: Removed.

LayoutTests:

Fix conversion to absolute (user agent) coordinates in the svg/text
tests to use SVGGraphicsElement::getScreenCTM() instead of
SVGGraphicsElement::getTransformToElement(). The previous code was
working until now due to a bug in getTransformToElement(), which
was not taking into consideration the CTM of the SVGTextElement (as
it was not recognized as a "locatable" element). Now that
SVGTextElement inherits from SVGGraphicsElement, it is properly
recognized as a "locatable" element by getTransformToElement().

* svg/text/resources/SelectionTestCase.js:
(toAbsoluteCoordinates):
* svg/text/selection-doubleclick.svg:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152404 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a method to get unreachable URL from WebFrame.
https://bugs.webkit.org/show_bug.cgi?id=118399

Normally we could use [[WebFrame dataSource] unreachableURL] to get the failed URL.  However, if the frame has not
loaded (FrameLoader::frameHasLoaded() is false), we will get a nil dataSource and we won't be able to get unreachableURL.
We can add a method to always return the unreachableURL regardless if the frame has loaded or not.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2013-07-04
Reviewed by Dan Bernstein.

* WebView/WebFrame.mm:
(-[WebFrame _unreachableURL]):
* WebView/WebFramePrivate.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152405 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Paint the page background if we haven't received our first update
https://bugs.webkit.org/show_bug.cgi?id=118402
<rdar://problem/13893308>

Reviewed by Simon Fraser.

Make sure that we always paint something when we haven't received our first update from the web process.

* UIProcess/API/mac/WKView.mm:
(-[WKView drawRect:]):
* UIProcess/DrawingAreaProxyImpl.h:
(WebKit::DrawingAreaProxyImpl::hasReceivedFirstUpdate):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152407 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL] DumpRenderTree doesn't run if "opengl_x11" engine is not available
https://bugs.webkit.org/show_bug.cgi?id=118370

Patch by Viatcheslav Ostapenko <sl.ostapenko@samsung.com> on 2013-07-04
Reviewed by Christophe Dumez.

Add fallback to software X11 engine if opengl_x11 engine creation fails.

* DumpRenderTree/efl/DumpRenderTree.cpp:
(initEcoreEvas):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152408 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Build fix GTK after r152404.
https://bugs.webkit.org/show_bug.cgi?id=118407

Patch by Gwang Yoon Hwang <ryumiel@company100.net> on 2013-07-05
Reviewed by Christophe Dumez.

* GNUmakefile.list.am:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152409 268f45cc-cd09-0410-ab3c-d52691b4dbfc
TestWebKitFaviconDatabase/clear-database is not testing things properly
https://bugs.webkit.org/show_bug.cgi?id=118404

Patch by Xabier Rodriguez Calvar <calvaris@igalia.com> on 2013-07-05
Reviewed by Carlos Garcia Campos.

* UIProcess/API/gtk/tests/TestWebKitFaviconDatabase.cpp:
(testClearDatabase): Check for an existing icon that can make the
test fail if clear database is not working.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@152410 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] fast/text/font-kerning.html fails
https://bugs.webkit.org/show_bug.cgi?id=76048

Patch by Denis Nomiyama <d.nomiyama@samsung.com> on 2013-07-05
Reviewed by Martin Robinson.

Added kerning to the list of features for hb_shade() according to FontDescription::kerning().
Removed font-kerning.html from gtk/TestExpectations, which was failing before this fix.

Source/WebCore:

* platform/graphics/harfbuzz/HarfBuzzFace.cpp:
(WebCore):
* platform/graphics/harfbuzz/HarfBuzzFace.h:
(HarfBuzzFace):
* platform/graphics/harfbuzz/HarfBuzzShaper.cpp:
(WebCore::HarfBuzzShaper::setFontFeatures):

LayoutTests:

* platform/gtk/TestExpectations:

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