Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  firstrun.js

  Sprache: JAVA
 

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


const lazy = {};
const { topChromeWindow } = window.browsingContext;

ChromeUtils.defineESModuleGetters(lazy, {
  AboutWelcomeParent: "resource:///actors/AboutWelcomeParent.sys.mjs",
  AIWindow:
    "moz-src:///browser/components/aiwindow/ui/modules/AIWindow.sys.mjs",
});
const MODEL_PREF = "browser.smartwindow.firstrun.modelChoice";
const AUTO_ADVANCE_PREF = "browser.smartwindow.firstrun.autoAdvanceMS";
const FIRST_RUN_COMPLETE_PREF = "browser.smartwindow.firstrun.hasCompleted";
const EXPLAINER_PAGE_PREF = "browser.smartwindow.firstrun.explainerURL";
const MEMORIES_FROM_CONVERSATION_PREF =
  "browser.smartwindow.memories.generateFromConversation";
const MEMORIES_FROM_HISTORY_PREF =
  "browser.smartwindow.memories.generateFromHistory";
const IS_DEFAULT_WINDOW_PREF = "browser.smartwindow.isDefaultWindow";
const MEMORIES_CHATS_CHECKBOX_ID = "memories-chats";
const MEMORIES_BROWSING_CHECKBOX_ID = "memories-browsing";
const SET_DEFAULT_CHECKBOX_ID = "set-default-window";
const { getAllModelsData } = ChromeUtils.importESModule(
  "moz-src:///browser/components/aiwindow/models/Utils.sys.mjs"
);

const autoAdvanceMS = Services.prefs.getIntPref(AUTO_ADVANCE_PREF);

function createAIWindowConfig(modelData) {
  return {
    id: "AI_WINDOW_WELCOME",
    template: "spotlight",
    transitions: true,
    modal: "tab",
    backdrop: "transparent",
    screens: [
      {
        id: "AI_WINDOW_INTRO",
        auto_advance: {
          actionEl: "primary_button",
          actionTimeMS: autoAdvanceMS,
        },
        force_hide_steps_indicator: true,
        content: {
          fullscreen: true,
          hide_secondary_section: "responsive",
          position: "center",
          paddingBottom: "0px",
          background: "transparent",
          screen_style: {
            overflow: "hidden",
          },
          title: {
            fontWeight: 350,
            fontSize: "39px",
            letterSpacing: 0,
            lineHeight: "56px",
            textAlign: "center",
            string_id: "aiwindow-firstrun-title",
          },
          primary_button: {
            label: "",
            action: {
              navigate: true,
            },
          },
        },
      },
      {
        id: "AI_WINDOW_CHOOSE_MODEL",
        force_hide_steps_indicator: true,
        content: {
          position: "center",
          background: "transparent",
          screen_style: {
            width: "750px",
          },
          title: {
            string_id: "aiwindow-firstrun-model-title",
            fontSize: "40px",
            fontWeight: "350",
            letterSpacing: 0,
            lineHeight: "normal",
          },
          subtitle: {
            string_id: "aiwindow-firstrun-model-subtitle",
            fontSize: "17px",
            fontWeight: 320,
          },
          tiles: {
            type: "single-select",
            selected: "none",
            autoTrigger: false,
            action: {
              picker: "<event>",
            },
            data: [
              {
                id: "model_1",
                label: {
                  string_id: "aiwindow-firstrun-model-fast-label",
                  fontSize: "20px",
                  fontWeight: 613,
                },
                icon: {
                  background:
                    'center / contain no-repeat url("chrome://browser/content/aiwindow/assets/model-choice-1.svg")',
                },
                body: {
                  string_id: "aiwindow-firstrun-model-fast-body",
                  fontSize: "15px",
                  fontWeight: 320,
                },
                subtitle: {
                  string_id: "aiwindow-firstrun-model-chip-subtitle",
                  args: modelData["1"],
                },
                action: {
                  type: "SET_PREF",
                  data: {
                    pref: {
                      name: MODEL_PREF,
                      value: "1",
                    },
                  },
                },
              },
              {
                id: "model_2",
                label: {
                  string_id: "aiwindow-firstrun-model-allpurpose-label",
                  fontSize: "20px",
                  fontWeight: 613,
                },
                icon: {
                  background:
                    'center / contain no-repeat url("chrome://browser/content/aiwindow/assets/model-choice-2.svg")',
                },
                body: {
                  string_id: "aiwindow-firstrun-model-allpurpose-body",
                  fontSize: "15px",
                  fontWeight: 320,
                },
                subtitle: {
                  string_id: "aiwindow-firstrun-model-chip-subtitle",
                  args: modelData["2"],
                },
                action: {
                  type: "SET_PREF",
                  data: {
                    pref: {
                      name: MODEL_PREF,
                      value: "2",
                    },
                  },
                },
              },
              {
                id: "model_3",
                label: {
                  string_id: "aiwindow-firstrun-model-personal-label",
                  fontSize: "20px",
                  fontWeight: 613,
                },
                icon: {
                  background:
                    'center / contain no-repeat url("chrome://browser/content/aiwindow/assets/model-choice-3.svg")',
                },
                body: {
                  string_id: "aiwindow-firstrun-model-personal-body",
                  fontSize: "15px",
                  fontWeight: 320,
                },
                subtitle: {
                  string_id: "aiwindow-firstrun-model-chip-subtitle",
                  args: modelData["3"],
                },
                action: {
                  type: "SET_PREF",
                  data: {
                    pref: {
                      name: MODEL_PREF,
                      value: "3",
                    },
                  },
                },
              },
            ],
          },
          primary_button: {
            disabled: "hasActiveSingleSelect",
            label: {
              string_id: "aiwindow-firstrun-next-button",
            },
            action: {
              navigate: true,
            },
          },
        },
      },
      {
        id: "AI_WINDOW_MEMORIES",
        force_hide_steps_indicator: true,
        content: {
          position: "center",
          background: "transparent",
          screen_style: {
            width: "650px",
          },
          title: {
            fontWeight: 350,
            string_id: "aiwindow-firstrun-memories-title",
          },
          subtitle: {
            fontWeight: 320,
            string_id: "aiwindow-firstrun-memories-subtitle",
            width: "556px",
          },
          primary_button: {
            label: {
              string_id: "aiwindow-firstrun-back-button",
            },
            style: "secondary",
            flow: "row",
            action: {
              goBack: true,
              navigate: true,
            },
          },
          additional_button: {
            label: {
              string_id: "aiwindow-firstrun-next-button",
            },
            flow: "row",
            action: {
              type: "MULTI_ACTION",
              collectSelect: true,
              navigate: true,
              data: {
                actions: [],
              },
            },
          },
          tiles: [
            {
              type: "confirmation-checklist",
              data: {
                inert: true,
                items: [
                  {
                    icon: {
                      background:
                        "center / contain no-repeat url('chrome://browser/content/aiwindow/assets/new-chat.svg')",
                      height: "20px",
                      width: "20px",
                    },
                    text: {
                      string_id:
                        "aiwindow-firstrun-memories-conversation-title",
                      fontWeight: "600",
                    },
                    subtext: {
                      string_id: "aiwindow-firstrun-memories-conversation-body",
                    },
                  },
                  {
                    icon: {
                      background:
                        "center / contain no-repeat url('chrome://global/skin/icons/settings.svg')",
                      height: "20px",
                      width: "20px",
                    },
                    text: {
                      string_id: "aiwindow-firstrun-memories-relevance-title",
                      fontWeight: "600",
                    },
                    subtext: {
                      string_id: "aiwindow-firstrun-memories-relevance-body",
                    },
                  },
                  {
                    icon: {
                      background:
                        "center / contain no-repeat url('chrome://global/skin/icons/security.svg')",
                      height: "20px",
                      width: "20px",
                    },
                    text: {
                      string_id: "aiwindow-firstrun-memories-privacy-title",
                      fontWeight: "600",
                    },
                    subtext: {
                      string_id: "aiwindow-firstrun-memories-privacy-body",
                    },
                  },
                ],
              },
            },
            {
              type: "multiselect",
              label: {
                string_id: "aiwindow-firstrun-memories-choose-label",
              },
              footer: {
                unCheckAllLabel: {
                  string_id: "aiwindow-firstrun-memories-no-create",
                },
                checkedLabel: {
                  string_id: "aiwindow-firstrun-memories-update-settings",
                },
              },
              data: [
                {
                  id: MEMORIES_CHATS_CHECKBOX_ID,
                  defaultValue: true,
                  label: {
                    string_id: "aiwindow-firstrun-memories-checkbox-chats",
                  },
                  action: {
                    type: "SET_PREF",
                    data: {
                      pref: {
                        name: MEMORIES_FROM_CONVERSATION_PREF,
                        value: true,
                      },
                    },
                  },
                  uncheckedAction: {
                    type: "SET_PREF",
                    data: {
                      pref: {
                        name: MEMORIES_FROM_CONVERSATION_PREF,
                        value: false,
                      },
                    },
                  },
                },
                {
                  id: MEMORIES_BROWSING_CHECKBOX_ID,
                  defaultValue: true,
                  label: {
                    string_id: "aiwindow-firstrun-memories-checkbox-browsing",
                  },
                  action: {
                    type: "SET_PREF",
                    data: {
                      pref: {
                        name: MEMORIES_FROM_HISTORY_PREF,
                        value: true,
                      },
                    },
                  },
                  uncheckedAction: {
                    type: "SET_PREF",
                    data: {
                      pref: {
                        name: MEMORIES_FROM_HISTORY_PREF,
                        value: false,
                      },
                    },
                  },
                },
              ],
            },
          ],
        },
      },
      {
        id: "AI_WINDOW_SET_DEFAULT",
        force_hide_steps_indicator: true,
        content: {
          position: "center",
          background: "transparent",
          screen_style: {
            width: "650px",
          },
          title: {
            fontWeight: 350,
            string_id: "aiwindow-firstrun-default-title",
          },
          subtitle: {
            fontWeight: 320,
            string_id: "aiwindow-firstrun-default-subtitle",
            width: "556px",
          },
          primary_button: {
            label: {
              string_id: "aiwindow-firstrun-back-button",
            },
            style: "secondary",
            flow: "row",
            action: {
              goBack: true,
              navigate: true,
            },
          },
          additional_button: {
            label: {
              string_id: "aiwindow-firstrun-button",
            },
            flow: "row",
            action: {
              type: "MULTI_ACTION",
              collectSelect: true,
              navigate: true,
              data: {
                actions: [
                  {
                    type: "SET_PREF",
                    data: {
                      pref: {
                        name: FIRST_RUN_COMPLETE_PREF,
                        value: true,
                      },
                    },
                  },
                ],
              },
            },
          },
          tiles: {
            type: "multiselect",
            data: [
              {
                id: SET_DEFAULT_CHECKBOX_ID,
                defaultValue: true,
                label: {
                  string_id: "aiwindow-firstrun-default-checkbox-label",
                },
                description: {
                  string_id: "aiwindow-firstrun-default-checkbox-description",
                },
                action: {
                  type: "SET_PREF",
                  data: {
                    pref: {
                      name: IS_DEFAULT_WINDOW_PREF,
                      value: true,
                    },
                  },
                },
                uncheckedAction: {
                  type: "SET_PREF",
                  data: {
                    pref: {
                      name: IS_DEFAULT_WINDOW_PREF,
                      value: false,
                    },
                  },
                },
              },
            ],
          },
        },
      },
    ],
  };
}

async function renderFirstRun() {
  // Create config after model data is loaded
  const modelData = await getAllModelsData();
  const AI_WINDOW_CONFIG = createAIWindowConfig(modelData);

  const AWParent = new lazy.AboutWelcomeParent();
  const receive = name => data =>
    AWParent.onContentMessage(
      `AWPage:${name}`,
      data,
      topChromeWindow.gBrowser.selectedBrowser
    );

  window.AWGetFeatureConfig = () => AI_WINDOW_CONFIG;
  window.AWEvaluateScreenTargeting = screens => screens;
  window.AWGetSelectedTheme = () => ({});
  window.AWGetInstalledAddons = () => [];
  window.AWSendToParent = (name, data) => receive(name)(data);

  window.AWSendEventTelemetry = ({
    event,
    message_id,
    event_context: { source },
  }) => {
    switch (event) {
      case "IMPRESSION":
        Glean.smartWindow.onboardingScreenImpression.record({
          message_id,
        });
        break;

      case "CLICK_BUTTON":
        if (["model_1""model_2""model_3"].includes(source)) {
          Glean.smartWindow.onboardingModelSelected.record({
            model: source.split("_")[1],
          });
        } else if (
          source === "primary_button" &&
          message_id.includes("AI_WINDOW_CHOOSE_MODEL")
        ) {
          const prefValue = Services.prefs.getStringPref(MODEL_PREF, "");
          Glean.smartWindow.onboardingModelNavigate.record({
            model: prefValue || "",
          });
        } else if (
          source === "primary_button" &&
          (message_id.includes("AI_WINDOW_MEMORIES") ||
            message_id.includes("AI_WINDOW_SET_DEFAULT"))
        ) {
          Glean.smartWindow.onboardingBackNavigate.record({
            message_id,
          });
        }
        break;

      // SELECT_CHECKBOX is emitted when the user clicks the screen's next
      // button, carrying the live checkbox selection. The navigate event is
      // recorded here (rather than on CLICK_BUTTON) because that telemetry
      // fires before the selection is collected and would report stale data.
      case "SELECT_CHECKBOX":
        if (
          message_id.includes("AI_WINDOW_MEMORIES") &&
          Array.isArray(source)
        ) {
          Glean.smartWindow.onboardingMemoriesSettings.record({
            source: source.join(","),
          });
          Glean.smartWindow.onboardingMemoriesNavigate.record({
            source: source.join(","),
          });
        } else if (
          message_id.includes("AI_WINDOW_SET_DEFAULT") &&
          Array.isArray(source)
        ) {
          Glean.smartWindow.onboardingSetdefaultSettings.record({
            source: source.join(","),
          });
          Glean.smartWindow.onboardingSetdefaultNavigate.record({
            source: source.join(","),
          });
        }
        break;
    }
  };

  window.AWFinish = () => {
    window.AWSendToParent("SPECIAL_ACTION", {
      type: "OPEN_URL",
      data: {
        args: Services.prefs.getStringPref(
          EXPLAINER_PAGE_PREF,
          "http://www.firefox.com/smart-window/?v=product"
        ),
        where: "tab",
      },
    });
    // The checkbox SET_PREF actions have committed by the time onboarding
    // finishes, so the final selections are derived from the backing prefs.
    const memories = [];
    if (Services.prefs.getBoolPref(MEMORIES_FROM_CONVERSATION_PREF, false)) {
      memories.push(MEMORIES_CHATS_CHECKBOX_ID);
    }
    if (Services.prefs.getBoolPref(MEMORIES_FROM_HISTORY_PREF, false)) {
      memories.push(MEMORIES_BROWSING_CHECKBOX_ID);
    }
    const memorySource = memories.join(",");
    const setdefaultSource = Services.prefs.getBoolPref(
      IS_DEFAULT_WINDOW_PREF,
      false
    )
      ? SET_DEFAULT_CHECKBOX_ID
      : "";

    Glean.smartWindow.onboardingComplete.record({
      model: Services.prefs.getStringPref(MODEL_PREF, ""),
      memory_source: memorySource,
      setdefault_source: setdefaultSource,
    });
    window.location.href = lazy.AIWindow.newTabURL;
  };

  window.addEventListener(
    "unload",
    () => {
      AWParent.didDestroy();
    },
    { once: true }
  );

  const script = document.createElement("script");
  script.src = "chrome://browser/content/aboutwelcome/aboutwelcome.bundle.js";
  document.body.appendChild(script);
}

if (document.readyState === "loading") {
  document.addEventListener(
    "DOMContentLoaded",
    () => renderFirstRun().catch(console.error),
    { once: true }
  );
else {
  renderFirstRun().catch(console.error);
}

Messung V0.5 in Prozent
C=95 H=97 G=95

¤ Dauer der Verarbeitung: 0.16 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002