blob: 5cc44f45269ed5510f27e38f93ce20632d213f15 [file] [log] [blame]
// w3c Load/Save functionality: http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/
var core = require('../level1/core');
var createFrom = require('../utils').createFrom;
var ls = {};
// TODO: what is this?
//typedef dom::DOMConfiguration DOMConfiguration;
ls.LSException = function LSException(code) {
this.code = code;
};
ls.LSException.prototype = {
// LSExceptionCode
PARSE_ERR : 81,
SERIALIZE_ERR : 82
};
ls.DOMImplementationLS = function DOMImplementationLS() {
};
var DOMImplementationExtension = {
// DOMImplementationLSMode
MODE_SYNCHRONOUS : 1,
MODE_ASYNCHRONOUS : 2,
// raises(dom::DOMException);
createLSParser : function(/* int */ mode, /* string */ schemaType) {
return new ls.LSParser(mode, schemaType);
},
createLSSerializer : function() {
return new ls.LSSerializer();
},
createLSInput : function() {
return new ls.LSInput();
},
createLSOutput : function() {
return new ls.LSOutput();
}
};
Object.keys(DOMImplementationExtension).forEach(function(k, v) {
core.DOMImplementation.prototype[k] = DOMImplementationExtension[k];
});
ls.DOMImplementationLS.prototype = DOMImplementationExtension;
core.Document.getFeature = function() {
return DOMImplementationExtension;
};
ls.LSParser = function LSParser() {
this._domConfig = new core.DOMConfiguration();
};
ls.LSParser.prototype = {
get domConfig() { return this._domConfig; },
get filter() { return this._filter || null; },
set filter(value) { this._filter = value; },
get async() { return this._async; },
get busy() { return this._busy; },
// raises(dom::DOMException, LSException);
parse : function (/* LSInput */ input) {
var doc = new core.Document();
doc._inputEncoding = 'UTF-16';
return doc;
},
// raises(dom::DOMException, LSException);
parseURI : function(/* string */ uri) {
return new core.Document();
},
// ACTION_TYPES
ACTION_APPEND_AS_CHILDREN : 1,
ACTION_REPLACE_CHILDREN : 2,
ACTION_INSERT_BEFORE : 3,
ACTION_INSERT_AFTER : 4,
ACTION_REPLACE : 5,
// @returns Node
// @raises DOMException, LSException
parseWithContext : function(/* LSInput */ input, /* Node */ contextArg, /* int */ action) {
return new core.Node();
},
abort : function() {
// TODO: implement
}
};
ls.LSInput = function LSInput() {};
ls.LSInput.prototype = {
get characterStream() { return this._characterStream || null; },
set characterStream(value) { this._characterStream = value; },
get byteStream() { return this._byteStream || null; },
set byteStream(value) { this._byteStream = value; },
get stringData() { return this._stringData || null; },
set stringData(value) { this._stringData = value; },
get systemId() { return this._systemId || null; },
set systemId(value) { this._systemId = value; },
get publicId() { return this._publicId || null; },
set publicId(value) { this._publicId = value; },
get baseURI() { return this._baseURI || null; },
set baseURI(value) { this._baseURI = value; },
get encoding() { return this._encoding || null; },
set encoding(value) { this._encoding = value; },
get certifiedText() { return this._certifiedText || null; },
set certifiedText(value) { this._certifiedText = value; },
};
ls.LSResourceResolver = function LSResourceResolver() {};
// @returns LSInput
ls.LSResourceResolver.prototype.resolveResource = function(type, namespaceURI, publicId, systemId, baseURI) {
return new ls.LSInput();
};
ls.LSParserFilter = function LSParserFilter() {};
ls.LSParserFilter.prototype = {
// Constants returned by startElement and acceptNode
FILTER_ACCEPT : 1,
FILTER_REJECT : 2,
FILTER_SKIP : 3,
FILTER_INTERRUPT : 4,
get whatToShow() { return this._whatToShow; },
// @returns int
startElement : function(/* Element */ elementArg) {
return 0;
},
// @returns int
acceptNode : function(/* Node */ nodeArg) {
return nodeArg;
}
};
ls.LSSerializer = function LSSerializer() {
this._domConfig = new core.DOMConfiguration();
};
ls.LSSerializer.prototype = {
get domConfig() { return this._domConfig; },
get newLine() { return this._newLine || null; },
set newLine(value) { this._newLine = value; },
get filter() { return this._filter || null; },
set filter(value) { this._filter = value; },
// @returns boolean
// @raises LSException
write : function(/* Node */ nodeArg, /* LSOutput */ destination) {
return true;
},
// @returns boolean
// @raises LSException
writeToURI : function(/* Node */ nodeArg, /* string */ uri) {
return true;
},
// @returns string
// @raises DOMException, LSException
writeToString : function(/* Node */ nodeArg) {
return "";
}
};
ls.LSOutput = function LSOutput() {};
ls.LSOutput.prototype = {
get characterStream() { return this._characterStream || null; },
set characterStream(value) { this._characterStream = value; },
get byteStream() { return this._byteStream || null; },
set byteStream(value) { this._byteStream = value; },
get systemId() { return this._systemId || null; },
set systemId(value) { this._systemId = value; },
get encoding() { return this._encoding || null; },
set encoding(value) { this._encoding = value; },
};
ls.LSProgressEvent = function LSProgressEvent() {};
ls.LSProgressEvent.prototype = createFrom(core.Event, {
constructor: ls.LSProgressEvent,
get input() { return this._input; },
get position() { return this._position; },
get totalSize() { return this._totalSize; },
});
ls.LSLoadEvent = function LSLoadEvent() {};
ls.LSLoadEvent.prototype = createFrom(core.Event, {
get newDocument() { return this._newDocument; },
get input() { return this._input; },
});
// TODO: do traversal
ls.LSSerializerFilter = function LSSerializerFilter() {};
ls.LSSerializerFilter.prototype = {
get whatToShow() { return this._whatToShow; },
};
// ls.LSSerializerFilter.prototype.__proto__ = level2.traversal.NodeFiler;