Bug 1893485 - Add the profileGroupID to the backup manifest. r=backup-reviewers,kpatenio

This is a BackupManifest schema change that will break recovering from
any backups created before this change. However, considering that we
haven't released this feature yet, I figured it wasn't worth the
effort of doing a schema version bump or handling of the prior
version.

I'm making the field optional in the BackupManifest because in the
event that we decide to backport the backup component to ESR 115,
we need to handle the fact that ESR 115 has no notion of a profile
group ID (and is unlikely to ever have such a notion).

Differential Revision: https://phabricator.services.mozilla.com/D218976
This commit is contained in:
Mike Conley
2024-09-04 17:39:33 +00:00
parent 9491ccdeec
commit d23cddd9e6
7 changed files with 17 additions and 4 deletions

View File

@@ -2307,6 +2307,7 @@ export class BackupService extends EventTarget {
osName: Services.sysinfo.getProperty("name"),
osVersion: Services.sysinfo.getProperty("version"),
legacyClientID: await lazy.ClientID.getClientID(),
profileGroupID: await lazy.ClientID.getProfileGroupID(),
};
let fxaState = lazy.UIState.get();

View File

@@ -53,6 +53,10 @@
"legacyClientID": {
"type": "string",
"description": "The legacy telemetry client ID for the profile that the backup was created on."
},
"profileGroupID": {
"type": "string",
"description": "The ID for the profile group that the backup was created on. Optional."
}
},
"required": [

View File

@@ -62,7 +62,7 @@ Content-Type: multipart/mixed; boundary="----=_Part_1721146477166_dneaick9cm_9c7
------=_Part_1721146477166_dneaick9cm_9c70553ysr
Content-Type: application/json; charset=utf-8
Content-Disposition: attachment; filename="archive.json"
Content-Length: 3324
Content-Length: 3380
{"version":1,"encConfig":{"wrappedSecrets":"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","wrappedArchiveKeyMaterial":"gphveRF4QOkyCTgxT6+O/aAQyNDwNPrMDC8XdZ3X8rDRVoTtXOq19m2A0SI00yYv73I4NKYrSnp95tILahSc/OHtqmWk8l6uGrwO+hfAIXBs9kFMZhRDtijmcvldUm3LEVrnc5ZOc2OLvDwB13D0jNr3sc7BzBUxV9/I8wx2B6SanbL55V73AEa5pLmMFJzrlmayZ7CPICnUsnJPT8xAwBBCAKZ8RaDnrDTq9qtw78K5qYQqyGkofuzmlpvIWyZAKAEt/lzFP7art1/6B9jzfj//yaQ7/GHMf6eeQsSGBliWLLftkZfjZPVMxLVpWOxcUlr4rm+MZM0kTSCDCQJ07g==","salt":"2lyQ78RKFja17bBGjI+puW3TuLIYawRDl59Z+k2OM3piYWNrdXBrZXktdjE=","nonce":"CScM46fJSfDRNlArPwBZw/QxSsnevLTAvrR3H1KNLPkEHVX7RKpGNyrfh9YWiLO1vC0AOwFYpx2gByRx/v1w2RTJR926Wl/Si0+SWUPSJhN4Jd9w8Qo8e+MVE+d2ZrCY","confirmation":"L7+bpdPiR0dgQwOpmz8cMUYh6JL+EFltwvNhoF8HUv8="},"meta":{"date":"2024-06-07T00:00:00+00:00","appName":"firefox","appVersion":"128.0","buildID":"20240604133346","profileName":"profile-default","machineName":"A super cool machine","osName":"Windows_NT","osVersion":"10.0","legacyClientID":"decafbad-0cd1-0cd2-0cd3-decafbad1000","accountID":"","accountEmail":""}}
{"version":1,"encConfig":{"wrappedSecrets":"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","wrappedArchiveKeyMaterial":"gphveRF4QOkyCTgxT6+O/aAQyNDwNPrMDC8XdZ3X8rDRVoTtXOq19m2A0SI00yYv73I4NKYrSnp95tILahSc/OHtqmWk8l6uGrwO+hfAIXBs9kFMZhRDtijmcvldUm3LEVrnc5ZOc2OLvDwB13D0jNr3sc7BzBUxV9/I8wx2B6SanbL55V73AEa5pLmMFJzrlmayZ7CPICnUsnJPT8xAwBBCAKZ8RaDnrDTq9qtw78K5qYQqyGkofuzmlpvIWyZAKAEt/lzFP7art1/6B9jzfj//yaQ7/GHMf6eeQsSGBliWLLftkZfjZPVMxLVpWOxcUlr4rm+MZM0kTSCDCQJ07g==","salt":"2lyQ78RKFja17bBGjI+puW3TuLIYawRDl59Z+k2OM3piYWNrdXBrZXktdjE=","nonce":"CScM46fJSfDRNlArPwBZw/QxSsnevLTAvrR3H1KNLPkEHVX7RKpGNyrfh9YWiLO1vC0AOwFYpx2gByRx/v1w2RTJR926Wl/Si0+SWUPSJhN4Jd9w8Qo8e+MVE+d2ZrCY","confirmation":"L7+bpdPiR0dgQwOpmz8cMUYh6JL+EFltwvNhoF8HUv8="},"meta":{"date":"2024-06-07T00:00:00+00:00","appName":"firefox","appVersion":"128.0","buildID":"20240604133346","profileName":"profile-default","machineName":"A super cool machine","osName":"Windows_NT","osVersion":"10.0","legacyClientID":"decafbad-0cd1-0cd2-0cd3-decafbad1000","accountID":"","accountEmail":"","profileGroupID":"decafbad-0cd1-0cd2-0cd3-decafbad2000"}}
---- End inline MIME -->

View File

@@ -12,9 +12,9 @@ Content-Type: multipart/mixed; boundary="----=_Part_1721146477166_dneaick9cm_9c7
------=_Part_1721146477166_dneaick9cm_9c70553ysr
Content-Type: application/json; charset=utf-8
Content-Disposition: attachment; filename="archive.json"
Content-Length: 342
Content-Length: 398
{"version":1,"encConfig": null,"meta":{"date":"2024-06-07T00:00:00+00:00","appName":"firefox","appVersion":"128.0","buildID":"20240604133346","profileName":"profile-default","machineName":"A super cool machine","osName":"Windows_NT","osVersion":"10.0","legacyClientID":"decafbad-0cd1-0cd2-0cd3-decafbad1000","accountID":"","accountEmail":""}}
{"version":1,"encConfig": null,"meta":{"date":"2024-06-07T00:00:00+00:00","appName":"firefox","appVersion":"128.0","buildID":"20240604133346","profileName":"profile-default","machineName":"A super cool machine","osName":"Windows_NT","osVersion":"10.0","legacyClientID":"decafbad-0cd1-0cd2-0cd3-decafbad1000","accountID":"","accountEmail":"","profileGroupID":"decafbad-0cd1-0cd2-0cd3-decafbad2000"}}
------=_Part_1721146477166_dneaick9cm_9c70553ysr
---- End inline MIME -->

View File

@@ -77,6 +77,7 @@ const FAKE_METADATA = {
osName: "Windows_NT",
osVersion: "10.0",
legacyClientID: "decafbad-0cd1-0cd2-0cd3-decafbad1000",
profileGroupID: "decafbad-0cd1-0cd2-0cd3-decafbad2000",
accountID: "",
accountEmail: "",
};

View File

@@ -102,6 +102,7 @@ async function testCreateBackupHelper(sandbox, taskFn) {
);
const EXPECTED_CLIENT_ID = await ClientID.getClientID();
const EXPECTED_PROFILE_GROUP_ID = await ClientID.getProfileGroupID();
let fake1ManifestEntry = { fake1: "hello from 1" };
sandbox
@@ -272,6 +273,11 @@ async function testCreateBackupHelper(sandbox, taskFn) {
EXPECTED_CLIENT_ID,
"The client ID was stored properly."
);
Assert.equal(
manifest.meta.profileGroupID,
EXPECTED_PROFILE_GROUP_ID,
"The profile group ID was stored properly."
);
Assert.equal(
manifest.meta.profileName,
currentProfile.name,

View File

@@ -118,6 +118,7 @@ add_task(async function test_hostile_metadata() {
osName: "<script>alert('test');</script>",
osVersion: "<script>alert('test');</script>",
legacyClientID: "<script>alert('test');</script>",
profileGroupID: "<script>alert('test');</script>",
accountID: "<script>alert('test');</script>",
accountEmail: "<script>alert('test');</script>",
});