summaryrefslogtreecommitdiffstats
path: root/widget/nsIMacDockSupport.idl
diff options
context:
space:
mode:
Diffstat (limited to 'widget/nsIMacDockSupport.idl')
-rw-r--r--widget/nsIMacDockSupport.idl71
1 files changed, 71 insertions, 0 deletions
diff --git a/widget/nsIMacDockSupport.idl b/widget/nsIMacDockSupport.idl
new file mode 100644
index 0000000000..04d6dca774
--- /dev/null
+++ b/widget/nsIMacDockSupport.idl
@@ -0,0 +1,71 @@
+/* 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/. */
+
+#include "nsISupports.idl"
+
+interface nsIStandaloneNativeMenu;
+
+/**
+ * Allow applications to interface with the Mac OS X Dock.
+ *
+ * Applications may indicate progress on their Dock icon. Only one such
+ * progress indicator is available to the entire application.
+ */
+
+[scriptable, uuid(8BE66B0C-5F71-4B74-98CF-6C2551B999B1)]
+interface nsIMacDockSupport : nsISupports
+{
+ /**
+ * Menu to use for application-specific dock menu items.
+ */
+ attribute nsIStandaloneNativeMenu dockMenu;
+
+ /**
+ * Activate the application. This should be used by an application to
+ * activate itself when a dock menu is selected as selection of a dock menu
+ * item does not automatically activate the application.
+ *
+ * @param aIgnoreOtherApplications If false, the application is activated
+ * only if no other application is currently active. If true, the
+ * application activates regardless.
+ */
+ void activateApplication(in boolean aIgnoreOtherApplications);
+
+ /**
+ * Text used to badge the dock tile.
+ */
+ attribute AString badgeText;
+
+ /**
+ * True if this app is in the list of apps that are persisted to the macOS
+ * Dock (as if the user selected "Keep in Dock").
+ */
+ readonly attribute bool isAppInDock;
+
+ /**
+ * Ensure that there is a tile for this app in the list of apps that are
+ * persisted to the macOS Dock (equivalent to the user selected "Keep in
+ * Dock").
+ *
+ * The position for the [new] app tile is:
+ *
+ * - its current position if it already exists, else
+ * - the position of `aAppToReplacePath` if it exists, else
+ * - directly after the last app with the same .app name, else
+ * - directly after the last known browser app (see `browserAppNames` in
+ * nsMacDockSupport.mm), else
+ * - at the end of the persisted app list.
+ *
+ * @param aAppPath [optional] The path of the .app to persist to the Dock
+ * (defaults to the path of the current app).
+ * @param aAppToReplacePath [optional] The path of a .app that should be
+ * replaced if it is in the list of persisted apps. This is useful when we
+ * prompt the user to install the app when the app is being run directly
+ * from a .dmg and the user may have dragged that .app file to the dock.
+ * @return true if the app was already in the list of persisted apps or if it
+ * was successfully added, else returns false.
+ */
+ bool ensureAppIsPinnedToDock([optional] in AString aAppPath,
+ [optional] in AString aAppToReplacePath);
+};