|
|
|
@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
@@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
|
|
|
|
|
// Use strict in our context only - users might not want it
|
|
|
|
|
'use strict'; |
|
|
|
|
|
|
|
|
|
var pdfjsVersion = '1.5.454'; |
|
|
|
|
var pdfjsBuild = '03588cc'; |
|
|
|
|
var pdfjsVersion = '1.5.456'; |
|
|
|
|
var pdfjsBuild = '4d15928'; |
|
|
|
|
|
|
|
|
|
var pdfjsFilePath = |
|
|
|
|
typeof document !== 'undefined' && document.currentScript ? |
|
|
|
@ -2717,8 +2717,6 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2717,8 +2717,6 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
/* Any copyright is dedicated to the Public Domain. |
|
|
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
|
(function checkURLConstructor(scope) { |
|
|
|
|
/* jshint ignore:start */ |
|
|
|
|
|
|
|
|
|
// feature detect for URL constructor
|
|
|
|
|
var hasWorkingUrl = false; |
|
|
|
|
try { |
|
|
|
@ -2731,8 +2729,9 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2731,8 +2729,9 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
} |
|
|
|
|
} catch(e) { } |
|
|
|
|
|
|
|
|
|
if (hasWorkingUrl) |
|
|
|
|
if (hasWorkingUrl) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var relative = Object.create(null); |
|
|
|
|
relative['ftp'] = 21; |
|
|
|
@ -2759,11 +2758,11 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2759,11 +2758,11 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function IDNAToASCII(h) { |
|
|
|
|
if ('' == h) { |
|
|
|
|
invalid.call(this) |
|
|
|
|
if ('' === h) { |
|
|
|
|
invalid.call(this); |
|
|
|
|
} |
|
|
|
|
// XXX
|
|
|
|
|
return h.toLowerCase() |
|
|
|
|
return h.toLowerCase(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function percentEscape(c) { |
|
|
|
@ -2771,7 +2770,7 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2771,7 +2770,7 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
if (unicode > 0x20 && |
|
|
|
|
unicode < 0x7F && |
|
|
|
|
// " # < > ? `
|
|
|
|
|
[0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) == -1 |
|
|
|
|
[0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1 |
|
|
|
|
) { |
|
|
|
|
return c; |
|
|
|
|
} |
|
|
|
@ -2786,20 +2785,19 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2786,20 +2785,19 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
if (unicode > 0x20 && |
|
|
|
|
unicode < 0x7F && |
|
|
|
|
// " # < > ` (do not escape '?')
|
|
|
|
|
[0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) == -1 |
|
|
|
|
[0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1 |
|
|
|
|
) { |
|
|
|
|
return c; |
|
|
|
|
} |
|
|
|
|
return encodeURIComponent(c); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var EOF = undefined, |
|
|
|
|
ALPHA = /[a-zA-Z]/, |
|
|
|
|
var EOF, ALPHA = /[a-zA-Z]/, |
|
|
|
|
ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; |
|
|
|
|
|
|
|
|
|
function parse(input, stateOverride, base) { |
|
|
|
|
function err(message) { |
|
|
|
|
errors.push(message) |
|
|
|
|
errors.push(message); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var state = stateOverride || 'scheme start', |
|
|
|
@ -2809,7 +2807,8 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2809,7 +2807,8 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
seenBracket = false, |
|
|
|
|
errors = []; |
|
|
|
|
|
|
|
|
|
loop: while ((input[cursor - 1] != EOF || cursor == 0) && !this._isInvalid) { |
|
|
|
|
loop: while ((input[cursor - 1] !== EOF || cursor === 0) && |
|
|
|
|
!this._isInvalid) { |
|
|
|
|
var c = input[cursor]; |
|
|
|
|
switch (state) { |
|
|
|
|
case 'scheme start': |
|
|
|
@ -2829,7 +2828,7 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2829,7 +2828,7 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
case 'scheme': |
|
|
|
|
if (c && ALPHANUMERIC.test(c)) { |
|
|
|
|
buffer += c.toLowerCase(); // ASCII-safe
|
|
|
|
|
} else if (':' == c) { |
|
|
|
|
} else if (':' === c) { |
|
|
|
|
this._scheme = buffer; |
|
|
|
|
buffer = ''; |
|
|
|
|
if (stateOverride) { |
|
|
|
@ -2838,9 +2837,10 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2838,9 +2837,10 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
if (isRelativeScheme(this._scheme)) { |
|
|
|
|
this._isRelative = true; |
|
|
|
|
} |
|
|
|
|
if ('file' == this._scheme) { |
|
|
|
|
if ('file' === this._scheme) { |
|
|
|
|
state = 'relative'; |
|
|
|
|
} else if (this._isRelative && base && base._scheme == this._scheme) { |
|
|
|
|
} else if (this._isRelative && base && |
|
|
|
|
base._scheme === this._scheme) { |
|
|
|
|
state = 'relative or authority'; |
|
|
|
|
} else if (this._isRelative) { |
|
|
|
|
state = 'authority first slash'; |
|
|
|
@ -2852,24 +2852,24 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2852,24 +2852,24 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
cursor = 0; |
|
|
|
|
state = 'no scheme'; |
|
|
|
|
continue; |
|
|
|
|
} else if (EOF == c) { |
|
|
|
|
} else if (EOF === c) { |
|
|
|
|
break loop; |
|
|
|
|
} else { |
|
|
|
|
err('Code point not allowed in scheme: ' + c) |
|
|
|
|
err('Code point not allowed in scheme: ' + c); |
|
|
|
|
break loop; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'scheme data': |
|
|
|
|
if ('?' == c) { |
|
|
|
|
if ('?' === c) { |
|
|
|
|
this._query = '?'; |
|
|
|
|
state = 'query'; |
|
|
|
|
} else if ('#' == c) { |
|
|
|
|
} else if ('#' === c) { |
|
|
|
|
this._fragment = '#'; |
|
|
|
|
state = 'fragment'; |
|
|
|
|
} else { |
|
|
|
|
// XXX error handling
|
|
|
|
|
if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { |
|
|
|
|
if (EOF !== c && '\t' !== c && '\n' !== c && '\r' !== c) { |
|
|
|
|
this._schemeData += percentEscape(c); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -2886,20 +2886,21 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2886,20 +2886,21 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'relative or authority': |
|
|
|
|
if ('/' == c && '/' == input[cursor+1]) { |
|
|
|
|
if ('/' === c && '/' === input[cursor+1]) { |
|
|
|
|
state = 'authority ignore slashes'; |
|
|
|
|
} else { |
|
|
|
|
err('Expected /, got: ' + c); |
|
|
|
|
state = 'relative'; |
|
|
|
|
continue |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'relative': |
|
|
|
|
this._isRelative = true; |
|
|
|
|
if ('file' != this._scheme) |
|
|
|
|
if ('file' !== this._scheme) { |
|
|
|
|
this._scheme = base._scheme; |
|
|
|
|
if (EOF == c) { |
|
|
|
|
} |
|
|
|
|
if (EOF === c) { |
|
|
|
|
this._host = base._host; |
|
|
|
|
this._port = base._port; |
|
|
|
|
this._path = base._path.slice(); |
|
|
|
@ -2907,11 +2908,12 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2907,11 +2908,12 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
this._username = base._username; |
|
|
|
|
this._password = base._password; |
|
|
|
|
break loop; |
|
|
|
|
} else if ('/' == c || '\\' == c) { |
|
|
|
|
if ('\\' == c) |
|
|
|
|
} else if ('/' === c || '\\' === c) { |
|
|
|
|
if ('\\' === c) { |
|
|
|
|
err('\\ is an invalid code point.'); |
|
|
|
|
} |
|
|
|
|
state = 'relative slash'; |
|
|
|
|
} else if ('?' == c) { |
|
|
|
|
} else if ('?' === c) { |
|
|
|
|
this._host = base._host; |
|
|
|
|
this._port = base._port; |
|
|
|
|
this._path = base._path.slice(); |
|
|
|
@ -2919,7 +2921,7 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2919,7 +2921,7 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
this._username = base._username; |
|
|
|
|
this._password = base._password; |
|
|
|
|
state = 'query'; |
|
|
|
|
} else if ('#' == c) { |
|
|
|
|
} else if ('#' === c) { |
|
|
|
|
this._host = base._host; |
|
|
|
|
this._port = base._port; |
|
|
|
|
this._path = base._path.slice(); |
|
|
|
@ -2929,12 +2931,12 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2929,12 +2931,12 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
this._password = base._password; |
|
|
|
|
state = 'fragment'; |
|
|
|
|
} else { |
|
|
|
|
var nextC = input[cursor+1] |
|
|
|
|
var nextNextC = input[cursor+2] |
|
|
|
|
if ( |
|
|
|
|
'file' != this._scheme || !ALPHA.test(c) || |
|
|
|
|
(nextC != ':' && nextC != '|') || |
|
|
|
|
(EOF != nextNextC && '/' != nextNextC && '\\' != nextNextC && '?' != nextNextC && '#' != nextNextC)) { |
|
|
|
|
var nextC = input[cursor+1]; |
|
|
|
|
var nextNextC = input[cursor+2]; |
|
|
|
|
if ('file' !== this._scheme || !ALPHA.test(c) || |
|
|
|
|
(nextC !== ':' && nextC !== '|') || |
|
|
|
|
(EOF !== nextNextC && '/' !== nextNextC && '\\' !== nextNextC && |
|
|
|
|
'?' !== nextNextC && '#' !== nextNextC)) { |
|
|
|
|
this._host = base._host; |
|
|
|
|
this._port = base._port; |
|
|
|
|
this._username = base._username; |
|
|
|
@ -2948,17 +2950,17 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2948,17 +2950,17 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'relative slash': |
|
|
|
|
if ('/' == c || '\\' == c) { |
|
|
|
|
if ('\\' == c) { |
|
|
|
|
if ('/' === c || '\\' === c) { |
|
|
|
|
if ('\\' === c) { |
|
|
|
|
err('\\ is an invalid code point.'); |
|
|
|
|
} |
|
|
|
|
if ('file' == this._scheme) { |
|
|
|
|
if ('file' === this._scheme) { |
|
|
|
|
state = 'file host'; |
|
|
|
|
} else { |
|
|
|
|
state = 'authority ignore slashes'; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
if ('file' != this._scheme) { |
|
|
|
|
if ('file' !== this._scheme) { |
|
|
|
|
this._host = base._host; |
|
|
|
|
this._port = base._port; |
|
|
|
|
this._username = base._username; |
|
|
|
@ -2970,10 +2972,10 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2970,10 +2972,10 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'authority first slash': |
|
|
|
|
if ('/' == c) { |
|
|
|
|
if ('/' === c) { |
|
|
|
|
state = 'authority second slash'; |
|
|
|
|
} else { |
|
|
|
|
err("Expected '/', got: " + c); |
|
|
|
|
err('Expected \'/\', got: ' + c); |
|
|
|
|
state = 'authority ignore slashes'; |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
@ -2981,14 +2983,14 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2981,14 +2983,14 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
|
|
|
|
|
case 'authority second slash': |
|
|
|
|
state = 'authority ignore slashes'; |
|
|
|
|
if ('/' != c) { |
|
|
|
|
err("Expected '/', got: " + c); |
|
|
|
|
if ('/' !== c) { |
|
|
|
|
err('Expected \'/\', got: ' + c); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'authority ignore slashes': |
|
|
|
|
if ('/' != c && '\\' != c) { |
|
|
|
|
if ('/' !== c && '\\' !== c) { |
|
|
|
|
state = 'authority'; |
|
|
|
|
continue; |
|
|
|
|
} else { |
|
|
|
@ -2997,7 +2999,7 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -2997,7 +2999,7 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'authority': |
|
|
|
|
if ('@' == c) { |
|
|
|
|
if ('@' === c) { |
|
|
|
|
if (seenAt) { |
|
|
|
|
err('@ already seen.'); |
|
|
|
|
buffer += '%40'; |
|
|
|
@ -3005,20 +3007,25 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3005,20 +3007,25 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
seenAt = true; |
|
|
|
|
for (var i = 0; i < buffer.length; i++) { |
|
|
|
|
var cp = buffer[i]; |
|
|
|
|
if ('\t' == cp || '\n' == cp || '\r' == cp) { |
|
|
|
|
if ('\t' === cp || '\n' === cp || '\r' === cp) { |
|
|
|
|
err('Invalid whitespace in authority.'); |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
// XXX check URL code points
|
|
|
|
|
if (':' == cp && null === this._password) { |
|
|
|
|
if (':' === cp && null === this._password) { |
|
|
|
|
this._password = ''; |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
var tempC = percentEscape(cp); |
|
|
|
|
(null !== this._password) ? this._password += tempC : this._username += tempC; |
|
|
|
|
if (null !== this._password) { |
|
|
|
|
this._password += tempC; |
|
|
|
|
} else { |
|
|
|
|
this._username += tempC; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
buffer = ''; |
|
|
|
|
} else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { |
|
|
|
|
} else if (EOF === c || '/' === c || '\\' === c || |
|
|
|
|
'?' === c || '#' === c) { |
|
|
|
|
cursor -= buffer.length; |
|
|
|
|
buffer = ''; |
|
|
|
|
state = 'host'; |
|
|
|
@ -3029,10 +3036,11 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3029,10 +3036,11 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'file host': |
|
|
|
|
if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { |
|
|
|
|
if (buffer.length == 2 && ALPHA.test(buffer[0]) && (buffer[1] == ':' || buffer[1] == '|')) { |
|
|
|
|
if (EOF === c || '/' === c || '\\' === c || '?' === c || '#' === c) { |
|
|
|
|
if (buffer.length === 2 && ALPHA.test(buffer[0]) && |
|
|
|
|
(buffer[1] === ':' || buffer[1] === '|')) { |
|
|
|
|
state = 'relative path'; |
|
|
|
|
} else if (buffer.length == 0) { |
|
|
|
|
} else if (buffer.length === 0) { |
|
|
|
|
state = 'relative path start'; |
|
|
|
|
} else { |
|
|
|
|
this._host = IDNAToASCII.call(this, buffer); |
|
|
|
@ -3040,7 +3048,7 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3040,7 +3048,7 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
state = 'relative path start'; |
|
|
|
|
} |
|
|
|
|
continue; |
|
|
|
|
} else if ('\t' == c || '\n' == c || '\r' == c) { |
|
|
|
|
} else if ('\t' === c || '\n' === c || '\r' === c) { |
|
|
|
|
err('Invalid whitespace in file host.'); |
|
|
|
|
} else { |
|
|
|
|
buffer += c; |
|
|
|
@ -3049,15 +3057,16 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3049,15 +3057,16 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
|
|
|
|
|
case 'host': |
|
|
|
|
case 'hostname': |
|
|
|
|
if (':' == c && !seenBracket) { |
|
|
|
|
if (':' === c && !seenBracket) { |
|
|
|
|
// XXX host parsing
|
|
|
|
|
this._host = IDNAToASCII.call(this, buffer); |
|
|
|
|
buffer = ''; |
|
|
|
|
state = 'port'; |
|
|
|
|
if ('hostname' == stateOverride) { |
|
|
|
|
if ('hostname' === stateOverride) { |
|
|
|
|
break loop; |
|
|
|
|
} |
|
|
|
|
} else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c) { |
|
|
|
|
} else if (EOF === c || '/' === c || |
|
|
|
|
'\\' === c || '?' === c || '#' === c) { |
|
|
|
|
this._host = IDNAToASCII.call(this, buffer); |
|
|
|
|
buffer = ''; |
|
|
|
|
state = 'relative path start'; |
|
|
|
@ -3065,10 +3074,10 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3065,10 +3074,10 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
break loop; |
|
|
|
|
} |
|
|
|
|
continue; |
|
|
|
|
} else if ('\t' != c && '\n' != c && '\r' != c) { |
|
|
|
|
if ('[' == c) { |
|
|
|
|
} else if ('\t' !== c && '\n' !== c && '\r' !== c) { |
|
|
|
|
if ('[' === c) { |
|
|
|
|
seenBracket = true; |
|
|
|
|
} else if (']' == c) { |
|
|
|
|
} else if (']' === c) { |
|
|
|
|
seenBracket = false; |
|
|
|
|
} |
|
|
|
|
buffer += c; |
|
|
|
@ -3080,10 +3089,11 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3080,10 +3089,11 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
case 'port': |
|
|
|
|
if (/[0-9]/.test(c)) { |
|
|
|
|
buffer += c; |
|
|
|
|
} else if (EOF == c || '/' == c || '\\' == c || '?' == c || '#' == c || stateOverride) { |
|
|
|
|
if ('' != buffer) { |
|
|
|
|
} else if (EOF === c || '/' === c || '\\' === c || |
|
|
|
|
'?' === c || '#' === c || stateOverride) { |
|
|
|
|
if ('' !== buffer) { |
|
|
|
|
var temp = parseInt(buffer, 10); |
|
|
|
|
if (temp != relative[this._scheme]) { |
|
|
|
|
if (temp !== relative[this._scheme]) { |
|
|
|
|
this._port = temp + ''; |
|
|
|
|
} |
|
|
|
|
buffer = ''; |
|
|
|
@ -3093,7 +3103,7 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3093,7 +3103,7 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
} |
|
|
|
|
state = 'relative path start'; |
|
|
|
|
continue; |
|
|
|
|
} else if ('\t' == c || '\n' == c || '\r' == c) { |
|
|
|
|
} else if ('\t' === c || '\n' === c || '\r' === c) { |
|
|
|
|
err('Invalid code point in port: ' + c); |
|
|
|
|
} else { |
|
|
|
|
invalid.call(this); |
|
|
|
@ -3101,60 +3111,64 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3101,60 +3111,64 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'relative path start': |
|
|
|
|
if ('\\' == c) |
|
|
|
|
err("'\\' not allowed in path."); |
|
|
|
|
if ('\\' === c) { |
|
|
|
|
err('\'\\\' not allowed in path.'); |
|
|
|
|
} |
|
|
|
|
state = 'relative path'; |
|
|
|
|
if ('/' != c && '\\' != c) { |
|
|
|
|
if ('/' !== c && '\\' !== c) { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'relative path': |
|
|
|
|
if (EOF == c || '/' == c || '\\' == c || (!stateOverride && ('?' == c || '#' == c))) { |
|
|
|
|
if ('\\' == c) { |
|
|
|
|
if (EOF === c || '/' === c || '\\' === c || |
|
|
|
|
(!stateOverride && ('?' === c || '#' === c))) { |
|
|
|
|
if ('\\' === c) { |
|
|
|
|
err('\\ not allowed in relative path.'); |
|
|
|
|
} |
|
|
|
|
var tmp; |
|
|
|
|
if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { |
|
|
|
|
buffer = tmp; |
|
|
|
|
} |
|
|
|
|
if ('..' == buffer) { |
|
|
|
|
if ('..' === buffer) { |
|
|
|
|
this._path.pop(); |
|
|
|
|
if ('/' != c && '\\' != c) { |
|
|
|
|
if ('/' !== c && '\\' !== c) { |
|
|
|
|
this._path.push(''); |
|
|
|
|
} |
|
|
|
|
} else if ('.' == buffer && '/' != c && '\\' != c) { |
|
|
|
|
} else if ('.' === buffer && '/' !== c && '\\' !== c) { |
|
|
|
|
this._path.push(''); |
|
|
|
|
} else if ('.' != buffer) { |
|
|
|
|
if ('file' == this._scheme && this._path.length == 0 && buffer.length == 2 && ALPHA.test(buffer[0]) && buffer[1] == '|') { |
|
|
|
|
} else if ('.' !== buffer) { |
|
|
|
|
if ('file' === this._scheme && this._path.length === 0 && |
|
|
|
|
buffer.length === 2 && ALPHA.test(buffer[0]) && |
|
|
|
|
buffer[1] === '|') { |
|
|
|
|
buffer = buffer[0] + ':'; |
|
|
|
|
} |
|
|
|
|
this._path.push(buffer); |
|
|
|
|
} |
|
|
|
|
buffer = ''; |
|
|
|
|
if ('?' == c) { |
|
|
|
|
if ('?' === c) { |
|
|
|
|
this._query = '?'; |
|
|
|
|
state = 'query'; |
|
|
|
|
} else if ('#' == c) { |
|
|
|
|
} else if ('#' === c) { |
|
|
|
|
this._fragment = '#'; |
|
|
|
|
state = 'fragment'; |
|
|
|
|
} |
|
|
|
|
} else if ('\t' != c && '\n' != c && '\r' != c) { |
|
|
|
|
} else if ('\t' !== c && '\n' !== c && '\r' !== c) { |
|
|
|
|
buffer += percentEscape(c); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'query': |
|
|
|
|
if (!stateOverride && '#' == c) { |
|
|
|
|
if (!stateOverride && '#' === c) { |
|
|
|
|
this._fragment = '#'; |
|
|
|
|
state = 'fragment'; |
|
|
|
|
} else if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { |
|
|
|
|
} else if (EOF !== c && '\t' !== c && '\n' !== c && '\r' !== c) { |
|
|
|
|
this._query += percentEscapeQuery(c); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case 'fragment': |
|
|
|
|
if (EOF != c && '\t' != c && '\n' != c && '\r' != c) { |
|
|
|
|
if (EOF !== c && '\t' !== c && '\n' !== c && '\r' !== c) { |
|
|
|
|
this._fragment += c; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
@ -3180,9 +3194,10 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3180,9 +3194,10 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
|
|
|
|
|
// Does not process domain names or IP addresses.
|
|
|
|
|
// Does not handle encoding for the query parameter.
|
|
|
|
|
function jURL(url, base /* , encoding */) { |
|
|
|
|
if (base !== undefined && !(base instanceof jURL)) |
|
|
|
|
base = new jURL(String(base)); |
|
|
|
|
function JURL(url, base /* , encoding */) { |
|
|
|
|
if (base !== undefined && !(base instanceof JURL)) { |
|
|
|
|
base = new JURL(String(base)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this._url = url; |
|
|
|
|
clear.call(this); |
|
|
|
@ -3193,18 +3208,18 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3193,18 +3208,18 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
parse.call(this, input, null, base); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
jURL.prototype = { |
|
|
|
|
JURL.prototype = { |
|
|
|
|
toString: function() { |
|
|
|
|
return this.href; |
|
|
|
|
}, |
|
|
|
|
get href() { |
|
|
|
|
if (this._isInvalid) |
|
|
|
|
if (this._isInvalid) { |
|
|
|
|
return this._url; |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
var authority = ''; |
|
|
|
|
if ('' != this._username || null != this._password) { |
|
|
|
|
if ('' !== this._username || null !== this._password) { |
|
|
|
|
authority = this._username + |
|
|
|
|
(null != this._password ? ':' + this._password : '') + '@'; |
|
|
|
|
(null !== this._password ? ':' + this._password : '') + '@'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return this.protocol + |
|
|
|
@ -3220,8 +3235,9 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3220,8 +3235,9 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
return this._scheme + ':'; |
|
|
|
|
}, |
|
|
|
|
set protocol(protocol) { |
|
|
|
|
if (this._isInvalid) |
|
|
|
|
if (this._isInvalid) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
parse.call(this, protocol + ':', 'scheme start'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -3230,8 +3246,9 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3230,8 +3246,9 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
this._host + ':' + this._port : this._host; |
|
|
|
|
}, |
|
|
|
|
set host(host) { |
|
|
|
|
if (this._isInvalid || !this._isRelative) |
|
|
|
|
if (this._isInvalid || !this._isRelative) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
parse.call(this, host, 'host'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -3239,8 +3256,9 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3239,8 +3256,9 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
return this._host; |
|
|
|
|
}, |
|
|
|
|
set hostname(hostname) { |
|
|
|
|
if (this._isInvalid || !this._isRelative) |
|
|
|
|
if (this._isInvalid || !this._isRelative) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
parse.call(this, hostname, 'hostname'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -3248,8 +3266,9 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3248,8 +3266,9 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
return this._port; |
|
|
|
|
}, |
|
|
|
|
set port(port) { |
|
|
|
|
if (this._isInvalid || !this._isRelative) |
|
|
|
|
if (this._isInvalid || !this._isRelative) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
parse.call(this, port, 'port'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -3258,35 +3277,40 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3258,35 +3277,40 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
'/' + this._path.join('/') : this._schemeData; |
|
|
|
|
}, |
|
|
|
|
set pathname(pathname) { |
|
|
|
|
if (this._isInvalid || !this._isRelative) |
|
|
|
|
if (this._isInvalid || !this._isRelative) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
this._path = []; |
|
|
|
|
parse.call(this, pathname, 'relative path start'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
get search() { |
|
|
|
|
return this._isInvalid || !this._query || '?' == this._query ? |
|
|
|
|
return this._isInvalid || !this._query || '?' === this._query ? |
|
|
|
|
'' : this._query; |
|
|
|
|
}, |
|
|
|
|
set search(search) { |
|
|
|
|
if (this._isInvalid || !this._isRelative) |
|
|
|
|
if (this._isInvalid || !this._isRelative) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
this._query = '?'; |
|
|
|
|
if ('?' == search[0]) |
|
|
|
|
if ('?' === search[0]) { |
|
|
|
|
search = search.slice(1); |
|
|
|
|
} |
|
|
|
|
parse.call(this, search, 'query'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
get hash() { |
|
|
|
|
return this._isInvalid || !this._fragment || '#' == this._fragment ? |
|
|
|
|
return this._isInvalid || !this._fragment || '#' === this._fragment ? |
|
|
|
|
'' : this._fragment; |
|
|
|
|
}, |
|
|
|
|
set hash(hash) { |
|
|
|
|
if (this._isInvalid) |
|
|
|
|
if (this._isInvalid) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
this._fragment = '#'; |
|
|
|
|
if ('#' == hash[0]) |
|
|
|
|
if ('#' === hash[0]) { |
|
|
|
|
hash = hash.slice(1); |
|
|
|
|
} |
|
|
|
|
parse.call(this, hash, 'fragment'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
@ -3318,18 +3342,17 @@ function loadJpegStream(id, imageUrl, objs) {
@@ -3318,18 +3342,17 @@ function loadJpegStream(id, imageUrl, objs) {
|
|
|
|
|
// Copy over the static methods
|
|
|
|
|
var OriginalURL = scope.URL; |
|
|
|
|
if (OriginalURL) { |
|
|
|
|
jURL.createObjectURL = function(blob) { |
|
|
|
|
JURL.createObjectURL = function(blob) { |
|
|
|
|
// IE extension allows a second optional options argument.
|
|
|
|
|
// http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx
|
|
|
|
|
return OriginalURL.createObjectURL.apply(OriginalURL, arguments); |
|
|
|
|
}; |
|
|
|
|
jURL.revokeObjectURL = function(url) { |
|
|
|
|
JURL.revokeObjectURL = function(url) { |
|
|
|
|
OriginalURL.revokeObjectURL(url); |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
scope.URL = jURL; |
|
|
|
|
/* jshint ignore:end */ |
|
|
|
|
scope.URL = JURL; |
|
|
|
|
})(globalScope); |
|
|
|
|
|
|
|
|
|
exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; |
|
|
|
|