summaryrefslogtreecommitdiffstats
path: root/browser/components/migration/content/migration-wizard.mjs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--browser/components/migration/content/migration-wizard.mjs206
1 files changed, 111 insertions, 95 deletions
diff --git a/browser/components/migration/content/migration-wizard.mjs b/browser/components/migration/content/migration-wizard.mjs
index 89872a1558..9d58fbe95f 100644
--- a/browser/components/migration/content/migration-wizard.mjs
+++ b/browser/components/migration/content/migration-wizard.mjs
@@ -333,6 +333,7 @@ export class MigrationWizard extends HTMLElement {
this.#getPermissionsButton.addEventListener("click", this);
this.#browserProfileSelector.addEventListener("click", this);
+ this.#browserProfileSelector.addEventListener("mousedown", this);
this.#resourceTypeList = shadow.querySelector("#resource-type-list");
this.#resourceTypeList.addEventListener("change", this);
@@ -1396,107 +1397,122 @@ export class MigrationWizard extends HTMLElement {
}
}
+ #handleClickEvent(event) {
+ if (
+ event.target == this.#importButton ||
+ event.target == this.#importFromFileButton
+ ) {
+ this.#doImport();
+ } else if (
+ event.target.classList.contains("cancel-close") ||
+ event.target.classList.contains("finish-button")
+ ) {
+ this.dispatchEvent(
+ new CustomEvent("MigrationWizard:Close", { bubbles: true })
+ );
+ } else if (
+ event.currentTarget == this.#browserProfileSelectorList &&
+ event.target != this.#browserProfileSelectorList
+ ) {
+ this.#onBrowserProfileSelectionChanged(event.target);
+ // If the user selected a file migration type from the selector, we'll
+ // help the user out by immediately starting the file migration flow,
+ // rather than waiting for them to click the "Select File".
+ if (
+ event.target.getAttribute("type") ==
+ MigrationWizardConstants.MIGRATOR_TYPES.FILE
+ ) {
+ this.#doImport();
+ }
+ } else if (event.target == this.#safariPermissionButton) {
+ this.#requestSafariPermissions();
+ } else if (event.currentTarget == this.#resourceSummary) {
+ this.#expandedDetails = true;
+ } else if (event.target == this.#chooseImportFromFile) {
+ this.dispatchEvent(
+ new CustomEvent("MigrationWizard:RequestState", {
+ bubbles: true,
+ detail: {
+ allowOnlyFileMigrators: true,
+ },
+ })
+ );
+ } else if (event.target == this.#safariPasswordImportSkipButton) {
+ // If the user chose to skip importing passwords from Safari, we
+ // programmatically uncheck the PASSWORDS resource type and re-request
+ // import.
+ let checkbox = this.#shadowRoot.querySelector(
+ `label[data-resource-type="${MigrationWizardConstants.DISPLAYED_RESOURCE_TYPES.PASSWORDS}"]`
+ ).control;
+ checkbox.checked = false;
+
+ // If there are no other checked checkboxes, go back to the selection
+ // screen.
+ let checked = this.#shadowRoot.querySelectorAll(
+ `label[data-resource-type] > input:checked`
+ ).length;
+
+ if (!checked) {
+ this.requestState();
+ } else {
+ this.#doImport();
+ }
+ } else if (event.target == this.#safariPasswordImportSelectButton) {
+ this.#selectSafariPasswordFile();
+ } else if (event.target == this.#extensionsSuccessLink) {
+ this.dispatchEvent(
+ new CustomEvent("MigrationWizard:OpenAboutAddons", {
+ bubbles: true,
+ })
+ );
+ event.preventDefault();
+ } else if (event.target == this.#getPermissionsButton) {
+ this.#getPermissions();
+ }
+ }
+
+ #handleChangeEvent(event) {
+ if (event.target == this.#browserProfileSelector) {
+ this.#onBrowserProfileSelectionChanged();
+ } else if (event.target == this.#selectAllCheckbox) {
+ let checkboxes = this.#shadowRoot.querySelectorAll(
+ 'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
+ );
+ for (let checkbox of checkboxes) {
+ checkbox.checked = this.#selectAllCheckbox.checked;
+ }
+ this.#displaySelectedResources();
+ } else {
+ let checkboxes = this.#shadowRoot.querySelectorAll(
+ 'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
+ );
+
+ let allVisibleChecked = Array.from(checkboxes).every(checkbox => {
+ return checkbox.checked;
+ });
+
+ this.#selectAllCheckbox.checked = allVisibleChecked;
+ this.#displaySelectedResources();
+ }
+ }
+
handleEvent(event) {
+ if (
+ event.target == this.#browserProfileSelector &&
+ (event.type == "mousedown" ||
+ (event.type == "click" &&
+ event.mozInputSource == MouseEvent.MOZ_SOURCE_KEYBOARD))
+ ) {
+ this.#browserProfileSelectorList.toggle(event);
+ return;
+ }
switch (event.type) {
case "click": {
- if (
- event.target == this.#importButton ||
- event.target == this.#importFromFileButton
- ) {
- this.#doImport();
- } else if (
- event.target.classList.contains("cancel-close") ||
- event.target.classList.contains("finish-button")
- ) {
- this.dispatchEvent(
- new CustomEvent("MigrationWizard:Close", { bubbles: true })
- );
- } else if (event.target == this.#browserProfileSelector) {
- this.#browserProfileSelectorList.show(event);
- } else if (
- event.currentTarget == this.#browserProfileSelectorList &&
- event.target != this.#browserProfileSelectorList
- ) {
- this.#onBrowserProfileSelectionChanged(event.target);
- // If the user selected a file migration type from the selector, we'll
- // help the user out by immediately starting the file migration flow,
- // rather than waiting for them to click the "Select File".
- if (
- event.target.getAttribute("type") ==
- MigrationWizardConstants.MIGRATOR_TYPES.FILE
- ) {
- this.#doImport();
- }
- } else if (event.target == this.#safariPermissionButton) {
- this.#requestSafariPermissions();
- } else if (event.currentTarget == this.#resourceSummary) {
- this.#expandedDetails = true;
- } else if (event.target == this.#chooseImportFromFile) {
- this.dispatchEvent(
- new CustomEvent("MigrationWizard:RequestState", {
- bubbles: true,
- detail: {
- allowOnlyFileMigrators: true,
- },
- })
- );
- } else if (event.target == this.#safariPasswordImportSkipButton) {
- // If the user chose to skip importing passwords from Safari, we
- // programmatically uncheck the PASSWORDS resource type and re-request
- // import.
- let checkbox = this.#shadowRoot.querySelector(
- `label[data-resource-type="${MigrationWizardConstants.DISPLAYED_RESOURCE_TYPES.PASSWORDS}"]`
- ).control;
- checkbox.checked = false;
-
- // If there are no other checked checkboxes, go back to the selection
- // screen.
- let checked = this.#shadowRoot.querySelectorAll(
- `label[data-resource-type] > input:checked`
- ).length;
-
- if (!checked) {
- this.requestState();
- } else {
- this.#doImport();
- }
- } else if (event.target == this.#safariPasswordImportSelectButton) {
- this.#selectSafariPasswordFile();
- } else if (event.target == this.#extensionsSuccessLink) {
- this.dispatchEvent(
- new CustomEvent("MigrationWizard:OpenAboutAddons", {
- bubbles: true,
- })
- );
- event.preventDefault();
- } else if (event.target == this.#getPermissionsButton) {
- this.#getPermissions();
- }
+ this.#handleClickEvent(event);
break;
}
case "change": {
- if (event.target == this.#browserProfileSelector) {
- this.#onBrowserProfileSelectionChanged();
- } else if (event.target == this.#selectAllCheckbox) {
- let checkboxes = this.#shadowRoot.querySelectorAll(
- 'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
- );
- for (let checkbox of checkboxes) {
- checkbox.checked = this.#selectAllCheckbox.checked;
- }
- this.#displaySelectedResources();
- } else {
- let checkboxes = this.#shadowRoot.querySelectorAll(
- 'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
- );
-
- let allVisibleChecked = Array.from(checkboxes).every(checkbox => {
- return checkbox.checked;
- });
-
- this.#selectAllCheckbox.checked = allVisibleChecked;
- this.#displaySelectedResources();
- }
+ this.#handleChangeEvent(event);
break;
}
}