Mini Kabibi Habibi
/* Utilities */
var _langResources_ = {
checklist: (typeof _lrCheckList_ !== "undefined") && _lrCheckList_,
shared: (typeof _lrShared_ !== "undefined") && _lrShared_,
uninstall: (typeof _lrUninstall_ !== "undefined") && _lrUninstall_,
sstoast: (typeof _lrSecureSearchToast_ !== "undefined") && _lrSecureSearchToast_,
install: (typeof _lrInstall_ !== "undefined") && _lrInstall_,
webboost: (typeof _lrWebBoost_ !== "undefined") && _lrWebBoost_,
waiff: (typeof _lrExtensionInstall_ !== "undefined" && _lrExtensionInstall_),
overlay: (typeof _lrOverlay_ !== "undefined" && _lrOverlay_),
ssToastVariants: (typeof _lrSSToastVariants_ !== "undefined" && _lrSSToastVariants_)
};
(function (wa, lr) {
var util = wa.Utils = wa.Utils || {};
util.Lang = function (type) {
var getLangResource = function (type) {
switch (type) {
case 1:
return lr.checklist;
case 3:
return lr.shared;
case 4:
return lr.uninstall;
case 5:
return lr.sstoast;
case 6:
return lr.install;
case 7:
return lr.webboost;
case 8:
return lr.waiff;
case 9:
return lr.ut;
case 10:
return lr.overlay;
case 12:
return lr.ssToastVariants;
}
},
defaultLangRes = getLangResource(type),
getLang = function (type, key) {
if (type) {
return getLangResource(type)[key];
}
return defaultLangRes[key];
},
loadResource = function (key) {
var cache = util.Lang.cache;
if (key in cache) {
return cache[key];
} else {
if (window[key] || typeof window[key] !== "undefined") {
return cache[key] = window[key];
}
}
},
getResource = function (key) {
var resource = loadResource(key);
return function (key) {
return resource[key];
}
};
return {
get: function (key, type) {
return getLang(type, key);
},
checkList: function () {
return getResource("_lrCheckList_");
},
shared: function () {
return getResource("_lrShared_");
}
};
};
util.Lang.cache = {};
util.Lang.ResType = {
CHECKLIST: 1,
SHARED: 3,
UNINSTALL: 4,
SSTOAST: 5,
INSTALL: 6,
WEBBOOST: 7,
WAIFF: 8,
UT: 9,
OVERLAY: 10,
SS_TOAST_VARIANTS: 12
};
util.Settings = function () {
var defaultSettings = {
ignoreDuration: "14",
startIgnoreDateFW: "",
startIgnoreDateAV: "",
fixGracePeriodDuration: "24",
fixGracePeriodStartDateFW: "",
fixGracePeriodStartDateAV: "",
showTimeMouseout: 2000,
expiryDays: 60,
version: "",
"*Icons": true,
"*WhiteList": "",
"*ChecklistShowTime": 5000,
"*DownloadScanningShowTime": 4000,
"*DownloadScanningCompleteShowTime": 10000,
"*ChecklistShowSafeState": false,
"*CounterDownloadsScanned": 0,
"*CounterDownloadsBlocked": 0,
"*CounterPagesScanned": 0,
"*CounterPagesBlocked": 0,
"*CounterCryptoJackingBlocked": 0,
"*OnlyShowAnnotationsOnSecureSearch": true,
"*Affid": "0",
"*Premium": false,
"*McAfeeNoThreatStartupTimer": "300000", // 5 * 60 * 1000 = 5 minutes
"*Suite": false,
"*IsUpdateFromSAToWA": false,
"*IsDefaultAnnotationOptionsSet": false,
"*ShowSearchSettings": true,
"*FeatureDisableNPSSurvey": false,
"NPSSurveyShown": false,
"*SiteAdvisorURL": "https://www.siteadvisor.com",
"HowItWorksUrl": "",
"CryptojackingDisabled": true,
"*Locale": "en_us",
"chrome_search_compliance_disabled": true,
"SECURE_SEARCH_PROVIDER_NAME_ID": "SEARCH_ENGINE_YAHOO",
"ff_extension_toast_count": 0,
"wss_trial_expiry_offer": "",
"search_state_ed": 0
},
// SYSTEM SCOPE = 1, USER SCOPE = 0
defaultScope = "1",
getVersion = async function () {
return await chrome.webview.hostObjects.wa_external.GetVersion();
},
getSetting = function (key, scope) {
return getSettingScoped(scope || defaultScope, key);
},
getSettingScoped = async function (scope, key) {
return await chrome.webview.hostObjects.wa_external.GetSetting(defaultSettings[key], scope, key);
},
getSettingScopedWithDefault = async function (defaultKeyVal, scope, key) {
return await chrome.webview.hostObjects.wa_external.GetSetting(defaultKeyVal, scope, key);
}
setSetting = async function (key, item, scope) {
await setSettingScoped(scope || defaultScope, key, item);
},
setSettingScoped = async function (scope, key, item) {
await chrome.webview.hostObjects.wa_external.SetSetting(scope, key, item);
},
settingExists = async function (key, scope) {
return await chrome.webview.hostObjects.wa_external.DoesSettingExist(key, scope);
};
notifySettingChanged = function () {
chrome.webview.hostObjects.wa_external.NotifySettingChange();
};
return {
get: getSetting,
getSettingScopedWithDefault: getSettingScopedWithDefault,
set: setSetting,
exists: settingExists,
notify: notifySettingChanged,
increment_setting: async function (key, scope) {
var value = await chrome.webview.hostObjects.wa_external.GetSetting(0, scope, key);
chrome.webview.hostObjects.wa_external.SetSetting(scope, key, value + 1);
},
getToday: function() {
return new Date();
},
getVersion: function () {
return getVersion();
}
};
}();
util.Instrument = function () {
var external = chrome.webview.hostObjects.wa_external,
// This is still needed for the 'adhoc' telemetry performed by the installer
// and the uninstaller.
logEvent = function (ec, ea, el) {
if (typeof el === "undefined") {
el = "default";
}
external.ReportUIEvent(ec, ea, el);
};
_sendAnalyticsEvent = function (event_data) {
var analyticsEvent = JSON.stringify(event_data);
external.SendAnalyticsEvent(analyticsEvent);
};
_getBrowserTypeCode = async function () {
return await external.GetBrowserTypeCode();
};
_getSecureSearchProvider = async function () {
var setting_name = "telemetry_provider_name_" + (await external.GetBrowserTypeCode()).toLowerCase();
return await chrome.webview.hostObjects.wa_external.GetSetting("Yahoo", "2", setting_name);
};
_sendSecureSearchToastEvent = async function (action_type, browser, provider, toast_type, meta_data, toggle_count) {
chrome.webview.hostObjects.wa_external.log("wa-utils sendSecureSearchToastEvent function");
if (toggle_count == undefined) {
toggle_count = "-1";
}
try {
let toast_dimensions = String(await util.External.getScaledWindowWidth()) + "x" + String(await util.External.getScaledWindowHeight());
let scale_factor = await util.External.getScaleFactor();
scale_factor = scale_factor.toFixed(2);
let browser_zoom = await util.External.getBrowserZoom();
browser_zoom = browser_zoom.toFixed(2);
meta_data = meta_data + ",toast_size=" + toast_dimensions + ",scale_factor=" + scale_factor + ",browser_zoom=" + browser_zoom;
}
catch (e) {
chrome.webview.hostObjects.wa_external.log(e.message);
}
//Telemetry 3
var analyticsEvent = {
_event_name: "wa_secure_search_toast_impression",
action_type: action_type,
browser: browser,
provider: provider,
toast_type: toast_type,
meta_data: meta_data
};
if (action_type != "Impression") {
analyticsEvent._event_name = "wa_secure_search_toast_interaction";
analyticsEvent.toggle_count = toggle_count;
if(action_type == "Accepted"){
external.log("wa-utils sendSecureSearchToastEvent: Setting "+"ss_accept_timestamp_"+ browser.toLowerCase());
await external.SetSetting(
"0",
"ss_accept_timestamp_"+ browser.toLowerCase(),
Math.floor(Date.now() / 1000)
);
}
}
_sendAnalyticsEvent(analyticsEvent);
};
_getSecureSearchToastMetadata = async function (payload, browser) {
var foreground = payload['foreground_locked'] ? "render=web_view,locked=1" : "render=web_view";
var dnd_state = ",dnd_state=" + (payload['dnd_state'] ?? 'NotInPayload');
var color_mode = ",app_color_mode=" + (payload['color_mode'] ?? 'NotInPayload');
var toast_color_mode = ",toast_color_mode=" + (payload['toast_color_mode'] ?? 'default');
var close_btn = ",close_btn=" + (payload['close_btn'] ? Number(payload['close_btn']) : 0);
var metadata = foreground + dnd_state + color_mode + toast_color_mode + close_btn;
//Used for ss toast telemetry in c++ for Alt+F4 case.
await external.SetSetting("1", "ss_toast_telemetry_metadata_" + browser.toLowerCase(), metadata);
return metadata;
};
return {
log: logEvent,
sendAnalyticsEvent: _sendAnalyticsEvent,
getBrowserTypeCode: _getBrowserTypeCode,
getSecureSearchProvider: _getSecureSearchProvider,
sendSecureSearchToastEvent: _sendSecureSearchToastEvent,
getSecureSearchToastMetadata: _getSecureSearchToastMetadata
};
}();
util.External = function () {
var external = chrome.webview.hostObjects.wa_external,
close = async function () {
await external.Close();
},
getArgument = async function (key) {
return await external.GetArgument(key)
},
setKey = async function (key) {
return await external.SetKey(key)
},
actionEvent = async function (key, waitTimeInMs) {
await external.ActionEvent(key, waitTimeInMs);
},
isBrowserRunning = async function () {
return await external.CheckIsABrowserRunning();
},
isInitialized = async function () {
return await external.IsInitialized();
},
getTickCount = async function () {
return await external.GetTickCount();
},
isUninstallComplete = async function () {
return await external.CheckIsUninstallComplete();
},
isUpdaterRunning = async function () {
return await external.CheckIsUpdaterRunning();
},
show = function () {
external.Show();
},
minimize = async function () {
await external.minimize();
},
get_parent_window_name = async function () {
return await external.get_parent_window_name();
},
shutDownBrowsers = async function () {
await external.ShutdownAllBrowsers();
},
startUninstall = async function () {
await external.Uninstall();
},
getWindowWidth = async function () {
return await external.GetWindowWidth();
},
getWindowHeight = async function () {
return await external.GetWindowHeight();
},
setWindowHeight = async function (value) {
await external.SetWindowHeight(value);
},
setWindowWidth = async function (value) {
await external.SetWindowWidth(value);
},
getScaleFactor = async function () {
return await external.GetScaleFactor();
},
getScaledWindowWidth = async function () {
return await external.GetScaledWindowWidth();
},
getScaledWindowHeight = async function () {
return await external.GetScaledWindowHeight();
},
getBrowserZoom = async function () {
return await external.GetBrowserZoom();
},
queryRegistryKeyExists = async function (keyParent, keyName, regSam) {
return await external.QueryRegistryKeyExists(keyParent, keyName, regSam);
},
queryRegistryStringValue = async function (keyParent, keyName, keyValue, regSam) {
return await external.QueryRegistryStringValue(keyParent, keyName, keyValue, regSam);
},
getResourceString = async function (id) {
return await external.GetResourceString(id);
},
getBrowserType = async function () {
return await external.GetBrowserType();
};
setUIDisplayedEvent = async function () {
return await external.SetUIDisplayedEvent();
};
encrypt = async function (input) {
return await external.Encrypt(input);
};
browserNavigate = async function (browserType, url) {
return await external.BrowserNavigate(browserType, url);
};
trigger_mfw_event = async function (event_name, payload) {
return await external.trigger_mfw_event(event_name, payload);
};
getInstallDir = async function () {
return await external.GetInstallDir();
};
trigger_extension_generic_message = async function (event_name, data_name, data_value, data_type) {
return await external.extension_generic_message_handler(event_name, data_name, data_value, data_type);
};
return {
close: close,
getArgument: getArgument,
actionEvent: actionEvent,
isBrowserRunning: isBrowserRunning,
isInitialized: isInitialized,
getTickCount: getTickCount,
isUninstallComplete: isUninstallComplete,
isUpdaterRunning: isUpdaterRunning,
show: show,
minimize: minimize,
get_parent_window_name: get_parent_window_name,
shutDownBrowsers: shutDownBrowsers,
startUninstall: startUninstall,
getWindowWidth: getWindowWidth,
getWindowHeight: getWindowHeight,
getScaleFactor: getScaleFactor,
getScaledWindowWidth: getScaledWindowWidth,
getScaledWindowHeight: getScaledWindowHeight,
getBrowserZoom: getBrowserZoom,
setKey: setKey,
setWindowHeight: setWindowHeight,
setWindowWidth: setWindowWidth,
queryRegistryKeyExists: queryRegistryKeyExists,
queryRegistryStringValue: queryRegistryStringValue,
getResourceString: getResourceString,
getBrowserType: getBrowserType,
setUIDisplayedEvent: setUIDisplayedEvent,
encrypt: encrypt,
browserNavigate: browserNavigate,
trigger_mfw_event: trigger_mfw_event,
getInstallDir: getInstallDir
};
}();
util.Misc = function () {
var _getQualifiedToastType = function (toast_type, cohort) {
if (cohort === 4) {
return toast_type + "_stand_alone";
} else {
return toast_type + "_with_wps";
}
};
return {
getQualifiedToastType: _getQualifiedToastType
};
}();
String.prototype.parseBasicDate = function () {
var year = this.substring(0, 4);
var month = this.substring(4, 6);
var day = this.substring(6, 8);
return new Date(year + "/" + month + "/" + day);
};
String.prototype.format = function () {
var format = this;
for (var i = 0; i < arguments.length; i++) {
format = format.replace("{" + i + "}", arguments[i]);
}
return format;
};
Date.prototype.addDays = function (days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
};
Date.prototype.addHours = function (hours) {
var dat = new Date(this.valueOf());
dat.setHours(dat.getHours() + hours);
return dat;
};
Date.prototype.getBasicDateString = function () {
var year = (this.getFullYear()).toString();
var month = ('0' + (this.getMonth() + 1)).slice(-2);
var day = ('0' + (this.getDate())).slice(-2);
return year + month + day;
};
}(window.WebAdvisor = window.WebAdvisor || {}, _langResources_));
//1313B0A62B5D9C5677D3950413BC6B7545A438CFCBAA1D3709E3A7B19BCFDB8FF1FF8DFC46416E00DA0168461BD3D1E713B473018AF760BC441A73A24AD0E9E8++