Add an API::PageGroupHandle object
https://bugs.webkit.org/show_bug.cgi?id=139881

Reviewed by Sam Weinig.

API::PageGroupHandle won't be exposed to any API, it will only be used to facilitate passing page groups
between the UI and web process inside UserData objects.

* Shared/API/APIObject.h:
* Shared/API/APIPageGroupHandle.cpp: Added.
(API::PageGroupHandle::create):
(API::PageGroupHandle::~PageGroupHandle):
(API::PageGroupHandle::PageGroupHandle):
* Shared/API/APIPageGroupHandle.h: Added.
(API::PageGroupHandle::webPageGroupData):
* Shared/UserData.cpp:
(WebKit::UserData::UserData):
(WebKit::UserData::encode):
(WebKit::UserData::decode):
* Shared/UserData.h:
* UIProcess/WebPageGroup.h:
(WebKit::WebPageGroup::data):
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::apiObjectByConvertingToHandles):
* WebKit2.xcodeproj/project.pbxproj:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177662 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Try to fix the Windows build.

* dom/DOMAllInOne.cpp:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177663 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Form elements should match :valid and :invalid based on their associated elements
https://bugs.webkit.org/show_bug.cgi?id=139850

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-12-22
Reviewed by Darin Adler.

Source/WebCore:

In the latest HTML spec, form elements can match :valid or :invalid based
on their associated element.

The tricky part is that object lifetime is a mess. When elements are associated
with forms by the parser, the form is set by the constructor of HTMLFormControlElement.
At that point, the real object has not been initialized yet which
makes it impossible to find its validity.

To work around the lifetime problem, the code of HTMLFormControlElement::didChangeForm()
uses m_willValidateInitialized and m_willValidate direclty instead
of invoking willValidate(). That way we don't try to validate an incomplete object.

When the object really validates, HTMLFormControlElement::setNeedsWillValidateCheck()
takes care of updating the form.

Tests: fast/css/pseudo-invalid-form-and-fieldset-basics.html
       fast/css/pseudo-invalid-form-basics.html
       fast/css/pseudo-invalid-form-dynamically-created-basics.html
       fast/css/pseudo-invalid-form-invalidation-optimization.html
       fast/css/pseudo-valid-form-and-fieldset-basics.html
       fast/css/pseudo-valid-form-basics.html
       fast/css/pseudo-valid-form-dynamically-created-basics.html
       fast/css/pseudo-valid-form-invalidation-optimization.html
       fast/selectors/invalid-form-style-update-1.html
       fast/selectors/invalid-form-style-update-2.html
       fast/selectors/invalid-form-style-update-3.html
       fast/selectors/valid-form-style-update-1.html
       fast/selectors/valid-form-style-update-2.html
       fast/selectors/valid-form-style-update-3.html

* css/StyleResolver.cpp:
(WebCore::StyleResolver::canShareStyleWithControl):
(WebCore::StyleResolver::canShareStyleWithElement):
HTMLFormElement is not a FormControl, we have to generalize the test
for :valid/:invalid with style sharing.

* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::~HTMLFormControlElement):
Since we now have willChangeForm(), didChangeForm(), we have to null
the form ourself, as documented by FormAssociatedElement.

(WebCore::HTMLFormControlElement::setNeedsWillValidateCheck):
(WebCore::HTMLFormControlElement::willChangeForm):
(WebCore::HTMLFormControlElement::didChangeForm):
(WebCore::HTMLFormControlElement::updateValidity):
Update the owner form when any of the associated form element changes
to invalid.

* html/HTMLFormControlElement.h:
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::registerInvalidAssociatedFormControl):
(WebCore::HTMLFormElement::removeInvalidAssociatedFormControlIfNeeded):
(WebCore::HTMLFormElement::matchesValidPseudoClass):
(WebCore::HTMLFormElement::matchesInvalidPseudoClass):
This is very similar to the code of fieldset, but we have much weaker
invariants due to the insane way FormAssociatedElement initializes.

* html/HTMLFormElement.h:
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::initializeInputType):
For completeness, we should always validate when changing the type.
The code was only doing that when the element was inserted into the tree,
that was too fragile.

LayoutTests:

The style update tests are largely based on the fieldset test suite.
The other tests are for various aspects of the patch.

* fast/css/pseudo-invalid-form-and-fieldset-basics-expected.html: Added.
* fast/css/pseudo-invalid-form-and-fieldset-basics.html: Added.
* fast/css/pseudo-invalid-form-basics-expected.html: Added.
* fast/css/pseudo-invalid-form-basics.html: Added.
* fast/css/pseudo-invalid-form-dynamically-created-basics-expected.html: Added.
* fast/css/pseudo-invalid-form-dynamically-created-basics.html: Added.
* fast/css/pseudo-invalid-form-invalidation-optimization-expected.txt: Added.
* fast/css/pseudo-invalid-form-invalidation-optimization.html: Added.
* fast/css/pseudo-valid-form-and-fieldset-basics-expected.html: Added.
* fast/css/pseudo-valid-form-and-fieldset-basics.html: Added.
* fast/css/pseudo-valid-form-basics-expected.html: Added.
* fast/css/pseudo-valid-form-basics.html: Added.
* fast/css/pseudo-valid-form-dynamically-created-basics-expected.html: Added.
* fast/css/pseudo-valid-form-dynamically-created-basics.html: Added.
* fast/css/pseudo-valid-form-invalidation-optimization-expected.txt: Added.
* fast/css/pseudo-valid-form-invalidation-optimization.html: Added.
* fast/selectors/invalid-form-style-update-1-expected.txt: Added.
* fast/selectors/invalid-form-style-update-1.html: Added.
* fast/selectors/invalid-form-style-update-2-expected.txt: Added.
* fast/selectors/invalid-form-style-update-2.html: Added.
* fast/selectors/invalid-form-style-update-3-expected.txt: Added.
* fast/selectors/invalid-form-style-update-3.html: Added.
* fast/selectors/valid-form-style-update-1-expected.txt: Added.
* fast/selectors/valid-form-style-update-1.html: Added.
* fast/selectors/valid-form-style-update-2-expected.txt: Added.
* fast/selectors/valid-form-style-update-2.html: Added.
* fast/selectors/valid-form-style-update-3-expected.txt: Added.
* fast/selectors/valid-form-style-update-3.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177664 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS] Log using FeatureCounter user-triggered zooming
https://bugs.webkit.org/show_bug.cgi?id=139879
<rdar://problem/19329130>

Reviewed by Benjamin Poulain.

Log using FeatureCounter user-triggered zooming on iOS.

Source/WebCore:

* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:
* platform/FeatureCounter.h:
* platform/FeatureCounterKeys.h:

Source/WebKit2:

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::willStartUserTriggeredZooming):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177666 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix some typos in a comment.
<https://webkit.org/b/139882>

Reviewed by Michael Saboff.

* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_by_val):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177667 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove two functions from SecurityOrigin
https://bugs.webkit.org/show_bug.cgi?id=139885

Reviewed by Andreas Kling.

* page/SecurityOrigin.h:
(WebCore::SecurityOrigin::canAccessPasswordManager): Deleted.
(WebCore::SecurityOrigin::canAccessFileSystem): Deleted.

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

* WebCore.exp.in: Move SQLiteDatabaseTracker::setClient export out of PLATFORM(IOS) section.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@177670 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a bunch of missing header includes in preparation for making toImpl require the complete type
https://bugs.webkit.org/show_bug.cgi?id=139887

Reviewed by Andreas Kling.

* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
* WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
* WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageContextMenuClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageFormClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp:
* WebProcess/InjectedBundle/InjectedBundlePageUIClient.cpp:

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