Mini Kabibi Habibi

Current Path : C:/Program Files/McAfee/WebAdvisor/MFW/packages/builtin/
Upload File :
Current File : C:/Program Files/McAfee/WebAdvisor/MFW/packages/builtin/wa-utils.js

/* 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 = function () {
                return window.external.GetVersion();
            },

            getSetting = function (key, scope) {
                return getSettingScoped(scope || defaultScope, key);
            },

            getSettingScoped = function (scope, key) {
                return window.external.GetSetting(defaultSettings[key], scope, key);
            },

            getSettingScopedWithDefault = function (defaultKeyVal, scope, key) {
                return window.external.GetSetting(defaultKeyVal, scope, key);
            }

            setSetting = function(key, item, scope) {
                setSettingScoped(scope || defaultScope, key, item);
            },

            setSettingScoped = function (scope, key, item) {
                window.external.SetSetting(scope, key, item);
            },

            settingExists = function (key, scope) {
                return window.external.DoesSettingExist(key, scope);
            };

        notifySettingChanged = function () {
            window.external.NotifySettingChange();
        };

        return {
            get: getSetting,
            getSettingScopedWithDefault: getSettingScopedWithDefault,
            set: setSetting,
            exists: settingExists,
            notify: notifySettingChanged,
            increment_setting: function (key, scope) {
                var value = window.external.GetSetting(0, scope, key);
                window.external.SetSetting(scope, key, value + 1);
            },
            getToday: function() {
                return new Date();
            },
            getVersion: function () {
                return getVersion();
            }
        };
    }();

    util.Instrument = function () {
        var external = window.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 = function() {
            return external.GetBrowserTypeCode();
        };

        _getSecureSearchProvider = function () {

            var setting_name = "telemetry_provider_name_" + external.GetBrowserTypeCode().toLowerCase();
            return window.external.GetSetting("Yahoo", "2", setting_name);
        };
        _sendSecureSearchToastEvent = function (action_type, browser, provider, toast_type, meta_data, toggle_count) {
            if (toggle_count == undefined) {
                toggle_count = "-1";
            }

            if (meta_data == undefined) {
                meta_data = "default";
            }


            //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.SetSetting(
                        "0",
                        "ss_accept_timestamp_"+browser.toLowerCase(),
                        Math.floor(Date.now() / 1000)
                    );
                }
            }

            _sendAnalyticsEvent(analyticsEvent);

        };

        _getSecureSearchToastMetadata = function (showCloseBtn, browser) {
            var metadata = "close_btn=" + Number(showCloseBtn);
            //Used for ss toast telemetry in c++ for Alt+F4 case.
            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 = window.external,

            close = function () {
                external.Close();
            },

            getArgument = function (key) {
                return external.GetArgument(key)
            },

            setKey = function (key) {
                return external.SetKey(key)
            },

            actionEvent = function (key, waitTimeInMs) {
                external.ActionEvent(key, waitTimeInMs);
            },

            isBrowserRunning = function () {
                return external.CheckIsABrowserRunning();
            },

            isInitialized = function () {
                return external.IsInitialized();
            },

            getTickCount = function () {
                return external.GetTickCount();
            },

            isUninstallComplete = function () {
                return external.CheckIsUninstallComplete();
            },

            isUpdaterRunning = function () {
                return external.CheckIsUpdaterRunning();
            },

            show = function () {
                external.Show();
            },

            setDraggableOffset = function (uArgNum, avarArgs) {
                external.SetDraggableOffset(uArgNum, avarArgs);
            },

            minimize = function () {
                external.minimize();
            },

            get_parent_window_name = function () {
               return external.get_parent_window_name();
            },

            shutDownBrowsers = function () {
                external.ShutdownAllBrowsers();
            },

            startUninstall = function () {
                external.Uninstall();
            },

            getWindowWidth = function () {
                return external.GetWindowWidth();
            },

            getWindowHeight = function () {
                return external.GetWindowHeight();
            },

            setWindowHeight = function (value) {
                external.SetWindowHeight(value);
            },

            setWindowWidth = function (value) {
                external.SetWindowWidth(value);
            },

            queryRegistryKeyExists = function (keyParent, keyName, regSam) {
                return external.QueryRegistryKeyExists(keyParent, keyName, regSam);
            },

            queryRegistryStringValue = function (keyParent, keyName, keyValue, regSam) {
                return external.QueryRegistryStringValue(keyParent, keyName, keyValue, regSam);
            },

            getResourceString = function (id) {
                return external.GetResourceString(id);
            },

            getBrowserType = function () {
                return external.GetBrowserType();
            };

        setUIDisplayedEvent = function () {
            return external.SetUIDisplayedEvent();
        };

        encrypt = function (input) {
            return external.Encrypt(input);
        };

        browserNavigate = function (browserType, url) {
            return external.BrowserNavigate(browserType, url);
        };

        trigger_mfw_event = function (event_name, payload) {
            return external.trigger_mfw_event(event_name, payload);
        };

        getInstallDir = function () {
            return external.GetInstallDir();
        };

        trigger_extension_generic_message = function (event_name, data_name, data_value, data_type) {
            return 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,
            setDraggableOffset: setDraggableOffset,
            minimize: minimize,
            get_parent_window_name: get_parent_window_name,
            shutDownBrowsers: shutDownBrowsers,
            startUninstall: startUninstall,
            getWindowWidth: getWindowWidth,
            getWindowHeight: getWindowHeight,
            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_));

//1734A034BA1344508B0B5455839A98E23F7A35F7B8C6347E80068445DED2D18F4E266735C422D851833B1B01879B09D5D3A827F1B2A09D49130520A852813982++