| Index: third_party/document_image_extractor/third_party/closure-library/closure/goog/debug/debug.js
|
| diff --git a/third_party/document_image_extractor/third_party/closure-library/closure/goog/debug/debug.js b/third_party/document_image_extractor/third_party/closure-library/closure/goog/debug/debug.js
|
| deleted file mode 100644
|
| index 5abce3c42a1be57e0352f20b36fdd78f2e8754e6..0000000000000000000000000000000000000000
|
| --- a/third_party/document_image_extractor/third_party/closure-library/closure/goog/debug/debug.js
|
| +++ /dev/null
|
| @@ -1,632 +0,0 @@
|
| -// Copyright 2006 The Closure Library Authors. All Rights Reserved.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS-IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -
|
| -/**
|
| - * @fileoverview Logging and debugging utilities.
|
| - *
|
| - * @see ../demos/debug.html
|
| - */
|
| -
|
| -goog.provide('goog.debug');
|
| -
|
| -goog.require('goog.array');
|
| -goog.require('goog.html.SafeHtml');
|
| -goog.require('goog.html.SafeUrl');
|
| -goog.require('goog.html.uncheckedconversions');
|
| -goog.require('goog.string.Const');
|
| -goog.require('goog.structs.Set');
|
| -goog.require('goog.userAgent');
|
| -
|
| -
|
| -/** @define {boolean} Whether logging should be enabled. */
|
| -goog.define('goog.debug.LOGGING_ENABLED', goog.DEBUG);
|
| -
|
| -
|
| -/**
|
| - * Catches onerror events fired by windows and similar objects.
|
| - * @param {function(Object)} logFunc The function to call with the error
|
| - * information.
|
| - * @param {boolean=} opt_cancel Whether to stop the error from reaching the
|
| - * browser.
|
| - * @param {Object=} opt_target Object that fires onerror events.
|
| - */
|
| -goog.debug.catchErrors = function(logFunc, opt_cancel, opt_target) {
|
| - var target = opt_target || goog.global;
|
| - var oldErrorHandler = target.onerror;
|
| - var retVal = !!opt_cancel;
|
| -
|
| - // Chrome interprets onerror return value backwards (http://crbug.com/92062)
|
| - // until it was fixed in webkit revision r94061 (Webkit 535.3). This
|
| - // workaround still needs to be skipped in Safari after the webkit change
|
| - // gets pushed out in Safari.
|
| - // See https://bugs.webkit.org/show_bug.cgi?id=67119
|
| - if (goog.userAgent.WEBKIT &&
|
| - !goog.userAgent.isVersionOrHigher('535.3')) {
|
| - retVal = !retVal;
|
| - }
|
| -
|
| - /**
|
| - * New onerror handler for this target. This onerror handler follows the spec
|
| - * according to
|
| - * http://www.whatwg.org/specs/web-apps/current-work/#runtime-script-errors
|
| - * The spec was changed in August 2013 to support receiving column information
|
| - * and an error object for all scripts on the same origin or cross origin
|
| - * scripts with the proper headers. See
|
| - * https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror
|
| - *
|
| - * @param {string} message The error message. For cross-origin errors, this
|
| - * will be scrubbed to just "Script error.". For new browsers that have
|
| - * updated to follow the latest spec, errors that come from origins that
|
| - * have proper cross origin headers will not be scrubbed.
|
| - * @param {string} url The URL of the script that caused the error. The URL
|
| - * will be scrubbed to "" for cross origin scripts unless the script has
|
| - * proper cross origin headers and the browser has updated to the latest
|
| - * spec.
|
| - * @param {number} line The line number in the script that the error
|
| - * occurred on.
|
| - * @param {number=} opt_col The optional column number that the error
|
| - * occurred on. Only browsers that have updated to the latest spec will
|
| - * include this.
|
| - * @param {Error=} opt_error The optional actual error object for this
|
| - * error that should include the stack. Only browsers that have updated
|
| - * to the latest spec will inlude this parameter.
|
| - * @return {boolean} Whether to prevent the error from reaching the browser.
|
| - */
|
| - target.onerror = function(message, url, line, opt_col, opt_error) {
|
| - if (oldErrorHandler) {
|
| - oldErrorHandler(message, url, line, opt_col, opt_error);
|
| - }
|
| - logFunc({
|
| - message: message,
|
| - fileName: url,
|
| - line: line,
|
| - col: opt_col,
|
| - error: opt_error
|
| - });
|
| - return retVal;
|
| - };
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Creates a string representing an object and all its properties.
|
| - * @param {Object|null|undefined} obj Object to expose.
|
| - * @param {boolean=} opt_showFn Show the functions as well as the properties,
|
| - * default is false.
|
| - * @return {string} The string representation of {@code obj}.
|
| - */
|
| -goog.debug.expose = function(obj, opt_showFn) {
|
| - if (typeof obj == 'undefined') {
|
| - return 'undefined';
|
| - }
|
| - if (obj == null) {
|
| - return 'NULL';
|
| - }
|
| - var str = [];
|
| -
|
| - for (var x in obj) {
|
| - if (!opt_showFn && goog.isFunction(obj[x])) {
|
| - continue;
|
| - }
|
| - var s = x + ' = ';
|
| - /** @preserveTry */
|
| - try {
|
| - s += obj[x];
|
| - } catch (e) {
|
| - s += '*** ' + e + ' ***';
|
| - }
|
| - str.push(s);
|
| - }
|
| - return str.join('\n');
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Creates a string representing a given primitive or object, and for an
|
| - * object, all its properties and nested objects. WARNING: If an object is
|
| - * given, it and all its nested objects will be modified. To detect reference
|
| - * cycles, this method identifies objects using goog.getUid() which mutates the
|
| - * object.
|
| - * @param {*} obj Object to expose.
|
| - * @param {boolean=} opt_showFn Also show properties that are functions (by
|
| - * default, functions are omitted).
|
| - * @return {string} A string representation of {@code obj}.
|
| - */
|
| -goog.debug.deepExpose = function(obj, opt_showFn) {
|
| - var str = [];
|
| -
|
| - var helper = function(obj, space, parentSeen) {
|
| - var nestspace = space + ' ';
|
| - var seen = new goog.structs.Set(parentSeen);
|
| -
|
| - var indentMultiline = function(str) {
|
| - return str.replace(/\n/g, '\n' + space);
|
| - };
|
| -
|
| - /** @preserveTry */
|
| - try {
|
| - if (!goog.isDef(obj)) {
|
| - str.push('undefined');
|
| - } else if (goog.isNull(obj)) {
|
| - str.push('NULL');
|
| - } else if (goog.isString(obj)) {
|
| - str.push('"' + indentMultiline(obj) + '"');
|
| - } else if (goog.isFunction(obj)) {
|
| - str.push(indentMultiline(String(obj)));
|
| - } else if (goog.isObject(obj)) {
|
| - if (seen.contains(obj)) {
|
| - str.push('*** reference loop detected ***');
|
| - } else {
|
| - seen.add(obj);
|
| - str.push('{');
|
| - for (var x in obj) {
|
| - if (!opt_showFn && goog.isFunction(obj[x])) {
|
| - continue;
|
| - }
|
| - str.push('\n');
|
| - str.push(nestspace);
|
| - str.push(x + ' = ');
|
| - helper(obj[x], nestspace, seen);
|
| - }
|
| - str.push('\n' + space + '}');
|
| - }
|
| - } else {
|
| - str.push(obj);
|
| - }
|
| - } catch (e) {
|
| - str.push('*** ' + e + ' ***');
|
| - }
|
| - };
|
| -
|
| - helper(obj, '', new goog.structs.Set());
|
| - return str.join('');
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Recursively outputs a nested array as a string.
|
| - * @param {Array<?>} arr The array.
|
| - * @return {string} String representing nested array.
|
| - */
|
| -goog.debug.exposeArray = function(arr) {
|
| - var str = [];
|
| - for (var i = 0; i < arr.length; i++) {
|
| - if (goog.isArray(arr[i])) {
|
| - str.push(goog.debug.exposeArray(arr[i]));
|
| - } else {
|
| - str.push(arr[i]);
|
| - }
|
| - }
|
| - return '[ ' + str.join(', ') + ' ]';
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Exposes an exception that has been caught by a try...catch and outputs the
|
| - * error as HTML with a stack trace.
|
| - * @param {Object} err Error object or string.
|
| - * @param {Function=} opt_fn Optional function to start stack trace from.
|
| - * @return {string} Details of exception, as HTML.
|
| - */
|
| -goog.debug.exposeException = function(err, opt_fn) {
|
| - var html = goog.debug.exposeExceptionAsHtml(err, opt_fn);
|
| - return goog.html.SafeHtml.unwrap(html);
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Exposes an exception that has been caught by a try...catch and outputs the
|
| - * error with a stack trace.
|
| - * @param {Object} err Error object or string.
|
| - * @param {Function=} opt_fn Optional function to start stack trace from.
|
| - * @return {!goog.html.SafeHtml} Details of exception.
|
| - */
|
| -goog.debug.exposeExceptionAsHtml = function(err, opt_fn) {
|
| - /** @preserveTry */
|
| - try {
|
| - var e = goog.debug.normalizeErrorObject(err);
|
| - // Create the error message
|
| - var viewSourceUrl = goog.debug.createViewSourceUrl_(e.fileName);
|
| - var error = goog.html.SafeHtml.concat(
|
| - goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces(
|
| - 'Message: ' + e.message + '\nUrl: '),
|
| - goog.html.SafeHtml.create('a',
|
| - {href: viewSourceUrl, target: '_new'}, e.fileName),
|
| - goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces(
|
| - '\nLine: ' + e.lineNumber + '\n\nBrowser stack:\n' +
|
| - e.stack + '-> ' + '[end]\n\nJS stack traversal:\n' +
|
| - goog.debug.getStacktrace(opt_fn) + '-> '));
|
| - return error;
|
| - } catch (e2) {
|
| - return goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces(
|
| - 'Exception trying to expose exception! You win, we lose. ' + e2);
|
| - }
|
| -};
|
| -
|
| -
|
| -/**
|
| - * @param {?string=} opt_fileName
|
| - * @return {!goog.html.SafeUrl} SafeUrl with view-source scheme, pointing at
|
| - * fileName.
|
| - * @private
|
| - */
|
| -goog.debug.createViewSourceUrl_ = function(opt_fileName) {
|
| - if (!goog.isDefAndNotNull(opt_fileName)) {
|
| - opt_fileName = '';
|
| - }
|
| - if (!/^https?:\/\//i.test(opt_fileName)) {
|
| - return goog.html.SafeUrl.fromConstant(
|
| - goog.string.Const.from('sanitizedviewsrc'));
|
| - }
|
| - var sanitizedFileName = goog.html.SafeUrl.sanitize(opt_fileName);
|
| - return goog.html.uncheckedconversions.
|
| - safeUrlFromStringKnownToSatisfyTypeContract(
|
| - goog.string.Const.from('view-source scheme plus HTTP/HTTPS URL'),
|
| - 'view-source:' + goog.html.SafeUrl.unwrap(sanitizedFileName));
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Normalizes the error/exception object between browsers.
|
| - * @param {Object} err Raw error object.
|
| - * @return {!Object} Normalized error object.
|
| - */
|
| -goog.debug.normalizeErrorObject = function(err) {
|
| - var href = goog.getObjectByName('window.location.href');
|
| - if (goog.isString(err)) {
|
| - return {
|
| - 'message': err,
|
| - 'name': 'Unknown error',
|
| - 'lineNumber': 'Not available',
|
| - 'fileName': href,
|
| - 'stack': 'Not available'
|
| - };
|
| - }
|
| -
|
| - var lineNumber, fileName;
|
| - var threwError = false;
|
| -
|
| - try {
|
| - lineNumber = err.lineNumber || err.line || 'Not available';
|
| - } catch (e) {
|
| - // Firefox 2 sometimes throws an error when accessing 'lineNumber':
|
| - // Message: Permission denied to get property UnnamedClass.lineNumber
|
| - lineNumber = 'Not available';
|
| - threwError = true;
|
| - }
|
| -
|
| - try {
|
| - fileName = err.fileName || err.filename || err.sourceURL ||
|
| - // $googDebugFname may be set before a call to eval to set the filename
|
| - // that the eval is supposed to present.
|
| - goog.global['$googDebugFname'] || href;
|
| - } catch (e) {
|
| - // Firefox 2 may also throw an error when accessing 'filename'.
|
| - fileName = 'Not available';
|
| - threwError = true;
|
| - }
|
| -
|
| - // The IE Error object contains only the name and the message.
|
| - // The Safari Error object uses the line and sourceURL fields.
|
| - if (threwError || !err.lineNumber || !err.fileName || !err.stack ||
|
| - !err.message || !err.name) {
|
| - return {
|
| - 'message': err.message || 'Not available',
|
| - 'name': err.name || 'UnknownError',
|
| - 'lineNumber': lineNumber,
|
| - 'fileName': fileName,
|
| - 'stack': err.stack || 'Not available'
|
| - };
|
| - }
|
| -
|
| - // Standards error object
|
| - return err;
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Converts an object to an Error if it's a String,
|
| - * adds a stacktrace if there isn't one,
|
| - * and optionally adds an extra message.
|
| - * @param {Error|string} err the original thrown object or string.
|
| - * @param {string=} opt_message optional additional message to add to the
|
| - * error.
|
| - * @return {!Error} If err is a string, it is used to create a new Error,
|
| - * which is enhanced and returned. Otherwise err itself is enhanced
|
| - * and returned.
|
| - */
|
| -goog.debug.enhanceError = function(err, opt_message) {
|
| - var error;
|
| - if (typeof err == 'string') {
|
| - error = Error(err);
|
| - if (Error.captureStackTrace) {
|
| - // Trim this function off the call stack, if we can.
|
| - Error.captureStackTrace(error, goog.debug.enhanceError);
|
| - }
|
| - } else {
|
| - error = err;
|
| - }
|
| -
|
| - if (!error.stack) {
|
| - error.stack = goog.debug.getStacktrace(goog.debug.enhanceError);
|
| - }
|
| - if (opt_message) {
|
| - // find the first unoccupied 'messageX' property
|
| - var x = 0;
|
| - while (error['message' + x]) {
|
| - ++x;
|
| - }
|
| - error['message' + x] = String(opt_message);
|
| - }
|
| - return error;
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Gets the current stack trace. Simple and iterative - doesn't worry about
|
| - * catching circular references or getting the args.
|
| - * @param {number=} opt_depth Optional maximum depth to trace back to.
|
| - * @return {string} A string with the function names of all functions in the
|
| - * stack, separated by \n.
|
| - * @suppress {es5Strict}
|
| - */
|
| -goog.debug.getStacktraceSimple = function(opt_depth) {
|
| - if (goog.STRICT_MODE_COMPATIBLE) {
|
| - var stack = goog.debug.getNativeStackTrace_(goog.debug.getStacktraceSimple);
|
| - if (stack) {
|
| - return stack;
|
| - }
|
| - // NOTE: browsers that have strict mode support also have native "stack"
|
| - // properties. Fall-through for legacy browser support.
|
| - }
|
| -
|
| - var sb = [];
|
| - var fn = arguments.callee.caller;
|
| - var depth = 0;
|
| -
|
| - while (fn && (!opt_depth || depth < opt_depth)) {
|
| - sb.push(goog.debug.getFunctionName(fn));
|
| - sb.push('()\n');
|
| - /** @preserveTry */
|
| - try {
|
| - fn = fn.caller;
|
| - } catch (e) {
|
| - sb.push('[exception trying to get caller]\n');
|
| - break;
|
| - }
|
| - depth++;
|
| - if (depth >= goog.debug.MAX_STACK_DEPTH) {
|
| - sb.push('[...long stack...]');
|
| - break;
|
| - }
|
| - }
|
| - if (opt_depth && depth >= opt_depth) {
|
| - sb.push('[...reached max depth limit...]');
|
| - } else {
|
| - sb.push('[end]');
|
| - }
|
| -
|
| - return sb.join('');
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Max length of stack to try and output
|
| - * @type {number}
|
| - */
|
| -goog.debug.MAX_STACK_DEPTH = 50;
|
| -
|
| -
|
| -/**
|
| - * @param {Function} fn The function to start getting the trace from.
|
| - * @return {?string}
|
| - * @private
|
| - */
|
| -goog.debug.getNativeStackTrace_ = function(fn) {
|
| - var tempErr = new Error();
|
| - if (Error.captureStackTrace) {
|
| - Error.captureStackTrace(tempErr, fn);
|
| - return String(tempErr.stack);
|
| - } else {
|
| - // IE10, only adds stack traces when an exception is thrown.
|
| - try {
|
| - throw tempErr;
|
| - } catch (e) {
|
| - tempErr = e;
|
| - }
|
| - var stack = tempErr.stack;
|
| - if (stack) {
|
| - return String(stack);
|
| - }
|
| - }
|
| - return null;
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Gets the current stack trace, either starting from the caller or starting
|
| - * from a specified function that's currently on the call stack.
|
| - * @param {Function=} opt_fn Optional function to start getting the trace from.
|
| - * If not provided, defaults to the function that called this.
|
| - * @return {string} Stack trace.
|
| - * @suppress {es5Strict}
|
| - */
|
| -goog.debug.getStacktrace = function(opt_fn) {
|
| - var stack;
|
| - if (goog.STRICT_MODE_COMPATIBLE) {
|
| - // Try to get the stack trace from the environment if it is available.
|
| - var contextFn = opt_fn || goog.debug.getStacktrace;
|
| - stack = goog.debug.getNativeStackTrace_(contextFn);
|
| - }
|
| - if (!stack) {
|
| - // NOTE: browsers that have strict mode support also have native "stack"
|
| - // properties. This function will throw in strict mode.
|
| - stack = goog.debug.getStacktraceHelper_(
|
| - opt_fn || arguments.callee.caller, []);
|
| - }
|
| - return stack;
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Private helper for getStacktrace().
|
| - * @param {Function} fn Function to start getting the trace from.
|
| - * @param {Array<!Function>} visited List of functions visited so far.
|
| - * @return {string} Stack trace starting from function fn.
|
| - * @suppress {es5Strict}
|
| - * @private
|
| - */
|
| -goog.debug.getStacktraceHelper_ = function(fn, visited) {
|
| - var sb = [];
|
| -
|
| - // Circular reference, certain functions like bind seem to cause a recursive
|
| - // loop so we need to catch circular references
|
| - if (goog.array.contains(visited, fn)) {
|
| - sb.push('[...circular reference...]');
|
| -
|
| - // Traverse the call stack until function not found or max depth is reached
|
| - } else if (fn && visited.length < goog.debug.MAX_STACK_DEPTH) {
|
| - sb.push(goog.debug.getFunctionName(fn) + '(');
|
| - var args = fn.arguments;
|
| - // Args may be null for some special functions such as host objects or eval.
|
| - for (var i = 0; args && i < args.length; i++) {
|
| - if (i > 0) {
|
| - sb.push(', ');
|
| - }
|
| - var argDesc;
|
| - var arg = args[i];
|
| - switch (typeof arg) {
|
| - case 'object':
|
| - argDesc = arg ? 'object' : 'null';
|
| - break;
|
| -
|
| - case 'string':
|
| - argDesc = arg;
|
| - break;
|
| -
|
| - case 'number':
|
| - argDesc = String(arg);
|
| - break;
|
| -
|
| - case 'boolean':
|
| - argDesc = arg ? 'true' : 'false';
|
| - break;
|
| -
|
| - case 'function':
|
| - argDesc = goog.debug.getFunctionName(arg);
|
| - argDesc = argDesc ? argDesc : '[fn]';
|
| - break;
|
| -
|
| - case 'undefined':
|
| - default:
|
| - argDesc = typeof arg;
|
| - break;
|
| - }
|
| -
|
| - if (argDesc.length > 40) {
|
| - argDesc = argDesc.substr(0, 40) + '...';
|
| - }
|
| - sb.push(argDesc);
|
| - }
|
| - visited.push(fn);
|
| - sb.push(')\n');
|
| - /** @preserveTry */
|
| - try {
|
| - sb.push(goog.debug.getStacktraceHelper_(fn.caller, visited));
|
| - } catch (e) {
|
| - sb.push('[exception trying to get caller]\n');
|
| - }
|
| -
|
| - } else if (fn) {
|
| - sb.push('[...long stack...]');
|
| - } else {
|
| - sb.push('[end]');
|
| - }
|
| - return sb.join('');
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Set a custom function name resolver.
|
| - * @param {function(Function): string} resolver Resolves functions to their
|
| - * names.
|
| - */
|
| -goog.debug.setFunctionResolver = function(resolver) {
|
| - goog.debug.fnNameResolver_ = resolver;
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Gets a function name
|
| - * @param {Function} fn Function to get name of.
|
| - * @return {string} Function's name.
|
| - */
|
| -goog.debug.getFunctionName = function(fn) {
|
| - if (goog.debug.fnNameCache_[fn]) {
|
| - return goog.debug.fnNameCache_[fn];
|
| - }
|
| - if (goog.debug.fnNameResolver_) {
|
| - var name = goog.debug.fnNameResolver_(fn);
|
| - if (name) {
|
| - goog.debug.fnNameCache_[fn] = name;
|
| - return name;
|
| - }
|
| - }
|
| -
|
| - // Heuristically determine function name based on code.
|
| - var functionSource = String(fn);
|
| - if (!goog.debug.fnNameCache_[functionSource]) {
|
| - var matches = /function ([^\(]+)/.exec(functionSource);
|
| - if (matches) {
|
| - var method = matches[1];
|
| - goog.debug.fnNameCache_[functionSource] = method;
|
| - } else {
|
| - goog.debug.fnNameCache_[functionSource] = '[Anonymous]';
|
| - }
|
| - }
|
| -
|
| - return goog.debug.fnNameCache_[functionSource];
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Makes whitespace visible by replacing it with printable characters.
|
| - * This is useful in finding diffrences between the expected and the actual
|
| - * output strings of a testcase.
|
| - * @param {string} string whose whitespace needs to be made visible.
|
| - * @return {string} string whose whitespace is made visible.
|
| - */
|
| -goog.debug.makeWhitespaceVisible = function(string) {
|
| - return string.replace(/ /g, '[_]')
|
| - .replace(/\f/g, '[f]')
|
| - .replace(/\n/g, '[n]\n')
|
| - .replace(/\r/g, '[r]')
|
| - .replace(/\t/g, '[t]');
|
| -};
|
| -
|
| -
|
| -/**
|
| - * Hash map for storing function names that have already been looked up.
|
| - * @type {Object}
|
| - * @private
|
| - */
|
| -goog.debug.fnNameCache_ = {};
|
| -
|
| -
|
| -/**
|
| - * Resolves functions to their names. Resolved function names will be cached.
|
| - * @type {function(Function):string}
|
| - * @private
|
| - */
|
| -goog.debug.fnNameResolver_;
|
|
|