Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(615)

Side by Side Diff: ios/web/web_state/js/resources/form.js

Issue 2807213003: Move stringify, form, navigation and scroll methods out of core.js. (Closed)
Patch Set: Re-upload patch after rebase-update in local branch Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ios/web/web_state/js/resources/core.js ('k') | ios/web/web_state/js/resources/navigation.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @fileoverview Adds listeners that are used to handle forms, enabling autofill
7 * and the replacement method to dismiss the keyboard needed because of the
8 * Autofill keyboard accessory.
9 */
10
11 goog.provide('__crWeb.form');
12
13 goog.require('__crWeb.message');
14
15 /** Beginning of anonymous object */
16 (function() {
17
18 /**
19 * Focus and input events for form elements are messaged to the main
20 * application for broadcast to CRWWebControllerObservers.
21 * This is done with a single event handler for each type being added to the
22 * main document element which checks the source element of the event; this
23 * is much easier to manage than adding handlers to individual elements.
24 * @private
25 */
26 var formActivity_ = function(evt) {
27 var srcElement = evt.srcElement;
28 var fieldName = srcElement.name || '';
29 var value = srcElement.value || '';
30
31 var msg = {
32 'command': 'form.activity',
33 'formName': __gCrWeb.common.getFormIdentifier(evt.srcElement.form),
34 'fieldName': fieldName,
35 'type': evt.type,
36 'value': value
37 };
38 __gCrWeb.message.invokeOnHost(msg);
39 };
40
41 /**
42 * Focus events performed on the 'capture' phase otherwise they are often
43 * not received.
44 */
45 document.addEventListener('focus', formActivity_, true);
46 document.addEventListener('blur', formActivity_, true);
47 document.addEventListener('change', formActivity_, true);
48
49 /**
50 * Text input is watched at the bubbling phase as this seems adequate in
51 * practice and it is less obtrusive to page scripts than capture phase.
52 */
53 document.addEventListener('input', formActivity_, false);
54 document.addEventListener('keyup', formActivity_, false);
55
56 /**
57 * Capture form submit actions.
58 */
59 document.addEventListener('submit', function(evt) {
60 var action;
61 if (evt['defaultPrevented'])
62 return;
63 action = evt.target.getAttribute('action');
64 // Default action is to re-submit to same page.
65 if (!action) {
66 action = document.location.href;
67 }
68 __gCrWeb.message.invokeOnHost({
69 'command': 'document.submit',
70 'formName': __gCrWeb.common.getFormIdentifier(evt.srcElement),
71 'href': getFullyQualifiedUrl_(action)
72 });
73 }, false);
74
75 /** @private */
76 var getFullyQualifiedUrl_ = function(originalURL) {
77 // A dummy anchor (never added to the document) is used to obtain the
78 // fully-qualified URL of |originalURL|.
79 var anchor = document.createElement('a');
80 anchor.href = originalURL;
81 return anchor.href;
82 };
83
84 /** Flush the message queue. */
85 if (__gCrWeb.message) {
86 __gCrWeb.message.invokeQueues();
87 }
88
89 }()); // End of anonymous object
OLDNEW
« no previous file with comments | « ios/web/web_state/js/resources/core.js ('k') | ios/web/web_state/js/resources/navigation.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698