mirror of
https://github.com/gnh1201/welsonjs.git
synced 2025-06-10 23:29:03 +00:00
Merge pull request #268 from gnh1201/dev
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
Introduce the accessor and improve the CDP protocol interface
This commit is contained in:
commit
a1eeb31070
|
@ -14,15 +14,15 @@ var AutoIt = require("lib/autoit");
|
|||
var Toolkit = require("lib/toolkit");
|
||||
var ExtraMath = require("lib/extramath");
|
||||
|
||||
// for remote debugging
|
||||
var pageEventId = 0;
|
||||
// for Chromium-based browsers
|
||||
var pageEventId = new STD.Accessor(0);
|
||||
var publisherName = new STD.Accessor("chrome");
|
||||
|
||||
var ChromeObject = function() {
|
||||
STD.EventTarget.apply(this, arguments); // Set event-attachable object
|
||||
|
||||
this.publisherName = "chrome";
|
||||
this.workingDirectory = SYS.getEnvString("PROGRAMFILES") + "\\Google\\Chrome\\Application";
|
||||
this.binPath = SYS.getEnvString("PROGRAMFILES") + "\\Google\\Chrome\\Application\\chrome.exe";
|
||||
this.workingDirectory = null;
|
||||
this.binPath = null;
|
||||
|
||||
this.profileName = "Default";
|
||||
this.userDataDir = null;
|
||||
|
@ -34,7 +34,7 @@ var ChromeObject = function() {
|
|||
"protocol": "socks5",
|
||||
"host": "127.0.0.1",
|
||||
"port": 1080,
|
||||
"ua": null
|
||||
"userAgent": null
|
||||
};
|
||||
this.inPrivate = false;
|
||||
|
||||
|
@ -63,6 +63,8 @@ var ChromeObject = function() {
|
|||
this.oAutoIt = AutoIt.create();
|
||||
this.baseScreenX = 1;
|
||||
this.baseScreenY = (!this.isAppMode ? 84 : 32);
|
||||
this.setPublisherName(publisherName.get());
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
|
@ -77,8 +79,11 @@ var ChromeObject = function() {
|
|||
|
||||
this.setProfile = function(profileName, installedDir) {
|
||||
this.profileName = (profileName == "Default" ? "Chrome" : profileName);
|
||||
this.workingDirectory = this.workingDirectory.replace(":installedDir", installedDir);
|
||||
this.binPath = this.binPath.replace(":installedDir", installedDir);
|
||||
if (installedDir != null) {
|
||||
this.installedDir = installedDir;
|
||||
}
|
||||
this.workingDirectory = this.workingDirectory.replace(":installedDir", this.installedDir);
|
||||
this.binPath = this.binPath.replace(":installedDir", this.installedDir);
|
||||
return this;
|
||||
};
|
||||
|
||||
|
@ -102,7 +107,7 @@ var ChromeObject = function() {
|
|||
if (dirname != null) {
|
||||
this.userDataDir = dirname;
|
||||
} else {
|
||||
this.userDataDir = SYS.getEnvString("APPDATA") + "\\WelsonJS\\" + this.publisherName + "_user_profile";
|
||||
this.userDataDir = SYS.getEnvString("APPDATA") + "\\WelsonJS\\" + publisherName.get() + "_user_profile";
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
@ -188,7 +193,7 @@ var ChromeObject = function() {
|
|||
cmd.push("\"--user-data-dir=" + this.userDataDir + "\"");
|
||||
cmd.push("\"" + url + "\"");
|
||||
|
||||
SHELL.createShoutcut(this.publisherName + " (" + this.profileName + ")", cmd.join(' '), SYS.getCurrentScriptDirectory());
|
||||
SHELL.createShoutcut(publisherName.get() + " (" + this.profileName + ")", cmd.join(' '), SYS.getCurrentScriptDirectory());
|
||||
};
|
||||
|
||||
this.setInPrivate = function(flag) {
|
||||
|
@ -196,13 +201,13 @@ var ChromeObject = function() {
|
|||
return this;
|
||||
};
|
||||
|
||||
this.setUserAgent = function(ua) {
|
||||
this.userAgent = ua;
|
||||
this.setUserAgent = function(userAgent) {
|
||||
this.userAgent = userAgent;
|
||||
return this;
|
||||
};
|
||||
|
||||
this.addUserAgent = function(ua) {
|
||||
this.userAgents.push(ua);
|
||||
this.addUserAgent = function(userAgent) {
|
||||
this.userAgents.push(userAgent);
|
||||
return this;
|
||||
};
|
||||
|
||||
|
@ -223,8 +228,7 @@ var ChromeObject = function() {
|
|||
|
||||
// if the file does not exists, Check the 32bit installation folder again
|
||||
if (!FILE.fileExists(this.binPath)) {
|
||||
this.workingDirectory = SYS.getEnvString("PROGRAMFILES(X86)") + "\\Google\\:installedDir\\Application";
|
||||
this.binPath = SYS.getEnvString("PROGRAMFILES(X86)") + "\\Google\\:installedDir\\Application\\chrome.exe";
|
||||
this.setPublisherName("chrome.x86");
|
||||
this.setProfile(this.profileName, this.installedDir);
|
||||
}
|
||||
|
||||
|
@ -282,8 +286,8 @@ var ChromeObject = function() {
|
|||
if (this.proxy != null && this.isPreventProxy != true) {
|
||||
console.log("Enabled proxy server:", this.proxy.protocol + "://" + this.proxy.host + ":" + this.proxy.port);
|
||||
cmd.push("--proxy-server=\"" + this.proxy.protocol + "://" + this.proxy.host + ":" + this.proxy.port + "\"");
|
||||
if (this.proxy.ua != null) {
|
||||
this.setUserAgent(this.proxy.ua);
|
||||
if (this.proxy.userAgent != null) {
|
||||
this.setUserAgent(this.proxy.userAgent);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -400,11 +404,11 @@ var ChromeObject = function() {
|
|||
try {
|
||||
if (this.pageId != "") {
|
||||
result = this.ws.send("ws://127.0.0.1:" + this.debuggingPort + "/devtools/page/" + this.pageId, JSON.stringify({
|
||||
"id": pageEventId,
|
||||
"id": pageEventId.get(),
|
||||
"method": method,
|
||||
"params": params
|
||||
}));
|
||||
pageEventId++;
|
||||
pageEventId.set(pageEventId.get() + 1);
|
||||
console.log("ChromeObject().sendPageRPC() -> Sent");
|
||||
} else {
|
||||
this.setPageId(null);
|
||||
|
@ -1246,12 +1250,14 @@ var ChromeObject = function() {
|
|||
this.setVendor = function(vendor) {
|
||||
this.setPublisherName(vendor);
|
||||
console.warn("Deprecated: Please use setPublisherName");
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
this.setPublisherName = function(publisherName) {
|
||||
publisherName = publisherName.toLowerCase();
|
||||
this.setPublisherName = function(_publisherName) {
|
||||
publisherName.set(_publisherName.toLowerCase());
|
||||
|
||||
switch (publisherName) {
|
||||
switch (publisherName.get()) {
|
||||
case "msedge":
|
||||
this.workingDirectory = SYS.getEnvString("PROGRAMFILES(X86)") + "\\Microsoft\\Edge\\Application";
|
||||
this.binPath = SYS.getEnvString("PROGRAMFILES(X86)") + "\\Microsoft\\Edge\\Application\\msedge.exe";
|
||||
|
@ -1261,6 +1267,11 @@ var ChromeObject = function() {
|
|||
this.workingDirectory = SYS.getEnvString("PROGRAMFILES") + "\\Google\\Chrome\\Application";
|
||||
this.binPath = SYS.getEnvString("PROGRAMFILES") + "\\Google\\:installedDir\\Application\\chrome.exe";
|
||||
break;
|
||||
|
||||
case "chrome.x86":
|
||||
this.workingDirectory = SYS.getEnvString("PROGRAMFILES(X86)") + "\\Google\\Chrome\\Application";
|
||||
this.binPath = SYS.getEnvString("PROGRAMFILES(X86)") + "\\Google\\:installedDir\\Application\\chrome.exe";
|
||||
break;
|
||||
|
||||
case "chromium":
|
||||
this.workingDirectory = SYS.getEnvString("LOCALAPPDATA") + "\\Chromium\\Application";
|
||||
|
@ -1275,6 +1286,7 @@ var ChromeObject = function() {
|
|||
case "whale":
|
||||
this.workingDirectory = SYS.getEnvString("PROGRAMFILES") + "\\Naver\\Naver Whale\\Application";
|
||||
this.binPath = SYS.getEnvString("PROGRAMFILES") + "\\Naver\\Naver Whale\\Application\\whale.exe";
|
||||
this.baseScreenY = 82;
|
||||
break;
|
||||
|
||||
case "brave":
|
||||
|
@ -1414,7 +1426,7 @@ exports.startDebugInPrivate = function(url, proxy, profileName, debuggingPort, i
|
|||
;
|
||||
};
|
||||
|
||||
exports.VERSIONINFO = "Chrome Web Browser Debugging Interface (chrome.js) version 0.4.18";
|
||||
exports.VERSIONINFO = "Chrome Web Browser Debugging Interface (chrome.js) version 0.4.20";
|
||||
exports.AUTHOR = "abuse@catswords.net";
|
||||
exports.global = global;
|
||||
exports.require = global.require;
|
||||
|
|
61
lib/std.js
61
lib/std.js
|
@ -539,31 +539,59 @@ GeneratorFunction.Yield = function(message) {
|
|||
GeneratorFunction.Yield.prototype = new Error();
|
||||
GeneratorFunction.Yield.prototype.constructor = GeneratorFunction.Yield;
|
||||
|
||||
function StdStorage() {
|
||||
this.data = {};
|
||||
this.length = 0;
|
||||
function StdAccessor(initialValue) {
|
||||
var value = initialValue;
|
||||
|
||||
this.commit = function() {
|
||||
this.length = Object.keys(data).length;
|
||||
this.get = function() {
|
||||
return value;
|
||||
};
|
||||
this.key = function(idx) {
|
||||
var keyName = Object.keys(data)[idx];
|
||||
return data[keyName];
|
||||
|
||||
this.set = function(v) {
|
||||
value = v;
|
||||
};
|
||||
}
|
||||
StdAccessor.isAccessor = function(obj) {
|
||||
return obj instanceof StdAccessor;
|
||||
};
|
||||
|
||||
function StdStorage() {
|
||||
var data = new StdAccessor({});
|
||||
var length = new StdAccessor(0);
|
||||
|
||||
function commit() {
|
||||
length.set(Object.keys(data.get()).length);
|
||||
}
|
||||
|
||||
this.setItem = function(keyName, keyValue) {
|
||||
data[keyName] = keyValue;
|
||||
this.commit();
|
||||
var d = data.get();
|
||||
d[keyName] = keyValue;
|
||||
data.set(d);
|
||||
commit();
|
||||
};
|
||||
|
||||
this.getItem = function(keyName) {
|
||||
return data[keyName];
|
||||
return data.get()[keyName];
|
||||
};
|
||||
|
||||
this.removeItem = function(keyName) {
|
||||
delete data[keyName];
|
||||
this.commit();
|
||||
var d = data.get();
|
||||
delete d[keyName];
|
||||
data.set(d);
|
||||
commit();
|
||||
};
|
||||
|
||||
this.clear = function() {
|
||||
this.data = {};
|
||||
this.commit();
|
||||
data.set({});
|
||||
commit();
|
||||
};
|
||||
|
||||
this.key = function(idx) {
|
||||
var d = data.get();
|
||||
return Object.keys(d)[idx];
|
||||
};
|
||||
|
||||
this.length = function() {
|
||||
return length.get();
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -581,13 +609,14 @@ global.parseEnv = parseEnv;
|
|||
|
||||
exports.Event = StdEvent;
|
||||
exports.EventTarget = StdEventTarget;
|
||||
exports.Accessor = StdAccessor;
|
||||
exports.Storage = StdStorage;
|
||||
|
||||
exports.alert = alert;
|
||||
exports.confirm = confirm;
|
||||
exports.prompt = prompt;
|
||||
|
||||
exports.VERSIONINFO = "WelsonJS Standard Library (std.js) version 0.8.16";
|
||||
exports.VERSIONINFO = "WelsonJS Standard Library (std.js) version 0.8.17";
|
||||
exports.AUTHOR = "abuse@catswords.net";
|
||||
exports.global = global;
|
||||
exports.require = global.require;
|
||||
|
|
Loading…
Reference in New Issue
Block a user