Support m76 migration 30/221830/3
authorSangYong Park <sy302.park@samsung.com>
Wed, 8 Jan 2020 01:21:54 +0000 (10:21 +0900)
committerSangYong Park <sy302.park@samsung.com>
Wed, 29 Jan 2020 08:40:07 +0000 (17:40 +0900)
add process.wrtBinding() for using process.binding() and process._linkedBinding().
(electron's binding api is changed to process._linkedBinding() from process.binding())
and, change class name of TizenExtension to XWalkExtension.

Change-Id: I059fa50051b206bcf5b478442ccf6658ea71ce60
Signed-off-by: SangYong Park <sy302.park@samsung.com>
14 files changed:
wrt_app/browser/init.js
wrt_app/browser/wrt.js
wrt_app/browser/wrt_web_contents.js
wrt_app/browser/wrt_window.js
wrt_app/common/extensions.json [new file with mode: 0644]
wrt_app/common/init.js [new file with mode: 0644]
wrt_app/common/wrt_xwalk_extension.js [new file with mode: 0644]
wrt_app/renderer/init.js
wrt_app/renderer/wrt_renderer.js
wrt_app/service/main.js
wrt_app/service/plugins.json [deleted file]
wrt_app/service/tizen_extension.js [deleted file]
wrt_app/service/wrt_service_extension.js [deleted file]
wrt_app/src/runtime.js

index 663464cbd8e8bdbd0076b9ddcd8e196732c43dd9..9fccd6f8c2dd4b2613c4342de38516eb66f451dc 100755 (executable)
@@ -14,5 +14,6 @@
  *    limitations under the License.
  */
 
-const wrt = require('./wrt');
+require('../common/init')
+const wrt = require('./wrt')
 require(wrt.getElectronPath() + '/browser/init')
index a49ef33ff706a40cc933a1000cc40b436422247d..288cb5b9bcda4afebaca6dc55f78126ca4b13c00 100755 (executable)
@@ -14,7 +14,7 @@
  *    limitations under the License.
  */
 require('../common/exception_handling');
-const {wrt} = process.binding('wrt');
+const {wrt} = process.wrtBinding('wrt');
 const {EventEmitter} = require('events');
 const util = require('util');
 
index 994cca24cce6b4290dc80deaedcdf215aa2dd9eb..5c2535a7a7b7b75c536b2c9e3ffd9cec1d2dcdd3 100644 (file)
@@ -14,9 +14,9 @@
  *    limitations under the License.
  */
 
-const binding = process.binding('wrt_web_contents')
+const binding = process.wrtBinding('wrt_web_contents')
 const { WRTWebContents } = binding
-const { WebContents: AtomWebContents } = process.atomBinding('web_contents')
+const { WebContents: AtomWebContents } = process.wrtBinding('atom_browser_web_contents')
 
 const parent = AtomWebContents.prototype
 AtomWebContents.prototype = WRTWebContents.prototype
index 6917b699306cfea3d310b3209cf4ef88e29a8187..004f26d21debb55a7b3e22ff8cd56cfefe782496 100644 (file)
@@ -14,7 +14,7 @@
  *    limitations under the License.
  */
 
-const { WRTWindow } = process.binding('wrt_window')
+const { WRTWindow } = process.wrtBinding('wrt_window')
 const { BrowserWindow } = require('electron')
 const WRTWebContents = require('../browser/wrt_web_contents');
 
diff --git a/wrt_app/common/extensions.json b/wrt_app/common/extensions.json
new file mode 100644 (file)
index 0000000..ba82e28
--- /dev/null
@@ -0,0 +1,52 @@
+[
+  {
+    "name":"tizen.filesystem",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_filesystem.so",
+    "entry_points": []
+  },
+  {
+    "name":"tizen.messageport",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_messageport.so",
+    "entry_points": []
+  },
+  {
+    "name":"tizen",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen.so",
+    "entry_points": []
+  },
+  {
+    "name":"tizen.datacontrol",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_datacontrol.so",
+    "entry_points": []
+  },
+  {
+    "name":"tizen.application",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_application.so",
+    "entry_points": ["tizen.ApplicationControl","tizen.ApplicationControlData"]
+  },
+  {
+    "name":"tizen.time",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_time.so",
+    "entry_points": ["tizen.TZDate","tizen.TimeDuration"]
+  },
+  {
+    "name":"xwalk",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_utils.so",
+    "entry_points": []
+  },
+  {
+    "name":"tizen.systeminfo",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_systeminfo.so",
+    "entry_points": []
+  },
+  {
+    "name":"tizen.package",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_package.so",
+    "entry_points": []
+  },
+  {
+    "name":"tizen.alarm",
+    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_alarm.so",
+    "entry_points": ["tizen.AlarmRelative","tizen.AlarmAbsolute"]
+  }
+]
diff --git a/wrt_app/common/init.js b/wrt_app/common/init.js
new file mode 100644 (file)
index 0000000..b407422
--- /dev/null
@@ -0,0 +1,11 @@
+process.wrtBinding = (name) => {
+  try {
+    return process._linkedBinding(name)
+  } catch (error) {
+    if (/No such module/.test(error.message)) {
+      return process.binding(name)
+    } else {
+      throw error
+    }
+  }
+}
diff --git a/wrt_app/common/wrt_xwalk_extension.js b/wrt_app/common/wrt_xwalk_extension.js
new file mode 100644 (file)
index 0000000..86a6575
--- /dev/null
@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd 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.
+ */
+
+require('./exception_handling');
+
+var api_ = {};
+var extensions_ = {};
+
+class XWalkExtension {
+  constructor() {
+    let plugins = require('./extensions.json');
+
+    const binding = process.wrtBinding('wrt_xwalk_extension')
+    var extensions = binding.getExtensions();
+    for (var i = 0; i < extensions.length; i++) {
+      extensions[i].loaded = false;
+      for (var idx in plugins) {
+        if (extensions[i].name === plugins[idx].name) {
+          console.log("Load extension : " + extensions[i].name);
+          extensions_[extensions[i].name] = extensions[i];
+        }
+      }
+    }
+    for (var name in extensions_) {
+      if (!extensions_[name].use_trampoline) {
+        this.load(extensions_[name]);
+      }
+    }
+    for (var name in extensions_) {
+      if (extensions_[name].use_trampoline) {
+        this.installTrampoline(extensions_[name]);
+      }
+    }
+  }
+
+  /**
+   * Creates namespace for 'name' in given object.
+   * Eg. this.createNamespace(GLOBAL, 'tizen.contact') will create:
+   * GLOBAL.tizen.contact = {}
+   *
+   * @param {Object} object
+   * @param {String} name
+   */
+  createNamespace(object, name) {
+    var obj = object;
+    var arr = name.split('.');
+    for (var i = 0; i < arr.length; i++) {
+      obj[arr[i]] = obj[arr[i]] || {};
+      obj = obj[arr[i]];
+    }
+  }
+
+  exposeApi(ext) {
+    var i, entry_points, entry_point, tmp, parent_name, base_name;
+
+    // additional entry points are installed in GLOBAL context by eval()
+    // so we need to move it to protected api_ object first
+    entry_points = [...new Set(ext.entry_points)];
+    for (i = 0; i < entry_points.length; i++) {
+      entry_point = entry_points[i];
+      tmp = entry_point.split('.');
+      parent_name = tmp[0];
+      base_name = tmp[tmp.length - 1];
+
+      api_[parent_name][base_name] = GLOBAL[parent_name][base_name];
+      delete GLOBAL[parent_name][base_name];
+    }
+
+    entry_points.push(ext.name);
+
+    for (i = 0; i < entry_points.length; i++) {
+      entry_point = entry_points[i];
+      tmp = entry_point.split('.');
+      parent_name = tmp[0];
+      base_name = tmp[tmp.length - 1];
+
+      Object.defineProperty(GLOBAL[parent_name], base_name, {
+        get: function (parent_name, base_name) {
+          return function () {
+              return api_[parent_name][base_name];
+          }
+        }(parent_name, base_name),
+        configurable: false,
+        enumerable: true
+      });
+    }
+  }
+
+  /**
+   * @param {Object} ext
+   */
+  load(ext) {
+    if (ext.loaded) {
+      return;
+    }
+    ext.loadInstance();
+
+    ext.loaded = true;
+
+    this.createNamespace(api_, ext.name);
+    this.createNamespace(GLOBAL, ext.name);
+
+    var api = (ext.use_trampoline) ? api_ : GLOBAL;
+
+    var jscode =
+      '(function(extension) {' +
+      '  extension.internal = {};' +
+      '  extension.internal.sendSyncMessage = extension.sendSyncMessage;' +
+      '  delete extension.sendSyncMessage;' +
+      '  var exports = {}; ' +
+      '  (function() {\'use strict\'; ' + ext.jsapi + '})();' +
+      '  api.' + ext.name + ' = exports; ' +
+      '});';
+
+    try {
+      var func = eval(jscode);
+      func({
+        postMessage: function(msg) {
+          return ext.postMessage(msg);
+        },
+        sendSyncMessage: function(msg) {
+          return ext.sendSyncMessage(msg);
+        },
+        setMessageListener: function(fn) {
+          return ext.setMessageListener(fn);
+        },
+        sendRuntimeMessage: function(type, data) {
+          return runtimeMessageHandler(type, data);
+        },
+        sendRuntimeSyncMessage: function(type, data) {
+          return runtimeMessageHandler(type, data);
+        },
+        sendRuntimeAsyncMessage: function(type, data, callback) {
+          return runtimeMessageHandler(type, data, callback);
+        },
+        postData: function(msg, chunk) {
+          return ext.postData(msg, chunk);
+        },
+        sendSyncData: function(msg, chunk) {
+          return ext.sendSyncData(msg, chunk);
+        },
+        setDataListener: function(fn) {
+          return ext.setDataListener(fn);
+        },
+        receiveChunkData: function(id, type) {
+          return ext.receiveChunkData(id, type);
+        }
+      });
+
+      if (ext.use_trampoline) {
+        this.exposeApi(ext);
+      }
+    } catch (err) {
+      console.log('Error loading extension "' + ext.name + '": ' + err.message);
+    }
+  }
+
+  /**
+   * This is used to defer extension loading to it's first usage.
+   * Eg. First access to tizen.contact will load extension's 'jsapi' through eval().
+   *
+   * @param {Object} ext
+   */
+  installTrampoline(ext) {
+    var entry_points = [...new Set(ext.entry_points)];
+    entry_points.push(ext.name);
+    for (var i = 0; i < entry_points.length; i++) {
+      var tmp = entry_points[i].split('.');
+      var parent_name = tmp[0];
+      var base_name = tmp[tmp.length - 1];
+
+      this.createNamespace(GLOBAL, entry_points[i]);
+
+      Object.defineProperty(GLOBAL[parent_name], base_name, {
+        get: function (parent_name, base_name) {
+          return function() {
+            try {
+              this.deleteTrampoline(ext);
+              this.load(ext);
+              return api_[parent_name][base_name];
+            } catch (e) {
+              console.log(e.stack);
+            }
+          }.bind(this);
+        }.call(this, parent_name, base_name),
+        enumerable: true
+      });
+    }
+  }
+
+  deleteTrampoline(ext) {
+    var entry_points = [...new Set(ext.entry_points)];
+    entry_points.push(ext.name);
+
+    for (var i = 0; i < entry_points.length; i++) {
+      var tmp = entry_points[i].split('.');
+      var parent_name = tmp[0];
+      var base_name = tmp[tmp.length - 1];
+      delete GLOBAL[parent_name][base_name];
+    }
+  }
+}
+
+module.exports = XWalkExtension;
index f0265e3331615de37b6f773535c95e539035ff31..e207bcd32180e21abb9fb9d9a31267e88e1b5393 100755 (executable)
@@ -14,6 +14,7 @@
  *    limitations under the License.
  */
 
+require('../common/init')
 require('../common/exception_handling');
 require('../common/config-search-paths');
 const wrtRenderer = require('./wrt_renderer');
index d642327ca81b29cbe4c85b3c46b62ae78d7c381f..c1b183a075c5a55f98d918ba753c4a695c20049b 100644 (file)
@@ -1,3 +1,3 @@
-const {wrtRenderer} = process.binding('wrt_renderer');
+const {wrtRenderer} = process.wrtBinding('wrt_renderer');
 
 module.exports = wrtRenderer
index ed10e5d9aade6deb3e28eb5a72480d16c68615d2..4e2a042d07892d930937ee96c78242305969bfea 100755 (executable)
 const wrt = require('../browser/wrt');
 const vm = require('vm');
 const AccessControlManager = require('./access_control_manager');
-const TizenExtension = require('./tizen_extension');
+const XWalkExtension = require('../common/wrt_xwalk_extension');
 
 var sandbox = [];
 var sandbox_count = 0;
 
 wrt.on('start-service', (event, app_id, permissions) => {
   console.log('start service app : ' + app_id + ', permissions : ' + permissions);
-  new TizenExtension();
+  new XWalkExtension();
   if (sandbox[app_id] === undefined) {
     if (sandbox_count === 0) {
-      new TizenExtension();
+      new XWalkExtension();
     }
     sandbox_count++;
     const Module = require('module');
diff --git a/wrt_app/service/plugins.json b/wrt_app/service/plugins.json
deleted file mode 100644 (file)
index ba82e28..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-[
-  {
-    "name":"tizen.filesystem",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_filesystem.so",
-    "entry_points": []
-  },
-  {
-    "name":"tizen.messageport",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_messageport.so",
-    "entry_points": []
-  },
-  {
-    "name":"tizen",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen.so",
-    "entry_points": []
-  },
-  {
-    "name":"tizen.datacontrol",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_datacontrol.so",
-    "entry_points": []
-  },
-  {
-    "name":"tizen.application",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_application.so",
-    "entry_points": ["tizen.ApplicationControl","tizen.ApplicationControlData"]
-  },
-  {
-    "name":"tizen.time",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_time.so",
-    "entry_points": ["tizen.TZDate","tizen.TimeDuration"]
-  },
-  {
-    "name":"xwalk",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_utils.so",
-    "entry_points": []
-  },
-  {
-    "name":"tizen.systeminfo",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_systeminfo.so",
-    "entry_points": []
-  },
-  {
-    "name":"tizen.package",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_package.so",
-    "entry_points": []
-  },
-  {
-    "name":"tizen.alarm",
-    "lib":"/usr/lib/tizen-extensions-crosswalk/libtizen_alarm.so",
-    "entry_points": ["tizen.AlarmRelative","tizen.AlarmAbsolute"]
-  }
-]
diff --git a/wrt_app/service/tizen_extension.js b/wrt_app/service/tizen_extension.js
deleted file mode 100644 (file)
index 3c88d5a..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (c) 2019 Samsung Electronics Co., Ltd 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.
- */
-
-const extension = require('./wrt_service_extension');
-const wrt = require('../browser/wrt');
-var window = global;
-var api_ = {};
-var extensions_ = {};
-var runtime_variables_ = {'runtime_name': 'wrt-service'};
-
-class TizenExtension {
-  constructor() {
-    let plugins = require('./plugins.json');
-    extension.initialize(runtime_variables_);
-
-    var extensions = extension.getExtensions();
-    for (var i = 0; i < extensions.length; i++) {
-      extensions[i].loaded = false;
-      for (var idx in plugins) {
-        if (extensions[i].name === plugins[idx].name) {
-          console.log("ExtensionLoader name " + extensions[i].name);
-          extensions_[extensions[i].name] = extensions[i];
-        }
-      }
-    }
-    for (var name in extensions_) {
-      if (!extensions_[name].use_trampoline) {
-        this.load(extensions_[name]);
-      }
-    }
-    for (var name in extensions_) {
-      if (extensions_[name].use_trampoline) {
-        this.installTrampoline(extensions_[name]);
-      }
-    }
-  }
-
-  /**
-   * Creates namespace for 'name' in given object.
-   * Eg. this.createNamespace(GLOBAL, 'tizen.contact') will create:
-   * GLOBAL.tizen.contact = {}
-   *
-   * @param {Object} object
-   * @param {String} name
-   */
-  createNamespace(object, name) {
-    var obj = object;
-    var arr = name.split('.');
-    for (var i = 0; i < arr.length; i++) {
-      obj[arr[i]] = obj[arr[i]] || {};
-      obj = obj[arr[i]];
-    }
-  }
-
-  exposeApi(ext) {
-    var i, entry_points, entry_point, tmp, parent_name, base_name;
-
-    // additional entry points are installed in GLOBAL context by eval()
-    // so we need to move it to protected api_ object first
-    entry_points = [...new Set(ext.entry_points)];
-    for (i = 0; i < entry_points.length; i++) {
-      entry_point = entry_points[i];
-      tmp = entry_point.split('.');
-      parent_name = tmp[0];
-      base_name = tmp[tmp.length - 1];
-
-      api_[parent_name][base_name] = GLOBAL[parent_name][base_name];
-      delete GLOBAL[parent_name][base_name];
-    }
-
-    entry_points.push(ext.name);
-
-    for (i = 0; i < entry_points.length; i++) {
-      entry_point = entry_points[i];
-      tmp = entry_point.split('.');
-      parent_name = tmp[0];
-      base_name = tmp[tmp.length - 1];
-
-      Object.defineProperty(GLOBAL[parent_name], base_name, {
-        get: function (parent_name, base_name) {
-          return function () {
-              return api_[parent_name][base_name];
-          }
-        }(parent_name, base_name),
-        configurable: false,
-        enumerable: true
-      });
-    }
-  }
-
-  /**
-   * @param {Object} ext
-   */
-  load(ext) {
-    if (ext.loaded) {
-      return;
-    }
-    ext.loadInstance();
-
-    ext.loaded = true;
-
-    this.createNamespace(api_, ext.name);
-    this.createNamespace(GLOBAL, ext.name);
-
-    var api = (ext.use_trampoline) ? api_ : GLOBAL;
-
-    var jscode =
-      '(function(extension) {' +
-      '  extension.internal = {};' +
-      '  extension.internal.sendSyncMessage = extension.sendSyncMessage;' +
-      '  delete extension.sendSyncMessage;' +
-      '  var exports = {}; ' +
-      '  (function() {\'use strict\'; ' + ext.jsapi + '})();' +
-      '  api.' + ext.name + ' = exports; ' +
-      '});';
-
-    try {
-      var func = eval(jscode);
-      func({
-        postMessage: function(msg) {
-          return ext.postMessage(msg);
-        },
-        sendSyncMessage: function(msg) {
-          return ext.sendSyncMessage(msg);
-        },
-        setMessageListener: function(fn) {
-          return ext.setMessageListener(fn);
-        },
-        sendRuntimeMessage: function(type, data) {
-          return runtimeMessageHandler(type, data);
-        },
-        sendRuntimeSyncMessage: function(type, data) {
-          return runtimeMessageHandler(type, data);
-        },
-        sendRuntimeAsyncMessage: function(type, data, callback) {
-          return runtimeMessageHandler(type, data, callback);
-        },
-        postData: function(msg, chunk) {
-          return ext.postData(msg, chunk);
-        },
-        sendSyncData: function(msg, chunk) {
-          return ext.sendSyncData(msg, chunk);
-        },
-        setDataListener: function(fn) {
-          return ext.setDataListener(fn);
-        },
-        receiveChunkData: function(id, type) {
-          return ext.receiveChunkData(id, type);
-        }
-      });
-
-      if (ext.use_trampoline) {
-        this.exposeApi(ext);
-      }
-    } catch (err) {
-      console.log('Error loading extension "' + ext.name + '": ' + err.message);
-    }
-  }
-
-  /**
-   * This is used to defer extension loading to it's first usage.
-   * Eg. First access to tizen.contact will load extension's 'jsapi' through eval().
-   *
-   * @param {Object} ext
-   */
-  installTrampoline(ext) {
-    var entry_points = [...new Set(ext.entry_points)];
-    entry_points.push(ext.name);
-    for (var i = 0; i < entry_points.length; i++) {
-      var tmp = entry_points[i].split('.');
-      var parent_name = tmp[0];
-      var base_name = tmp[tmp.length - 1];
-
-      this.createNamespace(GLOBAL, entry_points[i]);
-
-      Object.defineProperty(GLOBAL[parent_name], base_name, {
-        get: function (parent_name, base_name) {
-          return function() {
-            try {
-              this.deleteTrampoline(ext);
-              this.load(ext);
-              return api_[parent_name][base_name];
-            } catch (e) {
-              console.log(e.stack);
-            }
-          }.bind(this);
-        }.call(this, parent_name, base_name),
-        enumerable: true
-      });
-    }
-  }
-
-  deleteTrampoline(ext) {
-    var entry_points = [...new Set(ext.entry_points)];
-    entry_points.push(ext.name);
-
-    for (var i = 0; i < entry_points.length; i++) {
-      var tmp = entry_points[i].split('.');
-      var parent_name = tmp[0];
-      var base_name = tmp[tmp.length - 1];
-      delete GLOBAL[parent_name][base_name];
-    }
-  }
-}
-module.exports = TizenExtension;
diff --git a/wrt_app/service/wrt_service_extension.js b/wrt_app/service/wrt_service_extension.js
deleted file mode 100644 (file)
index 8207706..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-require('../common/exception_handling');
-const wrt_service_extension = process.binding('wrt_service_extension')
-
-module.exports = wrt_service_extension;
index 3fa6ac9c0304b69f09777862502816abf574baaf..bd641fc80c0f2aefc33d5a09c70d8090e636cada 100755 (executable)
@@ -21,9 +21,9 @@ const AddonManager = require('./addon_manager');
 const {app, ipcMain} = require('electron');
 const IPC_MESSAGE = require('./ipc_message');
 const TimerManager = require('../service/timer_manager');
-const TizenExtension = require('../service/tizen_extension');
 const WAS_EVENT = require('./was_event');
 const WebApplication = require('./web_application');
+const XWalkExtension = require('../common/wrt_xwalk_extension');
 
 class Runtime {
     constructor(options) {
@@ -215,7 +215,7 @@ class Runtime {
             if (type === 'startService') {
                 if (_this.sandbox[app_id] === undefined) {
                     if (_this.sandbox_count === 0) {
-                        new TizenExtension();
+                        new XWalkExtension();
                     }
                     _this.sandbox_count++;
                     const fs = require('fs');