Mini Kabibi Habibi

Current Path : C:/Program Files/McAfee/WebAdvisor/MFW/packages_web_view/webadvisor/
Upload File :
Current File : C:/Program Files/McAfee/WebAdvisor/MFW/packages_web_view/webadvisor/wa-controller-checklist.js

/* CheckList Controller */
(function (wa) {
  let ui = wa.UI = wa.UI || {},
    _settings = wa.Utils.Settings,
    _external = wa.Utils.External,
    _instrument = wa.Utils.Instrument,
    _l10n = wa.Utils.Lang().checkList(),
    _tmpl = wa.UI.CheckList.templates,
    _core = wa.Core,
    _window = _core.Window,
    _checkList = _core.CheckList;

  ui.CheckListController = function () {
    let threatStateCss = "threat",
      infoStateCss = "info",
      greenStateCss = "green",
      waitImage = "file:///[WA_FILES]/MFW/packages\\builtin\\white_timer.png",
      alertImage = "file:///[WA_FILES]/MFW/packages\\webadvisor\\wa-checklist-risk.png",
      ignore = _l10n("IGNORE"),
      fixNow = _l10n("FIX_NOW"),
      defaultImageCss = "wa-state-img",
      alertImageCss = "wa-state-img-threat",
      self = this;
    let browserCode ="(unknown)";

    this.update = function () {
      _window.ready(async function () {
        browserCode = await _instrument.getBrowserTypeCode();
        self[await _checkList.getCommand()]();
      });
    };

    function getProductLogoHtml () {
      var lang = wa.Utils.Lang(wa.Utils.Lang.ResType.SHARED);
      const  productNameHtml = `<span class='product-name-bold'>${lang.get('WEBADVISOR')}</span>`;
      return `<div class='logo'><img src='file:///[WA_FILES]/MFW/packages\\builtin\\mcafee-logo-2024.png' align='middle'>${productNameHtml}</div>`;
    }

    this.showChecklist = async function () {
      let component = await _core.Component.getState();
      
      if (!component) {
        _window.close();
        return;
      }

      if (_checkList.shouldSupressThreat(component)) {
        _window.close();
        return;
      }

      sendFWAVTelemetry = function (key, action) {
          var dlg_name = "";
          var hit_screen_id = "";
          var screen_flow = "";
        switch (key) {
          case _core.Component.key.FW:
            dlg_name = "FWWarning";
            screen_flow = "firewall";
            hit_screen_id = "475.14.3.1-browser_extension-security_check-firewall-default";
            break;
          case _core.Component.key.AV:
            dlg_name = "AVWarning";
            screen_flow = "antivirus";
            hit_screen_id = "475.14.1.1-browser_extension-security_check-antivirus-default";
            break;
          case _core.Component.key.FWAV:
            dlg_name = "FWAVWarning";
            screen_flow = "antivirus_firewall";
            hit_screen_id = "475.14.2.1-browser_extension-security_check-antivirus_firewall-default";
            break;
          default:
            dlg_name = "Unknown";
            break;
        }

        if (action === null) {
          action = "Unknown";
        }

        //Telemetry 3.0 FW_AV_Warning event instrumentation
        var analyticsEvent = {
             _event_name: ((action == "Impression") ? "wa_fw_av_warning_impression" : "wa_fw_av_warning_interaction"),
             hit_label_8: screen_flow,
             hit_label_18: dlg_name,
             hit_label_19: action,
             hit_label_20: browserCode,
             hit_screen: hit_screen_id
        }
        _instrument.sendAnalyticsEvent(analyticsEvent);
      }

      var settingKey = component.name[1] || component.name[0],
        name = component.name[0],
        key = _core.Component.key,
        actions = component.actions,
        checkList,
        dialog;

      switch (component.key) {
        case key.FW:
        case key.AV:
        case key.FWAV:
          dialog = new ui.WebAdvisorDialog({
            dialogWidth: "473px",
            dialogCustomStyle: "min-height:279px;",
            header: {
              html: _l10n(name + "_DIALOG_HEADER"),
              css: threatStateCss
            },
            content: {
              html: _l10n(name + "_DIALOG_CONTENT")
            },
            buttons: [{
              text: ignore,
              click: function () {
                _core.Component.ignore(settingKey);
                sendFWAVTelemetry(component.key, "AcceptRisk");
                dialog.close(function () {
                  checkList.close(function () {
                    _window.close();
                  });
                });
              }
            }, {
              text: fixNow,
              click: function () {
                _core.Component.fix(actions, settingKey);
                sendFWAVTelemetry(component.key, "FixClicked");
                dialog.close(function () {
                  checkList.close(function () {
                    self.showFixing(name);
                  });
                });
              }
            }]
          });

          checkList = new ui.WebAdvisorCheckList({
            window_width: await _window.getWidth(),
            message: {
              text: _l10n("THREAT_OFF_MESSAGE"), 
              css: threatStateCss
            },
            state: {
              template: _tmpl.defaultState({
                text: _l10n("THREAT_OFF_STATE"),
                image: alertImage,
                imageCss: alertImageCss
              }, actions, "OFF"),
              css: threatStateCss
            },
            title: getProductLogoHtml(),
            closeImage: "file:///[WA_FILES]/MFW/packages_web_view\\nps\\nps_close.png",
            notSetBorder: true,
          })
            .closeClick(function (args, sender) {
              sendFWAVTelemetry(component.key, "ClosedExplicit");
              dialog.close(function () {
                sender.close(function () {
                  _window.close();
                });
              });
            })
            .open(function () {
              dialog.open();
            });

          sendFWAVTelemetry(component.key, "Impression");

          break;
        default:
          _window.close();
          return;
      }
      _external.setKey(name);
      _window.show();
      window.chrome.webview.postMessage("set_focus");
    };

    this.showFixing = async function (key) {
      var checkList = new ui.WebAdvisorCheckList({
        autoClose: true,
        showTime: await _settings.get("*ChecklistShowTime"),
        showTimeMouseout: await _settings.get("showTimeMouseout"),
        window_width: await _window.getWidth(),
        message: {
          text: _l10n("FIX_MESSAGE_TEXT"),
          css: infoStateCss
        },
        state: {
          template: _tmpl.defaultState({
            text: _l10n("FIX_STATE_TEXT"),
            image: waitImage,
            imageCss: defaultImageCss
          }, key, "FIX"),
          css: infoStateCss
        },
        title: getProductLogoHtml(),
        closeImage: "file:///[WA_FILES]/MFW/packages_web_view\\nps\\nps_close.png",
        notSetBorder: true,
      })
        .closeClick(function (args, sender) {
          sender.close();
        })
        .closeTimeOutExpire(function (args, sender) {
          sender.close();
        })
        .closeComplete(function () {
          _window.close();
        })
        .open();
      _window.show();
      window.chrome.webview.postMessage("set_focus");
    };

    sendDownloadScanUITelemetry = function (action) {
          var analyticsEvent = {
              _event_name: (action === 'StartImpression' ? "wa_download_scan_ui_impression" : "wa_download_scan_ui_interaction"),
              hit_label_18: "DownloadScanUI",
              hit_label_19: action,
              hit_label_20: browserCode,
              hit_label_21: "NativeChecklist"
            };
          _instrument.sendAnalyticsEvent(analyticsEvent);
    }

    this.showDownloadScanning = async function () {
      let key = "DS";
      
      let checkList = null;

      checkList = new ui.WebAdvisorCheckList({
        showTime: await _settings.get("*DownloadScanningShowTime"),
        window_width: await _window.getWidth(),
        showTimeMouseout: await _settings.get("showTimeMouseout"),
        autoClose: true,
        message: {
          text: _l10n("DL_SCANNING_MESSAGE"),
          css: infoStateCss
        },
        state: {
          template: _tmpl.defaultState({
            text: _l10n("DL_SCANNING_STATE"),
            image: waitImage,
            imageCss: defaultImageCss
          }, key, "SCAN"),
          css: infoStateCss
        }
      });
      
      checkList.closeClick(function (args, sender) {
        sendDownloadScanUITelemetry("CloseClicked");
        sender.close();
      });
      checkList.closeTimeOutExpire(function (args, sender) {
        sender.close();
      });
      checkList.closeComplete(function () {
        _window.close();
      });
      
      checkList.open();

      sendDownloadScanUITelemetry("StartImpression");

      _external.setKey(key);
      _window.show();
      window.chrome.webview.postMessage("set_focus");
    };

    this.showDownloadWarning = async function () {
      var key = _core.DownloadWarning.key,
        domain = await _core.DownloadWarning.getDomain(),
        fileName = await _core.DownloadWarning.getFileName(),
        checkList = new ui.WebAdvisorCheckList({
          window_width: await _window.getWidth(),
          message: {
            text: _l10n("DW_MESSAGE"),
            css: threatStateCss
          },
          state: {
            template: _tmpl.defaultState({
              text: _l10n("PP_STATE_TEXT"),
              image: alertImage,
              imageCss: alertImageCss
            }, key, "DOWNLOAD"),
            css: threatStateCss
          }
        }),
        dialog = new ui.WebAdvisorDialog({
          header: {
            html: _l10n("DW_TITLE"),
            css: threatStateCss
          },
          content: {
            html: _l10n("DW_TEXT") +
              "<ul id='wa-dialog-dw-content'>" +
              "<li>{0}:<span id='filename' class='wa-dialog-dw-bold'>{1}</span></li>"
                .format(_l10n("DW_FILENAME"), fileName) +
              "<li>{0}:<span id='domain' class='wa-dialog-dw-bold'>{1}</span></li>"
                .format(_l10n("DW_DOMAIN"), domain) +
              "</ul>"
          },
          buttons: [{
            text: _l10n("DW_BUTTON_ACCEPT"),
            click: function () {
              _core.DownloadWarning.allow();
              dialog.close(function () {
                checkList.close(function () {
                  _window.close();
                });
              });
            }
          }, {
            text: _l10n("DW_BUTTON_BLOCK"),
            click: function () {
              dialog.close(function () {
                checkList.close(function () {
                  _window.close();
                });
              });
            }
          }]
        });

      checkList.closeClick(function () {
        dialog.close(function (args, sender) {
          checkList.close(function () {
            _window.close();
          });
        });
      })
        .open(function () {
          dialog.open();
          
          _core.DownloadWarning.uiDisplayed();
      });


      _external.setKey(key);
      _window.show();
      window.chrome.webview.postMessage("set_focus");
    };
  };
}(window.WebAdvisor = window.WebAdvisor || {}));

let controller = null;
try {
  controller = new WebAdvisor.UI.CheckListController();
}
catch (error) {
  chrome.webview.hostObjects.wa_external.log("new WebAdvisor.UI.CheckListController exception " + error.message);
}
controller.update();

//05EC3E9F12CB63CCBA6E4D601AC6FBC6865201381E374037654D5F2C50A45A72ECC24C2740589E1079B70B802DDB9EDD0A8E352D8BE0EBF772976E3777B79D0A++