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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/workspace/UISourceCode.js

Issue 2567283004: DevTools: drastically simplify UISourceCode.checkContentUpdated (Closed)
Patch Set: kill stale test Created 4 years 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 | « third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 return Promise.resolve(this._content); 215 return Promise.resolve(this._content);
216 var promise = this._requestContentPromise; 216 var promise = this._requestContentPromise;
217 if (!promise) { 217 if (!promise) {
218 promise = new Promise(fulfill => this._requestContentCallback = fulfill); 218 promise = new Promise(fulfill => this._requestContentCallback = fulfill);
219 this._requestContentPromise = promise; 219 this._requestContentPromise = promise;
220 this._project.requestFileContent(this, this._fireContentAvailable.bind(thi s)); 220 this._project.requestFileContent(this, this._fireContentAvailable.bind(thi s));
221 } 221 }
222 return promise; 222 return promise;
223 } 223 }
224 224
225 /** 225 checkContentUpdated() {
226 * @param {function()} callback 226 if (!this._contentLoaded && !this._forceLoadOnCheckContent)
227 */ 227 return;
228 _pushCheckContentUpdatedCallback(callback) {
229 if (!this._checkContentUpdatedCallbacks)
230 this._checkContentUpdatedCallbacks = [];
231 this._checkContentUpdatedCallbacks.push(callback);
232 }
233 228
234 _terminateContentCheck() { 229 if (!this._project.canSetFileContent() || this._checkingContent)
235 delete this._checkingContent;
236 if (this._checkContentUpdatedCallbacks) {
237 this._checkContentUpdatedCallbacks.forEach(function(callback) {
238 callback();
239 });
240 delete this._checkContentUpdatedCallbacks;
241 }
242 }
243
244 /**
245 * @param {boolean=} forceLoad
246 * @param {function()=} callback
247 */
248 checkContentUpdated(forceLoad, callback) {
249 callback = callback || function() {};
250 forceLoad = forceLoad || this._forceLoadOnCheckContent;
251 if (!this.contentLoaded() && !forceLoad) {
252 callback();
253 return;
254 }
255
256 if (!this._project.canSetFileContent()) {
257 callback();
258 return;
259 }
260 this._pushCheckContentUpdatedCallback(callback);
261
262 if (this._checkingContent)
263 return; 230 return;
264 231
265 this._checkingContent = true; 232 this._checkingContent = true;
266 this._project.requestFileContent(this, contentLoaded.bind(this)); 233 this._project.requestFileContent(this, contentLoaded.bind(this));
267 234
268 /** 235 /**
269 * @param {?string} updatedContent 236 * @param {?string} updatedContent
270 * @this {Workspace.UISourceCode} 237 * @this {Workspace.UISourceCode}
271 */ 238 */
272 function contentLoaded(updatedContent) { 239 function contentLoaded(updatedContent) {
240 this._checkingContent = false;
273 if (updatedContent === null) { 241 if (updatedContent === null) {
274 var workingCopy = this.workingCopy(); 242 var workingCopy = this.workingCopy();
275 this._contentCommitted('', false); 243 this._contentCommitted('', false);
276 this.setWorkingCopy(workingCopy); 244 this.setWorkingCopy(workingCopy);
277 this._terminateContentCheck();
278 return; 245 return;
279 } 246 }
280 if (typeof this._lastAcceptedContent === 'string' && this._lastAcceptedCon tent === updatedContent) { 247 if (typeof this._lastAcceptedContent === 'string' && this._lastAcceptedCon tent === updatedContent)
281 this._terminateContentCheck();
282 return; 248 return;
283 }
284 249
285 if (this._content === updatedContent) { 250 if (this._content === updatedContent) {
286 delete this._lastAcceptedContent; 251 delete this._lastAcceptedContent;
287 this._terminateContentCheck();
288 return; 252 return;
289 } 253 }
290 254
291 if (!this.isDirty() || this._workingCopy === updatedContent) { 255 if (!this.isDirty() || this._workingCopy === updatedContent) {
292 this._contentCommitted(updatedContent, false); 256 this._contentCommitted(updatedContent, false);
293 this._terminateContentCheck();
294 return; 257 return;
295 } 258 }
296 259
297 var shouldUpdate = 260 var shouldUpdate =
298 window.confirm(Common.UIString('This file was changed externally. Woul d you like to reload it?')); 261 window.confirm(Common.UIString('This file was changed externally. Woul d you like to reload it?'));
299 if (shouldUpdate) 262 if (shouldUpdate)
300 this._contentCommitted(updatedContent, false); 263 this._contentCommitted(updatedContent, false);
301 else 264 else
302 this._lastAcceptedContent = updatedContent; 265 this._lastAcceptedContent = updatedContent;
303 this._terminateContentCheck();
304 } 266 }
305 } 267 }
306 268
307 forceLoadOnCheckContent() { 269 forceLoadOnCheckContent() {
308 this._forceLoadOnCheckContent = true; 270 this._forceLoadOnCheckContent = true;
309 } 271 }
310 272
311 /** 273 /**
312 * @return {!Promise<?string>} 274 * @return {!Promise<?string>}
313 */ 275 */
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 Workspace.UISourceCodeMetadata = class { 902 Workspace.UISourceCodeMetadata = class {
941 /** 903 /**
942 * @param {?Date} modificationTime 904 * @param {?Date} modificationTime
943 * @param {?number} contentSize 905 * @param {?number} contentSize
944 */ 906 */
945 constructor(modificationTime, contentSize) { 907 constructor(modificationTime, contentSize) {
946 this.modificationTime = modificationTime; 908 this.modificationTime = modificationTime;
947 this.contentSize = contentSize; 909 this.contentSize = contentSize;
948 } 910 }
949 }; 911 };
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/sources/UISourceCodeFrame.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698