Allow for toggling fullscreen on <video> elements
https://bugs.webkit.org/show_bug.cgi?id=117220

Patch by Ruth Fong <ruth_fong@apple.com> on 2013-06-12
Reviewed by Dean Jackson.

Source/WebCore:

This patch adds the ability for fullscreen
context menu item on <video> elements to switch between "Enter Fullscreen"
and "Exit Fullscreen" and behave appropriately.

No new tests. media/context-menu-action.html,
which has been disabled by bug 116651, is used to test context menus.

* English.lproj/Localizable.strings: Add "Exit Fullscreen" string.
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::toggleFullscreenState): Added to appropriately enter/exit fullscreen.
* html/HTMLMediaElement.h:
* page/ContextMenuController.cpp:
* platform/ContextMenuItem.h:
* platform/LocalizedStrings.cpp:
* platform/LocalizedStrings.h:
Updated to rename variables more appropriately to reflect the toggle-ability of video fullscreen.
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::mediaIsInFullscreen): Added to check if an element
was a media element in fullscreen.
(WebCore::HitTestResult::toggleMediaFullscreenState): Added to hook into
HTMLMediaElement::toggleFullscreenState.
* rendering/HitTestResult.h:

Source/WebKit2:

* Shared/API/c/WKContextMenuItemTypes.h:
* Shared/API/c/WKSharedAPICast.h:
Added variables to support the toggle-ability of the fullscreen
video context menu item.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151512 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shaders] Animations and transitions should use validated custom programs
https://bugs.webkit.org/show_bug.cgi?id=117550

Run filters used for animations and transitions through RenderLayer::computeFilterOperations
in order to validate custom filter operations.

Patch by Ralph Thomas <ralpht@gmail.com> on 2013-06-12
Reviewed by Alexandru Chiculita.

No new tests as no platform can run custom filters with accelerated animations yet.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::startTransition):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151513 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[BlackBerry] Use RefPtr for HTMLInputElement inside CredentialTransformData
https://bugs.webkit.org/show_bug.cgi?id=117553

Reviewed by Carlos Garcia Campos.

In CredentialTransformData we should use RefPtr for
m_userNameElement, m_passwordElement and m_oldPasswordElement
because otherwise the elements could go away when the form
elements get destroyed.

Also add *const* for the parameter of CredentialTransformData::findPasswordFormFields().

No functionalities changed no new tests.

* WebCoreSupport/CredentialTransformData.cpp:
(WebCore::CredentialTransformData::findPasswordFormFields):
(WebCore::CredentialTransformData::locateSpecificPasswords):
* WebCoreSupport/CredentialTransformData.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151514 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add new Web Inspector images for a blog post.

* blog-files/new-inspector/activity-viewer.png: Added.
* blog-files/new-inspector/codemirror.png: Added.
* blog-files/new-inspector/console.png: Added.
* blog-files/new-inspector/hero-labeled.png: Added.
* blog-files/new-inspector/hero.png: Added.
* blog-files/new-inspector/layer-borders.png: Added.
* blog-files/new-inspector/layers.png: Added.
* blog-files/new-inspector/navigation-bar.png: Added.
* blog-files/new-inspector/open-sign.png: Added.
* blog-files/new-inspector/reasons.png: Added.
* blog-files/new-inspector/save.png: Added.
* blog-files/new-inspector/source-map.png: Added.
* blog-files/new-inspector/styles.png: Added.
* blog-files/new-inspector/toolbar-context-menu.png: Added.
* blog-files/new-inspector/toolbar-docked.png: Added.
* blog-files/new-inspector/toolbar.png: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151515 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Support Title UI Element Accessibility Attribute
https://bugs.webkit.org/show_bug.cgi?id=117530

Reviewed by Anders Carlsson.

Source/WebCore: 

Fixes: accessibility/list-item-role.html
       accessibility/hidden-legend.html

* accessibility/win/AccessibilityObjectWrapperWin.cpp:
(WebCore::AccessibilityObjectWrapper::accessibilityAttributeValue): Extend to support access
for the Title UI Element object.
* accessibility/win/AccessibilityObjectWrapperWin.h: Revise interface to use Variant output,
which is more in keeping with the Mac's 'id' method signature.

Source/WebKit/win: 

* AccessibleBase.cpp:
(AccessibleBase::attributeValue): Extend to handle Title UI Element.
* AccessibleBase.h: Revise signature to use a variant argument.
* Interfaces/AccessibleComparable.idl:  Revise interface to use variant


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151516 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] rectangle and inset-rectangle do not properly handle rx and ry
https://bugs.webkit.org/show_bug.cgi?id=116745

Patch by Bem Jones-Bey <bjonesbe@adobe.com> on 2013-06-12
Reviewed by Dirk Schulze.

Source/WebCore:

If ry is not supplied, it now defaults to the rx value. Also, if rx
and ry are not supplied, they default to 0px. This also has the effect
that the computed style for any rectangle or inset-rectangle now
contains all six parameters.

If rx > width/2 then it is clamped to width/2, and if ry > height/2,
then it is clamped to height/2. This happens at layout time because
given mixed units and relative units, that is the only time this
determination can be made.

Tests: fast/exclusions/shape-inside/shape-inside-rounded-rectangle-large-radius.html
       fast/exclusions/shape-outside-floats/shape-outside-floats-rounded-rectangle-large-radius.html

* css/BasicShapeFunctions.cpp:
(WebCore::valueForBasicShape): Remove checks for undefined, since rx
    and ry cannot be undefined in BasicShapes anymore.
(WebCore::basicShapeForValue): If radii are undefined in CSS, set
    default values in the BasicShape, per the spec.
* rendering/ExclusionShape.cpp:
(WebCore::ensureRadiiDoNotOverlap): Utility method to ensure radii
    don't overlap.
(WebCore::ExclusionShape::createExclusionShape): Remove defaulting to
    zero, clamp radii per the spec.
* rendering/style/BasicShapes.cpp:
(WebCore::BasicShapeRectangle::path): Remove defaulting.
(WebCore::BasicShapeRectangle::blend): Ditto.
(WebCore::BasicShapeInsetRectangle::path): Ditto.
(WebCore::BasicShapeInsetRectangle::blend): Ditto.
* rendering/style/BasicShapes.h:
(WebCore::BasicShapeRectangle::BasicShapeRectangle): Remove defaulting
    to undefined for radii.
(WebCore::BasicShapeRectangle::setCornerRadiusX): Add assert to
    prevent undefined.
       (WebCore::BasicShapeRectangle::setCornerRadiusY): Add assert to
    prevent undefined.
(WebCore::BasicShapeInsetRectangle::BasicShapeInsetRectangle): Ditto.
(WebCore::BasicShapeInsetRectangle::setCornerRadiusX): Add assert to
    prevent undefined.
       (WebCore::BasicShapeInsetRectangle::setCornerRadiusY): Add assert to
    prevent undefined.

LayoutTests:

Update tests to check for the rx and ry conditions.

* fast/exclusions/parsing/parsing-shape-inside-expected.txt: New results.
* fast/exclusions/parsing/parsing-shape-outside-expected.txt: New results.
* fast/exclusions/parsing/script-tests/parsing-shape-inside.js: Update
    to reflect that the computed value now always has rx and ry.
* fast/exclusions/parsing/script-tests/parsing-shape-outside.js: Ditto.
* fast/exclusions/parsing/script-tests/parsing-test-utils.js: Ditto.
* fast/exclusions/resources/rounded-rectangle.js:
(genLeftRightRoundedRectFloatShapeOutsideRefTest): Factor out left and
    right into separate methods so that they can be used in tests that
    only have left floats or only right floats.
(genLeftRoundedRectFloatShapeOutsideRefTest): Ditto.
(genRightRoundedRectFloatShapeOutsideRefTest): Ditto.
* fast/exclusions/shape-inside/shape-inside-animation-expected.txt: New results.
* fast/exclusions/shape-inside/shape-inside-animation.html: Change to
    reflect new computed style value.
* fast/exclusions/shape-inside/shape-inside-rounded-rectangle-large-radius-expected.html: Added.
* fast/exclusions/shape-inside/shape-inside-rounded-rectangle-large-radius.html: Added.
* fast/exclusions/shape-outside-floats/shape-outside-floats-rounded-rectangle-large-radius-expected.html: Added.
* fast/exclusions/shape-outside-floats/shape-outside-floats-rounded-rectangle-large-radius.html: Added.
    Note that the expected test here uses shape-inside, because we
    really are just testing that the behavior is the same as a
    shape-inside with rx and ry set to 50%, and it turned out to be
    very hard to construct an expected result that didn't use
    shape-inside and wasn't off by a pixel.
* css3/masking/clip-path-animation.html: Update expected value.
* css3/masking/clip-path-animation-expected.txt: New results.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151517 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebCore: Whitespace between inlines with nowrap and a shrink-to-fit parent gets a line-break when it shouldn't
https://bugs.webkit.org/show_bug.cgi?id=117370

Reviewed by David Hyatt.

Test: fast/text/whitespace/inline-whitespace-wrapping-8.html

A no-wrap inline shouldn't include trailing space when deciding whether it fits on a line.
Likewise when we finish iterating through the objects on a line we should clear our linebreak
if the only thing that prevents us fitting on the line is our collapsed trailing whitespace.

Removing the trailing space from this measurement means we need to watch out for potential
breaks between no-wrap inlines, in particular if we leave a no-wrap inline ignoring spaces
and enter an autowrap inline then we need to mark the beginning of the autowrap inline
as a potential linebreak. The test fast/text/whitespace/inline-whitespace-wrapping-5.html
is an example of such a case.

* rendering/RenderBlockLineLayout.cpp:
(WebCore::LineWidth::LineWidth):
(WebCore::LineWidth::fitsOnLine):
(WebCore::LineWidth::fitsOnLineExcludingTrailingWhitespace):
(WebCore::LineWidth::fitsOnLineExcludingTrailingCollapsedWhitespace):
(WebCore::LineWidth::setTrailingWhitespaceWidth):
(WebCore::RenderBlock::LineBreaker::nextSegmentBreak):

LayoutTests: Whitespace between inlines with nowrap and a shrink-to-fit parent line-break incorrectly
https://bugs.webkit.org/show_bug.cgi?id=117370

Reviewed by David Hyatt.

* fast/text/whitespace/inline-whitespace-wrapping-8-expected.html: Added.
* fast/text/whitespace/inline-whitespace-wrapping-8.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151518 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Accessibility code assumes an area element's parent is a map element
https://bugs.webkit.org/show_bug.cgi?id=117496

Reviewed by Chris Fleizach.

Source/WebCore: 

We can't make such an assumption. Scripts can insert any element between area and map elements.

Merge https://chromium.googlesource.com/chromium/blink/+/b6f486284f08c52904701c93e1ec0b7d6e76af9f.

Test: accessibility/image-map-with-indirect-area-crash.html

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::accessibilityImageMapHitTest):

LayoutTests: 

Add a regression test from https://chromium.googlesource.com/chromium/blink/+/b6f486284f08c52904701c93e1ec0b7d6e76af9f.

* accessibility/image-map-with-indirect-area-crash-expected.txt: Added.
* accessibility/image-map-with-indirect-area-crash.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151519 268f45cc-cd09-0410-ab3c-d52691b4dbfc
"Open Video in New Window" doesn't make sense in fullscreen
https://bugs.webkit.org/show_bug.cgi?id=117556

Patch by Ruth Fong <ruth_fong@apple.com> on 2013-06-12
Reviewed by Beth Dakin.

Source/WebCore:

No new tests needed.

* WebCore.exp.in: Added WebKit2 hook for mediaIsInFullscreen() method.

Source/WebKit2:

Adds method mediaIsInFullscreen() that checks if a media element is in
fullscreen mode, which is needed to decide when to display the
"Open Video in New Window" context menu item.

* WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.cpp:
(WKBundleHitTestResultMediaIsInFullscreen): Added.
Hooks into new InjectedBundleHitTestResult::mediaIsInFullscreen() method.
* WebProcess/InjectedBundle/API/c/WKBundleHitTestResult.h:
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.cpp:
(WebKit::InjectedBundleHitTestResult::mediaIsInFullscreen): Added.
Checks if media element is in fullscreen.
* WebProcess/InjectedBundle/InjectedBundleHitTestResult.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove forgotten unused Tools/Script/make-gypi script
https://bugs.webkit.org/show_bug.cgi?id=117558

Reviewed by Ryosuke Niwa.

This script isn't used since the GYP removal from WebKit.

* Scripts/make-gypi: Removed.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151521 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] Move more build targets for source code that's free of layer violations into libPlatform
https://bugs.webkit.org/show_bug.cgi?id=115936

Reviewed by Martin Robinson.

Source/Platform: 

* GNUmakefile.am: Add additional Source/WebCore/platform subdirectories to the list of the directories
that are specific to the platform layer but still located in WebCore. Add Enchant and Freetype dependencies'
CFLAGS to the list of libPlatform CPPFLAGS. Add GStreamer dependency's CFLAGS to the list of libPlatformGtk
CPPFLAGS.

Source/WebCore: 

No new tests - no new functionality.

* GNUmakefile.list.am: Move more build targets under the platform_sources and platformgtk_sources listing.
These build targets represent source files that are already free of platform layer violations and are as such
ready to be pushed down from the WebCore layer into the Platform layer.

Source/WebKit2: 

* GNUmakefile.am: Add GStreamer dependency's CFLAGS to the list of libPlatformGtk2 CPPFLAGS.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove last bits of GYP from build-webkit and update-webkit scripts
https://bugs.webkit.org/show_bug.cgi?id=117557

Reviewed by Ryosuke Niwa.

* Scripts/build-webkit:
* Scripts/update-webkit:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151523 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[atk] Replace deprecated call to atk_document_get_locale() in DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=115647

Patch by Eduardo Lima Mitev <elima@igalia.com> on 2013-06-12
Reviewed by Martin Robinson.

Source/WebCore:

Override the get_object_locale() method of WebkitAccessibleWrapperAtk's internal
AtkObject, to include custom implementations for AtkDocument and AtkText objects,
taking the logic as-is from AtkDocument::get_document_locale() and DumpRenderTree's
AccessibilityUIElementAtk::language(), respectively.

Apart from improving encapsulation, this avoids calling deprecated get_document_locale()
method.

No new functionality, no new tests.

* accessibility/atk/WebKitAccessibleInterfaceDocument.cpp:
(webkitAccessibleDocumentInterfaceInit): Chains implementation of
AtkDocument::get_document_locale() to AtkObject::get_object_locale().
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetObjectLocale): Add implementation of locale resolution for
objects of type AtkDocument and AtkText.
(webkitAccessibleClassInit): Override AtkObject::get_object_locale() method.

Tools:

Locale resolution is moved to WebKitAccessibleWrapperAtk using
AtkObject::get_object_locale() API. Now, implementation of
AccessibilityUIElement::language() in both DumpRenderTree and WebKitTestRunner can
be leveraged to get_object_locale() of AtkObject.

Apart from improving encapsulation, this avoids calling deprecated get_document_locale()
method.

No new functionality, no new tests.

* DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
(AccessibilityUIElement::language): Leverage locale resolution to
AtkObject::get_object_locale().
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
(WTR::AccessibilityUIElement::language): Leverage locale resolution to
AtkObject::get_object_locale().

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151524 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix crashes due to failed ImageBuffer allocation
https://bugs.webkit.org/show_bug.cgi?id=117541

Reviewed by Andreas Kling.

From Blink r152268 by <pdr@chromium.org>

A crash can happen due to a failed ImageBuffer allocation in
SVGImage::drawPatternForContainer(). Added a check for that failed allocation.

* svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::drawPatternForContainer):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151525 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Mac] Change default Simplified Chinese serif font on 10.9
https://bugs.webkit.org/show_bug.cgi?id=117567

Reviewed by Alexey Proskuryakov.

Change default font on newer versions of OS X.

* page/mac/SettingsMac.mm:
(WebCore::Settings::initializeDefaultFontFamilies): Use 'Songti SC'
instead of 'STSong' on newer systems.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151526 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[GTK] Explicit include glib.h to avoid compilation errors if libsoup isn't used.
https://bugs.webkit.org/show_bug.cgi?id=117564

Reviewed by Martin Robinson.

* UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151527 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Mac] Change default Traditional Chinese serif font on 10.9
https://bugs.webkit.org/show_bug.cgi?id=117568

Reviewed by Alexey Proskuryakov.

Change default font on newer versions of OS X.

* page/mac/SettingsMac.mm:
(WebCore::Settings::initializeDefaultFontFamilies): Use 'Songti TC'
on 10.9 and above.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151528 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Implement Accessibility2 APIs in Windows.
https://bugs.webkit.org/show_bug.cgi?id=117561

Reviewed by Anders Carlsson.

Source/WebKit: 

* WebKit.vcxproj/Interfaces/Interfaces.vcxproj: Add new IAccessible2 IDL files.
* WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters: Ditto.
* WebKit.vcxproj/Interfaces/InterfacesCommon.props: Reference new Accessible2 folder.
* WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj: Build IAccessible2 symbols.
* WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters: Ditto.

Source/WebKit/win: 

* AccessibleBase.cpp: Add stubs for IAccessible2 interface, replace attributeValue
method with get_attribute from IAccessible2 API.
* AccessibleBase.h: Ditto.
* AccessibleDocument.cpp: Revise signatures for IAccessible2.
* AccessibleDocument.h: Ditto.
* AccessibleImage.cpp: Revise signatures for IAccessible2.
* AccessibleImage.h: Ditto.
* Interfaces/Accessible2: Added.
* Interfaces/Accessible2/Accessible2.idl: Added.
* Interfaces/Accessible2/Accessible2_2.idl: Added.
* Interfaces/Accessible2/AccessibleApplication.idl: Added.
* Interfaces/Accessible2/AccessibleRelation.idl: Added.
* Interfaces/Accessible2/AccessibleStates.idl: Added.
* Interfaces/Accessible2/IA2CommonTypes.idl: Added.
* Interfaces/AccessibleComparable.idl:
* Interfaces/WebKit.idl: Reference IAccessible2 types.
* WebFrame.cpp: 
(WebFrame::accessible): Pass window handle to IAccessible types.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151529 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove the notion of inactive plug-ins
https://bugs.webkit.org/show_bug.cgi?id=117570
<rdar://problem/13484213>

Reviewed by Tim Horton.

Source/WebCore:

Remove RenderEmbeddedObject::PluginInactive and the replacement text.

* English.lproj/Localizable.strings:
* platform/LocalizedStrings.cpp:
* platform/LocalizedStrings.h:
* rendering/RenderEmbeddedObject.cpp:
(WebCore::unavailablePluginReplacementText):
* rendering/RenderEmbeddedObject.h:

Source/WebKit/mac:

Remove code that deals with inactive plug-ins.

* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::shouldUnavailablePluginMessageBeButton):
(WebChromeClient::unavailablePluginButtonClicked):
* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::createPlugin):

Source/WebKit2:

Remove code that deals with inactive plug-ins. We still keep around the kWKPluginLoadPolicyInactive API enum for now.

* Shared/Plugins/PluginModuleInfo.h:
* UIProcess/API/C/WKAPICast.h:
(WebKit::toWKPluginLoadPolicy):
(WebKit::toPluginModuleLoadPolicy):
* UIProcess/Plugins/PluginInfoStore.cpp:
* UIProcess/Plugins/PluginInfoStore.h:
* UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
(WebKit::PluginInfoStore::shouldUsePlugin):
(WebKit::PluginInfoStore::defaultLoadPolicyForPlugin):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
(WebKit::WebPageProxy::unavailablePluginButtonClicked):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::shouldUnavailablePluginMessageBeButton):
(WebKit::WebChromeClient::unavailablePluginButtonClicked):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::createPlugin):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@151530 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Activate supported C++11 Features for VS2010
https://bugs.webkit.org/show_bug.cgi?id=117569

Reviewed by Anders Carlsson.

* wtf/Compiler.h: Turn on rvalue references and static_assert
when compiling with VS2010 (or newer)


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