迁移程序参考

目前有两种类型的迁移程序:浏览器迁移程序和文件迁移程序。浏览器迁移程序将从另一个浏览器迁移各种资源。文件迁移程序允许用户通过中间文件迁移数据(例如,来自 .CSV 文件的密码)。

浏览器迁移程序

MigratorBase 类

class MigratorBase()

迁移程序的共享原型。

要实现一个迁移程序:1. 导入此模块。2. 为新的迁移程序创建 MigratorBase 的子类。3. 使用此迁移程序迁移的浏览器的唯一标识符覆盖 key 静态 getter。

  1. 如果迁移程序支持多个配置文件,请覆盖 sourceProfiles 在这里,我们默认为单配置文件迁移程序。

  2. 实现 getResources(aProfile)(见下文)。

  3. 对于仅限启动的迁移程序,请覆盖 startupOnlyMigrator

  4. 将迁移程序添加到 MigrationUtils.sys.mjs 中的 MIGRATOR_MODULES 结构。

MigratorBase.enabled

如果迁移程序配置为启用,则返回 true。这由 browser.migrate.<BROWSER_KEY>.enabled 布尔首选项控制。

MigratorBase.startupOnlyMigrator

仅当且仅当迁移程序是仅限启动的迁移程序时才覆盖(目前,这只是 Firefox 迁移程序,请参见 bug 737381)。默认值:false。

仅限启动的迁移程序在两个方面有所不同:- 它们只能在启动时使用。- 迁移期间用户配置文件处于半成品状态。该文件夹存在,

但只能通过 MigrationUtils.profileStartup 访问。迁移程序可以在任何时候调用 MigrationUtils.profileStartup.doStartup 以初始化配置文件。

MigratorBase.brandImage

类型:字符串

应覆盖此方法以返回要从中导入的浏览器的图标 url。默认情况下,这将只使用默认的 Favicon 图像。

MigratorBase.displayNameL10nID

类型:字符串

必须覆盖此方法以返回映射到此迁移程序显示名称的 Fluent 字符串 ID。这些字符串应在 migrationWizard.ftl 中定义。

MigratorBase.key

类型:字符串

必须覆盖此方法以返回迁移程序的简单字符串标识符,例如“firefox”、“chrome”、“opera-gx”。此键是在调用 MigrationUtils.getMigrator 时用作标识符的键。

MigratorBase.canGetPermissions()
返回值:

Promise.<(布尔值|字符串)>

MigratorBase.getLastUsedDate()

覆盖以提供对上次有人使用浏览器的时间的估计。即使这有点模糊也没关系 - 历史记录可能不可用(或被清除或由于例如隐身模式而不存在)。

如果未覆盖,则 promise 将解析为 Unix 纪元。

返回值:

Promise.<日期> – 解析为上次使用日期的 Promise。

MigratorBase.getMigrateData(aProfile)

此方法返回一个数字,它是 aProfile 中所有可用资源类型的按位 OR。有关每种资源类型,请参见 MigrationUtils.resourceTypes。

参数:
  • aProfile (对象|字符串) – 可以从中导入数据的配置文件,或者在单配置文件迁移程序的情况下为空字符串。

返回值:

数字

MigratorBase.getPermissions(_win)

如果需要从用户或操作系统请求特殊权限才能使用此 MigratorBase 执行迁移,则子类应实现此方法。仅当 hasPermissions 解析为 false 时才会调用此方法。

如果成功获得权限,则返回的 Promise 将解析为 true,否则解析为 false。实现者应确保,如果对 getPermissions 的调用解析为 true,则 MigratorBase 将能够读取执行迁移所需的所有资源。

参数:
  • _win (DOMWindow) – 承载请求权限的 UI 的顶级 DOM 窗口。例如,这可用于将文件选择器窗口锚定到承载迁移 UI 的相同窗口。

返回值:

Promise.<布尔值>

MigratorBase.getResources(_aProfile)

必须覆盖。

为给定配置文件或“默认”配置文件返回“迁移资源”对象的数组(如果迁移程序不支持多个配置文件)。

每个迁移资源都应提供:- 一个 type getter,返回任何迁移资源类型(请参见

MigrationUtils.resourceTypes)。

  • 一个 migrate 方法,接收两个参数 aCallback(布尔值 success,对象 details),用于迁移此资源的数据。它可以同步或异步执行其工作。无论哪种方式,它都必须在完成后调用 aCallback(布尔值 aSuccess,对象 details)。在 migrate 中抛出异常的情况下,将其视为调用 aCallback(false, {})。details 参数有时是可选的,但取决于迁移向导如何想要显示资源的迁移状态。

    注意:在简单的异步实现的情况下,您可能会发现 MigrationUtils.wrapMigrateFunction 对轻松处理 aCallback 很方便。

对于 MigrationUtils.resourceTypes 中列出的每种迁移类型,都可以提供多个迁移资源。当特定迁移类型的数据独立存储在少数几个位置时,此做法很有用。例如,Safari 的 mac 版本将其“阅读列表”书签存储在单独的属性列表中。

请注意,如果其任何资源成功导入(即,调用了 aCallback(true, {})),则特定迁移类型的导入将报告为成功。但是,特定迁移类型的完成状态仅在所有迁移程序都调用 aCallback 后才报告给 UI。

注意:返回的数组应仅包含可以从中导入数据的资源。因此,例如,在添加 BOOKMARKS 迁移类型的资源之前,您应该检查是否应该检查书签文件是否存在。

参数:
  • _aProfile (对象|字符串) – 可以从中导入数据的配置文件,或者在单配置文件迁移程序的情况下为空字符串。在多配置文件迁移程序的情况下,保证 aProfile 是 sourceProfiles getter 返回的值(见上文)。

返回值:

Promise.<Array.<MigratorResource>>|Array.<MigratorResource>

MigratorBase.getSourceProfiles()

仅当且仅当源支持多个配置文件时才覆盖。

返回可以从中导入数据的配置文件对象的数组。该对象应具有以下键

id - 配置文件的唯一字符串标识符 name - 在 UI 中显示给用户的漂亮名称

仅应列出可以从中导入数据的配置文件。否则,迁移向导的行为将无法很好地定义。

对于单配置文件源(例如 safari、ie),这将返回 null,而不是空数组。这是默认实现。

返回值:

Array.<对象>|null

MigratorBase.hasPermissions()

如果需要进行特殊检查以确定在可以导入数据之前是否需要请求某些权限,则子类应实现此方法。如果已授予所需的权限并且可以继续进行迁移,则返回的 Promise 将解析为 true。

返回值:

Promise.<布尔值>

MigratorBase.isSourceAvailable()

检查此迁移程序迁移的浏览器是否存在一个或多个配置文件。

返回值:

Promise.<布尔值> – 如果存在一个或多个配置文件,此迁移程序可以从中迁移资源,则为 true。

MigratorBase.migrate(aItems, aStartup, aProfile, aProgressCallback)
参数:
  • aItems (数字) – 一个位字段,其中包含来自 MigrationUtils.resourceTypes 的位,翻转以指示应迁移哪些类型的资源。

  • aStartup (布尔值) – 如果此迁移在启动期间发生,则为 True。

  • aProfile (对象 | 字符串) – 正在从中迁移的其他浏览器配置文件。

  • aProgressCallback (函数 | null) – 一个可选的回调函数,在资源类型迁移完成后将触发。回调函数将传递资源类型的数字表示形式,以及指示资源是否成功迁移的布尔值,以及可选地包含其他详细信息的对象。

另请参阅

Chrome 和 Chrome 变体迁移器

ChromeProfileMigrator 被子类化以为了为 Chrome 浏览器的变体提供迁移功能。

ChromeProfileMigrator 类

class ChromeProfileMigrator()

Chrome 配置文件迁移器。这也可以用作 Chrome 变体浏览器迁移器的父类。

ChromeProfileMigrator._getChromeUserDataPathIfExists(noRemapping=false)

返回一个 Promise,该 Promise 解析为包含此浏览器的本地状态和配置文件目录的数据路径。

参数:
  • noRemapping (布尔值) – 设置为 true 以绕过在数据路径在授予权限后发生更改的平台上可能发生的任何重新映射。

返回值:

Promise.<string>

BraveProfileMigrator 类

class BraveProfileMigrator()

Brave 迁移器

CanaryProfileMigrator 类

class CanaryProfileMigrator()

Chrome Canary 在 Linux 上不可用

ChromeBetaMigrator 类

class ChromeBetaMigrator()

Chrome Beta 迁移器

ChromeDevMigrator 类

class ChromeDevMigrator()

Chrome Dev - 仅限 Linux(在 Mac 和 Windows 中不可用)

Chromium360seMigrator 类

class Chromium360seMigrator()

Chromium 360 迁移器

ChromiumEdgeMigrator 类

class ChromiumEdgeMigrator()

Edge(基于 Chromium)迁移器

ChromiumEdgeBetaMigrator 类

class ChromiumEdgeBetaMigrator()

Edge Beta(基于 Chromium)迁移器

ChromiumProfileMigrator 类

class ChromiumProfileMigrator()

Chromium 迁移器

OperaProfileMigrator 类

class OperaProfileMigrator()

Opera 迁移器

OperaGXProfileMigrator 类

class OperaGXProfileMigrator()

Opera GX 迁移器

VivaldiProfileMigrator 类

class VivaldiProfileMigrator()

Vivaldi 迁移器

EdgeProfileMigrator 类

class EdgeProfileMigrator()

Edge(EdgeHTML)配置文件迁移器

EdgeProfileMigrator.getSourceProfiles()
返回值:

数组 | null – 有点违反直觉的是,这返回 null 以指示“只有一个(默认)配置文件”。有关 sourceProfiles 如何使用的更多信息,请参阅 MigrationUtils.sys.mjs。

FirefoxProfileMigrator 类

class FirefoxProfileMigrator()

Firefox 配置文件迁移器。目前,此类仅执行“覆盖”迁移,其中旧配置文件的各个部分覆盖新配置文件。这与尝试将旧配置文件数据导入现有配置文件的其他迁移器不同。

此迁移器是“配置文件刷新”机制的动力。

IEProfileMigrator 类

class IEProfileMigrator()

Internet Explorer 配置文件迁移器

文件迁移器

FilePickerConfigurationFilter()
参数:
  • title (字符串) – 过滤器的标题。例如:“CSV 文件”

  • extensionPattern (字符串) – 过滤器的匹配模式。例如:“*.csv”

FilePickerConfiguration()
参数:
  • title (字符串) – 应分配给本机文件选择器窗口的标题。

  • filters (Array.<FilePickerConfigurationFilter>) – 应用于本机文件选择器窗口的一个或多个扩展过滤器,以简化选择。

FileMigratorBase 类

class FileMigratorBase()

涉及从用户使用文件选择器选择的磁盘上读取单个文件的迁移的基本类。该文件可能是由另一个浏览器或某些其他应用程序生成的。

FileMigratorBase.displayedResourceTypes

类型:Array.<string>

返回一个或多个资源类型的列表,这些资源类型在文件迁移发生时应该显示为正在迁移中。值得注意的是,这不需要与 FileMigratorBase.migrate 返回的资源类型匹配。

FileMigratorBase.enabled

类型:布尔值

如果迁移器配置为启用,则返回 true。

FileMigratorBase.progressHeaderL10nID

类型:字符串

应覆盖此 getter 以返回文件迁移进行期间迁移向导标题应为的 Fluent 字符串 ID。

FileMigratorBase.successHeaderL10nID

类型:字符串

应覆盖此 getter 以返回文件迁移完成后迁移向导标题应为的 Fluent 字符串 ID。

FileMigratorBase.brandImage

类型:字符串

应覆盖此 getter 以返回一个图标 url 以表示要从中导入的文件。默认情况下,这只会使用默认的 Favicon 图像。

FileMigratorBase.displayNameL10nID

类型:字符串

必须覆盖此方法以返回映射到此迁移程序显示名称的 Fluent 字符串 ID。这些字符串应在 migrationWizard.ftl 中定义。

FileMigratorBase.key

类型:字符串

必须覆盖此方法以返回迁移器的简单字符串标识符,例如“password-csv”。此键是在调用 MigrationUtils.getFileMigrator 时用作标识符的键。

FileMigratorBase.getFilePickerConfig()

FileMigratorBase 的子类最终将为用户打开一个本机文件选择器,以便从其文件系统中选择文件。

子类需要覆盖此方法以配置本机文件选择器。

返回值:

Promise.<FilePickerConfiguration>

FileMigratorBase.migrate(_filePath)

在用户从本机文件选择器中进行选择后,调用此方法执行文件迁移。如果用户选择取消本机文件选择器,则不会调用此方法。

参数:
  • _filePath (字符串) – 用户从本机文件选择器中选择的路劲。

PasswordFileMigrator 类

class PasswordFileMigrator()

用于从 CSV 或 TSV 文件导入密码的文件迁移器。CSV 文件更常见,因此这是我们显示为显示名称的文件类型,但此 FileMigrator 接受两者。