throw new Error(msg);
}
+function shadow(obj, prop, value) {
+ Object.defineProperty(obj, prop, { value: value, enumerable: true });
+ return value;
+}
+
var Stream = (function() {
function constructor(arrayBuffer) {
- this.bytes = Uint8Array(arrayBuffer);
+ this.bytes = new Uint8Array(arrayBuffer);
this.pos = 0;
this.start = 0;
}
if (!IsDict(obj))
error("invalid top-level pages dictionary");
// shadow the prototype getter
- return this.toplevelPagesDict = obj;
+ return shadow(this, "toplevelPagesDict", obj);
},
get numPages() {
obj = this.toplevelPagesDict.get("Count");
if (!IsInt(obj))
error("page count in top level pages object is not an integer");
// shadow the prototype getter
- return this.numPages = obj;
+ return shadow(this, "num", obj);
},
traverseKids: function(pagesDict) {
var pageCache = this.pageCache;
linearization = false;
}
// shadow the prototype getter with a data property
- return this.linearization = linearization;
+ return shadow(this, "linearization", linearization);
},
get startXRef() {
var stream = this.stream;
}
}
// shadow the prototype getter with a data property
- return this.startXRef = startXRef;
+ return shadow(this, "startXRef", startXRef);
},
get mainXRefEntriesOffset() {
var mainXRefEntriesOffset = 0;
if (linearization)
mainXRefEntriesOffset = linearization.mainXRefEntriesOffset;
// shadow the prototype getter with a data property
- return this.mainXRefEntriesOffset = mainXRefEntriesOffset;
+ return shadow(this, "mainXRefEntriesOffset", mainXRefEntriesOffset);
},
// Find the header, remove leading garbage and setup the stream
// starting from the header.
req = new XMLHttpRequest();
req.open("GET", "uncompressed.tracemonkey-pldi-09.pdf");
- req.mozResponseType = "arraybuffer";
- req.expected = 0; // 200 for HTTP
+ req.mozResponseType = req.responseType = "arraybuffer";
+ req.expected = (document.URL.indexOf("file:") == 0) ? 0 : 200;
req.onreadystatechange = xhrstate;
req.send(null);
}
function xhrstate() {
if (req.readyState == 4 && req.status == req.expected) {
- var data = req.mozResponseArrayBuffer || req.mozResponse;
+ var data = req.mozResponseArrayBuffer ||
+ req.mozResponse ||
+ req.responseArrayBuffer ||
+ req.response;
pdf = new PDFDoc(new Stream(data));
numPages = pdf.numPages;
displayPage(1);