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

Side by Side Diff: chrome/browser/resources/options2/chromeos/internet_detail_ip_address_field.js

Issue 10827283: This updates the StaticIP configuration UI to match new mocks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup for review Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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
Dan Beam 2012/08/11 01:38:02 nit: one less \n here, IMO
5
6 cr.define('options.internet', function() {
7 /** @const */ var EditableTextField = options.EditableTextField;
8
9 /**
10 * The regular expression that matches an IP address, allowing for
11 * leading/trailing/embedded whitespace.
12 * @const
13 * @private
Dan Beam 2012/08/11 01:38:02 don't really need @private if this isn't a member
14 * @type {RegExp}
15 */
16 var singleIp_ = new RegExp('^\\s*([0-9]+)\\s*\\.\\s*([0-9]+)\\s*\\.' +
Dan Beam 2012/08/11 01:38:02 I'd highly recommend writing this in literal form
Greg Spencer (Chromium) 2012/08/13 19:20:04 Yeah, I tried that already, but the problem is tha
Dan Beam 2012/08/13 19:48:55 were you passing the /g (global) flag to the RegEx
Greg Spencer (Chromium) 2012/08/13 22:17:44 Yeah, I'm pretty familiar with regexps, and no, I
Dan Beam 2012/08/13 22:56:18 Yeah, OK.
17 '\\s*([0-9]+)\\s*\\.\\s*([0-9]+)\\s*$');
18
19 /**
20 * Creates a new field specifically for entering IP addresses.
21 * @constructor
22 */
23 function IPAddressField() {
24 var el = cr.doc.createElement('div');
25 IPAddressField.decorate(el);
26 return el;
27 };
Dan Beam 2012/08/11 01:38:02 nit: no ; when using function declarations() { }
Greg Spencer (Chromium) 2012/08/13 19:20:04 Done.
28
29 /**
30 * Decorates an element as a inline-editable list item. Note that this is
31 * a subclass of IPAddressField.
32 * @param {!HTMLElement} el The element to decorate.
33 */
34 IPAddressField.decorate = function(el) {
35 el.__proto__ = IPAddressField.prototype;
36 el.decorate();
37 };
38
39 IPAddressField.prototype = {
40 __proto__: EditableTextField.prototype,
41
42 /** @inheritDoc */
Dan Beam 2012/08/11 01:38:02 @inheritDoc is deprecated now, use @override inste
Greg Spencer (Chromium) 2012/08/13 19:20:04 Done.
43 decorate: function() {
44 EditableTextField.prototype.decorate.call(this);
45 },
46
47 /**
48 * Indicates whether or not empty values are allowed.
49 * @type {boolean}
50 */
51 get allowEmpty() {
52 return this.hasAttribute('allow-empty');
53 },
54
55 /** @inheritDoc */
56 get currentInputIsValid() {
57 if (!this.editField.value && this.allowEmpty)
58 return true;
59
60 // Make sure it's only got numbers and ".", there are the correct
61 // count of them, and they are all within the correct range.
62 var matches = singleIp_.exec(this.editField.value);
63 var range_correct = true;
Dan Beam 2012/08/11 01:38:02 var rangeCorrent (camelCase in JavaScript)
Greg Spencer (Chromium) 2012/08/13 19:20:04 aaagh! Switching back and forth between C++ and J
64 if (matches != null) {
65 for (var i = 1; i < matches.length; ++i) {
66 var value = parseInt(matches[i], 10);
67 if (value < 0 || value > 255)
68 range_correct = false;
Dan Beam 2012/08/11 01:38:02 why not break; here?
Greg Spencer (Chromium) 2012/08/13 19:20:04 Why indeed. Done.
69 }
70 }
71 return (this.editField.validity.valid && matches != null &&
Dan Beam 2012/08/11 01:38:02 nit: less ()
Greg Spencer (Chromium) 2012/08/13 19:20:04 Done.
72 range_correct && matches.length == 5);
73 },
74
75 /** @inheritDoc */
76 get hasBeenEdited() {
77 return this.editField.value != this.model.value;
78 },
79
80 /**
81 * Mutates the input during a successful commit. For the purposes of
Dan Beam 2012/08/11 01:38:02 nit: 1 \s between sentences in comments (you have
Greg Spencer (Chromium) 2012/08/13 19:20:04 Done.
82 * entering IP addresses, this just means stripping off whitespace and
83 * leading zeros from each of the octets so that they conform to the normal
84 * format for IP addresses.
85 * @param {Object} value Input IP address to be mutated.
Dan Beam 2012/08/11 01:38:02 shouldn't @param and @return be a {string}?
Greg Spencer (Chromium) 2012/08/13 19:20:04 Yeah, I guess so. I was originally going to mutat
86 * @return {Object} Mutated IP address.
87 */
88 mutateInput: function(value) {
89 if (!value)
90 return value;
Dan Beam 2012/08/11 01:38:02 nit: \n after this if ()
Greg Spencer (Chromium) 2012/08/13 19:20:04 Done.
91 var model = this.model;
92 var matches = singleIp_.exec(value);
Dan Beam 2012/08/11 01:38:02 seems like you could simplify this to: return
Greg Spencer (Chromium) 2012/08/13 19:20:04 Well, and the fact that it doesn't quite work.. :)
93 var result = [];
94 if (matches != null) { // should never be null if we got this far
Dan Beam 2012/08/11 01:38:02 make a full sentence if this loop sticks around
Greg Spencer (Chromium) 2012/08/13 19:20:04 Done.
95 for (var i = 1; i < matches.length; ++i) {
96 var octet = parseInt(matches[i], 10);
97 result.push(octet);
Dan Beam 2012/08/11 01:38:02 inline octect if this loop sticks around
Greg Spencer (Chromium) 2012/08/13 19:20:04 Done.
98 }
99 }
100 return result.join('.');
101 },
102 };
103
104 return {
105 IPAddressField: IPAddressField,
106 };
107 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698