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

Side by Side Diff: Source/devtools/front_end/elements/StylesSidebarPane.js

Issue 1285183006: DevTools: WI.Throttler goes promisified. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@cc
Patch Set: remove dependent patchset Created 5 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro 3 * Copyright (C) 2009 Joseph Pecoraro
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 } 306 }
307 } 307 }
308 308
309 if (this._filterRegex) 309 if (this._filterRegex)
310 this._updateFilter(); 310 this._updateFilter();
311 this._nodeStylesUpdatedForTest(node, false); 311 this._nodeStylesUpdatedForTest(node, false);
312 }, 312 },
313 313
314 /** 314 /**
315 * @override 315 * @override
316 * @param {!WebInspector.Throttler.FinishCallback} finishedCallback 316 * @return {!Promise.<?>}
317 */ 317 */
318 doUpdate: function(finishedCallback) 318 doUpdate: function()
319 { 319 {
320 this._discardElementUnderMouse(); 320 this._discardElementUnderMouse();
321 321
322 this.fetchMatchedCascade() 322 return this.fetchMatchedCascade()
323 .then(this._innerRebuildUpdate.bind(this)) 323 .then(this._innerRebuildUpdate.bind(this))
324 .then(finishedCallback)
325 .catch(/** @type {function()} */(finishedCallback));
326 }, 324 },
327 325
328 _resetCache: function() 326 _resetCache: function()
329 { 327 {
330 delete this._matchedCascadePromise; 328 delete this._matchedCascadePromise;
331 }, 329 },
332 330
333 /** 331 /**
334 * @return {!Promise.<?{matched: !WebInspector.SectionCascade, pseudo: !Map. <number, !WebInspector.SectionCascade>}>} 332 * @return {!Promise.<?{matched: !WebInspector.SectionCascade, pseudo: !Map. <number, !WebInspector.SectionCascade>}>}
335 */ 333 */
(...skipping 2461 matching lines...) Expand 10 before | Expand all | Expand 10 after
2797 * @param {boolean} majorChange 2795 * @param {boolean} majorChange
2798 */ 2796 */
2799 applyStyleText: function(styleText, majorChange) 2797 applyStyleText: function(styleText, majorChange)
2800 { 2798 {
2801 this._applyStyleThrottler.schedule(this._innerApplyStyleText.bind(this, styleText, majorChange)); 2799 this._applyStyleThrottler.schedule(this._innerApplyStyleText.bind(this, styleText, majorChange));
2802 }, 2800 },
2803 2801
2804 /** 2802 /**
2805 * @param {string} styleText 2803 * @param {string} styleText
2806 * @param {boolean} majorChange 2804 * @param {boolean} majorChange
2807 * @param {!WebInspector.Throttler.FinishCallback} finishedCallback 2805 * @return {!Promise.<undefined>}
2808 */ 2806 */
2809 _innerApplyStyleText: function(styleText, majorChange, finishedCallback) 2807 _innerApplyStyleText: function(styleText, majorChange)
2810 { 2808 {
2811 if (!this.treeOutline) { 2809 if (!this.treeOutline)
2812 finishedCallback(); 2810 return Promise.resolve();
2813 return;
2814 }
2815 2811
2816 styleText = styleText.replace(/\s/g, " ").trim(); // Replace &nbsp; with whitespace. 2812 styleText = styleText.replace(/\s/g, " ").trim(); // Replace &nbsp; with whitespace.
2817 if (!styleText.length && majorChange && this._newProperty && !this._prop ertyHasBeenEditedIncrementally) { 2813 if (!styleText.length && majorChange && this._newProperty && !this._prop ertyHasBeenEditedIncrementally) {
2818 // The user deleted everything and never applied a new property valu e via Up/Down scrolling/live editing, so remove the tree element and update. 2814 // The user deleted everything and never applied a new property valu e via Up/Down scrolling/live editing, so remove the tree element and update.
2819 var section = this.section(); 2815 var section = this.section();
2820 this.parent.removeChild(this); 2816 this.parent.removeChild(this);
2821 section.afterUpdate(); 2817 section.afterUpdate();
2822 return; 2818 return Promise.resolve();
2823 } 2819 }
2824 2820
2825 var currentNode = this._parentPane.node(); 2821 var currentNode = this._parentPane.node();
2826 this._parentPane._userOperation = true; 2822 this._parentPane._userOperation = true;
2827 2823
2828 /** 2824 /**
2829 * @param {?WebInspector.CSSStyleDeclaration} newStyle 2825 * @param {?WebInspector.CSSStyleDeclaration} newStyle
2830 * @this {WebInspector.StylePropertyTreeElement} 2826 * @this {WebInspector.StylePropertyTreeElement}
2831 */ 2827 */
2832 function callback(newStyle) 2828 function callback(newStyle)
2833 { 2829 {
2834 delete this._parentPane._userOperation; 2830 delete this._parentPane._userOperation;
2835 2831
2836 if (!newStyle) { 2832 if (!newStyle) {
2837 if (majorChange) { 2833 if (majorChange) {
2838 // It did not apply, cancel editing. 2834 // It did not apply, cancel editing.
2839 this._revertStyleUponEditingCanceled(); 2835 this._revertStyleUponEditingCanceled();
2840 } 2836 }
2841 finishedCallback();
2842 this.styleTextAppliedForTest(); 2837 this.styleTextAppliedForTest();
2843 return; 2838 return;
2844 } 2839 }
2845 this._applyNewStyle(newStyle); 2840 this._applyNewStyle(newStyle);
2846 2841
2847 this._propertyHasBeenEditedIncrementally = true; 2842 this._propertyHasBeenEditedIncrementally = true;
2848 this.property = newStyle.propertyAt(this.property.index); 2843 this.property = newStyle.propertyAt(this.property.index);
2849 2844
2850 // We are happy to update UI if user is not editing. 2845 // We are happy to update UI if user is not editing.
2851 if (!this._parentPane._isEditingStyle && currentNode === this.node() ) 2846 if (!this._parentPane._isEditingStyle && currentNode === this.node() )
2852 this._updatePane(); 2847 this._updatePane();
2853 2848
2854 finishedCallback();
2855 this.styleTextAppliedForTest(); 2849 this.styleTextAppliedForTest();
2856 } 2850 }
2857 2851
2858 // Append a ";" if the new text does not end in ";". 2852 // Append a ";" if the new text does not end in ";".
2859 // FIXME: this does not handle trailing comments. 2853 // FIXME: this does not handle trailing comments.
2860 if (styleText.length && !/;\s*$/.test(styleText)) 2854 if (styleText.length && !/;\s*$/.test(styleText))
2861 styleText += ";"; 2855 styleText += ";";
2862 var overwriteProperty = !this._newProperty || this._propertyHasBeenEdite dIncrementally; 2856 var overwriteProperty = !this._newProperty || this._propertyHasBeenEdite dIncrementally;
2863 this.property.setText(styleText, majorChange, overwriteProperty) 2857 return this.property.setText(styleText, majorChange, overwriteProperty)
2864 .then(callback.bind(this)) 2858 .then(callback.bind(this));
2865 .catch(/** @type {function()} */(finishedCallback));
2866 }, 2859 },
2867 2860
2868 /** 2861 /**
2869 * @override 2862 * @override
2870 * @return {boolean} 2863 * @return {boolean}
2871 */ 2864 */
2872 ondblclick: function() 2865 ondblclick: function()
2873 { 2866 {
2874 return true; // handled 2867 return true; // handled
2875 }, 2868 },
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
3248 3241
3249 /** 3242 /**
3250 * @override 3243 * @override
3251 * @return {?WebInspector.ToolbarItem} 3244 * @return {?WebInspector.ToolbarItem}
3252 */ 3245 */
3253 item: function() 3246 item: function()
3254 { 3247 {
3255 return this._button; 3248 return this._button;
3256 } 3249 }
3257 } 3250 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/elements/PropertiesWidget.js ('k') | Source/devtools/front_end/emulation/MediaQueryInspector.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698