Index: Source/bindings/core/v8/PrivateScriptRunner.js |
diff --git a/Source/bindings/core/v8/PrivateScriptRunner.js b/Source/bindings/core/v8/PrivateScriptRunner.js |
index aaea26d0e4aae2897e655dc89f56d82ed2a84cb3..cd8f78d4f29f16f7fea7d200324595dd19f3c295 100644 |
--- a/Source/bindings/core/v8/PrivateScriptRunner.js |
+++ b/Source/bindings/core/v8/PrivateScriptRunner.js |
@@ -4,43 +4,11 @@ |
"use strict"; |
-var installedClasses = {}; |
-var PrivateScriptDOMException = {}; |
-var PrivateScriptJSError = {}; |
- |
-// Private scripts can throw JS errors and DOM exceptions as follows: |
-// throwException(PrivateScriptDOMException.IndexSizeError, "..."); |
-// throwException(PrivateScriptJSError.TypeError, "..."); |
-// |
-// Note that normal JS errors thrown by private scripts are treated |
-// as real JS errors caused by programming mistake and the execution crashes. |
-// If you want to intentially throw JS errors from private scripts, |
-// you need to use throwException(PrivateScriptJSError.TypeError, "..."). |
-function throwException(code, message) |
+function PrivateScriptController() |
{ |
- function PrivateScriptException() |
- { |
- } |
- |
- var exception = new PrivateScriptException(); |
- exception.code = code; |
- exception.message = message; |
- exception.name = "PrivateScriptException"; |
- throw exception; |
-} |
- |
-function installClass(className, implementation) |
-{ |
- function PrivateScriptClass() |
- { |
- } |
- |
- if (!(className in installedClasses)) |
- installedClasses[className] = new PrivateScriptClass(); |
- implementation(installedClasses[className]); |
-} |
- |
-(function (global) { |
+ this._installedClasses = {}; |
+ this._DOMException = {}; |
+ this._JSError = {}; |
// This list must be in sync with the enum in ExceptionCode.h. The order matters. |
var domExceptions = [ |
"IndexSizeError", |
@@ -105,19 +73,70 @@ function installClass(className, implementation) |
var code = 1; |
domExceptions.forEach(function (exception) { |
- global.PrivateScriptDOMException[exception] = code; |
+ this._DOMException[exception] = code; |
++code; |
- }); |
+ }.bind(this)); |
var code = 1000; |
jsErrors.forEach(function (exception) { |
- global.PrivateScriptJSError[exception] = code; |
+ this._JSError[exception] = code; |
++code; |
- }); |
+ }.bind(this)); |
+} |
+ |
+PrivateScriptController.prototype = { |
+ get installedClasses() |
+ { |
+ return this._installedClasses; |
+ }, |
+ |
+ get DOMException() |
+ { |
+ return this._DOMException; |
+ }, |
+ |
+ get JSError() |
+ { |
+ return this._JSError; |
+ }, |
+ |
+ installClass: function(className, implementation) |
+ { |
+ function PrivateScriptClass() |
+ { |
+ } |
+ |
+ if (!(className in this._installedClasses)) |
+ this._installedClasses[className] = new PrivateScriptClass(); |
+ implementation(this._installedClasses[className]); |
+ }, |
+ |
+ // Private scripts can throw JS errors and DOM exceptions as follows: |
+ // throwException(privateScriptController.DOMException.IndexSizeError, "..."); |
+ // throwException(privateScriptController.JSError.TypeError, "..."); |
+ // |
+ // Note that normal JS errors thrown by private scripts are treated |
+ // as real JS errors caused by programming mistake and the execution crashes. |
+ // If you want to intentially throw JS errors from private scripts, |
+ // you need to use throwException(privateScriptController.JSError.TypeError, "..."). |
+ throwException: function(code, message) |
+ { |
+ function PrivateScriptException() |
+ { |
+ } |
+ |
+ var exception = new PrivateScriptException(); |
+ exception.code = code; |
+ exception.message = message; |
+ exception.name = "PrivateScriptException"; |
+ throw exception; |
+ }, |
+} |
-})(window); |
+if (typeof window.privateScriptController === 'undefined') |
+ window.privateScriptController = new PrivateScriptController(); |
// This line must be the last statement of this JS file. |
// A parenthesis is needed, because the caller of this script (PrivateScriptRunner.cpp) |
// is depending on the completion value of this script. |
-(installedClasses); |
+(privateScriptController.installedClasses); |