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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/ui/UIUtils.js

Issue 2440953003: DevTools: use semicolons after each statement. (Closed)
Patch Set: rebaseline Created 4 years, 1 month 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com). 4 * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com).
5 * Copyright (C) 2009 Joseph Pecoraro 5 * Copyright (C) 2009 Joseph Pecoraro
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 10 *
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 clearInterval(startTimer); 60 clearInterval(startTimer);
61 startTimer = null; 61 startTimer = null;
62 } 62 }
63 63
64 var startTimer; 64 var startTimer;
65 element.addEventListener("mousedown", onMouseDown, false); 65 element.addEventListener("mousedown", onMouseDown, false);
66 if (startDelay) 66 if (startDelay)
67 element.addEventListener("mouseup", onMouseUp, false); 67 element.addEventListener("mouseup", onMouseUp, false);
68 if (hoverCursor !== null) 68 if (hoverCursor !== null)
69 element.style.cursor = hoverCursor || cursor; 69 element.style.cursor = hoverCursor || cursor;
70 } 70 };
71 71
72 /** 72 /**
73 * @param {!Element} targetElement 73 * @param {!Element} targetElement
74 * @param {?function(!MouseEvent):boolean} elementDragStart 74 * @param {?function(!MouseEvent):boolean} elementDragStart
75 * @param {function(!MouseEvent)} elementDrag 75 * @param {function(!MouseEvent)} elementDrag
76 * @param {?function(!MouseEvent)} elementDragEnd 76 * @param {?function(!MouseEvent)} elementDragEnd
77 * @param {string} cursor 77 * @param {string} cursor
78 * @param {!Event} event 78 * @param {!Event} event
79 */ 79 */
80 WebInspector.elementDragStart = function(targetElement, elementDragStart, elemen tDrag, elementDragEnd, cursor, event) 80 WebInspector.elementDragStart = function(targetElement, elementDragStart, elemen tDrag, elementDragEnd, cursor, event)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 targetElement.style.cursor = cursor; 113 targetElement.style.cursor = cursor;
114 targetDocument.body.style.cursor = cursor; 114 targetDocument.body.style.cursor = cursor;
115 } 115 }
116 function restoreCursor(oldCursor) 116 function restoreCursor(oldCursor)
117 { 117 {
118 targetDocument.body.style.removeProperty("cursor"); 118 targetDocument.body.style.removeProperty("cursor");
119 targetElement.style.cursor = oldCursor; 119 targetElement.style.cursor = oldCursor;
120 WebInspector._restoreCursorAfterDrag = null; 120 WebInspector._restoreCursorAfterDrag = null;
121 } 121 }
122 event.preventDefault(); 122 event.preventDefault();
123 } 123 };
124 124
125 WebInspector._mouseOutWhileDragging = function() 125 WebInspector._mouseOutWhileDragging = function()
126 { 126 {
127 var document = WebInspector._mouseOutWhileDraggingTargetDocument; 127 var document = WebInspector._mouseOutWhileDraggingTargetDocument;
128 WebInspector._unregisterMouseOutWhileDragging(); 128 WebInspector._unregisterMouseOutWhileDragging();
129 WebInspector._elementDraggingGlassPane = new WebInspector.GlassPane(document ); 129 WebInspector._elementDraggingGlassPane = new WebInspector.GlassPane(document );
130 } 130 };
131 131
132 WebInspector._unregisterMouseOutWhileDragging = function() 132 WebInspector._unregisterMouseOutWhileDragging = function()
133 { 133 {
134 if (!WebInspector._mouseOutWhileDraggingTargetDocument) 134 if (!WebInspector._mouseOutWhileDraggingTargetDocument)
135 return; 135 return;
136 WebInspector._mouseOutWhileDraggingTargetDocument.removeEventListener("mouse out", WebInspector._mouseOutWhileDragging, true); 136 WebInspector._mouseOutWhileDraggingTargetDocument.removeEventListener("mouse out", WebInspector._mouseOutWhileDragging, true);
137 delete WebInspector._mouseOutWhileDraggingTargetDocument; 137 delete WebInspector._mouseOutWhileDraggingTargetDocument;
138 } 138 };
139 139
140 WebInspector._unregisterDragEvents = function() 140 WebInspector._unregisterDragEvents = function()
141 { 141 {
142 if (!WebInspector._dragEventsTargetDocument) 142 if (!WebInspector._dragEventsTargetDocument)
143 return; 143 return;
144 WebInspector._dragEventsTargetDocument.removeEventListener("mousemove", WebI nspector._elementDragMove, true); 144 WebInspector._dragEventsTargetDocument.removeEventListener("mousemove", WebI nspector._elementDragMove, true);
145 WebInspector._dragEventsTargetDocument.removeEventListener("mouseup", WebIns pector._elementDragEnd, true); 145 WebInspector._dragEventsTargetDocument.removeEventListener("mouseup", WebIns pector._elementDragEnd, true);
146 if (WebInspector._dragEventsTargetDocument !== WebInspector._dragEventsTarge tDocumentTop) 146 if (WebInspector._dragEventsTargetDocument !== WebInspector._dragEventsTarge tDocumentTop)
147 WebInspector._dragEventsTargetDocumentTop.removeEventListener("mouseup", WebInspector._elementDragEnd, true); 147 WebInspector._dragEventsTargetDocumentTop.removeEventListener("mouseup", WebInspector._elementDragEnd, true);
148 delete WebInspector._dragEventsTargetDocument; 148 delete WebInspector._dragEventsTargetDocument;
149 delete WebInspector._dragEventsTargetDocumentTop; 149 delete WebInspector._dragEventsTargetDocumentTop;
150 } 150 };
151 151
152 /** 152 /**
153 * @param {!Event} event 153 * @param {!Event} event
154 */ 154 */
155 WebInspector._elementDragMove = function(event) 155 WebInspector._elementDragMove = function(event)
156 { 156 {
157 if (event.buttons !== 1) { 157 if (event.buttons !== 1) {
158 WebInspector._elementDragEnd(event); 158 WebInspector._elementDragEnd(event);
159 return; 159 return;
160 } 160 }
161 161
162 if (WebInspector._elementDraggingEventListener(/** @type {!MouseEvent} */ (e vent))) 162 if (WebInspector._elementDraggingEventListener(/** @type {!MouseEvent} */ (e vent)))
163 WebInspector._cancelDragEvents(event); 163 WebInspector._cancelDragEvents(event);
164 } 164 };
165 165
166 /** 166 /**
167 * @param {!Event} event 167 * @param {!Event} event
168 */ 168 */
169 WebInspector._cancelDragEvents = function(event) 169 WebInspector._cancelDragEvents = function(event)
170 { 170 {
171 WebInspector._unregisterDragEvents(); 171 WebInspector._unregisterDragEvents();
172 WebInspector._unregisterMouseOutWhileDragging(); 172 WebInspector._unregisterMouseOutWhileDragging();
173 173
174 if (WebInspector._restoreCursorAfterDrag) 174 if (WebInspector._restoreCursorAfterDrag)
175 WebInspector._restoreCursorAfterDrag(); 175 WebInspector._restoreCursorAfterDrag();
176 176
177 if (WebInspector._elementDraggingGlassPane) 177 if (WebInspector._elementDraggingGlassPane)
178 WebInspector._elementDraggingGlassPane.dispose(); 178 WebInspector._elementDraggingGlassPane.dispose();
179 179
180 delete WebInspector._elementDraggingGlassPane; 180 delete WebInspector._elementDraggingGlassPane;
181 delete WebInspector._elementDraggingEventListener; 181 delete WebInspector._elementDraggingEventListener;
182 delete WebInspector._elementEndDraggingEventListener; 182 delete WebInspector._elementEndDraggingEventListener;
183 } 183 };
184 184
185 /** 185 /**
186 * @param {!Event} event 186 * @param {!Event} event
187 */ 187 */
188 WebInspector._elementDragEnd = function(event) 188 WebInspector._elementDragEnd = function(event)
189 { 189 {
190 var elementDragEnd = WebInspector._elementEndDraggingEventListener; 190 var elementDragEnd = WebInspector._elementEndDraggingEventListener;
191 191
192 WebInspector._cancelDragEvents(/** @type {!MouseEvent} */ (event)); 192 WebInspector._cancelDragEvents(/** @type {!MouseEvent} */ (event));
193 193
194 event.preventDefault(); 194 event.preventDefault();
195 if (elementDragEnd) 195 if (elementDragEnd)
196 elementDragEnd(/** @type {!MouseEvent} */ (event)); 196 elementDragEnd(/** @type {!MouseEvent} */ (event));
197 } 197 };
198 198
199 /** 199 /**
200 * @param {!Element} element 200 * @param {!Element} element
201 * @param {function(number, number, !MouseEvent): boolean} elementDragStart 201 * @param {function(number, number, !MouseEvent): boolean} elementDragStart
202 * @param {function(number, number)} elementDrag 202 * @param {function(number, number)} elementDrag
203 * @param {function(number, number)} elementDragEnd 203 * @param {function(number, number)} elementDragEnd
204 * @param {string} cursor 204 * @param {string} cursor
205 * @param {?string=} hoverCursor 205 * @param {?string=} hoverCursor
206 * @param {number=} startDelay 206 * @param {number=} startDelay
207 * @param {number=} friction 207 * @param {number=} friction
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 if (!duration) 262 if (!duration)
263 return; 263 return;
264 lastTime = now; 264 lastTime = now;
265 lastX += velocityX * duration; 265 lastX += velocityX * duration;
266 lastY += velocityY * duration; 266 lastY += velocityY * duration;
267 var k = Math.pow(1 / (1 + friction), duration / 1000); 267 var k = Math.pow(1 / (1 + friction), duration / 1000);
268 velocityX *= k; 268 velocityX *= k;
269 velocityY *= k; 269 velocityY *= k;
270 elementDrag(lastX, lastY); 270 elementDrag(lastX, lastY);
271 } 271 }
272 } 272 };
273 273
274 /** 274 /**
275 * @constructor 275 * @constructor
276 * @param {!Document} document 276 * @param {!Document} document
277 * @param {boolean=} dimmed 277 * @param {boolean=} dimmed
278 */ 278 */
279 WebInspector.GlassPane = function(document, dimmed) 279 WebInspector.GlassPane = function(document, dimmed)
280 { 280 {
281 this.element = createElement("div"); 281 this.element = createElement("div");
282 var background = dimmed ? "rgba(255, 255, 255, 0.5)" : "transparent"; 282 var background = dimmed ? "rgba(255, 255, 255, 0.5)" : "transparent";
283 this._zIndex = WebInspector._glassPane ? WebInspector._glassPane._zIndex + 1 000 : 3000; // Deliberately starts with 3000 to hide other z-indexed elements be low. 283 this._zIndex = WebInspector._glassPane ? WebInspector._glassPane._zIndex + 1 000 : 3000; // Deliberately starts with 3000 to hide other z-indexed elements be low.
284 this.element.style.cssText = "position:absolute;top:0;bottom:0;left:0;right: 0;background-color:" + background + ";z-index:" + this._zIndex + ";overflow:hidd en;"; 284 this.element.style.cssText = "position:absolute;top:0;bottom:0;left:0;right: 0;background-color:" + background + ";z-index:" + this._zIndex + ";overflow:hidd en;";
285 document.body.appendChild(this.element); 285 document.body.appendChild(this.element);
286 WebInspector._glassPane = this; 286 WebInspector._glassPane = this;
287 // TODO(dgozman): disallow focus outside of glass pane? 287 // TODO(dgozman): disallow focus outside of glass pane?
288 } 288 };
289 289
290 WebInspector.GlassPane.prototype = { 290 WebInspector.GlassPane.prototype = {
291 dispose: function() 291 dispose: function()
292 { 292 {
293 delete WebInspector._glassPane; 293 delete WebInspector._glassPane;
294 this.element.remove(); 294 this.element.remove();
295 } 295 }
296 } 296 };
297 297
298 /** @type {!WebInspector.GlassPane|undefined} */ 298 /** @type {!WebInspector.GlassPane|undefined} */
299 WebInspector._glassPane; 299 WebInspector._glassPane;
300 300
301 /** 301 /**
302 * @param {?Node=} node 302 * @param {?Node=} node
303 * @return {boolean} 303 * @return {boolean}
304 */ 304 */
305 WebInspector.isBeingEdited = function(node) 305 WebInspector.isBeingEdited = function(node)
306 { 306 {
307 if (!node || node.nodeType !== Node.ELEMENT_NODE) 307 if (!node || node.nodeType !== Node.ELEMENT_NODE)
308 return false; 308 return false;
309 var element = /** {!Element} */ (node); 309 var element = /** {!Element} */ (node);
310 if (element.classList.contains("text-prompt") || element.nodeName === "INPUT " || element.nodeName === "TEXTAREA") 310 if (element.classList.contains("text-prompt") || element.nodeName === "INPUT " || element.nodeName === "TEXTAREA")
311 return true; 311 return true;
312 312
313 if (!WebInspector.__editingCount) 313 if (!WebInspector.__editingCount)
314 return false; 314 return false;
315 315
316 while (element) { 316 while (element) {
317 if (element.__editing) 317 if (element.__editing)
318 return true; 318 return true;
319 element = element.parentElementOrShadowHost(); 319 element = element.parentElementOrShadowHost();
320 } 320 }
321 return false; 321 return false;
322 } 322 };
323 323
324 /** 324 /**
325 * @return {boolean} 325 * @return {boolean}
326 * @suppressGlobalPropertiesCheck 326 * @suppressGlobalPropertiesCheck
327 */ 327 */
328 WebInspector.isEditing = function() 328 WebInspector.isEditing = function()
329 { 329 {
330 if (WebInspector.__editingCount) 330 if (WebInspector.__editingCount)
331 return true; 331 return true;
332 332
333 var focused = document.deepActiveElement(); 333 var focused = document.deepActiveElement();
334 if (!focused) 334 if (!focused)
335 return false; 335 return false;
336 return focused.classList.contains("text-prompt") || focused.nodeName === "IN PUT" || focused.nodeName === "TEXTAREA"; 336 return focused.classList.contains("text-prompt") || focused.nodeName === "IN PUT" || focused.nodeName === "TEXTAREA";
337 } 337 };
338 338
339 /** 339 /**
340 * @param {!Element} element 340 * @param {!Element} element
341 * @param {boolean} value 341 * @param {boolean} value
342 * @return {boolean} 342 * @return {boolean}
343 */ 343 */
344 WebInspector.markBeingEdited = function(element, value) 344 WebInspector.markBeingEdited = function(element, value)
345 { 345 {
346 if (value) { 346 if (value) {
347 if (element.__editing) 347 if (element.__editing)
348 return false; 348 return false;
349 element.classList.add("being-edited"); 349 element.classList.add("being-edited");
350 element.__editing = true; 350 element.__editing = true;
351 WebInspector.__editingCount = (WebInspector.__editingCount || 0) + 1; 351 WebInspector.__editingCount = (WebInspector.__editingCount || 0) + 1;
352 } else { 352 } else {
353 if (!element.__editing) 353 if (!element.__editing)
354 return false; 354 return false;
355 element.classList.remove("being-edited"); 355 element.classList.remove("being-edited");
356 delete element.__editing; 356 delete element.__editing;
357 --WebInspector.__editingCount; 357 --WebInspector.__editingCount;
358 } 358 }
359 return true; 359 return true;
360 } 360 };
361 361
362 WebInspector.CSSNumberRegex = /^(-?(?:\d+(?:\.\d+)?|\.\d+))$/; 362 WebInspector.CSSNumberRegex = /^(-?(?:\d+(?:\.\d+)?|\.\d+))$/;
363 363
364 WebInspector.StyleValueDelimiters = " \xA0\t\n\"':;,/()"; 364 WebInspector.StyleValueDelimiters = " \xA0\t\n\"':;,/()";
365 365
366 366
367 /** 367 /**
368 * @param {!Event} event 368 * @param {!Event} event
369 * @return {?string} 369 * @return {?string}
370 */ 370 */
371 WebInspector._valueModificationDirection = function(event) 371 WebInspector._valueModificationDirection = function(event)
372 { 372 {
373 var direction = null; 373 var direction = null;
374 if (event.type === "mousewheel") { 374 if (event.type === "mousewheel") {
375 // When shift is pressed while spinning mousewheel, delta comes as wheel DeltaX. 375 // When shift is pressed while spinning mousewheel, delta comes as wheel DeltaX.
376 if (event.wheelDeltaY > 0 || event.wheelDeltaX > 0) 376 if (event.wheelDeltaY > 0 || event.wheelDeltaX > 0)
377 direction = "Up"; 377 direction = "Up";
378 else if (event.wheelDeltaY < 0 || event.wheelDeltaX < 0) 378 else if (event.wheelDeltaY < 0 || event.wheelDeltaX < 0)
379 direction = "Down"; 379 direction = "Down";
380 } else { 380 } else {
381 if (event.key === "ArrowUp" || event.key === "PageUp") 381 if (event.key === "ArrowUp" || event.key === "PageUp")
382 direction = "Up"; 382 direction = "Up";
383 else if (event.key === "ArrowDown" || event.key === "PageDown") 383 else if (event.key === "ArrowDown" || event.key === "PageDown")
384 direction = "Down"; 384 direction = "Down";
385 } 385 }
386 return direction; 386 return direction;
387 } 387 };
388 388
389 /** 389 /**
390 * @param {string} hexString 390 * @param {string} hexString
391 * @param {!Event} event 391 * @param {!Event} event
392 * @return {?string} 392 * @return {?string}
393 */ 393 */
394 WebInspector._modifiedHexValue = function(hexString, event) 394 WebInspector._modifiedHexValue = function(hexString, event)
395 { 395 {
396 var direction = WebInspector._valueModificationDirection(event); 396 var direction = WebInspector._valueModificationDirection(event);
397 if (!direction) 397 if (!direction)
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 429
430 // Increase hex value by 1 and clamp from 0 ... maxValue. 430 // Increase hex value by 1 and clamp from 0 ... maxValue.
431 var maxValue = Math.pow(16, hexStrLen) - 1; 431 var maxValue = Math.pow(16, hexStrLen) - 1;
432 var result = Number.constrain(number + delta, 0, maxValue); 432 var result = Number.constrain(number + delta, 0, maxValue);
433 433
434 // Ensure the result length is the same as the original hex value. 434 // Ensure the result length is the same as the original hex value.
435 var resultString = result.toString(16).toUpperCase(); 435 var resultString = result.toString(16).toUpperCase();
436 for (var i = 0, lengthDelta = hexStrLen - resultString.length; i < lengthDel ta; ++i) 436 for (var i = 0, lengthDelta = hexStrLen - resultString.length; i < lengthDel ta; ++i)
437 resultString = "0" + resultString; 437 resultString = "0" + resultString;
438 return resultString; 438 return resultString;
439 } 439 };
440 440
441 /** 441 /**
442 * @param {number} number 442 * @param {number} number
443 * @param {!Event} event 443 * @param {!Event} event
444 * @return {?number} 444 * @return {?number}
445 */ 445 */
446 WebInspector._modifiedFloatNumber = function(number, event) 446 WebInspector._modifiedFloatNumber = function(number, event)
447 { 447 {
448 var direction = WebInspector._valueModificationDirection(event); 448 var direction = WebInspector._valueModificationDirection(event);
449 if (!direction) 449 if (!direction)
(...skipping 17 matching lines...) Expand all
467 if (direction === "Down") 467 if (direction === "Down")
468 delta *= -1; 468 delta *= -1;
469 469
470 // Make the new number and constrain it to a precision of 6, this matches nu mbers the engine returns. 470 // Make the new number and constrain it to a precision of 6, this matches nu mbers the engine returns.
471 // Use the Number constructor to forget the fixed precision, so 1.100000 wil l print as 1.1. 471 // Use the Number constructor to forget the fixed precision, so 1.100000 wil l print as 1.1.
472 var result = Number((number + delta).toFixed(6)); 472 var result = Number((number + delta).toFixed(6));
473 if (!String(result).match(WebInspector.CSSNumberRegex)) 473 if (!String(result).match(WebInspector.CSSNumberRegex))
474 return null; 474 return null;
475 475
476 return result; 476 return result;
477 } 477 };
478 478
479 /** 479 /**
480 * @param {string} wordString 480 * @param {string} wordString
481 * @param {!Event} event 481 * @param {!Event} event
482 * @param {function(string, number, string):string=} customNumberHandler 482 * @param {function(string, number, string):string=} customNumberHandler
483 * @return {?string} 483 * @return {?string}
484 */ 484 */
485 WebInspector.createReplacementString = function(wordString, event, customNumberH andler) 485 WebInspector.createReplacementString = function(wordString, event, customNumberH andler)
486 { 486 {
487 var prefix; 487 var prefix;
(...skipping 11 matching lines...) Expand all
499 matches = /(.*?)(-?(?:\d+(?:\.\d+)?|\.\d+))(.*)/.exec(wordString); 499 matches = /(.*?)(-?(?:\d+(?:\.\d+)?|\.\d+))(.*)/.exec(wordString);
500 if (matches && matches.length) { 500 if (matches && matches.length) {
501 prefix = matches[1]; 501 prefix = matches[1];
502 suffix = matches[3]; 502 suffix = matches[3];
503 number = WebInspector._modifiedFloatNumber(parseFloat(matches[2]), e vent); 503 number = WebInspector._modifiedFloatNumber(parseFloat(matches[2]), e vent);
504 if (number !== null) 504 if (number !== null)
505 replacementString = customNumberHandler ? customNumberHandler(pr efix, number, suffix) : prefix + number + suffix; 505 replacementString = customNumberHandler ? customNumberHandler(pr efix, number, suffix) : prefix + number + suffix;
506 } 506 }
507 } 507 }
508 return replacementString; 508 return replacementString;
509 } 509 };
510 510
511 /** 511 /**
512 * @param {!Event} event 512 * @param {!Event} event
513 * @param {!Element} element 513 * @param {!Element} element
514 * @param {function(string,string)=} finishHandler 514 * @param {function(string,string)=} finishHandler
515 * @param {function(string)=} suggestionHandler 515 * @param {function(string)=} suggestionHandler
516 * @param {function(string, number, string):string=} customNumberHandler 516 * @param {function(string, number, string):string=} customNumberHandler
517 * @return {boolean} 517 * @return {boolean}
518 */ 518 */
519 WebInspector.handleElementValueModifications = function(event, element, finishHa ndler, suggestionHandler, customNumberHandler) 519 WebInspector.handleElementValueModifications = function(event, element, finishHa ndler, suggestionHandler, customNumberHandler)
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 564
565 event.handled = true; 565 event.handled = true;
566 event.preventDefault(); 566 event.preventDefault();
567 567
568 if (finishHandler) 568 if (finishHandler)
569 finishHandler(originalValue, replacementString); 569 finishHandler(originalValue, replacementString);
570 570
571 return true; 571 return true;
572 } 572 }
573 return false; 573 return false;
574 } 574 };
575 575
576 /** 576 /**
577 * @param {number} ms 577 * @param {number} ms
578 * @param {number=} precision 578 * @param {number=} precision
579 * @return {string} 579 * @return {string}
580 */ 580 */
581 Number.preciseMillisToString = function(ms, precision) 581 Number.preciseMillisToString = function(ms, precision)
582 { 582 {
583 precision = precision || 0; 583 precision = precision || 0;
584 var format = "%." + precision + "f\u2009ms"; 584 var format = "%." + precision + "f\u2009ms";
585 return WebInspector.UIString(format, ms); 585 return WebInspector.UIString(format, ms);
586 } 586 };
587 587
588 /** @type {!WebInspector.UIStringFormat} */ 588 /** @type {!WebInspector.UIStringFormat} */
589 WebInspector._microsFormat = new WebInspector.UIStringFormat("%.0f\u2009\u03bcs" ); 589 WebInspector._microsFormat = new WebInspector.UIStringFormat("%.0f\u2009\u03bcs" );
590 590
591 /** @type {!WebInspector.UIStringFormat} */ 591 /** @type {!WebInspector.UIStringFormat} */
592 WebInspector._subMillisFormat = new WebInspector.UIStringFormat("%.2f\u2009ms"); 592 WebInspector._subMillisFormat = new WebInspector.UIStringFormat("%.2f\u2009ms");
593 593
594 /** @type {!WebInspector.UIStringFormat} */ 594 /** @type {!WebInspector.UIStringFormat} */
595 WebInspector._millisFormat = new WebInspector.UIStringFormat("%.0f\u2009ms"); 595 WebInspector._millisFormat = new WebInspector.UIStringFormat("%.0f\u2009ms");
596 596
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 var minutes = seconds / 60; 633 var minutes = seconds / 60;
634 if (minutes < 60) 634 if (minutes < 60)
635 return WebInspector._minutesFormat.format(minutes); 635 return WebInspector._minutesFormat.format(minutes);
636 636
637 var hours = minutes / 60; 637 var hours = minutes / 60;
638 if (hours < 24) 638 if (hours < 24)
639 return WebInspector._hoursFormat.format(hours); 639 return WebInspector._hoursFormat.format(hours);
640 640
641 var days = hours / 24; 641 var days = hours / 24;
642 return WebInspector._daysFormat.format(days); 642 return WebInspector._daysFormat.format(days);
643 } 643 };
644 644
645 /** 645 /**
646 * @param {number} seconds 646 * @param {number} seconds
647 * @param {boolean=} higherResolution 647 * @param {boolean=} higherResolution
648 * @return {string} 648 * @return {string}
649 */ 649 */
650 Number.secondsToString = function(seconds, higherResolution) 650 Number.secondsToString = function(seconds, higherResolution)
651 { 651 {
652 if (!isFinite(seconds)) 652 if (!isFinite(seconds))
653 return "-"; 653 return "-";
654 return Number.millisToString(seconds * 1000, higherResolution); 654 return Number.millisToString(seconds * 1000, higherResolution);
655 } 655 };
656 656
657 /** 657 /**
658 * @param {number} bytes 658 * @param {number} bytes
659 * @return {string} 659 * @return {string}
660 */ 660 */
661 Number.bytesToString = function(bytes) 661 Number.bytesToString = function(bytes)
662 { 662 {
663 if (bytes < 1024) 663 if (bytes < 1024)
664 return WebInspector.UIString("%.0f\u2009B", bytes); 664 return WebInspector.UIString("%.0f\u2009B", bytes);
665 665
666 var kilobytes = bytes / 1024; 666 var kilobytes = bytes / 1024;
667 if (kilobytes < 100) 667 if (kilobytes < 100)
668 return WebInspector.UIString("%.1f\u2009KB", kilobytes); 668 return WebInspector.UIString("%.1f\u2009KB", kilobytes);
669 if (kilobytes < 1024) 669 if (kilobytes < 1024)
670 return WebInspector.UIString("%.0f\u2009KB", kilobytes); 670 return WebInspector.UIString("%.0f\u2009KB", kilobytes);
671 671
672 var megabytes = kilobytes / 1024; 672 var megabytes = kilobytes / 1024;
673 if (megabytes < 100) 673 if (megabytes < 100)
674 return WebInspector.UIString("%.1f\u2009MB", megabytes); 674 return WebInspector.UIString("%.1f\u2009MB", megabytes);
675 else 675 else
676 return WebInspector.UIString("%.0f\u2009MB", megabytes); 676 return WebInspector.UIString("%.0f\u2009MB", megabytes);
677 } 677 };
678 678
679 /** 679 /**
680 * @param {number} num 680 * @param {number} num
681 * @return {string} 681 * @return {string}
682 */ 682 */
683 Number.withThousandsSeparator = function(num) 683 Number.withThousandsSeparator = function(num)
684 { 684 {
685 var str = num + ""; 685 var str = num + "";
686 var re = /(\d+)(\d{3})/; 686 var re = /(\d+)(\d{3})/;
687 while (str.match(re)) 687 while (str.match(re))
688 str = str.replace(re, "$1\u2009$2"); // \u2009 is a thin space. 688 str = str.replace(re, "$1\u2009$2"); // \u2009 is a thin space.
689 return str; 689 return str;
690 } 690 };
691 691
692 /** 692 /**
693 * @param {string} format 693 * @param {string} format
694 * @param {?ArrayLike} substitutions 694 * @param {?ArrayLike} substitutions
695 * @return {!Element} 695 * @return {!Element}
696 */ 696 */
697 WebInspector.formatLocalized = function(format, substitutions) 697 WebInspector.formatLocalized = function(format, substitutions)
698 { 698 {
699 var formatters = { 699 var formatters = {
700 s: substitution => substitution 700 s: substitution => substitution
701 }; 701 };
702 /** 702 /**
703 * @param {!Element} a 703 * @param {!Element} a
704 * @param {string|!Element} b 704 * @param {string|!Element} b
705 * @return {!Element} 705 * @return {!Element}
706 */ 706 */
707 function append(a, b) 707 function append(a, b)
708 { 708 {
709 a.appendChild(typeof b === "string" ? createTextNode(b) : b); 709 a.appendChild(typeof b === "string" ? createTextNode(b) : b);
710 return a; 710 return a;
711 } 711 }
712 return String.format(WebInspector.UIString(format), substitutions, formatter s, createElement("span"), append).formattedResult; 712 return String.format(WebInspector.UIString(format), substitutions, formatter s, createElement("span"), append).formattedResult;
713 } 713 };
714 714
715 /** 715 /**
716 * @return {string} 716 * @return {string}
717 */ 717 */
718 WebInspector.openLinkExternallyLabel = function() 718 WebInspector.openLinkExternallyLabel = function()
719 { 719 {
720 return WebInspector.UIString.capitalize("Open ^link in ^new ^tab"); 720 return WebInspector.UIString.capitalize("Open ^link in ^new ^tab");
721 } 721 };
722 722
723 /** 723 /**
724 * @return {string} 724 * @return {string}
725 */ 725 */
726 WebInspector.copyLinkAddressLabel = function() 726 WebInspector.copyLinkAddressLabel = function()
727 { 727 {
728 return WebInspector.UIString.capitalize("Copy ^link ^address"); 728 return WebInspector.UIString.capitalize("Copy ^link ^address");
729 } 729 };
730 730
731 /** 731 /**
732 * @return {string} 732 * @return {string}
733 */ 733 */
734 WebInspector.anotherProfilerActiveLabel = function() 734 WebInspector.anotherProfilerActiveLabel = function()
735 { 735 {
736 return WebInspector.UIString("Another profiler is already active"); 736 return WebInspector.UIString("Another profiler is already active");
737 } 737 };
738 738
739 /** 739 /**
740 * @param {string|undefined} description 740 * @param {string|undefined} description
741 * @return {string} 741 * @return {string}
742 */ 742 */
743 WebInspector.asyncStackTraceLabel = function(description) 743 WebInspector.asyncStackTraceLabel = function(description)
744 { 744 {
745 if (description) 745 if (description)
746 return description + " " + WebInspector.UIString("(async)"); 746 return description + " " + WebInspector.UIString("(async)");
747 return WebInspector.UIString("Async Call"); 747 return WebInspector.UIString("Async Call");
748 } 748 };
749 749
750 /** 750 /**
751 * @param {!Element} element 751 * @param {!Element} element
752 */ 752 */
753 WebInspector.installComponentRootStyles = function(element) 753 WebInspector.installComponentRootStyles = function(element)
754 { 754 {
755 WebInspector.appendStyle(element, "ui/inspectorCommon.css"); 755 WebInspector.appendStyle(element, "ui/inspectorCommon.css");
756 WebInspector.themeSupport.injectHighlightStyleSheets(element); 756 WebInspector.themeSupport.injectHighlightStyleSheets(element);
757 element.classList.add("platform-" + WebInspector.platform()); 757 element.classList.add("platform-" + WebInspector.platform());
758 } 758 };
759 759
760 /** 760 /**
761 * @param {!Element} element 761 * @param {!Element} element
762 * @param {string=} cssFile 762 * @param {string=} cssFile
763 * @return {!DocumentFragment} 763 * @return {!DocumentFragment}
764 */ 764 */
765 WebInspector.createShadowRootWithCoreStyles = function(element, cssFile) 765 WebInspector.createShadowRootWithCoreStyles = function(element, cssFile)
766 { 766 {
767 var shadowRoot = element.createShadowRoot(); 767 var shadowRoot = element.createShadowRoot();
768 WebInspector.appendStyle(shadowRoot, "ui/inspectorCommon.css"); 768 WebInspector.appendStyle(shadowRoot, "ui/inspectorCommon.css");
769 WebInspector.themeSupport.injectHighlightStyleSheets(shadowRoot); 769 WebInspector.themeSupport.injectHighlightStyleSheets(shadowRoot);
770 if (cssFile) 770 if (cssFile)
771 WebInspector.appendStyle(shadowRoot, cssFile); 771 WebInspector.appendStyle(shadowRoot, cssFile);
772 shadowRoot.addEventListener("focus", WebInspector._focusChanged.bind(WebInsp ector), true); 772 shadowRoot.addEventListener("focus", WebInspector._focusChanged.bind(WebInsp ector), true);
773 return shadowRoot; 773 return shadowRoot;
774 } 774 };
775 775
776 /** 776 /**
777 * @param {!Document} document 777 * @param {!Document} document
778 * @param {!Event} event 778 * @param {!Event} event
779 */ 779 */
780 WebInspector._windowFocused = function(document, event) 780 WebInspector._windowFocused = function(document, event)
781 { 781 {
782 if (event.target.document.nodeType === Node.DOCUMENT_NODE) 782 if (event.target.document.nodeType === Node.DOCUMENT_NODE)
783 document.body.classList.remove("inactive"); 783 document.body.classList.remove("inactive");
784 } 784 };
785 785
786 /** 786 /**
787 * @param {!Document} document 787 * @param {!Document} document
788 * @param {!Event} event 788 * @param {!Event} event
789 */ 789 */
790 WebInspector._windowBlurred = function(document, event) 790 WebInspector._windowBlurred = function(document, event)
791 { 791 {
792 if (event.target.document.nodeType === Node.DOCUMENT_NODE) 792 if (event.target.document.nodeType === Node.DOCUMENT_NODE)
793 document.body.classList.add("inactive"); 793 document.body.classList.add("inactive");
794 } 794 };
795 795
796 /** 796 /**
797 * @param {!Event} event 797 * @param {!Event} event
798 */ 798 */
799 WebInspector._focusChanged = function(event) 799 WebInspector._focusChanged = function(event)
800 { 800 {
801 var document = event.target && event.target.ownerDocument; 801 var document = event.target && event.target.ownerDocument;
802 var element = document ? document.deepActiveElement() : null; 802 var element = document ? document.deepActiveElement() : null;
803 WebInspector.Widget.focusWidgetForNode(element); 803 WebInspector.Widget.focusWidgetForNode(element);
804 } 804 };
805 805
806 /** 806 /**
807 * @param {!Element} element 807 * @param {!Element} element
808 * @constructor 808 * @constructor
809 */ 809 */
810 WebInspector.ElementFocusRestorer = function(element) 810 WebInspector.ElementFocusRestorer = function(element)
811 { 811 {
812 this._element = element; 812 this._element = element;
813 this._previous = element.ownerDocument.deepActiveElement(); 813 this._previous = element.ownerDocument.deepActiveElement();
814 element.focus(); 814 element.focus();
815 } 815 };
816 816
817 WebInspector.ElementFocusRestorer.prototype = { 817 WebInspector.ElementFocusRestorer.prototype = {
818 restore: function() 818 restore: function()
819 { 819 {
820 if (!this._element) 820 if (!this._element)
821 return; 821 return;
822 if (this._element.hasFocus() && this._previous) 822 if (this._element.hasFocus() && this._previous)
823 this._previous.focus(); 823 this._previous.focus();
824 this._previous = null; 824 this._previous = null;
825 this._element = null; 825 this._element = null;
826 } 826 }
827 } 827 };
828 828
829 /** 829 /**
830 * @param {!Element} element 830 * @param {!Element} element
831 * @param {number} offset 831 * @param {number} offset
832 * @param {number} length 832 * @param {number} length
833 * @param {!Array.<!Object>=} domChanges 833 * @param {!Array.<!Object>=} domChanges
834 * @return {?Element} 834 * @return {?Element}
835 */ 835 */
836 WebInspector.highlightSearchResult = function(element, offset, length, domChange s) 836 WebInspector.highlightSearchResult = function(element, offset, length, domChange s)
837 { 837 {
838 var result = WebInspector.highlightSearchResults(element, [new WebInspector. SourceRange(offset, length)], domChanges); 838 var result = WebInspector.highlightSearchResults(element, [new WebInspector. SourceRange(offset, length)], domChanges);
839 return result.length ? result[0] : null; 839 return result.length ? result[0] : null;
840 } 840 };
841 841
842 /** 842 /**
843 * @param {!Element} element 843 * @param {!Element} element
844 * @param {!Array.<!WebInspector.SourceRange>} resultRanges 844 * @param {!Array.<!WebInspector.SourceRange>} resultRanges
845 * @param {!Array.<!Object>=} changes 845 * @param {!Array.<!Object>=} changes
846 * @return {!Array.<!Element>} 846 * @return {!Array.<!Element>}
847 */ 847 */
848 WebInspector.highlightSearchResults = function(element, resultRanges, changes) 848 WebInspector.highlightSearchResults = function(element, resultRanges, changes)
849 { 849 {
850 return WebInspector.highlightRangesWithStyleClass(element, resultRanges, Web Inspector.highlightedSearchResultClassName, changes); 850 return WebInspector.highlightRangesWithStyleClass(element, resultRanges, Web Inspector.highlightedSearchResultClassName, changes);
851 } 851 };
852 852
853 /** 853 /**
854 * @param {!Element} element 854 * @param {!Element} element
855 * @param {string} className 855 * @param {string} className
856 */ 856 */
857 WebInspector.runCSSAnimationOnce = function(element, className) 857 WebInspector.runCSSAnimationOnce = function(element, className)
858 { 858 {
859 function animationEndCallback() 859 function animationEndCallback()
860 { 860 {
861 element.classList.remove(className); 861 element.classList.remove(className);
862 element.removeEventListener("webkitAnimationEnd", animationEndCallback, false); 862 element.removeEventListener("webkitAnimationEnd", animationEndCallback, false);
863 } 863 }
864 864
865 if (element.classList.contains(className)) 865 if (element.classList.contains(className))
866 element.classList.remove(className); 866 element.classList.remove(className);
867 867
868 element.addEventListener("webkitAnimationEnd", animationEndCallback, false); 868 element.addEventListener("webkitAnimationEnd", animationEndCallback, false);
869 element.classList.add(className); 869 element.classList.add(className);
870 } 870 };
871 871
872 /** 872 /**
873 * @param {!Element} element 873 * @param {!Element} element
874 * @param {!Array.<!WebInspector.SourceRange>} resultRanges 874 * @param {!Array.<!WebInspector.SourceRange>} resultRanges
875 * @param {string} styleClass 875 * @param {string} styleClass
876 * @param {!Array.<!Object>=} changes 876 * @param {!Array.<!Object>=} changes
877 * @return {!Array.<!Element>} 877 * @return {!Array.<!Element>}
878 */ 878 */
879 WebInspector.highlightRangesWithStyleClass = function(element, resultRanges, sty leClass, changes) 879 WebInspector.highlightRangesWithStyleClass = function(element, resultRanges, sty leClass, changes)
880 { 880 {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
945 textNode.textContent = ""; 945 textNode.textContent = "";
946 changes.push({ node: textNode, type: "changed", oldText: text, n ewText: textNode.textContent }); 946 changes.push({ node: textNode, type: "changed", oldText: text, n ewText: textNode.textContent });
947 } 947 }
948 } 948 }
949 startIndex = endIndex; 949 startIndex = endIndex;
950 nodeRanges[startIndex].offset = endOffset; 950 nodeRanges[startIndex].offset = endOffset;
951 nodeRanges[startIndex].length = lastTextNode.textContent.length; 951 nodeRanges[startIndex].length = lastTextNode.textContent.length;
952 952
953 } 953 }
954 return highlightNodes; 954 return highlightNodes;
955 } 955 };
956 956
957 WebInspector.applyDomChanges = function(domChanges) 957 WebInspector.applyDomChanges = function(domChanges)
958 { 958 {
959 for (var i = 0, size = domChanges.length; i < size; ++i) { 959 for (var i = 0, size = domChanges.length; i < size; ++i) {
960 var entry = domChanges[i]; 960 var entry = domChanges[i];
961 switch (entry.type) { 961 switch (entry.type) {
962 case "added": 962 case "added":
963 entry.parent.insertBefore(entry.node, entry.nextSibling); 963 entry.parent.insertBefore(entry.node, entry.nextSibling);
964 break; 964 break;
965 case "changed": 965 case "changed":
966 entry.node.textContent = entry.newText; 966 entry.node.textContent = entry.newText;
967 break; 967 break;
968 } 968 }
969 } 969 }
970 } 970 };
971 971
972 WebInspector.revertDomChanges = function(domChanges) 972 WebInspector.revertDomChanges = function(domChanges)
973 { 973 {
974 for (var i = domChanges.length - 1; i >= 0; --i) { 974 for (var i = domChanges.length - 1; i >= 0; --i) {
975 var entry = domChanges[i]; 975 var entry = domChanges[i];
976 switch (entry.type) { 976 switch (entry.type) {
977 case "added": 977 case "added":
978 entry.node.remove(); 978 entry.node.remove();
979 break; 979 break;
980 case "changed": 980 case "changed":
981 entry.node.textContent = entry.oldText; 981 entry.node.textContent = entry.oldText;
982 break; 982 break;
983 } 983 }
984 } 984 }
985 } 985 };
986 986
987 /** 987 /**
988 * @param {!Element} element 988 * @param {!Element} element
989 * @param {?Element=} containerElement 989 * @param {?Element=} containerElement
990 * @return {!Size} 990 * @return {!Size}
991 */ 991 */
992 WebInspector.measurePreferredSize = function(element, containerElement) 992 WebInspector.measurePreferredSize = function(element, containerElement)
993 { 993 {
994 var oldParent = element.parentElement; 994 var oldParent = element.parentElement;
995 var oldNextSibling = element.nextSibling; 995 var oldNextSibling = element.nextSibling;
996 containerElement = containerElement || element.ownerDocument.body; 996 containerElement = containerElement || element.ownerDocument.body;
997 containerElement.appendChild(element); 997 containerElement.appendChild(element);
998 element.positionAt(0, 0); 998 element.positionAt(0, 0);
999 var result = new Size(element.offsetWidth, element.offsetHeight); 999 var result = new Size(element.offsetWidth, element.offsetHeight);
1000 1000
1001 element.positionAt(undefined, undefined); 1001 element.positionAt(undefined, undefined);
1002 if (oldParent) 1002 if (oldParent)
1003 oldParent.insertBefore(element, oldNextSibling); 1003 oldParent.insertBefore(element, oldNextSibling);
1004 else 1004 else
1005 element.remove(); 1005 element.remove();
1006 return result; 1006 return result;
1007 } 1007 };
1008 1008
1009 /** 1009 /**
1010 * @constructor 1010 * @constructor
1011 * @param {boolean} autoInvoke 1011 * @param {boolean} autoInvoke
1012 */ 1012 */
1013 WebInspector.InvokeOnceHandlers = function(autoInvoke) 1013 WebInspector.InvokeOnceHandlers = function(autoInvoke)
1014 { 1014 {
1015 this._handlers = null; 1015 this._handlers = null;
1016 this._autoInvoke = autoInvoke; 1016 this._autoInvoke = autoInvoke;
1017 } 1017 };
1018 1018
1019 WebInspector.InvokeOnceHandlers.prototype = { 1019 WebInspector.InvokeOnceHandlers.prototype = {
1020 /** 1020 /**
1021 * @param {!Object} object 1021 * @param {!Object} object
1022 * @param {function()} method 1022 * @param {function()} method
1023 */ 1023 */
1024 add: function(object, method) 1024 add: function(object, method)
1025 { 1025 {
1026 if (!this._handlers) { 1026 if (!this._handlers) {
1027 this._handlers = new Map(); 1027 this._handlers = new Map();
(...skipping 22 matching lines...) Expand all
1050 var handlers = this._handlers; 1050 var handlers = this._handlers;
1051 this._handlers = null; 1051 this._handlers = null;
1052 var keys = handlers.keysArray(); 1052 var keys = handlers.keysArray();
1053 for (var i = 0; i < keys.length; ++i) { 1053 for (var i = 0; i < keys.length; ++i) {
1054 var object = keys[i]; 1054 var object = keys[i];
1055 var methods = handlers.get(object).valuesArray(); 1055 var methods = handlers.get(object).valuesArray();
1056 for (var j = 0; j < methods.length; ++j) 1056 for (var j = 0; j < methods.length; ++j)
1057 methods[j].call(object); 1057 methods[j].call(object);
1058 } 1058 }
1059 } 1059 }
1060 } 1060 };
1061 1061
1062 WebInspector._coalescingLevel = 0; 1062 WebInspector._coalescingLevel = 0;
1063 WebInspector._postUpdateHandlers = null; 1063 WebInspector._postUpdateHandlers = null;
1064 1064
1065 WebInspector.startBatchUpdate = function() 1065 WebInspector.startBatchUpdate = function()
1066 { 1066 {
1067 if (!WebInspector._coalescingLevel++) 1067 if (!WebInspector._coalescingLevel++)
1068 WebInspector._postUpdateHandlers = new WebInspector.InvokeOnceHandlers(f alse); 1068 WebInspector._postUpdateHandlers = new WebInspector.InvokeOnceHandlers(f alse);
1069 } 1069 };
1070 1070
1071 WebInspector.endBatchUpdate = function() 1071 WebInspector.endBatchUpdate = function()
1072 { 1072 {
1073 if (--WebInspector._coalescingLevel) 1073 if (--WebInspector._coalescingLevel)
1074 return; 1074 return;
1075 WebInspector._postUpdateHandlers.scheduleInvoke(); 1075 WebInspector._postUpdateHandlers.scheduleInvoke();
1076 WebInspector._postUpdateHandlers = null; 1076 WebInspector._postUpdateHandlers = null;
1077 } 1077 };
1078 1078
1079 /** 1079 /**
1080 * @param {!Object} object 1080 * @param {!Object} object
1081 * @param {function()} method 1081 * @param {function()} method
1082 */ 1082 */
1083 WebInspector.invokeOnceAfterBatchUpdate = function(object, method) 1083 WebInspector.invokeOnceAfterBatchUpdate = function(object, method)
1084 { 1084 {
1085 if (!WebInspector._postUpdateHandlers) 1085 if (!WebInspector._postUpdateHandlers)
1086 WebInspector._postUpdateHandlers = new WebInspector.InvokeOnceHandlers(t rue); 1086 WebInspector._postUpdateHandlers = new WebInspector.InvokeOnceHandlers(t rue);
1087 WebInspector._postUpdateHandlers.add(object, method); 1087 WebInspector._postUpdateHandlers.add(object, method);
1088 } 1088 };
1089 1089
1090 /** 1090 /**
1091 * @param {!Window} window 1091 * @param {!Window} window
1092 * @param {!Function} func 1092 * @param {!Function} func
1093 * @param {!Array.<{from:number, to:number}>} params 1093 * @param {!Array.<{from:number, to:number}>} params
1094 * @param {number} frames 1094 * @param {number} frames
1095 * @param {function()=} animationComplete 1095 * @param {function()=} animationComplete
1096 * @return {function()} 1096 * @return {function()}
1097 */ 1097 */
1098 WebInspector.animateFunction = function(window, func, params, frames, animationC omplete) 1098 WebInspector.animateFunction = function(window, func, params, frames, animationC omplete)
(...skipping 25 matching lines...) Expand all
1124 func.apply(null, values); 1124 func.apply(null, values);
1125 raf = window.requestAnimationFrame(animationStep); 1125 raf = window.requestAnimationFrame(animationStep);
1126 } 1126 }
1127 1127
1128 function cancelAnimation() 1128 function cancelAnimation()
1129 { 1129 {
1130 window.cancelAnimationFrame(raf); 1130 window.cancelAnimationFrame(raf);
1131 } 1131 }
1132 1132
1133 return cancelAnimation; 1133 return cancelAnimation;
1134 } 1134 };
1135 1135
1136 /** 1136 /**
1137 * @constructor 1137 * @constructor
1138 * @extends {WebInspector.Object} 1138 * @extends {WebInspector.Object}
1139 * @param {!Element} element 1139 * @param {!Element} element
1140 * @param {function(!Event)} callback 1140 * @param {function(!Event)} callback
1141 */ 1141 */
1142 WebInspector.LongClickController = function(element, callback) 1142 WebInspector.LongClickController = function(element, callback)
1143 { 1143 {
1144 this._element = element; 1144 this._element = element;
1145 this._callback = callback; 1145 this._callback = callback;
1146 this._enable(); 1146 this._enable();
1147 } 1147 };
1148 1148
1149 WebInspector.LongClickController.prototype = { 1149 WebInspector.LongClickController.prototype = {
1150 reset: function() 1150 reset: function()
1151 { 1151 {
1152 if (this._longClickInterval) { 1152 if (this._longClickInterval) {
1153 clearInterval(this._longClickInterval); 1153 clearInterval(this._longClickInterval);
1154 delete this._longClickInterval; 1154 delete this._longClickInterval;
1155 } 1155 }
1156 }, 1156 },
1157 1157
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1199 if (!this._longClickData) 1199 if (!this._longClickData)
1200 return; 1200 return;
1201 this._element.removeEventListener("mousedown", this._longClickData.mouse Down, false); 1201 this._element.removeEventListener("mousedown", this._longClickData.mouse Down, false);
1202 this._element.removeEventListener("mouseout", this._longClickData.reset, false); 1202 this._element.removeEventListener("mouseout", this._longClickData.reset, false);
1203 this._element.removeEventListener("mouseup", this._longClickData.mouseUp , false); 1203 this._element.removeEventListener("mouseup", this._longClickData.mouseUp , false);
1204 this._element.addEventListener("click", this._longClickData.reset, true) ; 1204 this._element.addEventListener("click", this._longClickData.reset, true) ;
1205 delete this._longClickData; 1205 delete this._longClickData;
1206 }, 1206 },
1207 1207
1208 __proto__: WebInspector.Object.prototype 1208 __proto__: WebInspector.Object.prototype
1209 } 1209 };
1210 1210
1211 /** 1211 /**
1212 * @param {!Document} document 1212 * @param {!Document} document
1213 * @param {!WebInspector.Setting} themeSetting 1213 * @param {!WebInspector.Setting} themeSetting
1214 */ 1214 */
1215 WebInspector.initializeUIUtils = function(document, themeSetting) 1215 WebInspector.initializeUIUtils = function(document, themeSetting)
1216 { 1216 {
1217 document.defaultView.addEventListener("focus", WebInspector._windowFocused.b ind(WebInspector, document), false); 1217 document.defaultView.addEventListener("focus", WebInspector._windowFocused.b ind(WebInspector, document), false);
1218 document.defaultView.addEventListener("blur", WebInspector._windowBlurred.bi nd(WebInspector, document), false); 1218 document.defaultView.addEventListener("blur", WebInspector._windowBlurred.bi nd(WebInspector, document), false);
1219 document.addEventListener("focus", WebInspector._focusChanged.bind(WebInspec tor), true); 1219 document.addEventListener("focus", WebInspector._focusChanged.bind(WebInspec tor), true);
1220 1220
1221 if (!WebInspector.themeSupport) 1221 if (!WebInspector.themeSupport)
1222 WebInspector.themeSupport = new WebInspector.ThemeSupport(themeSetting); 1222 WebInspector.themeSupport = new WebInspector.ThemeSupport(themeSetting);
1223 WebInspector.themeSupport.applyTheme(document); 1223 WebInspector.themeSupport.applyTheme(document);
1224 1224
1225 var body = /** @type {!Element} */ (document.body); 1225 var body = /** @type {!Element} */ (document.body);
1226 WebInspector.appendStyle(body, "ui/inspectorStyle.css"); 1226 WebInspector.appendStyle(body, "ui/inspectorStyle.css");
1227 WebInspector.appendStyle(body, "ui/popover.css"); 1227 WebInspector.appendStyle(body, "ui/popover.css");
1228 } 1228 };
1229 1229
1230 /** 1230 /**
1231 * @param {string} name 1231 * @param {string} name
1232 * @return {string} 1232 * @return {string}
1233 */ 1233 */
1234 WebInspector.beautifyFunctionName = function(name) 1234 WebInspector.beautifyFunctionName = function(name)
1235 { 1235 {
1236 return name || WebInspector.UIString("(anonymous)"); 1236 return name || WebInspector.UIString("(anonymous)");
1237 } 1237 };
1238 1238
1239 /** 1239 /**
1240 * @param {string} localName 1240 * @param {string} localName
1241 * @param {string} typeExtension 1241 * @param {string} typeExtension
1242 * @param {!Object} prototype 1242 * @param {!Object} prototype
1243 * @return {function()} 1243 * @return {function()}
1244 * @suppressGlobalPropertiesCheck 1244 * @suppressGlobalPropertiesCheck
1245 * @template T 1245 * @template T
1246 */ 1246 */
1247 function registerCustomElement(localName, typeExtension, prototype) 1247 function registerCustomElement(localName, typeExtension, prototype)
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
1646 function setValue(value) 1646 function setValue(value)
1647 { 1647 {
1648 if (value === input.value) 1648 if (value === input.value)
1649 return; 1649 return;
1650 var valid = validate(value); 1650 var valid = validate(value);
1651 input.classList.toggle("error-input", !valid); 1651 input.classList.toggle("error-input", !valid);
1652 input.value = value; 1652 input.value = value;
1653 } 1653 }
1654 1654
1655 return setValue; 1655 return setValue;
1656 } 1656 };
1657 1657
1658 /** 1658 /**
1659 * @constructor 1659 * @constructor
1660 * @param {!WebInspector.Setting} setting 1660 * @param {!WebInspector.Setting} setting
1661 */ 1661 */
1662 WebInspector.ThemeSupport = function(setting) 1662 WebInspector.ThemeSupport = function(setting)
1663 { 1663 {
1664 this._themeName = setting.get() || "default"; 1664 this._themeName = setting.get() || "default";
1665 this._themableProperties = new Set([ 1665 this._themableProperties = new Set([
1666 "color", "box-shadow", "text-shadow", "outline-color", 1666 "color", "box-shadow", "text-shadow", "outline-color",
1667 "background-image", "background-color", 1667 "background-image", "background-color",
1668 "border-left-color", "border-right-color", "border-top-color", "border-b ottom-color", 1668 "border-left-color", "border-right-color", "border-top-color", "border-b ottom-color",
1669 "-webkit-border-image"]); 1669 "-webkit-border-image"]);
1670 /** @type {!Map<string, string>} */ 1670 /** @type {!Map<string, string>} */
1671 this._cachedThemePatches = new Map(); 1671 this._cachedThemePatches = new Map();
1672 this._setting = setting; 1672 this._setting = setting;
1673 } 1673 };
1674 1674
1675 /** 1675 /**
1676 * @enum {number} 1676 * @enum {number}
1677 */ 1677 */
1678 WebInspector.ThemeSupport.ColorUsage = { 1678 WebInspector.ThemeSupport.ColorUsage = {
1679 Unknown: 0, 1679 Unknown: 0,
1680 Foreground: 1 << 0, 1680 Foreground: 1 << 0,
1681 Background: 1 << 1, 1681 Background: 1 << 1,
1682 Selection: 1 << 2, 1682 Selection: 1 << 2,
1683 }; 1683 };
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
1868 1868
1869 /** 1869 /**
1870 * @param {!Array<number>} hsla 1870 * @param {!Array<number>} hsla
1871 * @param {!WebInspector.ThemeSupport.ColorUsage} colorUsage 1871 * @param {!WebInspector.ThemeSupport.ColorUsage} colorUsage
1872 */ 1872 */
1873 _patchHSLA: function(hsla, colorUsage) 1873 _patchHSLA: function(hsla, colorUsage)
1874 { 1874 {
1875 var hue = hsla[0]; 1875 var hue = hsla[0];
1876 var sat = hsla[1]; 1876 var sat = hsla[1];
1877 var lit = hsla[2]; 1877 var lit = hsla[2];
1878 var alpha = hsla[3] 1878 var alpha = hsla[3];
1879 1879
1880 switch (this._themeName) { 1880 switch (this._themeName) {
1881 case "dark": 1881 case "dark":
1882 if (colorUsage & WebInspector.ThemeSupport.ColorUsage.Selection) 1882 if (colorUsage & WebInspector.ThemeSupport.ColorUsage.Selection)
1883 hue = (hue + 0.5) % 1; 1883 hue = (hue + 0.5) % 1;
1884 var minCap = colorUsage & WebInspector.ThemeSupport.ColorUsage.Backg round ? 0.14 : 0; 1884 var minCap = colorUsage & WebInspector.ThemeSupport.ColorUsage.Backg round ? 0.14 : 0;
1885 var maxCap = colorUsage & WebInspector.ThemeSupport.ColorUsage.Foreg round ? 0.9 : 1; 1885 var maxCap = colorUsage & WebInspector.ThemeSupport.ColorUsage.Foreg round ? 0.9 : 1;
1886 lit = 1 - lit; 1886 lit = 1 - lit;
1887 if (lit < minCap * 2) 1887 if (lit < minCap * 2)
1888 lit = minCap + lit / 2; 1888 lit = minCap + lit / 2;
1889 else if (lit > 2 * maxCap - 1) 1889 else if (lit > 2 * maxCap - 1)
1890 lit = maxCap - 1 / 2 + lit / 2; 1890 lit = maxCap - 1 / 2 + lit / 2;
1891 1891
1892 break; 1892 break;
1893 } 1893 }
1894 hsla[0] = Number.constrain(hue, 0, 1); 1894 hsla[0] = Number.constrain(hue, 0, 1);
1895 hsla[1] = Number.constrain(sat, 0, 1); 1895 hsla[1] = Number.constrain(sat, 0, 1);
1896 hsla[2] = Number.constrain(lit, 0, 1); 1896 hsla[2] = Number.constrain(lit, 0, 1);
1897 hsla[3] = Number.constrain(alpha, 0, 1); 1897 hsla[3] = Number.constrain(alpha, 0, 1);
1898 } 1898 }
1899 } 1899 };
1900 1900
1901 /** 1901 /**
1902 * @param {?NetworkAgent.ResourcePriority} priority 1902 * @param {?NetworkAgent.ResourcePriority} priority
1903 * @return {string} 1903 * @return {string}
1904 */ 1904 */
1905 WebInspector.uiLabelForPriority = function(priority) 1905 WebInspector.uiLabelForPriority = function(priority)
1906 { 1906 {
1907 var labelMap = WebInspector.uiLabelForPriority._priorityToUILabel; 1907 var labelMap = WebInspector.uiLabelForPriority._priorityToUILabel;
1908 if (!labelMap) { 1908 if (!labelMap) {
1909 labelMap = new Map([ 1909 labelMap = new Map([
1910 [NetworkAgent.ResourcePriority.VeryLow, WebInspector.UIString("Lowes t")], 1910 [NetworkAgent.ResourcePriority.VeryLow, WebInspector.UIString("Lowes t")],
1911 [NetworkAgent.ResourcePriority.Low, WebInspector.UIString("Low")], 1911 [NetworkAgent.ResourcePriority.Low, WebInspector.UIString("Low")],
1912 [NetworkAgent.ResourcePriority.Medium, WebInspector.UIString("Medium ")], 1912 [NetworkAgent.ResourcePriority.Medium, WebInspector.UIString("Medium ")],
1913 [NetworkAgent.ResourcePriority.High, WebInspector.UIString("High")], 1913 [NetworkAgent.ResourcePriority.High, WebInspector.UIString("High")],
1914 [NetworkAgent.ResourcePriority.VeryHigh, WebInspector.UIString("High est")] 1914 [NetworkAgent.ResourcePriority.VeryHigh, WebInspector.UIString("High est")]
1915 ]); 1915 ]);
1916 WebInspector.uiLabelForPriority._priorityToUILabel = labelMap; 1916 WebInspector.uiLabelForPriority._priorityToUILabel = labelMap;
1917 } 1917 }
1918 return labelMap.get(priority) || WebInspector.UIString("Unknown"); 1918 return labelMap.get(priority) || WebInspector.UIString("Unknown");
1919 } 1919 };
1920 1920
1921 /** 1921 /**
1922 * @param {string} url 1922 * @param {string} url
1923 * @param {string=} linkText 1923 * @param {string=} linkText
1924 * @param {string=} classes 1924 * @param {string=} classes
1925 * @param {boolean=} isExternal 1925 * @param {boolean=} isExternal
1926 * @param {string=} tooltipText 1926 * @param {string=} tooltipText
1927 * @return {!Element} 1927 * @return {!Element}
1928 */ 1928 */
1929 WebInspector.linkifyURLAsNode = function(url, linkText, classes, isExternal, too ltipText) 1929 WebInspector.linkifyURLAsNode = function(url, linkText, classes, isExternal, too ltipText)
(...skipping 13 matching lines...) Expand all
1943 } 1943 }
1944 if (!tooltipText && linkText !== url) 1944 if (!tooltipText && linkText !== url)
1945 a.title = url; 1945 a.title = url;
1946 else if (tooltipText) 1946 else if (tooltipText)
1947 a.title = tooltipText; 1947 a.title = tooltipText;
1948 a.textContent = linkText.trimMiddle(150); 1948 a.textContent = linkText.trimMiddle(150);
1949 if (isExternal) 1949 if (isExternal)
1950 a.setAttribute("target", "_blank"); 1950 a.setAttribute("target", "_blank");
1951 1951
1952 return a; 1952 return a;
1953 } 1953 };
1954 1954
1955 /** 1955 /**
1956 * @param {string} article 1956 * @param {string} article
1957 * @param {string} title 1957 * @param {string} title
1958 * @return {!Element} 1958 * @return {!Element}
1959 */ 1959 */
1960 WebInspector.linkifyDocumentationURLAsNode = function(article, title) 1960 WebInspector.linkifyDocumentationURLAsNode = function(article, title)
1961 { 1961 {
1962 return WebInspector.linkifyURLAsNode("https://developers.google.com/web/tool s/chrome-devtools/" + article, title, undefined, true); 1962 return WebInspector.linkifyURLAsNode("https://developers.google.com/web/tool s/chrome-devtools/" + article, title, undefined, true);
1963 } 1963 };
1964 1964
1965 /** @type {!WebInspector.ThemeSupport} */ 1965 /** @type {!WebInspector.ThemeSupport} */
1966 WebInspector.themeSupport; 1966 WebInspector.themeSupport;
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/ui/Tooltip.js ('k') | third_party/WebKit/Source/devtools/front_end/ui/View.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698