MigrationUtils 参考

class MigrationUtils()

MigrationUtils 单例服务。此服务是从其他浏览器迁移到此浏览器的主要机制。此类的单例实例从此模块导出为 MigrationUtils

MigrationUtils.MIGRATION_ENTRYPOINTS

返回一个枚举,该枚举应用于记录启动迁移的入口点。

MigrationUtils._importQuantities

这只是伪私有,因为一些测试和辅助函数仍然希望能够直接访问它。

MigrationUtils.isStartupMigration

类型: 布尔值

如果我们正在进行启动迁移,则为真。

MigrationUtils.profileStartup

类型: nsIProfileStartup|null

在启动迁移的情况下,将其设置为传递给 ProfileMigrator 的 migrate 的 nsIProfileStartup 实例。

另请参阅

MigrationUtils.canGetPermissionsOnPlatform()

确定底层平台是否支持创建可以执行文件夹选择的原生文件选择器,这是获取要从中导入的其他浏览器数据的读取访问权限的先决条件。

返回值:

Promise.<boolean>

MigrationUtils.finishMigration()

清理对迁移器和 nsIProfileInstance 实例的引用。

MigrationUtils.getLocalizedString(aKey, aArgs)

获取与 l10n-id 对应的本地化字符串

参数:
  • aKey (字符串) – 要检索的本地化的 ID 的键。

  • aArgs (对象) – ID 的可选参数映射。

返回值:

Promise.<字符串> – 解析为检索到的本地化的 Promise。

MigrationUtils.getMigrator(aKey)

如果此源的任何数据可用,或者如果需要权限才能从此源读取数据,则返回给定源的迁移器。否则返回 null。

参数:
  • aKey (字符串) – 迁移源的内部名称。有关操作系统支持的值,请参阅 availableMigratorKeys

返回值:

Promise.<(MigratorBase|null)> – 如果可以导入任何数据,则为实现 nsIBrowserProfileMigrator 的配置文件迁移器,否则为 null。

MigrationUtils.getMigratorKeyForDefaultBrowser()

找出默认浏览器是什么,如果存在它的迁移器,则返回该迁移器的内部名称。

目前,迁移器的“内部名称”是其契约 ID 后缀(例如,@mozilla.org/profile/migrator;1?app=browser&type=ie 中的 ie),但很快就会正确公开。

返回值:

字符串

MigrationUtils.getRowsFromDBWithoutLocks(path, description, selectQuery, testDelayPromise=null)

获取与数据库中选择查询相对应 的所有行,而无需对数据库加锁。如果获取数据失败(例如,因为其他人尝试同时写入 DB),我们将尝试在 100 毫秒超时后重新获取,最多 10 次。

参数:
  • path (字符串) – 我们要打开的数据库的文件路径。

  • description (字符串) – 一个开发人员可读的字符串,用于识别我们尝试打开哪种数据库。

  • selectQuery (字符串) – 用于获取行的 SELECT 查询。

  • testDelayPromise (Promise) – 第一个循环后等待的可选 Promise,在测试中使用。

返回值:

Promise.<(Array.<object>|Error)> – 解析为行数组的 Promise。如果读取/获取即使在重试后也失败,则此 Promise 将被拒绝。

MigrationUtils.insertManyFavicons(favicons)

遍历收藏夹图标,嗅探 MIME 类型,并使用 MIME 类型正确导入收藏夹图标。

注意:您可能不想等待返回的 Promise,尤其是在

这样做存在中断更关键数据(例如书签)迁移的风险时。

参数:
  • favicons (Array.<object>) – 对象数组,具有以下属性:{Uint8Array} faviconData:收藏夹图标的二进制数据 {nsIURI} uri:关联页面的 URI

MigrationUtils.installExtensionsWrapper(migratorKey, extensionIDs)

负责调用最终安装匹配加载项的 AddonManager API。

参数:
  • migratorKey (字符串) – 我们传递给 AMBrowserExtensionsImport 的迁移器键,作为用于匹配加载项的“浏览器标识符”。

  • extensionIDs (Array.<字符串>) – 来自另一个浏览器的扩展 ID 列表。

返回值:

MigrationUtils.migratorExists(aKey)

如果使用键 aKey 注册了迁移器,则返回 true。不进行检查以确定是否存在配置文件,迁移器可以从中迁移。

参数:
  • aKey (字符串) – 迁移源的内部名称。有关操作系统支持的值,请参阅 availableMigratorKeys

返回值:

布尔值

MigrationUtils.showMigrationWizard(aOpener=null, aOptions=null)

about:preferences 中显示迁移向导,或者如果未打开现有的浏览器窗口,则在新的顶级对话框窗口中显示。

注意:如果您添加了新的使用者,请将迁移入口点常量添加到 MIGRATION_ENTRYPOINTS,并在 aOptions 参数的 entrypoint 属性中提供该入口点。

参数:
  • aOpener (窗口) – 可选;请求打开向导的窗口。

  • aOptions (对象) – 迁移向导的可选命名参数。

  • aOptions.entrypoint (字符串) – 迁移入口点常量。请参阅 MIGRATION_ENTRYPOINTS。

  • aOptions.migratorKey (字符串) – 要自动使用的迁移器的键。这是作为迁移器类上的静态 getter 公开的键。

  • aOptions.migrator (MigratorBase) – 要自动使用的迁移器实例。

  • aOptions.isStartupMigration (布尔值) – 如果这是启动迁移,则为真。

  • aOptions.skipSourceSelection (布尔值) – 如果应跳过向导的源选择页面,则为真。

  • aOptions.profileId (字符串) – 用于迁移的配置文件的标识符。

返回值:

Promise.<undefined> – 如果可以打开 about:preferences 选项卡,则当该选项卡已切换到时,此选项卡将解析。否则,此选项卡将在打开顶级对话框窗口后立即解析。

MigrationUtils.startupMigration(aProfileStartup, aMigratorKey="null", aProfileToMigrate="null")

显示启动迁移的迁移向导。这只能由 ProfileMigrator(请参阅 ProfileMigrator.js)调用,后者实现了 nsIProfileMigrator。如果我们正在运行自动迁移,则此操作将异步运行。

参数:
  • aProfileStartup (nsIProfileStartup) – 提供给 ProfileMigrator.migrate 的 nsIProfileStartup 实例。

  • aMigratorKey (字符串|null) – 如果设置,迁移向导将从相应的迁移器导入,绕过源选择页面。否则,将显示源选择页面,如果可以检测到默认浏览器并且存在相应的迁移器,则使用默认浏览器,否则将选择第一个选项作为后备。

  • aProfileToMigrate (字符串|null) – 如果设置,迁移向导将从指定的配置文件导入。

抛出:

如果 aMigratorKey 无效或指向不存在的源。

MigrationUtils.wrapMigrateFunction(aFunction, aCallback)

用于实现迁移资源的简单异步案例的辅助函数 migrate(aCallback)(参见 MigratorBase)。如果您的 migrate 方法只是等待某些文件读取,例如,然后立即迁移所有内容,您可以使用此辅助函数包装异步函数,而无需担心通知回调。

参数:
  • aFunction (函数) – 将在稍后调用的函数。如果 aFunction 在被调用时抛出异常,则调用 aCallback(false),否则调用 aCallback(true)。

  • aCallback (函数) – 传递给 migrate 的回调函数。

返回值:

函数 – 被包装的函数。

示例

// For example, instead of writing:
setTimeout(function() {
  try {
    ....
    aCallback(true);
  }
  catch() {
    aCallback(false);
  }
}, 0);

// You may write:
setTimeout(MigrationUtils.wrapMigrateFunction(function() {
  if (importingFromMosaic)
    throw Cr.NS_ERROR_UNEXPECTED;
}, aCallback), 0);

// ... and aCallback will be called with aSuccess=false when importing
// from Mosaic, or with aSuccess=true otherwise.