Source/WebKit2: [EFL][GTK][WK2] Remove unnecessary reinterpret_casts when setting API clients
https://bugs.webkit.org/show_bug.cgi?id=125231

Patch by Nick Diego Yamane <nick.yamane@openbossa.org> on 2013-12-04
Reviewed by Anders Carlsson.

After r159988, WKClients have to be instantiated with a specific
version of that client and its Base field has to used when setting it.
Eg:

    WKFullScreenClientV0 wkClient = {
        {
            0, // version
            this, // clientInfo
        },
            willEnterFullScreen,
            willExitFullScreen
    };
    WKViewSetFullScreenClientGtk(this, &wkClient.base);

So we don't need the reinterpret_casts introduced in r160075.

* UIProcess/API/gtk/WebKitFullscreenClient.cpp:
(attachFullScreenClientToView): reinterpret_cast<WKFooClientBase*>(&client) -> &client.base
* UIProcess/API/gtk/WebKitRequestManagerClient.cpp:
(attachRequestManagerClientToContext): Ditto.
* UIProcess/API/gtk/WebKitTextChecker.cpp:
(WebKitTextChecker::WebKitTextChecker): Ditto.
* UIProcess/API/gtk/WebKitWebInspector.cpp:
(webkitWebInspectorCreate): Ditto.
* UIProcess/efl/BatteryProvider.cpp:
(BatteryProvider::BatteryProvider): Ditto.
* UIProcess/efl/NetworkInfoProvider.cpp:
(NetworkInfoProvider::NetworkInfoProvider): Ditto.
* UIProcess/efl/PageUIClientEfl.cpp:
(WebKit::PageUIClientEfl::PageUIClientEfl): Ditto.
* UIProcess/efl/RequestManagerClientEfl.cpp:
(WebKit::RequestManagerClientEfl::RequestManagerClientEfl): Ditto.
* UIProcess/efl/TextCheckerClientEfl.cpp:
(TextCheckerClientEfl::TextCheckerClientEfl): Ditto.
* UIProcess/efl/VibrationClientEfl.cpp:
(VibrationClientEfl::VibrationClientEfl): Ditto.
* UIProcess/efl/ViewClientEfl.cpp:
(WebKit::ViewClientEfl::ViewClientEfl): Ditto.

Tools: [EFL][WK2] Buildfix after r160104
https://bugs.webkit.org/show_bug.cgi?id=125231

Patch by Nick Diego Yamane <nick.yamane@openbossa.org> on 2013-12-04
Reviewed by Anders Carlsson.

* TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive.cpp:
(TestWebKitAPI::TEST): reinterpret_cast<WKFooClientBase*>(&client) -> &client.base
* TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp:
(TestWebKitAPI::setViewClient): Ditto.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160128 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a loading property to WKBrowsingContextController
https://bugs.webkit.org/show_bug.cgi?id=125256

Reviewed by Dan Bernstein.

Source/WebKit2:

* UIProcess/API/Cocoa/WKBrowsingContextController.h:
Add loading property.

* UIProcess/API/Cocoa/WKBrowsingContextConteroller.mm:
Implement willChangeIsLoading and didChangeIsLoading and call the relevant KVO methods.

(-[WKBrowsingContextController isLoading]):
Call through to the PageLoadState.

* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::reset):
Use setState.

(WebKit::PageLoadState::isLoading):
Call isLoadingState.

(WebKit::PageLoadState::didStartProvisionalLoad):
Use setState.

(WebKit::PageLoadState::didFailProvisionalLoad):
Use setState.

(WebKit::PageLoadState::didCommitLoad):
Use setState.

(WebKit::PageLoadState::didFinishLoad):
Use setState.

(WebKit::PageLoadState::didFailLoad):
Use setState.

(WebKit::PageLoadState::isLoadingState):
Helper function for determining whether a state is a loading state or not.

(WebKit::PageLoadState::setState):
If setting the state will cause "isLoading" to change, call out to the observers.

* UIProcess/PageLoadState.h:

Tools:

Bind the progress indicator visibility to the "loading" property.

* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController dealloc]):
(-[WK2BrowserWindowController awakeFromNib]):
(-[WK2BrowserWindowController didStartProgress]):
(-[WK2BrowserWindowController didFinishProgress]):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160129 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] Support inset for shape-outside
<https://webkit.org/b/125112>

Reviewed by David Hyatt.

Source/WebCore:

This patch adds inset support for shape-outside. Parsing has previously landed in r159968.
Specification: http://dev.w3.org/csswg/css-shapes/#supported-basic-shapes

Tests: fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-bottom-left.html
       fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-bottom-right.html
       fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-top-left.html
       fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-top-right.html
       fast/shapes/shape-outside-floats/shape-outside-floats-inset.html

* platform/LengthSize.h:
(WebCore::LengthSize::floatSize): Add conversion to FloatSize.
* rendering/shapes/Shape.cpp:
(WebCore::Shape::createShape): Handle inset case.

LayoutTests:

* fast/shapes/resources/rounded-rectangle.js: Add support to generate partially rounded rectangles.
(scanConvertRoundedRectangleOutside):
(genLeftRoundedRectFloatShapeOutsideRefTest):
(genRightRoundedRectFloatShapeOutsideRefTest):
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-bottom-left-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-bottom-left.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-bottom-right-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-bottom-right.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-top-left-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-top-left.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-top-right-expected.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-top-right.html: Added.
* fast/shapes/shape-outside-floats/shape-outside-floats-inset.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160130 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS] Enable Objective-C ARC when building JSC tools for iOS simulator
https://bugs.webkit.org/show_bug.cgi?id=125170

Reviewed by Geoffrey Garen.

* API/tests/testapi.mm:
* Configurations/ToolExecutable.xcconfig:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160131 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: edited color should serialize back to original format when possible
https://bugs.webkit.org/show_bug.cgi?id=125244

Reviewed by Joseph Pecoraro.

Profoundly reworked WebInspector.Color to be more efficient and more flexible when
serializing the color to the various supported formats.

* UserInterface/CSSStyleDeclarationTextEditor.js:
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):
Use new WebInspector.Color.fromString() factory and check for a null return value
rather than an exception to identify invalid color tokens.

* UserInterface/Color.js:
(WebInspector.Color):
Rewrote WebInspector.Color such that it would have, at all times, a canonical
representation in terms of either RGBA or HSLA depending on the format used to
create the color. The new constructor parameters lets the user pass a format
and the RGBA or HSLA components, allowing to bypass the string-only creation
system which was sub-optimal for the new color picker. Additionally, the toString()
method now can provide the most accurate serialization of the color based on the
provided format with a fallback mechanism to RGB/RGBA in cases where the desired
format would incur a loss of fidelity. Finally, simplified the API to only feature
essential features.

(WebInspector.Color.fromString):
New factory method used to create a color from a string.

* UserInterface/ColorPicker.js:
(WebInspector.ColorPicker.prototype.set color):
Keep track of the original color format so that we can use it as the preferred format
when serializing the updated color in _updateColor().

(WebInspector.ColorPicker.prototype._updateColor):
Use the original color format as the prefered formation for color serialization. Also,
use the new WebInspector.Color constructor in lieu of the removed .fromRGBA factory.

(WebInspector.ColorPicker.prototype._updateSliders):
Use the new WebInspector.Color constructor in lieu of the removed .fromRGBA factory.

* UserInterface/ColorWheel.js:
(WebInspector.ColorWheel.prototype._colorAtPointWithBrightness):
Use the new WebInspector.Color constructor in lieu of the removed .fromRGB factory.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160132 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Refactor static getter function prototype to include thisValue in addition to the base object
https://bugs.webkit.org/show_bug.cgi?id=124461

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Add thisValue parameter to static getter prototype, and switch
from JSValue to EncodedJSValue for parameters and return value.

Currently none of the static getters use the thisValue, but
separating out the refactoring will prevent future changes
from getting lost in the noise of refactoring.  This means
that this patch does not result in any change in behaviour.

* API/JSCallbackObject.h:
* API/JSCallbackObjectFunctions.h:
(JSC::::asCallbackObject):
(JSC::::staticFunctionGetter):
(JSC::::callbackGetter):
* jit/JITOperations.cpp:
* runtime/JSActivation.cpp:
(JSC::JSActivation::argumentsGetter):
* runtime/JSActivation.h:
* runtime/JSFunction.cpp:
(JSC::JSFunction::argumentsGetter):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::lengthGetter):
(JSC::JSFunction::nameGetter):
* runtime/JSFunction.h:
* runtime/JSObject.h:
(JSC::PropertySlot::getValue):
* runtime/NumberConstructor.cpp:
(JSC::numberConstructorNaNValue):
(JSC::numberConstructorNegInfinity):
(JSC::numberConstructorPosInfinity):
(JSC::numberConstructorMaxValue):
(JSC::numberConstructorMinValue):
* runtime/PropertySlot.h:
* runtime/RegExpConstructor.cpp:
(JSC::asRegExpConstructor):
(JSC::regExpConstructorDollar1):
(JSC::regExpConstructorDollar2):
(JSC::regExpConstructorDollar3):
(JSC::regExpConstructorDollar4):
(JSC::regExpConstructorDollar5):
(JSC::regExpConstructorDollar6):
(JSC::regExpConstructorDollar7):
(JSC::regExpConstructorDollar8):
(JSC::regExpConstructorDollar9):
(JSC::regExpConstructorInput):
(JSC::regExpConstructorMultiline):
(JSC::regExpConstructorLastMatch):
(JSC::regExpConstructorLastParen):
(JSC::regExpConstructorLeftContext):
(JSC::regExpConstructorRightContext):
* runtime/RegExpObject.cpp:
(JSC::asRegExpObject):
(JSC::regExpObjectGlobal):
(JSC::regExpObjectIgnoreCase):
(JSC::regExpObjectMultiline):
(JSC::regExpObjectSource):

Source/WebCore:

Change bindings codegen to produce static getter functions
with the correct types.  Also update the many custom implementations
to the new type.

No change in behaviour.

* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::cssPropertyGetterPixelOrPosPrefixCallback):
(WebCore::cssPropertyGetterCallback):
* bindings/js/JSDOMBinding.cpp:
(WebCore::objectToStringFunctionGetter):
* bindings/js/JSDOMBinding.h:
* bindings/js/JSDOMMimeTypeArrayCustom.cpp:
(WebCore::JSDOMMimeTypeArray::nameGetter):
* bindings/js/JSDOMPluginArrayCustom.cpp:
(WebCore::JSDOMPluginArray::nameGetter):
* bindings/js/JSDOMPluginCustom.cpp:
(WebCore::JSDOMPlugin::nameGetter):
* bindings/js/JSDOMStringMapCustom.cpp:
(WebCore::JSDOMStringMap::nameGetter):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::nonCachingStaticFunctionGetter):
(WebCore::childFrameGetter):
(WebCore::indexGetter):
(WebCore::namedItemGetter):
* bindings/js/JSHTMLAllCollectionCustom.cpp:
(WebCore::JSHTMLAllCollection::nameGetter):
* bindings/js/JSHTMLCollectionCustom.cpp:
(WebCore::JSHTMLCollection::nameGetter):
* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::nameGetter):
* bindings/js/JSHTMLFormControlsCollectionCustom.cpp:
(WebCore::JSHTMLFormControlsCollection::nameGetter):
* bindings/js/JSHTMLFormElementCustom.cpp:
(WebCore::JSHTMLFormElement::nameGetter):
* bindings/js/JSHTMLFrameSetElementCustom.cpp:
(WebCore::JSHTMLFrameSetElement::nameGetter):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::nonCachingStaticBackFunctionGetter):
(WebCore::nonCachingStaticForwardFunctionGetter):
(WebCore::nonCachingStaticGoFunctionGetter):
* bindings/js/JSJavaScriptCallFrameCustom.cpp:
(WebCore::JSJavaScriptCallFrame::scopeType):
* bindings/js/JSLocationCustom.cpp:
(WebCore::nonCachingStaticReplaceFunctionGetter):
(WebCore::nonCachingStaticReloadFunctionGetter):
(WebCore::nonCachingStaticAssignFunctionGetter):
* bindings/js/JSNamedNodeMapCustom.cpp:
(WebCore::JSNamedNodeMap::nameGetter):
* bindings/js/JSNodeListCustom.cpp:
(WebCore::JSNodeList::nameGetter):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginElementPropertyGetter):
* bindings/js/JSPluginElementFunctions.h:
* bindings/js/JSRTCStatsResponseCustom.cpp:
(WebCore::JSRTCStatsResponse::nameGetter):
* bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::nameGetter):
* bindings/js/JSStyleSheetListCustom.cpp:
(WebCore::JSStyleSheetList::nameGetter):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateImplementation):
(GenerateParametersCheck):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::lengthGetter):
(JSC::RuntimeArray::indexGetter):
* bridge/runtime_array.h:
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::lengthGetter):
* bridge/runtime_method.h:
* bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::fallbackObjectGetter):
(JSC::Bindings::RuntimeObject::fieldGetter):
(JSC::Bindings::RuntimeObject::methodGetter):
* bridge/runtime_object.h:

Source/WebKit2:

Update the WK2 JSC usage to the new static getter API

* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
(WebKit::callMethod):
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::callNPJSObject):
(WebKit::constructWithConstructor):
(WebKit::JSNPObject::propertyGetter):
(WebKit::JSNPObject::methodGetter):
* WebProcess/Plugins/Netscape/JSNPObject.h:
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
(WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
(WebKit::NPRuntimeObjectMap::finalize):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::frameForContext):
(WebKit::WebFrame::counterValue):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160133 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: "data detectors" menu on hover for actionable tokens
https://bugs.webkit.org/show_bug.cgi?id=124363

Reviewed by Timothy Hatcher.

Add a new WebInspector.HoverMenu class to display an overlay menu that is presented
with respect to a target frame that it draws itself around adding a customizable
action button to its right. The menu uses fade animations as it's presented and
dismissed and a single delegation method is fired when the button is pressed. Finally,
just like a popover, it automatically dismisses itself upon scrolling anywhere
outside of its bounds.

* UserInterface/HoverMenu.css: Added.
* UserInterface/HoverMenu.js: Added.
(WebInspector.HoverMenu):
(WebInspector.HoverMenu.prototype.get element):
(WebInspector.HoverMenu.prototype.dismiss):
(WebInspector.HoverMenu.prototype.handleEvent):
(WebInspector.HoverMenu.prototype._handleClickEvent):
* UserInterface/Images/HoverMenuButton.png: Added.
* UserInterface/Images/HoverMenuButton@2x.png: Added.
* UserInterface/Main.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160134 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Move TrailingObjects class into its own h/cpp
https://bugs.webkit.org/show_bug.cgi?id=124956

Reviewed by David Hyatt.

Since I moved space-ignoring inline functions into MidpointState in r160074,
I can nicely separate TrailingObjects class from BreakingContextInlineHeader.h.
This change improves the readability, and it's part of the RenderBlockLineLayout
refactoring campaign, which is tracked under bug #121261.

No new tests, no behavior change.

* CMakeLists.txt:
* GNUmakefile.list.am:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.xcodeproj/project.pbxproj:
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.h:
* rendering/line/BreakingContextInlineHeaders.h:
* rendering/line/TrailingObjects.cpp: Added.
(WebCore::TrailingObjects::updateMidpointsForTrailingBoxes):
* rendering/line/TrailingObjects.h: Added.
(WebCore::TrailingObjects::TrailingObjects):
(WebCore::TrailingObjects::setTrailingWhitespace):
(WebCore::TrailingObjects::clear):
(WebCore::TrailingObjects::appendBoxIfNeeded):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160135 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WK2] Including SecItemShim.h should be guarded by ENABLE(SEC_ITEM_SHIM)
https://bugs.webkit.org/show_bug.cgi?id=125255

Patch by Nick Diego Yamane <nick.yamane@openbossa.org> on 2013-12-04
Reviewed by Anders Carlsson.

* UIProcess/WebProcessProxy.cpp:
* WebProcess/WebProcess.cpp:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160136 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make the estimatedProgress property observable using KVO
https://bugs.webkit.org/show_bug.cgi?id=125259

Reviewed by Dan Bernstein.

Source/WebKit2:

* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::PageLoadState):
(WebKit::PageLoadState::reset):
(WebKit::PageLoadState::activeURL):
(WebKit::PageLoadState::estimatedProgress):
(WebKit::PageLoadState::setPendingAPIRequestURL):
(WebKit::PageLoadState::clearPendingAPIRequestURL):
(WebKit::PageLoadState::didStartProgress):
(WebKit::PageLoadState::didChangeProgress):
(WebKit::PageLoadState::didFinishProgress):
* UIProcess/PageLoadState.h:
Move m_estimatedProgress to the page load state and call the observers when it changes.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::estimatedProgress):
(WebKit::WebPageProxy::didStartProgress):
(WebKit::WebPageProxy::didChangeProgress):
(WebKit::WebPageProxy::didFinishProgress):
(WebKit::WebPageProxy::resetState):
Call through to m_pageLoadState.

* UIProcess/WebPageProxy.h:

Tools:

Bind the progress indicator value to the "estimatedProgress" property.

* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController dealloc]):
(-[WK2BrowserWindowController awakeFromNib]):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160137 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Move pseudo element construction out from Element
https://bugs.webkit.org/show_bug.cgi?id=125257

Reviewed by Anders Carlsson.

This is logically part of the style resolve/render tree construction. This will make future
refactoring easier.

* dom/Element.cpp:
* dom/Element.h:
* style/StyleResolveTree.cpp:
(WebCore::Style::beforeOrAfterPseudoElement):
(WebCore::Style::setBeforeOrAfterPseudoElement):
(WebCore::Style::clearBeforeOrAfterPseudoElement):
(WebCore::Style::needsPseudeElement):
(WebCore::Style::attachBeforeOrAfterPseudoElementIfNeeded):
(WebCore::Style::attachRenderTree):
(WebCore::Style::updateBeforeOrAfterPseudoElement):
(WebCore::Style::resolveTree):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160138 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed, rolling out r160116.
http://trac.webkit.org/changeset/160116
https://bugs.webkit.org/show_bug.cgi?id=125264

Change doesn't work as intended. See bug comments for details.
(Requested by bfulgham on #webkit).

* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):

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

* CMakeLists.txt: Added rendering/line to include lists.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160141 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: use only two decimals for opacity in rgba/hsla colors
https://bugs.webkit.org/show_bug.cgi?id=125261

Reviewed by Joseph Pecoraro.

* UserInterface/ColorPicker.js:
(WebInspector.ColorPicker.prototype._updateColor):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@160142 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: color picker doesn't work with "blue"
https://bugs.webkit.org/show_bug.cgi?id=125262

Reviewed by Joseph Pecoraro.

Under certain circumstances rounding issues would have us compare
two equal numbers that differ by 0.00000001 and sometime trip this
if statement and yield a null color. We now add a little fudge to
the test and also return a clear color rather than null to match what
we do in the getters for "tintedColor" and "rawColor".

* UserInterface/ColorWheel.js:
(WebInspector.ColorWheel.prototype._colorAtPointWithBrightness):


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