mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 14:52:16 +00:00
e66ab7ac30
Some code to exercise this in the browser console: ``` { const printNames = async (appList) => { let buffer = "Start:\n"; for (let index = 0; index < appList4.length; index++) { let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp); buffer += app.executable.leafName; buffer += "\n"; } buffer += "\n"; for (let index = 0; index < appList4.length; index++) { let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp); let prettyName = await app.prettyNameAsync(); buffer += prettyName; buffer += "\n"; } buffer += "\n"; for (let index = 0; index < appList4.length; index++) { let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp); buffer += app.executable.displayName; buffer += "\n"; } buffer += "\n"; for (let index = 0; index < appList4.length; index++) { let app = appList4.queryElementAt(index, Ci.nsILocalHandlerApp); if (AppConstants.platform == "win") { let file = app.executable; if (file instanceof Ci.nsILocalFileWin) { try { buffer += file.getVersionInfoField("FileDescription"); } catch (e) { } } } buffer += "\n"; } buffer += "\nEnd\n"; console.log(buffer); }; const lazy4 = {}; XPCOMUtils.defineLazyServiceGetters(lazy4, { gMIMEService: ["@mozilla.org/mime;1", "nsIMIMEService"], }); let mimeInfo4 = lazy4.gMIMEService.getFromTypeAndExtension("text/html", "html"); if (mimeInfo4.hasDefaultHandler) { console.log(`HasDefaultHandler = true`); console.log(`Description = ${mimeInfo4.defaultDescription}`); } else { console.log(`HasDefaultHandler = false`); } let appList4 = mimeInfo4.possibleLocalHandlers || []; console.log("appList4 = "); console.log(JSON.stringify(appList4)); printNames(appList4); } ``` That produces output that can be seen in a pretty form here: https://docs.google.com/spreadsheets/d/1OvtrZgMlPMJO4Wgu6wwAYvm89orj9HdS_tsDxYn7yrA/edit#gid=0 This does not fix-up things so that all calls to getName() on the LocalHandlerApp are switched to prettyNameAsync. That work is tracked here: https://bugzilla.mozilla.org/show_bug.cgi?id=1884267 Differential Revision: https://phabricator.services.mozilla.com/D203876
145 lines
3.4 KiB
Python
145 lines
3.4 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# 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/.
|
|
|
|
SPHINX_TREES["/uriloader/exthandler"] = "docs"
|
|
|
|
with Files("**"):
|
|
BUG_COMPONENT = ("Firefox", "File Handling")
|
|
|
|
TEST_DIRS += ["tests"]
|
|
|
|
XPIDL_SOURCES += [
|
|
"nsCExternalHandlerService.idl",
|
|
"nsIContentDispatchChooser.idl",
|
|
"nsIExternalHelperAppService.idl",
|
|
"nsIExternalProtocolService.idl",
|
|
"nsIHandlerService.idl",
|
|
"nsIHelperAppLauncherDialog.idl",
|
|
"nsISharingHandlerApp.idl",
|
|
]
|
|
|
|
XPIDL_MODULE = "exthandler"
|
|
|
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
|
|
osdir = "win"
|
|
LOCAL_INCLUDES += ["win"]
|
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
|
|
osdir = "mac"
|
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] in ("android", "uikit"):
|
|
osdir = CONFIG["MOZ_WIDGET_TOOLKIT"]
|
|
else:
|
|
osdir = "unix"
|
|
|
|
EXPORTS += [osdir + "/nsOSHelperAppService.h"]
|
|
|
|
EXPORTS += [
|
|
"ContentHandlerService.h",
|
|
"nsExternalHelperAppService.h",
|
|
"nsMIMEInfoChild.h",
|
|
"nsOSHelperAppServiceChild.h",
|
|
]
|
|
|
|
EXPORTS += [
|
|
"nsLocalHandlerApp.h",
|
|
]
|
|
|
|
EXPORTS.mozilla.dom += [
|
|
"ExternalHelperAppChild.h",
|
|
"ExternalHelperAppParent.h",
|
|
]
|
|
|
|
UNIFIED_SOURCES += [
|
|
"ContentHandlerService.cpp",
|
|
"ExternalHelperAppChild.cpp",
|
|
"ExternalHelperAppParent.cpp",
|
|
"HandlerServiceParent.cpp",
|
|
"nsExternalHelperAppService.cpp",
|
|
"nsExternalProtocolHandler.cpp",
|
|
"nsLocalHandlerApp.cpp",
|
|
"nsMIMEInfoImpl.cpp",
|
|
"nsOSHelperAppServiceChild.cpp",
|
|
]
|
|
|
|
if CONFIG["MOZ_BUILD_APP"] == "browser":
|
|
DEFINES["MOZ_BUILD_APP_IS_BROWSER"] = True
|
|
|
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
|
|
UNIFIED_SOURCES += [
|
|
"mac/nsLocalHandlerAppMac.mm",
|
|
"mac/nsMIMEInfoMac.mm",
|
|
"mac/nsOSHelperAppService.mm",
|
|
]
|
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit":
|
|
UNIFIED_SOURCES += [
|
|
"uikit/nsLocalHandlerAppUIKit.mm",
|
|
"uikit/nsMIMEInfoUIKit.mm",
|
|
"uikit/nsOSHelperAppService.mm",
|
|
]
|
|
else:
|
|
# These files can't be built in unified mode because they redefine LOG.
|
|
SOURCES += [
|
|
osdir + "/nsOSHelperAppService.cpp",
|
|
]
|
|
|
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
UNIFIED_SOURCES += [
|
|
"unix/nsGNOMERegistry.cpp",
|
|
"unix/nsMIMEInfoUnix.cpp",
|
|
]
|
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
|
|
UNIFIED_SOURCES += [
|
|
"android/nsMIMEInfoAndroid.cpp",
|
|
]
|
|
elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
|
|
UNIFIED_SOURCES += [
|
|
"win/nsLocalHandlerAppWin.cpp",
|
|
"win/nsMIMEInfoWin.cpp",
|
|
]
|
|
|
|
if CONFIG["MOZ_ENABLE_DBUS"]:
|
|
UNIFIED_SOURCES += [
|
|
"nsDBusHandlerApp.cpp",
|
|
]
|
|
EXPORTS.mozilla += [
|
|
"DBusHelpers.h",
|
|
]
|
|
|
|
EXTRA_JS_MODULES += [
|
|
"ExtHandlerService.sys.mjs",
|
|
"WebHandlerApp.sys.mjs",
|
|
]
|
|
|
|
EXTRA_JS_MODULES.handlers += [
|
|
"HandlerList.sys.mjs",
|
|
]
|
|
|
|
XPCOM_MANIFESTS += [
|
|
"components.conf",
|
|
]
|
|
|
|
IPDL_SOURCES += [
|
|
"PExternalHelperApp.ipdl",
|
|
"PHandlerService.ipdl",
|
|
]
|
|
|
|
include("/ipc/chromium/chromium-config.mozbuild")
|
|
|
|
FINAL_LIBRARY = "xul"
|
|
|
|
LOCAL_INCLUDES += [
|
|
"/docshell/base",
|
|
"/dom/base",
|
|
"/dom/ipc",
|
|
"/netwerk/base",
|
|
"/netwerk/protocol/http",
|
|
]
|
|
|
|
if CONFIG["MOZ_ENABLE_DBUS"]:
|
|
CXXFLAGS += CONFIG["MOZ_DBUS_CFLAGS"]
|
|
|
|
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
|
|
CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
|