mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-07 11:48:19 +02:00
When the notification server callback is executed by the Windows notification system, it invokes Firefox with additional command line parameters, most importantly the Windows-specific notification "Windows tag". If no appropriate Firefox is running, the command line will be processed, the provided Windows tag will be inspected (and seen to not be registered with this running Firefox instance) and a "launch URL" stored as part of the Windows notification itself opened (if one is provided). If an appropriate Firefox is running, the remoting protocol will forward this command line to the running instance. If the instance recognizes the provided `--notification-windowsTag`, the command line will be ignored. When the notification server exits, Windows will fallback to the Windows 8.1 style notification callbacks registered for this Windows tag and the existing (non notification server) behaviour will occur. In fact, the server therefore waits for a Windows tag-specific system event to be signalled by the invoked Firefox (or a sibling process). If we were to return `S_OK` from the notification server immediately, and a running Firefox process would handle the notification via Windows 8.1-style notification callbacks, then Windows would fall back to those callbacks. The invoked callbacks unregister themselves upon completion, often before the launched Firefox has an opportunity to process the command line. By waiting for this system event, we allow the invoked Firefox to process the command line while its own notification callbacks are registered and therefore recognize that its callbacks will handle the notification. Differential Revision: https://phabricator.services.mozilla.com/D154468
38 lines
2.1 KiB
JavaScript
38 lines
2.1 KiB
JavaScript
/* 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/. */
|
|
|
|
// These preferences override override browser/-specific preferences in
|
|
// `firefox.js`. Use `backgroundtasks.js` to override general Gecko preferences
|
|
// in `greprefs.js`.
|
|
|
|
// XUL notifications make no sense in background tasks. This is only applies to
|
|
// Windows for now.
|
|
pref("alerts.useSystemBackend", true);
|
|
pref("alerts.useSystemBackend.windows.notificationserver.enabled", true);
|
|
|
|
// Configure Messaging Experiments for background tasks, with
|
|
// background task-specific feature ID. The regular Firefox Desktop
|
|
// Remote Settings collection will be used.
|
|
pref("browser.newtabpage.activity-stream.asrouter.providers.messaging-experiments", "{\"id\":\"messaging-experiments\",\"enabled\":true,\"type\":\"remote-experiments\",\"featureIds\":[\"backgroundTaskMessage\"],\"updateCycleInMs\":3600000}");
|
|
|
|
// Disable all other Messaging System providers save for
|
|
// `browser.newtabpage.activity-stream.asrouter.providers.message-groups`, which
|
|
// is required for the system to function.
|
|
pref("browser.newtabpage.activity-stream.asrouter.providers.cfr", "null");
|
|
pref("browser.newtabpage.activity-stream.asrouter.providers.snippets", "null");
|
|
pref("browser.newtabpage.activity-stream.asrouter.providers.whats-new-panel", "null");
|
|
|
|
// The `browser.newtabpage.activity-stream.asrouter.providers.cfr` provider is
|
|
// disabled, but belt and braces: disable extension recommendations and feature
|
|
// recommendations. Neither of these make sense in background tasks, and they
|
|
// could trigger telemetry.
|
|
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
|
|
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
|
|
|
|
// Don't refresh experiments while a background task is running.
|
|
pref("app.normandy.run_interval_seconds", 0);
|
|
|
|
// Use a separate Nimbus application ID from regular Firefox Desktop.
|
|
// This prevents enrolling in regular desktop experiments.
|
|
pref("nimbus.appId", "firefox-desktop-background-task");
|