diff --git a/appengine/storage.js b/appengine/storage.js
index 87d9cae76..8141806d5 100644
--- a/appengine/storage.js
+++ b/appengine/storage.js
@@ -60,7 +60,7 @@ BlocklyStorage.restoreBlocks = function(opt_workspace) {
if ('localStorage' in window && window.localStorage[url]) {
var workspace = opt_workspace || Blockly.getMainWorkspace();
var xml = Blockly.Xml.textToDom(window.localStorage[url]);
- Blockly.Xml.domToWorkspace(workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, workspace);
}
};
@@ -181,7 +181,7 @@ BlocklyStorage.loadXml_ = function(xml, workspace) {
}
// Clear the workspace to avoid merge.
workspace.clear();
- Blockly.Xml.domToWorkspace(workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, workspace);
};
/**
diff --git a/core/connection.js b/core/connection.js
index 434061be0..89b4aef27 100644
--- a/core/connection.js
+++ b/core/connection.js
@@ -535,7 +535,7 @@ Blockly.Connection.prototype.disconnect = function() {
var shadow = parentConnection.getShadowDom();
if (parentBlock.workspace && shadow && Blockly.Events.recordUndo) {
var blockShadow =
- Blockly.Xml.domToBlock(parentBlock.workspace, shadow);
+ Blockly.Xml.domToBlock(shadow, parentBlock.workspace);
if (blockShadow.outputConnection) {
parentConnection.connect(blockShadow.outputConnection);
} else if (blockShadow.previousConnection) {
diff --git a/core/contextmenu.js b/core/contextmenu.js
index 6bfac35c2..3a1fc6e95 100644
--- a/core/contextmenu.js
+++ b/core/contextmenu.js
@@ -124,7 +124,7 @@ Blockly.ContextMenu.hide = function() {
Blockly.ContextMenu.callbackFactory = function(block, xml) {
return function() {
Blockly.Events.disable();
- var newBlock = Blockly.Xml.domToBlock(block.workspace, xml);
+ var newBlock = Blockly.Xml.domToBlock(xml, block.workspace);
// Move the new block next to the old block.
var xy = block.getRelativeToSurfaceXY();
if (block.RTL) {
diff --git a/core/events.js b/core/events.js
index 7570fb8e9..b3c8c4f66 100644
--- a/core/events.js
+++ b/core/events.js
@@ -324,7 +324,7 @@ Blockly.Events.Create.prototype.run = function(forward) {
var workspace = Blockly.Workspace.getById(this.workspaceId);
var xml = goog.dom.createDom('xml');
xml.appendChild(this.xml);
- Blockly.Xml.domToWorkspace(workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, workspace);
} else {
for (var i = 0, id; id = this.ids[i]; i++) {
var block = Blockly.Block.getById(id);
@@ -389,7 +389,7 @@ Blockly.Events.Delete.prototype.run = function(forward) {
var workspace = Blockly.Workspace.getById(this.workspaceId);
var xml = goog.dom.createDom('xml');
xml.appendChild(this.oldXml);
- Blockly.Xml.domToWorkspace(workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, workspace);
}
};
diff --git a/core/flyout.js b/core/flyout.js
index 39d579e86..84bcbb810 100644
--- a/core/flyout.js
+++ b/core/flyout.js
@@ -393,7 +393,7 @@ Blockly.Flyout.prototype.show = function(xmlList) {
this.permanentlyDisabled_.length = 0;
for (var i = 0, xml; xml = xmlList[i]; i++) {
if (xml.tagName && xml.tagName.toUpperCase() == 'BLOCK') {
- var block = Blockly.Xml.domToBlock(this.workspace_, xml);
+ var block = Blockly.Xml.domToBlock(xml, this.workspace_);
if (block.disabled) {
// Record blocks that were initially disabled.
// Do not enable these blocks as a result of capacity filtering.
@@ -636,7 +636,7 @@ Blockly.Flyout.prototype.createBlockFunc_ = function(originBlock) {
Blockly.Events.disable();
// Create the new block by cloning the block in the flyout (via XML).
var xml = Blockly.Xml.blockToDom(originBlock);
- var block = Blockly.Xml.domToBlock(workspace, xml);
+ var block = Blockly.Xml.domToBlock(xml, workspace);
// Place it in the same spot as the flyout copy.
var svgRootOld = originBlock.getSvgRoot();
if (!svgRootOld) {
diff --git a/core/workspace_svg.js b/core/workspace_svg.js
index aa4261185..13818fd9a 100644
--- a/core/workspace_svg.js
+++ b/core/workspace_svg.js
@@ -468,7 +468,7 @@ Blockly.WorkspaceSvg.prototype.paste = function(xmlBlock) {
}
Blockly.terminateDrag_(); // Dragging while pasting? No.
Blockly.Events.disable();
- var block = Blockly.Xml.domToBlock(this, xmlBlock);
+ var block = Blockly.Xml.domToBlock(xmlBlock, this);
// Move the duplicate to original position.
var blockX = parseInt(xmlBlock.getAttribute('x'), 10);
var blockY = parseInt(xmlBlock.getAttribute('y'), 10);
diff --git a/core/xml.js b/core/xml.js
index 3cfe3663c..e6e3a1c5a 100644
--- a/core/xml.js
+++ b/core/xml.js
@@ -268,10 +268,17 @@ Blockly.Xml.textToDom = function(text) {
/**
* Decode an XML DOM and create blocks on the workspace.
- * @param {!Blockly.Workspace} workspace The workspace.
* @param {!Element} xml XML DOM.
+ * @param {!Blockly.Workspace} workspace The workspace.
*/
-Blockly.Xml.domToWorkspace = function(workspace, xml) {
+Blockly.Xml.domToWorkspace = function(xml, workspace) {
+ if (xml instanceof Blockly.Workspace) {
+ var swap = xml;
+ xml = workspace;
+ workspace = swap;
+ console.warn('Deprecated call to Blockly.Xml.domToWorkspace, ' +
+ 'swap the arguments.');
+ }
var width; // Not used in LTR.
if (workspace.RTL) {
width = workspace.getWidth();
@@ -289,7 +296,7 @@ Blockly.Xml.domToWorkspace = function(workspace, xml) {
var xmlChild = xml.childNodes[i];
var name = xmlChild.nodeName.toLowerCase();
if (name == 'block' || name == 'shadow') {
- var block = Blockly.Xml.domToBlock(workspace, xmlChild);
+ var block = Blockly.Xml.domToBlock(xmlChild, workspace);
var blockX = parseInt(xmlChild.getAttribute('x'), 10);
var blockY = parseInt(xmlChild.getAttribute('y'), 10);
if (!isNaN(blockX) && !isNaN(blockY)) {
@@ -306,14 +313,21 @@ Blockly.Xml.domToWorkspace = function(workspace, xml) {
/**
* Decode an XML block tag and create a block (and possibly sub blocks) on the
* workspace.
- * @param {!Blockly.Workspace} workspace The workspace.
* @param {!Element} xmlBlock XML block element.
+ * @param {!Blockly.Workspace} workspace The workspace.
* @return {!Blockly.Block} The root block created.
*/
-Blockly.Xml.domToBlock = function(workspace, xmlBlock) {
+Blockly.Xml.domToBlock = function(xmlBlock, workspace) {
+ if (xmlBlock instanceof Blockly.Workspace) {
+ var swap = xmlBlock;
+ xmlBlock = workspace;
+ workspace = swap;
+ console.warn('Deprecated call to Blockly.Xml.domToBlock, ' +
+ 'swap the arguments.');
+ }
// Create top-level block.
Blockly.Events.disable();
- var topBlock = Blockly.Xml.domToBlockHeadless_(workspace, xmlBlock);
+ var topBlock = Blockly.Xml.domToBlockHeadless_(xmlBlock, workspace);
if (workspace.rendered) {
// Hide connections to speed up assembly.
topBlock.setConnectionsHidden(true);
@@ -347,12 +361,12 @@ Blockly.Xml.domToBlock = function(workspace, xmlBlock) {
/**
* Decode an XML block tag and create a block (and possibly sub blocks) on the
* workspace.
- * @param {!Blockly.Workspace} workspace The workspace.
* @param {!Element} xmlBlock XML block element.
+ * @param {!Blockly.Workspace} workspace The workspace.
* @return {!Blockly.Block} The root block created.
* @private
*/
-Blockly.Xml.domToBlockHeadless_ = function(workspace, xmlBlock) {
+Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) {
var block = null;
var prototypeName = xmlBlock.getAttribute('type');
if (!prototypeName) {
@@ -447,8 +461,8 @@ Blockly.Xml.domToBlockHeadless_ = function(workspace, xmlBlock) {
input.connection.setShadowDom(childShadowNode);
}
if (childBlockNode) {
- blockChild = Blockly.Xml.domToBlockHeadless_(workspace,
- childBlockNode);
+ blockChild = Blockly.Xml.domToBlockHeadless_(childBlockNode,
+ workspace);
if (blockChild.outputConnection) {
input.connection.connect(blockChild.outputConnection);
} else if (blockChild.previousConnection) {
@@ -469,8 +483,8 @@ Blockly.Xml.domToBlockHeadless_ = function(workspace, xmlBlock) {
// This could happen if there is more than one XML 'next' tag.
throw 'Next statement is already connected.';
}
- blockChild = Blockly.Xml.domToBlockHeadless_(workspace,
- childBlockNode);
+ blockChild = Blockly.Xml.domToBlockHeadless_(childBlockNode,
+ workspace);
if (!blockChild.previousConnection) {
throw 'Next block does not have previous statement.';
}
diff --git a/demos/blockfactory/factory.js b/demos/blockfactory/factory.js
index 246b2b555..375ad1386 100644
--- a/demos/blockfactory/factory.js
+++ b/demos/blockfactory/factory.js
@@ -786,7 +786,7 @@ function init() {
mainWorkspace);
} else {
var xml = '';
- Blockly.Xml.domToWorkspace(mainWorkspace, Blockly.Xml.textToDom(xml));
+ Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(xml), mainWorkspace);
}
mainWorkspace.clearUndo();
diff --git a/demos/code/code.js b/demos/code/code.js
index 5380cdf9b..5668dfe31 100644
--- a/demos/code/code.js
+++ b/demos/code/code.js
@@ -139,11 +139,11 @@ Code.loadBlocks = function(defaultXml) {
// Language switching stores the blocks during the reload.
delete window.sessionStorage.loadOnceBlocks;
var xml = Blockly.Xml.textToDom(loadOnce);
- Blockly.Xml.domToWorkspace(Code.workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, Code.workspace);
} else if (defaultXml) {
// Load the editor with default starting blocks.
var xml = Blockly.Xml.textToDom(defaultXml);
- Blockly.Xml.domToWorkspace(Code.workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, Code.workspace);
} else if ('BlocklyStorage' in window) {
// Restore saved blocks in a separate thread so that subsequent
// initialization is not affected from a failed load.
@@ -270,7 +270,7 @@ Code.tabClick = function(clickedName) {
}
if (xmlDom) {
Code.workspace.clear();
- Blockly.Xml.domToWorkspace(Code.workspace, xmlDom);
+ Blockly.Xml.domToWorkspace(xmlDom, Code.workspace);
}
}
diff --git a/demos/generator/index.html b/demos/generator/index.html
index 31890a665..0687e963e 100644
--- a/demos/generator/index.html
+++ b/demos/generator/index.html
@@ -116,8 +116,8 @@
var workspace = Blockly.inject('blocklyDiv',
{media: '../../media/',
toolbox: document.getElementById('toolbox')});
- Blockly.Xml.domToWorkspace(workspace,
- document.getElementById('startBlocks'));
+ Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
+ workspace);
function showCode() {
// Generate JavaScript code and display it.
diff --git a/demos/graph/index.html b/demos/graph/index.html
index 709fd502c..7e9daf2dd 100644
--- a/demos/graph/index.html
+++ b/demos/graph/index.html
@@ -338,8 +338,8 @@ Graph.init = function() {
{collapse: false,
media: '../../media/',
toolbox: document.getElementById('toolbox')});
- Blockly.Xml.domToWorkspace(Graph.workspace,
- document.getElementById('startBlocks'));
+ Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
+ Graph.workspace);
Graph.workspace.clearUndo();
// When Blockly changes, update the graph.
diff --git a/demos/headless/index.html b/demos/headless/index.html
index 9df0dc806..62d49fdfa 100644
--- a/demos/headless/index.html
+++ b/demos/headless/index.html
@@ -110,7 +110,7 @@
}
// Create a headless workspace.
var workspace = new Blockly.Workspace();
- Blockly.Xml.domToWorkspace(workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, workspace);
var code = Blockly.Python.workspaceToCode(workspace);
document.getElementById('code_output').value = code;
}
diff --git a/demos/interpreter/index.html b/demos/interpreter/index.html
index a4fadc9d0..ba481f1af 100644
--- a/demos/interpreter/index.html
+++ b/demos/interpreter/index.html
@@ -124,8 +124,8 @@
var workspace = Blockly.inject('blocklyDiv',
{media: '../../media/',
toolbox: document.getElementById('toolbox')});
- Blockly.Xml.domToWorkspace(workspace,
- document.getElementById('startBlocks'));
+ Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
+ workspace);
var myInterpreter = null;
diff --git a/demos/plane/plane.js b/demos/plane/plane.js
index e19f8a46f..3b05eee01 100644
--- a/demos/plane/plane.js
+++ b/demos/plane/plane.js
@@ -143,11 +143,11 @@ Plane.loadBlocks = function(defaultXml) {
// Language switching stores the blocks during the reload.
delete window.sessionStorage.loadOnceBlocks;
var xml = Blockly.Xml.textToDom(loadOnce);
- Blockly.Xml.domToWorkspace(Plane.workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, Plane.workspace);
} else if (defaultXml) {
// Load the editor with default starting blocks.
var xml = Blockly.Xml.textToDom(defaultXml);
- Blockly.Xml.domToWorkspace(Plane.workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, Plane.workspace);
}
Plane.workspace.clearUndo();
};
diff --git a/demos/rtl/index.html b/demos/rtl/index.html
index a88026132..f2ae162f4 100644
--- a/demos/rtl/index.html
+++ b/demos/rtl/index.html
@@ -27,8 +27,8 @@
{media: '../../media/',
rtl: true,
toolbox: document.getElementById('toolbox')});
- Blockly.Xml.domToWorkspace(workspace,
- document.getElementById('startBlocks'));
+ Blockly.Xml.domToWorkspace(document.getElementById('startBlocks'),
+ workspace);
//window.onbeforeunload = function() {
// return 'Leaving this page will result in the loss of your work.';
//};
diff --git a/tests/generators/index.html b/tests/generators/index.html
index 4e2ef54d6..e168a326a 100644
--- a/tests/generators/index.html
+++ b/tests/generators/index.html
@@ -128,7 +128,7 @@ function fromXml(xmlText) {
alert('Error parsing XML:\n' + e);
return;
}
- Blockly.Xml.domToWorkspace(workspace, xmlDoc);
+ Blockly.Xml.domToWorkspace(xmlDoc, workspace);
}
function setOutput(text) {
diff --git a/tests/playground.html b/tests/playground.html
index 0d7b053cb..c41c12db2 100644
--- a/tests/playground.html
+++ b/tests/playground.html
@@ -118,7 +118,7 @@ function toXml() {
function fromXml() {
var input = document.getElementById('importExport');
var xml = Blockly.Xml.textToDom(input.value);
- Blockly.Xml.domToWorkspace(workspace, xml);
+ Blockly.Xml.domToWorkspace(xml, workspace);
taChange();
}
@@ -188,7 +188,7 @@ function spaghetti(n) {
xml = '' + xml + '';
var dom = Blockly.Xml.textToDom(xml);
console.time('Spaghetti domToWorkspace');
- Blockly.Xml.domToWorkspace(workspace, dom);
+ Blockly.Xml.domToWorkspace(dom, workspace);
console.timeEnd('Spaghetti domToWorkspace');
}
var spaghettiXml = [