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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/snippets/ScriptSnippetModel.js

Issue 2588503002: DevTools: Cache the original content on UISourceCode (Closed)
Patch Set: Move logic to the project level Created 3 years, 12 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) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 * @unrestricted 547 * @unrestricted
548 */ 548 */
549 Snippets.SnippetsProject = class extends Bindings.ContentProviderBasedProject { 549 Snippets.SnippetsProject = class extends Bindings.ContentProviderBasedProject {
550 /** 550 /**
551 * @param {!Workspace.Workspace} workspace 551 * @param {!Workspace.Workspace} workspace
552 * @param {!Snippets.ScriptSnippetModel} model 552 * @param {!Snippets.ScriptSnippetModel} model
553 */ 553 */
554 constructor(workspace, model) { 554 constructor(workspace, model) {
555 super(workspace, 'snippets:', Workspace.projectTypes.Snippets, '', false /* isServiceProject */); 555 super(workspace, 'snippets:', Workspace.projectTypes.Snippets, '', false /* isServiceProject */);
556 this._model = model; 556 this._model = model;
557 /** @type {!WeakMap<!Workspace.UISourceCode, !Promise<?string>>} */
558 this._originalContent = new WeakMap();
557 } 559 }
558 560
559 /** 561 /**
560 * @param {string} name 562 * @param {string} name
561 * @param {!Common.ContentProvider} contentProvider 563 * @param {!Common.ContentProvider} contentProvider
562 * @return {!Workspace.UISourceCode} 564 * @return {!Workspace.UISourceCode}
563 */ 565 */
564 addSnippet(name, contentProvider) { 566 addSnippet(name, contentProvider) {
565 return this.addContentProvider(name, contentProvider); 567 return this.addContentProvider(name, contentProvider);
566 } 568 }
567 569
568 /** 570 /**
569 * @override 571 * @override
570 * @return {boolean} 572 * @return {boolean}
571 */ 573 */
572 canSetFileContent() { 574 canSetFileContent() {
573 return true; 575 return true;
574 } 576 }
577 /**
578 * @override
579 * @param {!Workspace.UISourceCode} uiSourceCode
580 * @return {!Promise<?string>}
581 */
582 requestOriginalFileContent(uiSourceCode) {
583 if (this._originalContent.has(uiSourceCode))
584 return this._originalContent.get(uiSourceCode);
585 var promise = super.requestOriginalFileContent(uiSourceCode);
586 this._originalContent.set(uiSourceCode, promise);
587 return promise;
588 }
575 589
576 /** 590 /**
577 * @override 591 * @override
578 * @param {!Workspace.UISourceCode} uiSourceCode 592 * @param {!Workspace.UISourceCode} uiSourceCode
579 * @param {string} newContent 593 * @param {string} newContent
580 * @param {function(?string)} callback 594 * @param {function()} callback
581 */ 595 */
582 setFileContent(uiSourceCode, newContent, callback) { 596 setFileContent(uiSourceCode, newContent, callback) {
583 this._model._setScriptSnippetContent(uiSourceCode.url(), newContent); 597 this.requestOriginalFileContent(uiSourceCode).then(() => {
584 callback(''); 598 this._model._setScriptSnippetContent(uiSourceCode.url(), newContent);
599 callback();
600 });
585 } 601 }
586 602
587 /** 603 /**
588 * @override 604 * @override
589 * @return {boolean} 605 * @return {boolean}
590 */ 606 */
591 canRename() { 607 canRename() {
592 return true; 608 return true;
593 } 609 }
594 610
(...skipping 24 matching lines...) Expand all
619 */ 635 */
620 deleteFile(url) { 636 deleteFile(url) {
621 this._model.deleteScriptSnippet(url); 637 this._model.deleteScriptSnippet(url);
622 } 638 }
623 }; 639 };
624 640
625 /** 641 /**
626 * @type {!Snippets.ScriptSnippetModel} 642 * @type {!Snippets.ScriptSnippetModel}
627 */ 643 */
628 Snippets.scriptSnippetModel = new Snippets.ScriptSnippetModel(Workspace.workspac e); 644 Snippets.scriptSnippetModel = new Snippets.ScriptSnippetModel(Workspace.workspac e);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698