<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[164760] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/164760">164760</a></dd>
<dt>Author</dt> <dd>enrica@apple.com</dd>
<dt>Date</dt> <dd>2014-02-26 17:06:37 -0800 (Wed, 26 Feb 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS WebKit2] Form controls handling: implement date and time controls.
https://bugs.webkit.org/show_bug.cgi?id=129344

Reviewed by Simon Fraser and Joseph Pecoraro.

../WebCore: 

Adding one localizable string.

* English.lproj/Localizable.strings:

../WebKit2: 

This is another step in the implementation of form controls on iOS
for WebKit2. This adds support for date and time input elements supporting
the different look and feel for iPhone and iPad.
WKDateTimePicker implements iPhone UI and
WKDateTimePopover implements iPad UI.
WKFormRotatingAccessoryPopover and WKRotatingPopover are
classes that implement the popover object handling the rotation
and they will be used as base class for the select controls as well.

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView inputView]):
(-[WKContentView _startAssistingNode:]):
(-[WKContentView _stopAssistingNode]):
* UIProcess/ios/WKFormInputControl.h: Added.
* UIProcess/ios/WKFormInputControl.mm: Added.
(-[WKDateTimePicker datePicker]):
(-[WKDateTimePicker initWithView:datePickerMode:]):
(-[WKDateTimePicker dealloc]):
(-[WKDateTimePicker controlView]):
(-[WKDateTimePicker _timeZoneOffsetFromGMT:]):
(-[WKDateTimePicker _sanitizeInputValueForFormatter:]):
(-[WKDateTimePicker _dateChangedSetAsNumber]):
(-[WKDateTimePicker _dateChangedSetAsString]):
(-[WKDateTimePicker _dateChanged]):
(-[WKDateTimePicker _dateChangeHandler:]):
(-[WKDateTimePicker controlBeginEditing]):
(-[WKDateTimePicker controlEndEditing]):
(-[WKFormInputControl initWithView:]):
(+[WKFormInputControl createPeripheralWithView:]):
(-[WKFormInputControl beginEditing]):
(-[WKFormInputControl endEditing]):
(-[WKFormInputControl assistantView]):
(-[WKDateTimePopoverViewController initWithView:datePickerMode:]):
(-[WKDateTimePopoverViewController innerControl]):
(-[WKDateTimePopoverViewController loadView]):
(-[WKDateTimePopover clear:]):
(-[WKDateTimePopover initWithView:datePickerMode:]):
(-[WKDateTimePopover viewController]):
(-[WKDateTimePopover controlBeginEditing]):
(-[WKDateTimePopover controlEndEditing]):
(-[WKDateTimePopover controlView]):
* UIProcess/ios/WKFormPeripheral.h: Added.
* UIProcess/ios/WKFormPopover.h: Added.
* UIProcess/ios/WKFormPopover.mm: Added.
(-[WKFormRotatingAccessoryPopover initWithView:]):
(-[WKFormRotatingAccessoryPopover accessoryDone]):
(-[WKFormRotatingAccessoryPopover popoverArrowDirections]):
(-[WKFormRotatingAccessoryPopover popoverWasDismissed:]):
(-[WKRotatingPopover initWithView:]):
(-[WKRotatingPopover dealloc]):
(-[WKRotatingPopover popoverController]):
(-[WKRotatingPopover setPopoverController:]):
(-[WKRotatingPopover popoverArrowDirections]):
(-[WKRotatingPopover presentPopoverAnimated:]):
(-[WKRotatingPopover dismissPopoverAnimated:]):
(-[WKRotatingPopover willRotate:]):
(-[WKRotatingPopover didRotate:]):
(-[WKRotatingPopover popoverControllerDidDismissPopover:]):
* UIProcess/ios/WKFormSelectControl.h: Added.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::setAssistedNodeValue):
(WebKit::WebPageProxy::setAssistedNodeValueAsNumber):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::setAssistedNodeValue):
(WebKit::WebPage::setAssistedNodeValueAsNumber):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreEnglishlprojLocalizablestrings">trunk/Source/WebCore/English.lproj/Localizable.strings</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewInteractionh">trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewInteractionmm">trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWebPageProxyIOSmm">trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagemessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/Source/WebKit2/UIProcess/ios/forms/</li>
<li><a href="#trunkSourceWebKit2UIProcessiosformsWKFormInputControlh">trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosformsWKFormInputControlmm">trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosformsWKFormPeripheralh">trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPeripheral.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosformsWKFormPopoverh">trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosformsWKFormPopovermm">trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosformsWKFormSelectControlh">trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebCore/ChangeLog        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2014-02-26  Enrica Casucci  &lt;enrica@apple.com&gt;
+
+        [iOS WebKit2] Form controls handling: implement date and time controls.
+        https://bugs.webkit.org/show_bug.cgi?id=129344
+
+        Reviewed by Simon Fraser and Joseph Pecoraro.
+
+        Adding one localizable string.
+
+        * English.lproj/Localizable.strings:
+
</ins><span class="cx"> 2014-02-26  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Prepare for overflow scrolling nodes in the scrolling tree
</span></span></pre></div>
<a id="trunkSourceWebCoreEnglishlprojLocalizablestrings"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/English.lproj/Localizable.strings (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/English.lproj/Localizable.strings        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebCore/English.lproj/Localizable.strings        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -127,6 +127,9 @@
</span><span class="cx"> /* Title for file button used in HTML forms for media files */
</span><span class="cx"> &quot;Choose Media (Single)&quot; = &quot;Choose Media (Single)&quot;;
</span><span class="cx"> 
</span><ins>+/* Clear button in date input popover */
+&quot;Clear Button Date Popover&quot; = &quot;Clear&quot;;
+
</ins><span class="cx"> /* menu item in Recent Searches menu that empties menu's contents */
</span><span class="cx"> &quot;Clear Recent Searches&quot; = &quot;Clear Recent Searches&quot;;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/ChangeLog        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -1,3 +1,82 @@
</span><ins>+2014-02-26  Enrica Casucci  &lt;enrica@apple.com&gt;
+
+        [iOS WebKit2] Form controls handling: implement date and time controls.
+        https://bugs.webkit.org/show_bug.cgi?id=129344
+
+        Reviewed by Simon Fraser and Joseph Pecoraro.
+
+        This is another step in the implementation of form controls on iOS
+        for WebKit2. This adds support for date and time input elements supporting
+        the different look and feel for iPhone and iPad.
+        WKDateTimePicker implements iPhone UI and
+        WKDateTimePopover implements iPad UI.
+        WKFormRotatingAccessoryPopover and WKRotatingPopover are
+        classes that implement the popover object handling the rotation
+        and they will be used as base class for the select controls as well.
+
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/ios/WKContentViewInteraction.h:
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView _displayFormNodeInputView]):
+        (-[WKContentView inputView]):
+        (-[WKContentView _startAssistingNode:]):
+        (-[WKContentView _stopAssistingNode]):
+        * UIProcess/ios/WKFormInputControl.h: Added.
+        * UIProcess/ios/WKFormInputControl.mm: Added.
+        (-[WKDateTimePicker datePicker]):
+        (-[WKDateTimePicker initWithView:datePickerMode:]):
+        (-[WKDateTimePicker dealloc]):
+        (-[WKDateTimePicker controlView]):
+        (-[WKDateTimePicker _timeZoneOffsetFromGMT:]):
+        (-[WKDateTimePicker _sanitizeInputValueForFormatter:]):
+        (-[WKDateTimePicker _dateChangedSetAsNumber]):
+        (-[WKDateTimePicker _dateChangedSetAsString]):
+        (-[WKDateTimePicker _dateChanged]):
+        (-[WKDateTimePicker _dateChangeHandler:]):
+        (-[WKDateTimePicker controlBeginEditing]):
+        (-[WKDateTimePicker controlEndEditing]):
+        (-[WKFormInputControl initWithView:]):
+        (+[WKFormInputControl createPeripheralWithView:]):
+        (-[WKFormInputControl beginEditing]):
+        (-[WKFormInputControl endEditing]):
+        (-[WKFormInputControl assistantView]):
+        (-[WKDateTimePopoverViewController initWithView:datePickerMode:]):
+        (-[WKDateTimePopoverViewController innerControl]):
+        (-[WKDateTimePopoverViewController loadView]):
+        (-[WKDateTimePopover clear:]):
+        (-[WKDateTimePopover initWithView:datePickerMode:]):
+        (-[WKDateTimePopover viewController]):
+        (-[WKDateTimePopover controlBeginEditing]):
+        (-[WKDateTimePopover controlEndEditing]):
+        (-[WKDateTimePopover controlView]):
+        * UIProcess/ios/WKFormPeripheral.h: Added.
+        * UIProcess/ios/WKFormPopover.h: Added.
+        * UIProcess/ios/WKFormPopover.mm: Added.
+        (-[WKFormRotatingAccessoryPopover initWithView:]):
+        (-[WKFormRotatingAccessoryPopover accessoryDone]):
+        (-[WKFormRotatingAccessoryPopover popoverArrowDirections]):
+        (-[WKFormRotatingAccessoryPopover popoverWasDismissed:]):
+        (-[WKRotatingPopover initWithView:]):
+        (-[WKRotatingPopover dealloc]):
+        (-[WKRotatingPopover popoverController]):
+        (-[WKRotatingPopover setPopoverController:]):
+        (-[WKRotatingPopover popoverArrowDirections]):
+        (-[WKRotatingPopover presentPopoverAnimated:]):
+        (-[WKRotatingPopover dismissPopoverAnimated:]):
+        (-[WKRotatingPopover willRotate:]):
+        (-[WKRotatingPopover didRotate:]):
+        (-[WKRotatingPopover popoverControllerDidDismissPopover:]):
+        * UIProcess/ios/WKFormSelectControl.h: Added.
+        * UIProcess/ios/WebPageProxyIOS.mm:
+        (WebKit::WebPageProxy::setAssistedNodeValue):
+        (WebKit::WebPageProxy::setAssistedNodeValueAsNumber):
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::setAssistedNodeValue):
+        (WebKit::WebPage::setAssistedNodeValueAsNumber):
+
</ins><span class="cx"> 2014-02-26  Pratik Solanki  &lt;psolanki@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS][Webkit2] Enable codesigning entitlement for web process
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -479,6 +479,8 @@
</span><span class="cx">     void performActionOnElement(uint32_t action);
</span><span class="cx">     void saveImageToLibrary(const SharedMemory::Handle&amp; imageHandle, uint64_t imageSize);
</span><span class="cx">     void didUpdateBlockSelectionWithTouch(uint32_t touch, uint32_t flags, float growThreshold, float shrinkThreshold);
</span><ins>+    void setAssistedNodeValue(const String&amp;);
+    void setAssistedNodeValueAsNumber(double);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     const EditorState&amp; editorState() const { return m_editorState; }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewInteractionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> 
</span><span class="cx"> #import &quot;AssistedNodeInformation.h&quot;
</span><span class="cx"> #import &quot;InteractionInformationAtPosition.h&quot;
</span><ins>+#import &quot;WKFormPeripheral.h&quot;
</ins><span class="cx"> #import &quot;WKGestureTypes.h&quot;
</span><span class="cx"> #import &lt;UIKit/UITextInput_Private.h&gt;
</span><span class="cx"> #import &lt;UIKit/UIView.h&gt;
</span><span class="lines">@@ -100,6 +101,7 @@
</span><span class="cx">     WebKit::WKAutoCorrectionData _autocorrectionData;
</span><span class="cx">     WebKit::InteractionInformationAtPosition _positionInformation;
</span><span class="cx">     WebKit::AssistedNodeInformation _assistedNodeInformation;
</span><ins>+    RetainPtr&lt;NSObject&lt;WKFormPeripheral&gt;&gt; _inputPeripheral;
</ins><span class="cx"> 
</span><span class="cx">     BOOL _isEditable;
</span><span class="cx">     BOOL _showingTextStyleOptions;
</span><span class="lines">@@ -134,5 +136,5 @@
</span><span class="cx"> - (void)_willStartUserTriggeredScrollingOrZooming;
</span><span class="cx"> - (void)_didEndScrollingOrZooming;
</span><span class="cx"> - (void)_didUpdateBlockSelectionWithTouch:(WebKit::WKSelectionTouch)touch withFlags:(WebKit::WKSelectionFlags)flags growThreshold:(CGFloat)growThreshold shrinkThreshold:(CGFloat)shrinkThreshold;
</span><del>-
</del><ins>+- (void)accessoryDone;
</ins><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewInteractionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #import &quot;WebPageMessages.h&quot;
</span><span class="cx"> #import &quot;WebProcessProxy.h&quot;
</span><span class="cx"> #import &quot;WKActionSheetAssistant.h&quot;
</span><ins>+#import &quot;WKFormInputControl.h&quot;
</ins><span class="cx"> #import &lt;DataDetectorsUI/DDDetectionController.h&gt;
</span><span class="cx"> #import &lt;UIKit/_UIHighlightView.h&gt;
</span><span class="cx"> #import &lt;UIKit/_UIWebHighlightLongPressGestureRecognizer.h&gt;
</span><span class="lines">@@ -381,6 +382,22 @@
</span><span class="cx">     return YES;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)_displayFormNodeInputView
+{
+    // FIXME: This is the place where we should zoom to node
+    [self _updateAccessory];
+}
+
+- (UIView *)inputView
+{
+    if (!_inputPeripheral)
+        _inputPeripheral = adoptNS([WKFormInputControl createPeripheralWithView:self]);
+    else
+        [self _displayFormNodeInputView];
+
+    return [_inputPeripheral assistantView];
+}
+
</ins><span class="cx"> - (BOOL)gestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer canPreventGestureRecognizer:(UIGestureRecognizer *)preventedGestureRecognizer
</span><span class="cx"> {
</span><span class="cx">     // A long-press gesture can not be recognized while panning, but a pan can be recognized
</span><span class="lines">@@ -1779,6 +1796,7 @@
</span><span class="cx"> {
</span><span class="cx">     _isEditable = YES;
</span><span class="cx">     _assistedNodeInformation = information;
</span><ins>+    _inputPeripheral = nil;
</ins><span class="cx">     _traits = nil;
</span><span class="cx">     if (![self isFirstResponder])
</span><span class="cx">         [self becomeFirstResponder];
</span><span class="lines">@@ -1786,12 +1804,16 @@
</span><span class="cx">     [self _startAssistingKeyboard];
</span><span class="cx">     [self reloadInputViews];
</span><span class="cx">     [self _updateAccessory];
</span><ins>+    // _inputPeripheral has been initialized in inputView called by reloadInputViews.
+    [_inputPeripheral beginEditing];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)_stopAssistingNode
</span><span class="cx"> {
</span><span class="cx">     _isEditable = NO;
</span><ins>+    [_inputPeripheral endEditing];
</ins><span class="cx">     _assistedNodeInformation.elementType = WKTypeNone;
</span><ins>+    _inputPeripheral = nil;
</ins><span class="cx"> 
</span><span class="cx">     [self _stopAssistingKeyboard];
</span><span class="cx">     [self reloadInputViews];
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWebPageProxyIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -482,6 +482,16 @@
</span><span class="cx">     m_pageClient.stopAssistingNode();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPageProxy::setAssistedNodeValue(const String&amp; value)
+{
+    process().send(Messages::WebPage::SetAssistedNodeValue(value), m_pageID);
+}
+
+void WebPageProxy::setAssistedNodeValueAsNumber(double value)
+{
+    process().send(Messages::WebPage::SetAssistedNodeValueAsNumber(value), m_pageID);
+}
+
</ins><span class="cx"> void WebPageProxy::didPerformDictionaryLookup(const AttributedString&amp;, const DictionaryPopupInfo&amp;)
</span><span class="cx"> {
</span><span class="cx">     notImplemented();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosformsWKFormInputControlh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.h (0 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.h        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKFormPeripheral.h&quot;
+
+@class WKContentView;
+
+@interface WKFormInputControl : NSObject&lt;WKFormPeripheral&gt;
++ (WKFormInputControl *)createPeripheralWithView:(WKContentView *)view;
+@end
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosformsWKFormInputControlmm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.mm (0 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFormInputControl.mm        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -0,0 +1,371 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKFormInputControl.h&quot;
+
+#import &quot;WKContentView.h&quot;
+#import &quot;WKContentViewInteraction.h&quot;
+#import &quot;WKFormPopover.h&quot;
+#import &quot;WebPageProxy.h&quot;
+#import &lt;UIKit/UIBarButtonItem.h&gt;
+#import &lt;UIKit/UIBarButtonItem_Private.h&gt;
+#import &lt;UIKit/UIDatePicker.h&gt;
+#import &lt;UIKit/UIDatePicker_Private.h&gt;
+#import &lt;UIKit/UIDevice_Private.h&gt;
+#import &lt;UIKit/UIKeyboard_Private.h&gt;
+#import &lt;WebCore/LocalizedStrings.h&gt;
+#import &lt;wtf/RetainPtr.h&gt;
+
+using namespace WebKit;
+
+@interface WKDateTimePopoverViewController : UIViewController {
+    RetainPtr&lt;NSObject&lt;WKFormControl&gt;&gt; _innerControl;
+}
+- (id)initWithView:(WKContentView *)view datePickerMode:(UIDatePickerMode)datePickerMode;
+- (NSObject&lt;WKFormControl&gt; *)innerControl;
+@end
+
+@interface WKDateTimePicker : NSObject&lt;WKFormControl&gt; {
+    RetainPtr&lt;UIDatePicker&gt; _datePicker;
+    NSString *_formatString;
+    BOOL _shouldRemoveTimeZoneInformation;
+    BOOL _isTimeInput;
+    WKContentView* _view;
+}
+- (id)initWithView:(WKContentView *)view datePickerMode:(UIDatePickerMode)mode;
+- (UIDatePicker *)datePicker;
+@end
+
+@interface WKDateTimePopover : WKFormRotatingAccessoryPopover&lt;WKFormControl&gt; {
+    RetainPtr&lt;WKDateTimePopoverViewController&gt; _viewController;
+    WKContentView* _view;
+}
+- (id)initWithView:(WKContentView *)view datePickerMode:(UIDatePickerMode)mode;
+- (WKDateTimePopoverViewController *) viewController;
+@end
+
+@implementation WKDateTimePicker
+
+static NSString * const kDateFormatString = @&quot;yyyy-MM-dd&quot;; // &quot;2011-01-27&quot;.
+static NSString * const kMonthFormatString = @&quot;yyyy-MM&quot;; // &quot;2011-01&quot;.
+static NSString * const kTimeFormatString = @&quot;HH:mm&quot;; // &quot;13:45&quot;.
+static const NSTimeInterval kMillisecondsPerSecond = 1000;
+
+- (UIDatePicker *)datePicker
+{
+    return _datePicker.get();
+}
+
+- (id)initWithView:(WKContentView *)view datePickerMode:(UIDatePickerMode)mode
+{
+    if (!(self = [super init]))
+        return nil;
+
+    _view = view;
+    _shouldRemoveTimeZoneInformation = NO;
+    _isTimeInput = NO;
+    switch (view.assistedNodeInformation.elementType) {
+    case WebKit::WKTypeDate:
+        _formatString = kDateFormatString;
+        break;
+    case WebKit::WKTypeMonth:
+        _formatString = kMonthFormatString;
+        break;
+    case WebKit::WKTypeTime:
+        _formatString = kTimeFormatString;
+        _isTimeInput = YES;
+        break;
+    case WebKit::WKTypeDateTimeLocal:
+        _shouldRemoveTimeZoneInformation = YES;
+        break;
+    default:
+        break;
+   }
+
+    CGSize size = UICurrentUserInterfaceIdiomIsPad() ? [UIPickerView defaultSizeForCurrentOrientation] : [UIKeyboard defaultSizeForInterfaceOrientation:[UIApp interfaceOrientation]];
+
+    _datePicker = adoptNS([[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]);
+    _datePicker.get().datePickerMode = mode;
+    _datePicker.get().hidden = NO;
+    [_datePicker addTarget:self action:@selector(_dateChangeHandler:) forControlEvents:UIControlEventValueChanged];
+
+    return self;
+}
+
+- (void)dealloc
+{
+    [_datePicker removeTarget:self action:NULL forControlEvents:UIControlEventValueChanged];
+    [super dealloc];
+}
+
+- (UIView *)controlView
+{
+    return _datePicker.get();
+}
+
+- (NSInteger)_timeZoneOffsetFromGMT:(NSDate *)date
+{
+    if (!_shouldRemoveTimeZoneInformation)
+        return 0;
+
+    return [_datePicker.get().timeZone secondsFromGMTForDate:date];
+}
+
+- (NSString *)_sanitizeInputValueForFormatter:(NSString *)value
+{
+    // The &quot;time&quot; input type may have seconds and milliseconds information which we
+    // just ignore. For example: &quot;01:56:20.391&quot; is shortened to just &quot;01:56&quot;.
+    if (_isTimeInput)
+        return [value substringToIndex:[kTimeFormatString length]];
+
+    return value;
+}
+
+- (void)_dateChangedSetAsNumber
+{
+    NSDate *date = [_datePicker date];
+    [_view page]-&gt;setAssistedNodeValueAsNumber(([date timeIntervalSince1970] + [self _timeZoneOffsetFromGMT:date]) * kMillisecondsPerSecond);
+}
+
+- (RetainPtr&lt;NSDateFormatter&gt;)dateFormatterForPicker
+{
+    RetainPtr&lt;NSLocale&gt; englishLocale = adoptNS([[NSLocale alloc] initWithLocaleIdentifier:@&quot;en_US_POSIX&quot;]);
+    RetainPtr&lt;NSDateFormatter&gt; dateFormatter = adoptNS([[NSDateFormatter alloc] init]);
+    [dateFormatter setTimeZone:_datePicker.get().timeZone];
+    [dateFormatter setDateFormat:_formatString];
+    [dateFormatter setLocale:englishLocale.get()];
+    return dateFormatter;
+}
+
+- (void)_dateChangedSetAsString
+{
+    // Force English locale because that is what HTML5 value parsing expects.
+    RetainPtr&lt;NSDateFormatter&gt; dateFormatter = [self dateFormatterForPicker];
+
+    [_view page]-&gt;setAssistedNodeValue([dateFormatter stringFromDate:[_datePicker date]]);
+}
+
+- (void)_dateChanged
+{
+    // Internally, DOMHTMLInputElement setValueAs* each take different values for
+    // different date types. It is sometimes easier to set the date in different ways:
+    //   - use setValueAsString for &quot;date&quot;, &quot;month&quot;, and &quot;time&quot;.
+    //   - use setValueAsNumber for &quot;datetime-local&quot;.
+    if (_formatString)
+        [self _dateChangedSetAsString];
+    else
+        [self _dateChangedSetAsNumber];
+}
+
+- (void)_dateChangeHandler:(id)sender
+{
+    [self _dateChanged];
+}
+
+- (void)controlBeginEditing
+{
+    // Set the time zone in case it changed.
+    _datePicker.get().timeZone = [NSTimeZone localTimeZone];
+
+    // Currently no value for the &lt;input&gt;. Start the picker with the current time.
+    // Also, update the actual &lt;input&gt; value.
+    NSString *value = _view.assistedNodeInformation.value;
+    if (_view.assistedNodeInformation.value.isEmpty()) {
+        [_datePicker setDate:[NSDate date]];
+        [self _dateChanged];
+        return;
+    }
+
+    // Convert the string value to a date object for the fields where we have a format string.
+    if (_formatString) {
+        value = [self _sanitizeInputValueForFormatter:value];
+        RetainPtr&lt;NSDateFormatter&gt; dateFormatter = [self dateFormatterForPicker];
+        NSDate *parsedDate = [dateFormatter dateFromString:value];
+        [_datePicker setDate:parsedDate ? parsedDate : [NSDate date]];
+        return;
+    }
+
+    // Convert the number value to a date object for the fields affected by timezones.
+    NSTimeInterval secondsSince1970 = _view.assistedNodeInformation.valueAsNumber / kMillisecondsPerSecond;
+    NSInteger timeZoneOffset = [self _timeZoneOffsetFromGMT:[NSDate dateWithTimeIntervalSince1970:secondsSince1970]];
+    NSTimeInterval adjustedSecondsSince1970 = secondsSince1970 - timeZoneOffset;
+    [_datePicker setDate:[NSDate dateWithTimeIntervalSince1970:adjustedSecondsSince1970]];
+}
+
+- (void)controlEndEditing
+{
+}
+
+@end
+
+// WKFormInputControl
+@implementation WKFormInputControl {
+    RetainPtr&lt;id&lt;WKFormControl&gt;&gt; _control;
+}
+
+- (id)initWithView:(WKContentView *)view
+{
+    if (!(self = [super init]))
+        return nil;
+
+    UIDatePickerMode mode;
+
+    switch (view.assistedNodeInformation.elementType) {
+        case WebKit::WKTypeDate:
+            mode = UIDatePickerModeDate;
+            break;
+
+        case WebKit::WKTypeDateTimeLocal:
+            mode = UIDatePickerModeDateAndTime;
+            break;
+
+        case WebKit::WKTypeTime:
+            mode = UIDatePickerModeTime;
+            break;
+
+        case WebKit::WKTypeMonth:
+            mode = (UIDatePickerMode)UIDatePickerModeYearAndMonth;
+            break;
+
+        default:
+            [self release];
+            return nil;
+    }
+
+    if (UICurrentUserInterfaceIdiomIsPad())
+        _control = adoptNS([[WKDateTimePopover alloc] initWithView:view datePickerMode:mode]);
+    else
+        _control = adoptNS([[WKDateTimePicker alloc] initWithView:view datePickerMode:mode]);
+
+    return self;
+
+}
+
++ (WKFormInputControl *)createPeripheralWithView:(WKContentView *)view
+{
+    return [[WKFormInputControl alloc] initWithView:view];
+}
+
+- (void)beginEditing
+{
+    [_control controlBeginEditing];
+}
+
+- (void)endEditing
+{
+    [_control controlEndEditing];
+}
+
+- (UIView *)assistantView
+{
+    return [_control controlView];
+}
+
+@end
+
+
+@implementation WKDateTimePopoverViewController
+
+- (id)initWithView:(WKContentView *)view datePickerMode:(UIDatePickerMode)datePickerMode
+{
+    if (!(self = [super init]))
+        return nil;
+
+    _innerControl = adoptNS([[WKDateTimePicker alloc] initWithView:view datePickerMode:datePickerMode]);
+
+    return self;
+}
+
+- (NSObject&lt;WKFormControl&gt; *)innerControl
+{
+    return _innerControl.get();
+}
+
+- (void)loadView
+{
+    self.view = [_innerControl controlView];
+}
+
+@end
+
+@implementation WKDateTimePopover
+
+- (void)clear:(id)sender
+{
+    [_view page]-&gt;setAssistedNodeValue(String());
+}
+
+- (id)initWithView:(WKContentView *)view datePickerMode:(UIDatePickerMode)mode
+{
+    if (!(self = [super initWithView:view]))
+        return nil;
+
+    _view = view;
+    _viewController = adoptNS([[WKDateTimePopoverViewController alloc] initWithView:view datePickerMode:mode]);
+    UIDatePicker *datePicker = [(WKDateTimePicker *)_viewController.get().innerControl datePicker];
+    CGFloat popoverWidth = [datePicker _contentWidth];
+    CGFloat popoverHeight = _viewController.get().view.frame.size.height;
+    [_viewController setPreferredContentSize:CGSizeMake(popoverWidth, popoverHeight)];
+    [_viewController setEdgesForExtendedLayout:UIRectEdgeNone];
+    [_viewController setTitle:_view.assistedNodeInformation.title];
+
+    // Always have a navigation controller with a clear button, and a title if the input element has a title.
+    RetainPtr&lt;UINavigationController&gt; navigationController = adoptNS([[UINavigationController alloc] initWithRootViewController:_viewController.get()]);
+    UINavigationItem *navigationItem = navigationController.get().navigationBar.topItem;
+    NSString *clearString = WEB_UI_STRING_KEY(&quot;Clear&quot;, &quot;Clear Button Date Popover&quot;, &quot;Clear button in date input popover&quot;);
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored &quot;-Wdeprecated-declarations&quot;
+    UIBarButtonItem *clearButton = [[[UIBarButtonItem alloc] initWithTitle:clearString style:UIBarButtonItemStyleBordered target:self action:@selector(clear:)] autorelease];
+#pragma clang diagnostic pop
+    [navigationItem setRightBarButtonItem:clearButton];
+
+    RetainPtr&lt;UIPopoverController&gt; controller = adoptNS([[UIPopoverController alloc] initWithContentViewController:navigationController.get()]);
+    [self setPopoverController:controller.get()];
+
+    return self;
+}
+
+- (WKDateTimePopoverViewController *)viewController
+{
+    return _viewController.get();
+}
+
+- (void)controlBeginEditing
+{
+    [self presentPopoverAnimated:NO];
+    [_viewController.get().innerControl controlBeginEditing];
+}
+
+- (void)controlEndEditing
+{
+}
+
+- (UIView *)controlView
+{
+    return nil;
+}
+
+@end
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosformsWKFormPeripheralh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPeripheral.h (0 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPeripheral.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPeripheral.h        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+@class UIView;
+
+@protocol WKFormPeripheral
+- (void)beginEditing;
+- (void)endEditing;
+- (UIView *)assistantView;
+@end
+
+@protocol WKFormControl
+- (UIView *)controlView;
+- (void)controlBeginEditing;
+- (void)controlEndEditing;
+@end
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosformsWKFormPopoverh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.h (0 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.h        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &lt;UIKit/UIPopoverController.h&gt;
+
+@class WKContentView;
+@protocol WKRotatingPopoverDelegate;
+
+@interface WKRotatingPopover : NSObject &lt;UIPopoverControllerDelegate&gt; {
+    BOOL _isRotating;
+    CGPoint _presentationPoint;
+    RetainPtr&lt;UIPopoverController&gt; _popoverController;
+    id &lt;WKRotatingPopoverDelegate&gt; _dismissionDelegate;
+}
+
+- (id)initWithView:(WKContentView *)view;
+- (void)presentPopoverAnimated:(BOOL)animated;
+- (void)dismissPopoverAnimated:(BOOL)animated;
+- (UIPopoverArrowDirection)popoverArrowDirections;
+
+@property(nonatomic, assign) CGPoint presentationPoint;
+@property(nonatomic, retain) UIPopoverController *popoverController;
+@property(nonatomic, assign) id &lt;WKRotatingPopoverDelegate&gt; dismissionDelegate;
+@end
+
+
+@protocol WKRotatingPopoverDelegate
+- (void)popoverWasDismissed:(WKRotatingPopover *)popover;
+@end
+
+@interface WKFormRotatingAccessoryPopover : WKRotatingPopover &lt;WKRotatingPopoverDelegate&gt;
+- (void)accessoryDone;
+@end
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosformsWKFormPopovermm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.mm (0 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFormPopover.mm        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -0,0 +1,169 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKContentView.h&quot;
+#import &quot;WKContentViewInteraction.h&quot;
+#import &quot;WKFormPopover.h&quot;
+#import &quot;WebPageProxy.h&quot;
+#import &lt;UIKit/UIPeripheralHost.h&gt;
+#import &lt;UIKit/UIWindow_Private.h&gt;
+#import &lt;wtf/RetainPtr.h&gt;
+
+using namespace WebKit;
+
+@implementation WKFormRotatingAccessoryPopover {
+    WKContentView *_view;
+}
+
+- (id)initWithView:(WKContentView *)view
+{
+    if (!(self = [super initWithView:view]))
+        return nil;
+    _view = view;
+    self.dismissionDelegate = self;
+    return self;
+}
+
+- (void)accessoryDone
+{
+    [_view accessoryDone];
+}
+
+- (UIPopoverArrowDirection)popoverArrowDirections
+{
+    UIPopoverArrowDirection directions = UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown;
+    if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) &amp;&amp; [[UIPeripheralHost sharedInstance] isOnScreen])
+        directions = UIPopoverArrowDirectionLeft | UIPopoverArrowDirectionRight;
+    return directions;
+}
+
+- (void)popoverWasDismissed:(WKRotatingPopover *)popover
+{
+    [self accessoryDone];
+}
+@end
+
+@implementation WKRotatingPopover {
+    WKContentView *_view;
+}
+
+- (id)initWithView:(WKContentView *)view
+{
+    if (!(self = [super init]))
+        return nil;
+
+    _view = view;
+    self.presentationPoint = CGPointZero;
+
+    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
+    [center addObserver:self selector:@selector(willRotate:) name:UIWindowWillRotateNotification object:nil];
+    [center addObserver:self selector:@selector(didRotate:) name:UIWindowDidRotateNotification object:nil];
+
+    return self;
+}
+
+- (void)dealloc
+{
+    _view = nil;
+
+    [_popoverController dismissPopoverAnimated:YES];
+    [_popoverController setDelegate:nil];
+    self.popoverController = nil;
+
+    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
+    [center removeObserver:self name:UIWindowWillRotateNotification object:nil];
+    [center removeObserver:self name:UIWindowDidRotateNotification object:nil];
+
+    [super dealloc];
+}
+
+- (UIPopoverController *)popoverController
+{
+    return _popoverController.get();
+}
+
+- (void)setPopoverController:(UIPopoverController *)popoverController
+{
+    if (_popoverController == popoverController)
+        return;
+
+    [_popoverController setDelegate:nil];
+    _popoverController = popoverController;
+    [_popoverController setDelegate:self];
+}
+
+- (UIPopoverArrowDirection)popoverArrowDirections
+{
+    return UIPopoverArrowDirectionAny;
+}
+
+- (void)presentPopoverAnimated:(BOOL)animated
+{
+    UIPopoverArrowDirection directions = [self popoverArrowDirections];
+
+    BOOL presentWithPoint = !CGPointEqualToPoint(self.presentationPoint, CGPointZero);
+    if (presentWithPoint) {
+        CGFloat scale = [_view page]-&gt;pageScaleFactor();
+        [_popoverController presentPopoverFromRect:CGRectIntegral(CGRectMake(self.presentationPoint.x * scale, self.presentationPoint.y * scale, 1, 1))
+                                            inView:_view
+                          permittedArrowDirections:directions
+                                          animated:animated];
+    } else {
+        CGRect boundingBoxOfDOMNode = _view.assistedNodeInformation.elementRect;
+        [_popoverController presentPopoverFromRect:CGRectIntegral(boundingBoxOfDOMNode)
+                                            inView:_view
+                          permittedArrowDirections:directions
+                                          animated:animated];
+    }
+}
+
+- (void)dismissPopoverAnimated:(BOOL)animated
+{
+    [_popoverController dismissPopoverAnimated:animated];
+}
+
+- (void)willRotate:(NSNotification *)notification
+{
+    _isRotating = YES;
+    [_popoverController dismissPopoverAnimated:NO];
+}
+
+- (void)didRotate:(NSNotification *)notification
+{
+    _isRotating = NO;
+    [self presentPopoverAnimated:NO];
+}
+
+- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
+{
+    if (_isRotating)
+        return;
+
+    [_dismissionDelegate popoverWasDismissed:self];
+}
+
+@end
+
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosformsWKFormSelectControlh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h (0 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;WKFormPeripheral.h&quot;
+
+@class WKContentView;
+
+@interface WKFormSelectControl : NSObject&lt;WKFormPeripheral&gt;
++ (WKFormSelectControl *)createPeripheralWithView:(WKContentView *)view;
+@end
</ins></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -1392,6 +1392,12 @@
</span><span class="cx">                 C0E3AA7C1209E83C00A49D01 /* Module.h in Headers */ = {isa = PBXBuildFile; fileRef = C0E3AA441209E2BA00A49D01 /* Module.h */; };
</span><span class="cx">                 C517388112DF8F4F00EE3F47 /* DragControllerAction.h in Headers */ = {isa = PBXBuildFile; fileRef = C517388012DF8F4F00EE3F47 /* DragControllerAction.h */; };
</span><span class="cx">                 C5237F6012441CA300780472 /* WebEditorClientMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C5237F5F12441CA300780472 /* WebEditorClientMac.mm */; };
</span><ins>+                C54256B518BEC18C00DE4179 /* WKFormInputControl.h in Headers */ = {isa = PBXBuildFile; fileRef = C54256AF18BEC18B00DE4179 /* WKFormInputControl.h */; };
+                C54256B618BEC18C00DE4179 /* WKFormInputControl.mm in Sources */ = {isa = PBXBuildFile; fileRef = C54256B018BEC18B00DE4179 /* WKFormInputControl.mm */; };
+                C54256B718BEC18C00DE4179 /* WKFormPeripheral.h in Headers */ = {isa = PBXBuildFile; fileRef = C54256B118BEC18B00DE4179 /* WKFormPeripheral.h */; };
+                C54256B818BEC18C00DE4179 /* WKFormPopover.h in Headers */ = {isa = PBXBuildFile; fileRef = C54256B218BEC18B00DE4179 /* WKFormPopover.h */; };
+                C54256B918BEC18C00DE4179 /* WKFormPopover.mm in Sources */ = {isa = PBXBuildFile; fileRef = C54256B318BEC18B00DE4179 /* WKFormPopover.mm */; };
+                C54256BA18BEC18C00DE4179 /* WKFormSelectControl.h in Headers */ = {isa = PBXBuildFile; fileRef = C54256B418BEC18C00DE4179 /* WKFormSelectControl.h */; };
</ins><span class="cx">                 C574A37712E6099D002DFE98 /* WebDragClientMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C554FFA212E4E8EA002F22C0 /* WebDragClientMac.mm */; };
</span><span class="cx">                 C574A58112E66681002DFE98 /* PasteboardTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C574A57F12E66681002DFE98 /* PasteboardTypes.h */; };
</span><span class="cx">                 C574A58212E66681002DFE98 /* PasteboardTypes.mm in Sources */ = {isa = PBXBuildFile; fileRef = C574A58012E66681002DFE98 /* PasteboardTypes.mm */; };
</span><span class="lines">@@ -3216,6 +3222,12 @@
</span><span class="cx">                 C0E3AA481209E45000A49D01 /* ModuleCF.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModuleCF.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C517388012DF8F4F00EE3F47 /* DragControllerAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DragControllerAction.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C5237F5F12441CA300780472 /* WebEditorClientMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebEditorClientMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                C54256AF18BEC18B00DE4179 /* WKFormInputControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFormInputControl.h; path = ios/forms/WKFormInputControl.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                C54256B018BEC18B00DE4179 /* WKFormInputControl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFormInputControl.mm; path = ios/forms/WKFormInputControl.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                C54256B118BEC18B00DE4179 /* WKFormPeripheral.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFormPeripheral.h; path = ios/forms/WKFormPeripheral.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                C54256B218BEC18B00DE4179 /* WKFormPopover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFormPopover.h; path = ios/forms/WKFormPopover.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                C54256B318BEC18B00DE4179 /* WKFormPopover.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFormPopover.mm; path = ios/forms/WKFormPopover.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
+                C54256B418BEC18C00DE4179 /* WKFormSelectControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFormSelectControl.h; path = ios/forms/WKFormSelectControl.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 C554FFA212E4E8EA002F22C0 /* WebDragClientMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebDragClientMac.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C574A57F12E66681002DFE98 /* PasteboardTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasteboardTypes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C574A58012E66681002DFE98 /* PasteboardTypes.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PasteboardTypes.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4296,6 +4308,7 @@
</span><span class="cx">                 2DA944A81884E9AB00ED86DB /* ios */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                C54256AE18BEC16100DE4179 /* forms */,
</ins><span class="cx">                                 0FCB4E3618BBE044000FCFC9 /* PageClientImplIOS.h */,
</span><span class="cx">                                 0FCB4E3718BBE044000FCFC9 /* PageClientImplIOS.mm */,
</span><span class="cx">                                 2DA944A91884E9BA00ED86DB /* TextCheckerIOS.mm */,
</span><span class="lines">@@ -6243,6 +6256,19 @@
</span><span class="cx">                         tabWidth = 8;
</span><span class="cx">                         usesTabs = 0;
</span><span class="cx">                 };
</span><ins>+                C54256AE18BEC16100DE4179 /* forms */ = {
+                        isa = PBXGroup;
+                        children = (
+                                C54256AF18BEC18B00DE4179 /* WKFormInputControl.h */,
+                                C54256B018BEC18B00DE4179 /* WKFormInputControl.mm */,
+                                C54256B118BEC18B00DE4179 /* WKFormPeripheral.h */,
+                                C54256B218BEC18B00DE4179 /* WKFormPopover.h */,
+                                C54256B318BEC18B00DE4179 /* WKFormPopover.mm */,
+                                C54256B418BEC18C00DE4179 /* WKFormSelectControl.h */,
+                        );
+                        name = forms;
+                        sourceTree = &quot;&lt;group&gt;&quot;;
+                };
</ins><span class="cx">                 CD73BA3D131A2A2100EEDED2 /* FullScreen */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><span class="lines">@@ -6647,6 +6673,7 @@
</span><span class="cx">                                 296BD85D15019BC30071F424 /* StringUtilities.h in Headers */,
</span><span class="cx">                                 379A873A18BBFE0F00588AF2 /* _WKElementAction.h in Headers */,
</span><span class="cx">                                 511D81FF185BBDEE001AED56 /* SQLiteIDBTransaction.h in Headers */,
</span><ins>+                                C54256BA18BEC18C00DE4179 /* WKFormSelectControl.h in Headers */,
</ins><span class="cx">                                 2DA944A01884E4F000ED86DB /* WebIOSEventFactory.h in Headers */,
</span><span class="cx">                                 7CD102DA1866770600ED429D /* AutoCorrectionCallback.h in Headers */,
</span><span class="cx">                                 1AB474E4184D44980051B622 /* WKBundlePageContextMenuClient.h in Headers */,
</span><span class="lines">@@ -6670,12 +6697,14 @@
</span><span class="cx">                                 512E35F9130B642E00ABD19A /* WebApplicationCacheManagerProxyMessages.h in Headers */,
</span><span class="cx">                                 C5E1AFED16B21017006CC1F2 /* WebArchive.h in Headers */,
</span><span class="cx">                                 C5E1AFEF16B21029006CC1F2 /* WebArchiveResource.h in Headers */,
</span><ins>+                                C54256B718BEC18C00DE4179 /* WKFormPeripheral.h in Headers */,
</ins><span class="cx">                                 BC72BA1E11E64907001EB4EA /* WebBackForwardList.h in Headers */,
</span><span class="cx">                                 518D2CAE12D5153B003BB93B /* WebBackForwardListItem.h in Headers */,
</span><span class="cx">                                 BC72B9FB11E6476B001EB4EA /* WebBackForwardListProxy.h in Headers */,
</span><span class="cx">                                 37FC194B18510D6A008CFA47 /* WKNSURLAuthenticationChallenge.h in Headers */,
</span><span class="cx">                                 75A8D2C8187CCFAB00C39C9E /* WKSession.h in Headers */,
</span><span class="cx">                                 BCF50728124329AA005955AE /* WebCertificateInfo.h in Headers */,
</span><ins>+                                C54256B818BEC18C00DE4179 /* WKFormPopover.h in Headers */,
</ins><span class="cx">                                 BC032D7510F4378D0058C15A /* WebChromeClient.h in Headers */,
</span><span class="cx">                                 515E773418402D510007203F /* UniqueIDBDatabaseIdentifier.h in Headers */,
</span><span class="cx">                                 3F87B9BE158940190090FF62 /* WebColorChooser.h in Headers */,
</span><span class="lines">@@ -6702,6 +6731,7 @@
</span><span class="cx">                                 51ACBBA0127A8F2C00D203B9 /* WebContextMenuProxyMac.h in Headers */,
</span><span class="cx">                                 BCCB75C61203A1CE00222D1B /* WebContextMessageKinds.h in Headers */,
</span><span class="cx">                                 BCEE7D0E12846F69009827DA /* WebContextMessages.h in Headers */,
</span><ins>+                                C54256B518BEC18C00DE4179 /* WKFormInputControl.h in Headers */,
</ins><span class="cx">                                 BCF4DE25168FA44800C94AFC /* WebContextSupplement.h in Headers */,
</span><span class="cx">                                 BCB0B0DC12305A2500B1341E /* WebContextUserMessageCoders.h in Headers */,
</span><span class="cx">                                 2D819BA21862800E001F03D1 /* ViewGestureGeometryCollectorMessages.h in Headers */,
</span><span class="lines">@@ -7789,6 +7819,7 @@
</span><span class="cx">                                 BC032DA510F437D10058C15A /* ArgumentDecoder.cpp in Sources */,
</span><span class="cx">                                 BC032DA710F437D10058C15A /* ArgumentEncoder.cpp in Sources */,
</span><span class="cx">                                 BCEE966C112FAF57006BCC24 /* Attachment.cpp in Sources */,
</span><ins>+                                C54256B618BEC18C00DE4179 /* WKFormInputControl.mm in Sources */,
</ins><span class="cx">                                 E1A31735134CEA80007C9A4F /* AttributedString.mm in Sources */,
</span><span class="cx">                                 512F589612A8838800629530 /* AuthenticationChallengeProxy.cpp in Sources */,
</span><span class="cx">                                 1AE00D4C182D6EB000087DD7 /* WKBrowsingContextHandle.mm in Sources */,
</span><span class="lines">@@ -8054,6 +8085,7 @@
</span><span class="cx">                                 51217460164C20E30037A5C1 /* ShareableResource.cpp in Sources */,
</span><span class="cx">                                 1A24BF3A120896A600FBB059 /* SharedMemoryMac.cpp in Sources */,
</span><span class="cx">                                 5272B28A1406985D0096A5D0 /* StatisticsData.cpp in Sources */,
</span><ins>+                                C54256B918BEC18C00DE4179 /* WKFormPopover.mm in Sources */,
</ins><span class="cx">                                 1A5B1C5418987EDF004FCF9B /* WebDocumentLoader.cpp in Sources */,
</span><span class="cx">                                 51A4D5A916CAC4FF000E615E /* StatisticsRequest.cpp in Sources */,
</span><span class="cx">                                 1AD3306E16B1D991004F60E7 /* StorageAreaImpl.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -465,6 +465,8 @@
</span><span class="cx">     void startInteractionWithElementAtPosition(const WebCore::IntPoint&amp;);
</span><span class="cx">     void stopInteraction();
</span><span class="cx">     void performActionOnElement(uint32_t action);
</span><ins>+    void setAssistedNodeValue(const String&amp;);
+    void setAssistedNodeValueAsNumber(double);
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     NotificationPermissionRequestManager* notificationPermissionRequestManager();
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -63,6 +63,8 @@
</span><span class="cx">     StartInteractionWithElementAtPosition(WebCore::IntPoint point)
</span><span class="cx">     StopInteraction()
</span><span class="cx">     PerformActionOnElement(uint32_t action)
</span><ins>+    SetAssistedNodeValue(String value)
+    SetAssistedNodeValueAsNumber(double value)
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(TOUCH_EVENTS)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (164759 => 164760)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-02-27 01:04:23 UTC (rev 164759)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-02-27 01:06:37 UTC (rev 164760)
</span><span class="lines">@@ -393,6 +393,27 @@
</span><span class="cx">         toElement(m_assistedNode.get())-&gt;blur();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPage::setAssistedNodeValue(const String&amp; value)
+{
+    if (!m_assistedNode)
+        return;
+    if (isHTMLInputElement(m_assistedNode.get())) {
+        HTMLInputElement *element = toHTMLInputElement(m_assistedNode.get());
+        element-&gt;setValue(value, DispatchInputAndChangeEvent);
+    }
+    // FIXME: should also handle the case of HTMLSelectElement.
+}
+
+void WebPage::setAssistedNodeValueAsNumber(double value)
+{
+    if (!m_assistedNode)
+        return;
+    if (isHTMLInputElement(m_assistedNode.get())) {
+        HTMLInputElement *element = toHTMLInputElement(m_assistedNode.get());
+        element-&gt;setValueAsNumber(value, ASSERT_NO_EXCEPTION, DispatchInputAndChangeEvent);
+    }
+}
+
</ins><span class="cx"> static FloatQuad innerFrameQuad(Frame* frame, Node* assistedNode)
</span><span class="cx"> {
</span><span class="cx">     frame-&gt;document()-&gt;updateLayoutIgnorePendingStylesheets();
</span></span></pre>
</div>
</div>

</body>
</html>