Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / file_manager / video_player / js / error_util.js
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 'use strict';
6
7 /**
8  * This variable is checked in SelectFileDialogExtensionBrowserTest.
9  * @type {number}
10  */
11 window.JSErrorCount = 0;
12
13 /**
14  * Counts uncaught exceptions.
15  */
16 window.onerror = function() { window.JSErrorCount++; };
17
18 /**
19  * Wraps the function to use it as a callback.
20  * This does:
21  *  - Capture the stack trace in case of error.
22  *  - Bind this object
23  *
24  * @param {Object} thisObject Object to be used as this.
25  * @return {function} Wapped function.
26  */
27 Function.prototype.wrap = function(thisObject) {
28   var func = this;
29   var liveStack = (new Error('Stack trace before async call')).stack;
30   if (thisObject === undefined)
31     thisObject = null;
32
33   return function wrappedCallback() {
34     try {
35       return func.apply(thisObject, arguments);
36     } catch (e) {
37       console.error('Exception happens in callback.', liveStack);
38
39       window.JSErrorCount++;
40       throw e;
41     }
42   }
43 };