Diff
Modified: trunk/LayoutTests/ChangeLog (117298 => 117299)
--- trunk/LayoutTests/ChangeLog 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/LayoutTests/ChangeLog 2012-05-16 16:11:43 UTC (rev 117299)
@@ -1,3 +1,12 @@
+2012-05-16 Vsevolod Vlasov <[email protected]>
+
+ Web Inspector: Support script snippets saving.
+ https://bugs.webkit.org/show_bug.cgi?id=86632
+
+ Reviewed by Pavel Feldman.
+
+ * inspector/debugger/script-snippet-model.html:
+
2012-05-16 Csaba Osztrogonác <[email protected]>
[Qt] New failing and flakey tests with newer Qt 5
Modified: trunk/LayoutTests/inspector/debugger/script-snippet-model.html (117298 => 117299)
--- trunk/LayoutTests/inspector/debugger/script-snippet-model.html 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/LayoutTests/inspector/debugger/script-snippet-model.html 2012-05-16 16:11:43 UTC (rev 117299)
@@ -21,28 +21,28 @@
{
resetSnippetsSettings();
- var uiSourceCode1 = WebInspector.scriptSnippetModel.createScriptSnippet();
- WebInspector.scriptSnippetModel.renameScriptSnippet(uiSourceCode1, "Snippet1");
+ var snippetJavaScriptSource1 = WebInspector.scriptSnippetModel.createScriptSnippet();
+ WebInspector.scriptSnippetModel.renameScriptSnippet(snippetJavaScriptSource1, "Snippet1");
var content = "";
content += "// This snippet does nothing.\n";
content += "var i = 2+2;\n";
- WebInspector.scriptSnippetModel.setScriptSnippetContent(uiSourceCode1, content);
+ WebInspector.scriptSnippetModel.setScriptSnippetContent(snippetJavaScriptSource1, content);
- var uiSourceCode2 = WebInspector.scriptSnippetModel.createScriptSnippet();
- WebInspector.scriptSnippetModel.renameScriptSnippet(uiSourceCode1, "Snippet2");
+ var snippetJavaScriptSource2 = WebInspector.scriptSnippetModel.createScriptSnippet();
+ WebInspector.scriptSnippetModel.renameScriptSnippet(snippetJavaScriptSource2, "Snippet2");
content = "";
content += "// This snippet creates a function that does nothing.\n";
content += "function doesNothing()\n";
content += "{\n";
content += " var i = 2+2;\n";
content += "}\n";
- WebInspector.scriptSnippetModel.setScriptSnippetContent(uiSourceCode2, content);
+ WebInspector.scriptSnippetModel.setScriptSnippetContent(snippetJavaScriptSource2, content);
- function evaluateSnippetAndDumpEvaluationDetails(uiSourceCode, callback)
+ function evaluateSnippetAndDumpEvaluationDetails(snippetJavaScriptSource, callback)
{
InspectorTest.addSniffer(WebInspector.SnippetScriptMapping.prototype, "addScript", dumpScript);
- WebInspector.scriptSnippetModel.evaluateScriptSnippet(uiSourceCode);
- var snippet = WebInspector.scriptSnippetModel._snippetForUISourceCode.get(uiSourceCode);
+ WebInspector.scriptSnippetModel.evaluateScriptSnippet(snippetJavaScriptSource);
+ var snippet = WebInspector.scriptSnippetModel._snippetStorage.snippetForId(snippetJavaScriptSource.snippetId);
InspectorTest.addResult("Last evaluation source url for snippet: " + snippet._lastEvaluationSourceURL);
InspectorTest.assertEquals(snippet, WebInspector.scriptSnippetModel._snippetForSourceURL(snippet._lastEvaluationSourceURL), "Snippet can not be identified by its evaluation sourceURL.");
@@ -53,16 +53,16 @@
}
}
- evaluateSnippetAndDumpEvaluationDetails(uiSourceCode1, step2);
+ evaluateSnippetAndDumpEvaluationDetails(snippetJavaScriptSource1, step2);
function step2()
{
- evaluateSnippetAndDumpEvaluationDetails(uiSourceCode2, step3);
+ evaluateSnippetAndDumpEvaluationDetails(snippetJavaScriptSource2, step3);
}
function step3()
{
- evaluateSnippetAndDumpEvaluationDetails(uiSourceCode1, next);
+ evaluateSnippetAndDumpEvaluationDetails(snippetJavaScriptSource1, next);
}
}
]);
Modified: trunk/Source/WebCore/ChangeLog (117298 => 117299)
--- trunk/Source/WebCore/ChangeLog 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/Source/WebCore/ChangeLog 2012-05-16 16:11:43 UTC (rev 117299)
@@ -1,3 +1,36 @@
+2012-05-16 Vsevolod Vlasov <[email protected]>
+
+ Web Inspector: Support script snippets saving.
+ https://bugs.webkit.org/show_bug.cgi?id=86632
+
+ Reviewed by Pavel Feldman.
+
+ Added SnippetJavaScriptSource extending _javascript_Source and overriding isEditable() and commitWorkingCopy() methods.
+ ScriptSnippetModel now creates instances of this new class for snippets.
+ Also maps in ScriptSnippetModel simplified.
+
+ * inspector/front-end/_javascript_Source.js:
+ (WebInspector._javascript_Source.prototype.commitWorkingCopy):
+ (WebInspector):
+ * inspector/front-end/_javascript_SourceFrame.js:
+ (WebInspector._javascript_SourceFrame.prototype.commitEditing):
+ * inspector/front-end/ScriptSnippetModel.js:
+ (WebInspector.ScriptSnippetModel):
+ (WebInspector.ScriptSnippetModel.prototype._addScriptSnippet):
+ (WebInspector.ScriptSnippetModel.prototype.deleteScriptSnippet):
+ (WebInspector.ScriptSnippetModel.prototype.renameScriptSnippet):
+ (WebInspector.ScriptSnippetModel.prototype.setScriptSnippetContent):
+ (WebInspector.ScriptSnippetModel.prototype._uiSourceCodeList):
+ (WebInspector.ScriptSnippetModel.prototype._releasedUISourceCodes):
+ (WebInspector.SnippetJavaScriptSource):
+ (WebInspector.SnippetJavaScriptSource.prototype.isEditable):
+ (WebInspector.SnippetJavaScriptSource.prototype.commitWorkingCopy):
+ (WebInspector.SnippetJavaScriptSource.prototype.get snippetId):
+ * inspector/front-end/ScriptsPanel.js:
+ (WebInspector.ScriptsPanel.prototype.set _fileRenamed):
+ (WebInspector.ScriptsPanel.prototype._snippetCreationRequested.callback):
+ (WebInspector.ScriptsPanel.prototype._snippetCreationRequested):
+
2012-05-16 Sudarsana Nagineni <[email protected]>
[EFL] Memory leak in RenderThemeEfl
Modified: trunk/Source/WebCore/inspector/front-end/_javascript_Source.js (117298 => 117299)
--- trunk/Source/WebCore/inspector/front-end/_javascript_Source.js 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/Source/WebCore/inspector/front-end/_javascript_Source.js 2012-05-16 16:11:43 UTC (rev 117299)
@@ -174,8 +174,7 @@
commitWorkingCopy: function(callback)
{
- if (this.isDirty())
- WebInspector.DebuggerResourceBinding.setScriptSource(this, this.workingCopy(), callback);
+ WebInspector.DebuggerResourceBinding.setScriptSource(this, this.workingCopy(), callback);
}
}
Modified: trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js (117298 => 117299)
--- trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js 2012-05-16 16:11:43 UTC (rev 117299)
@@ -111,6 +111,8 @@
commitEditing: function(text)
{
this._editingContent = true;
+ if (!this._uiSourceCode.isDirty())
+ return;
this._uiSourceCode.commitWorkingCopy(this._didEditContent.bind(this, text));
},
Modified: trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js (117298 => 117299)
--- trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/Source/WebCore/inspector/front-end/ScriptSnippetModel.js 2012-05-16 16:11:43 UTC (rev 117299)
@@ -36,8 +36,7 @@
{
this._uiSourceCodeForScriptId = {};
this._scriptForUISourceCode = new Map();
- this._uiSourceCodeForSnippet = new Map();
- this._snippetForUISourceCode = new Map();
+ this._snippetJavaScriptSourceForSnippetId = {};
this._snippetStorage = new WebInspector.SnippetStorage("script", "Script snippet #");
this._lastSnippetEvaluationIndexSetting = WebInspector.settings.createSetting("lastSnippetEvaluationIndex", 0);
@@ -61,7 +60,7 @@
},
/**
- * @return {WebInspector.UISourceCode}
+ * @return {WebInspector.SnippetJavaScriptSource}
*/
createScriptSnippet: function()
{
@@ -71,63 +70,62 @@
/**
* @param {WebInspector.Snippet} snippet
- * @return {WebInspector.UISourceCode}
+ * @return {WebInspector.SnippetJavaScriptSource}
*/
_addScriptSnippet: function(snippet)
{
- var uiSourceCode = new WebInspector._javascript_Source(snippet.name, new WebInspector.SnippetContentProvider(snippet), this._snippetScriptMapping, true);
- uiSourceCode.isSnippet = true;
- this._uiSourceCodeForSnippet.put(snippet, uiSourceCode);
- this._snippetForUISourceCode.put(uiSourceCode, snippet);
- this._snippetScriptMapping._fireUISourceCodeAdded(uiSourceCode);
- return uiSourceCode;
+ var snippetJavaScriptSource = new WebInspector.SnippetJavaScriptSource(snippet.id, snippet.name, new WebInspector.SnippetContentProvider(snippet), this);
+ this._snippetJavaScriptSourceForSnippetId[snippet.id] = snippetJavaScriptSource;
+ this._snippetScriptMapping._fireUISourceCodeAdded(snippetJavaScriptSource);
+ return snippetJavaScriptSource;
},
/**
- * @param {WebInspector.UISourceCode} uiSourceCode
+ * @param {WebInspector.SnippetJavaScriptSource} snippetJavaScriptSource
*/
- deleteScriptSnippet: function(uiSourceCode)
+ deleteScriptSnippet: function(snippetJavaScriptSource)
{
- var snippet = this._snippetForUISourceCode.get(uiSourceCode);
+ var snippet = this._snippetStorage.snippetForId(snippetJavaScriptSource.snippetId);
this._snippetStorage.deleteSnippet(snippet);
- this._releaseSnippetScript(uiSourceCode);
- this._uiSourceCodeForSnippet.remove(snippet);
- this._snippetForUISourceCode.remove(uiSourceCode);
- this._snippetScriptMapping._fireUISourceCodeRemoved(uiSourceCode);
+ this._releaseSnippetScript(snippetJavaScriptSource);
+ delete this._snippetJavaScriptSourceForSnippetId[snippet.id];
+ this._snippetScriptMapping._fireUISourceCodeRemoved(snippetJavaScriptSource);
},
/**
- * @param {WebInspector.UISourceCode} uiSourceCode
+ * @param {WebInspector.SnippetJavaScriptSource} snippetJavaScriptSource
* @param {string} newName
*/
- renameScriptSnippet: function(uiSourceCode, newName)
+ renameScriptSnippet: function(snippetJavaScriptSource, newName)
{
- var snippet = this._snippetForUISourceCode.get(uiSourceCode)
+ var snippet = this._snippetStorage.snippetForId(snippetJavaScriptSource.snippetId);
if (!snippet || !newName || snippet.name === newName)
return;
snippet.name = newName;
- uiSourceCode.urlChanged(snippet.name);
+ snippetJavaScriptSource.urlChanged(snippet.name);
},
/**
- * @param {WebInspector.UISourceCode} uiSourceCode
+ * @param {WebInspector.SnippetJavaScriptSource} snippetJavaScriptSource
* @param {string} newContent
*/
- setScriptSnippetContent: function(uiSourceCode, newContent)
+ setScriptSnippetContent: function(snippetJavaScriptSource, newContent)
{
- this._snippetForUISourceCode.get(uiSourceCode).content = newContent;
+ var snippet = this._snippetStorage.snippetForId(snippetJavaScriptSource.snippetId);
+ snippet.content = newContent;
+ snippetJavaScriptSource.contentChanged(newContent);
},
/**
- * @param {WebInspector.UISourceCode} uiSourceCode
+ * @param {WebInspector.SnippetJavaScriptSource} snippetJavaScriptSource
*/
- evaluateScriptSnippet: function(uiSourceCode)
+ evaluateScriptSnippet: function(snippetJavaScriptSource)
{
- this._releaseSnippetScript(uiSourceCode);
+ this._releaseSnippetScript(snippetJavaScriptSource);
var evaluationIndex = this._lastSnippetEvaluationIndexSetting.get() + 1;
this._lastSnippetEvaluationIndexSetting.set(evaluationIndex);
- var snippet = this._snippetForUISourceCode.get(uiSourceCode);
+ var snippet = this._snippetStorage.snippetForId(snippetJavaScriptSource.snippetId);
var sourceURL = this._sourceURLForSnippet(snippet, evaluationIndex);
snippet._lastEvaluationSourceURL = sourceURL;
var _expression_ = "\n//@ sourceURL=" + sourceURL + "\n" + snippet.content;
@@ -174,8 +172,9 @@
*/
_uiSourceCodes: function()
{
- var result = this._uiSourceCodeForSnippet.values();
- result = result.concat(this._releasedUISourceCodes());
+ var result = this._releasedUISourceCodes();
+ for (var snippetId in this._snippetJavaScriptSourceForSnippetId)
+ result.push(this._snippetJavaScriptSourceForSnippetId[snippetId]);
return result;
},
@@ -187,9 +186,8 @@
var result = [];
for (var scriptId in this._uiSourceCodeForScriptId) {
var uiSourceCode = this._uiSourceCodeForScriptId[scriptId];
- if (uiSourceCode.isSnippet)
- continue;
- result.push(uiSourceCode);
+ if (!uiSourceCode.isSnippet)
+ result.push(uiSourceCode);
}
return result;
},
@@ -199,16 +197,16 @@
*/
_addScript: function(script)
{
- var snippet = this._snippetForSourceURL(script.sourceURL);
- if (!snippet) {
+ var snippetId = this._snippetIdForSourceURL(script.sourceURL);
+ var snippetJavaScriptSource = this._snippetJavaScriptSourceForSnippetId[snippetId];
+ if (!snippetJavaScriptSource) {
this._createUISourceCodeForScript(script);
return;
}
- var uiSourceCode = this._uiSourceCodeForSnippet.get(snippet);
- console.assert(!this._scriptForUISourceCode.get(uiSourceCode));
-
- this._uiSourceCodeForScriptId[script.scriptId] = uiSourceCode;
- this._scriptForUISourceCode.put(uiSourceCode, script);
+
+ console.assert(!this._scriptForUISourceCode.get(snippetJavaScriptSource));
+ this._uiSourceCodeForScriptId[script.scriptId] = snippetJavaScriptSource;
+ this._scriptForUISourceCode.put(snippetJavaScriptSource, script);
script.setSourceMapping(this._snippetScriptMapping);
},
@@ -226,16 +224,16 @@
},
/**
- * @param {WebInspector.UISourceCode} uiSourceCode
+ * @param {WebInspector.SnippetJavaScriptSource} snippetJavaScriptSource
*/
- _releaseSnippetScript: function(uiSourceCode)
+ _releaseSnippetScript: function(snippetJavaScriptSource)
{
- var script = this._scriptForUISourceCode.get(uiSourceCode);
+ var script = this._scriptForUISourceCode.get(snippetJavaScriptSource);
if (!script)
return;
delete this._uiSourceCodeForScriptId[script.scriptId];
- this._scriptForUISourceCode.remove(uiSourceCode);
+ this._scriptForUISourceCode.remove(snippetJavaScriptSource);
this._createUISourceCodeForScript(script);
},
@@ -295,6 +293,48 @@
/**
* @constructor
+ * @extends {WebInspector._javascript_Source}
+ * @param {string} snippetId
+ * @param {string} snippetName
+ * @param {WebInspector.ContentProvider} contentProvider
+ * @param {WebInspector.ScriptSnippetModel} scriptSnippetModel
+ */
+WebInspector.SnippetJavaScriptSource = function(snippetId, snippetName, contentProvider, scriptSnippetModel)
+{
+ WebInspector._javascript_Source.call(this, snippetName, contentProvider, scriptSnippetModel.scriptMapping, true);
+ this._snippetId = snippetId;
+ this._scriptSnippetModel = scriptSnippetModel;
+ this.isSnippet = true;
+}
+
+WebInspector.SnippetJavaScriptSource.prototype = {
+ /**
+ * @return {boolean}
+ */
+ isEditable: function()
+ {
+ return true;
+ },
+
+ commitWorkingCopy: function(callback)
+ {
+ this._scriptSnippetModel.setScriptSnippetContent(this, this.workingCopy());
+ callback();
+ },
+
+ /**
+ * @return {string}
+ */
+ get snippetId()
+ {
+ return this._snippetId;
+ }
+}
+
+WebInspector.SnippetJavaScriptSource.prototype.__proto__ = WebInspector._javascript_Source.prototype;
+
+/**
+ * @constructor
* @extends {WebInspector.Object}
* @implements {WebInspector.SourceMapping}
* @implements {WebInspector.UISourceCodeProvider}
Modified: trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js (117298 => 117299)
--- trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/Source/WebCore/inspector/front-end/ScriptsPanel.js 2012-05-16 16:11:43 UTC (rev 117299)
@@ -970,28 +970,29 @@
_fileRenamed: function(event)
{
- var uiSourceCode = /** @type {WebInspector.UISourceCode} */ event.data.uiSourceCode;
+ var uiSourceCode = /** @type {WebInspector.UISourceCode} */ event.data.uiSourceCode;
var name = /** @type {string} */ event.data.name;
if (!uiSourceCode.isSnippet)
return;
- WebInspector.scriptSnippetModel.renameScriptSnippet(uiSourceCode, name);
+ var snippetJavaScriptSource = /** @type {WebInspector.SnippetJavaScriptSource} */ uiSourceCode;
+ WebInspector.scriptSnippetModel.renameScriptSnippet(snippetJavaScriptSource, name);
},
_snippetCreationRequested: function()
{
- var uiSourceCode = WebInspector.scriptSnippetModel.createScriptSnippet();
- this._showSourceLine(uiSourceCode);
+ var snippetJavaScriptSource = WebInspector.scriptSnippetModel.createScriptSnippet();
+ this._showSourceLine(snippetJavaScriptSource);
var shouldHideNavigator = !this._navigatorController.isNavigatorPinned();
if (this._navigatorController.isNavigatorHidden())
this._navigatorController.showNavigatorOverlay();
- this._navigator.rename(uiSourceCode, callback.bind(this));
+ this._navigator.rename(snippetJavaScriptSource, callback.bind(this));
function callback()
{
if (shouldHideNavigator)
this._navigatorController.hideNavigatorOverlay();
- this._showSourceLine(uiSourceCode);
+ this._showSourceLine(snippetJavaScriptSource);
}
}
}
Modified: trunk/Source/WebCore/inspector/front-end/StylesPanel.js (117298 => 117299)
--- trunk/Source/WebCore/inspector/front-end/StylesPanel.js 2012-05-16 16:09:41 UTC (rev 117298)
+++ trunk/Source/WebCore/inspector/front-end/StylesPanel.js 2012-05-16 16:11:43 UTC (rev 117299)
@@ -143,18 +143,11 @@
var sourceFrame = this._sourceFramesForResource.get(uiSourceCode);
if (!sourceFrame) {
sourceFrame = new WebInspector.EditableResourceSourceFrame(uiSourceCode);
- sourceFrame.addEventListener(WebInspector.EditableResourceSourceFrame.Events.TextEdited, this._textEdited, this);
this._sourceFramesForResource.put(uiSourceCode, sourceFrame);
}
return sourceFrame;
},
- _textEdited: function(event)
- {
- var sourceFrame = /** @type {WebInspector.EditableResourceSourceFrame} */ event.data;
- this._editorContainer.setFileIsDirty(sourceFrame.resource, sourceFrame.isDirty());
- },
-
_itemSelected: function(event)
{
var uiSourceCode = /** @type {WebInspector.UISourceCode} */ event.data.uiSourceCode;