mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 13:51:41 +00:00
merge autoland to mozilla-central a=merge
This commit is contained in:
commit
ac913a6db5
@ -1,27 +1,27 @@
|
||||
[
|
||||
{
|
||||
"version": "Android NDK r11b for B2G",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "internal",
|
||||
"filename": "android-ndk-b2g.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "bc37c6b2e38f4ff19e3326786312d8f893600e155d35dfba45163bd909e022db852b9c6920863cb498bbe7da8b86a6a387fa024bc9444ce3a8d1715cf2c24b21",
|
||||
"size": 292442020
|
||||
},
|
||||
{
|
||||
"algorithm": "sha512",
|
||||
"visibility": "internal",
|
||||
"filename": "backup-aries_23.0.1.A.5.77.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "79c8e390e88cc4765ff7f5f29f3d5337c9037b7eb9414006947d38d34acefdbcf7090c18a366948c682b1c2c9d9ef51012e7be44daa28fdde7b837ade647c257",
|
||||
"size": 227555180
|
||||
},
|
||||
{
|
||||
"version": "gcc 4.8.5 + PR64905",
|
||||
"size": 80160264,
|
||||
"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": "True"
|
||||
}
|
||||
{
|
||||
"version": "Android NDK r11b for B2G",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "internal",
|
||||
"filename": "android-ndk-b2g.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "bc37c6b2e38f4ff19e3326786312d8f893600e155d35dfba45163bd909e022db852b9c6920863cb498bbe7da8b86a6a387fa024bc9444ce3a8d1715cf2c24b21",
|
||||
"size": 292442020
|
||||
},
|
||||
{
|
||||
"algorithm": "sha512",
|
||||
"visibility": "internal",
|
||||
"filename": "backup-aries_23.0.1.A.5.77.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "79c8e390e88cc4765ff7f5f29f3d5337c9037b7eb9414006947d38d34acefdbcf7090c18a366948c682b1c2c9d9ef51012e7be44daa28fdde7b837ade647c257",
|
||||
"size": 227555180
|
||||
},
|
||||
{
|
||||
"version": "gcc 4.8.5 + PR64905",
|
||||
"size": 80160264,
|
||||
"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": "True"
|
||||
}
|
||||
]
|
||||
|
@ -1,19 +1,19 @@
|
||||
[
|
||||
{
|
||||
"version": "Android NDK r11b for B2G",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "internal",
|
||||
"filename": "android-ndk-b2g.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "bc37c6b2e38f4ff19e3326786312d8f893600e155d35dfba45163bd909e022db852b9c6920863cb498bbe7da8b86a6a387fa024bc9444ce3a8d1715cf2c24b21",
|
||||
"size": 292442020
|
||||
},
|
||||
{
|
||||
"version": "gcc 4.8.5 + PR64905",
|
||||
"size": 80160264,
|
||||
"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": "True"
|
||||
}
|
||||
{
|
||||
"version": "Android NDK r11b for B2G",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "internal",
|
||||
"filename": "android-ndk-b2g.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "bc37c6b2e38f4ff19e3326786312d8f893600e155d35dfba45163bd909e022db852b9c6920863cb498bbe7da8b86a6a387fa024bc9444ce3a8d1715cf2c24b21",
|
||||
"size": 292442020
|
||||
},
|
||||
{
|
||||
"version": "gcc 4.8.5 + PR64905",
|
||||
"size": 80160264,
|
||||
"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": "True"
|
||||
}
|
||||
]
|
||||
|
@ -1,32 +1,32 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.8.5 + PR64905",
|
||||
"size": 80160264,
|
||||
"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 11189216,
|
||||
"digest": "18bc52b0599b1308b667e282abb45f47597bfc98a5140cfcab8da71dacf89dd76d0dee22a04ce26fe7ad1f04e2d6596991f9e5b01fd2aaaab5542965f596b0e6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.8.5 + PR64905",
|
||||
"size": 80160264,
|
||||
"digest": "c1a9dc9da289b8528874d16300b9d13a997cec99195bb0bc46ff665216d8535d6d6cb5af6b4b1f2749af6815dab12e703fdb3849014e5c23a70eff351a0baf4e",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 11189216,
|
||||
"digest": "18bc52b0599b1308b667e282abb45f47597bfc98a5140cfcab8da71dacf89dd76d0dee22a04ce26fe7ad1f04e2d6596991f9e5b01fd2aaaab5542965f596b0e6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,24 +1,24 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,22 +1,22 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,48 +1,48 @@
|
||||
[
|
||||
{
|
||||
"size": 102421980,
|
||||
"digest": "f25292aa93dc449e0472eee511c0ac15b5f1a4272ab76cf53ce5d20dc57f29e83da49ae1a9d9e994192647f75e13ae60f75ba2ac3cb9d26d5f5d6cabf88de921",
|
||||
"version": "gcc 4.9.3",
|
||||
"unpack": true,
|
||||
"filename": "gcc.tar.xz",
|
||||
"algorithm": "sha512"
|
||||
},
|
||||
{
|
||||
"unpack": true,
|
||||
"algorithm": "sha512",
|
||||
"filename": "sixgill.tar.xz",
|
||||
"hg_id": "8cb9c3fb039a+ tip",
|
||||
"digest": "36dc644e24c0aa824975ad8f5c15714445d5cb064d823000c3cb637e885199414d7df551e6b99233f0656dcf5760918192ef04113c486af37f3c489bb93ad029",
|
||||
"size": 2631908
|
||||
},
|
||||
{
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"size": 12072532
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"size": 167175
|
||||
},
|
||||
{
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"size": 31078810
|
||||
}
|
||||
{
|
||||
"size": 102421980,
|
||||
"digest": "f25292aa93dc449e0472eee511c0ac15b5f1a4272ab76cf53ce5d20dc57f29e83da49ae1a9d9e994192647f75e13ae60f75ba2ac3cb9d26d5f5d6cabf88de921",
|
||||
"version": "gcc 4.9.3",
|
||||
"unpack": true,
|
||||
"filename": "gcc.tar.xz",
|
||||
"algorithm": "sha512"
|
||||
},
|
||||
{
|
||||
"unpack": true,
|
||||
"algorithm": "sha512",
|
||||
"filename": "sixgill.tar.xz",
|
||||
"hg_id": "8cb9c3fb039a+ tip",
|
||||
"digest": "36dc644e24c0aa824975ad8f5c15714445d5cb064d823000c3cb637e885199414d7df551e6b99233f0656dcf5760918192ef04113c486af37f3c489bb93ad029",
|
||||
"size": 2631908
|
||||
},
|
||||
{
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"size": 12072532
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"size": 167175
|
||||
},
|
||||
{
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"size": 31078810
|
||||
}
|
||||
]
|
||||
|
@ -1,40 +1,40 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.3",
|
||||
"size": 102421980,
|
||||
"digest": "f25292aa93dc449e0472eee511c0ac15b5f1a4272ab76cf53ce5d20dc57f29e83da49ae1a9d9e994192647f75e13ae60f75ba2ac3cb9d26d5f5d6cabf88de921",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.3",
|
||||
"size": 102421980,
|
||||
"digest": "f25292aa93dc449e0472eee511c0ac15b5f1a4272ab76cf53ce5d20dc57f29e83da49ae1a9d9e994192647f75e13ae60f75ba2ac3cb9d26d5f5d6cabf88de921",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,24 +1,24 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,22 +1,22 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"size": 167175,
|
||||
"digest": "0b71a936edf5bd70cf274aaa5d7abc8f77fe8e7b5593a208f805cc9436fac646b9c4f0b43c2b10de63ff3da671497d35536077ecbc72dba7f8159a38b580f831",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 31078810,
|
||||
"digest": "2dffe4e5419a0c0c9908dc52b01cc07379a42e2aa8481be7a26bb8750b586b95bbac3fe57e64f5d37b43e206516ea70ad938a2e45858fdcf1e28258e70ae8d8c",
|
||||
"algorithm": "sha512",
|
||||
"filename": "moz-tt.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,6 +1,8 @@
|
||||
[{
|
||||
"size": 746441603,
|
||||
"digest": "199236aefecc1657cdc1b791ec38c8184557ab9249aff9c63a74abf73edc1dc0ea36b19b558f34ca3b14f8a511b10bcf37408b19701929522b4dc22dbaddcbe9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "emulator.zip"
|
||||
}]
|
||||
[
|
||||
{
|
||||
"size": 746441603,
|
||||
"digest": "199236aefecc1657cdc1b791ec38c8184557ab9249aff9c63a74abf73edc1dc0ea36b19b558f34ca3b14f8a511b10bcf37408b19701929522b4dc22dbaddcbe9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "emulator.zip"
|
||||
}
|
||||
]
|
||||
|
@ -162,7 +162,6 @@ pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla
|
||||
pref("extensions.update.interval", 86400); // Check for updates to Extensions and
|
||||
// Themes every day
|
||||
// Non-symmetric (not shared by extensions) extension-specific [update] preferences
|
||||
pref("extensions.dss.enabled", false); // Dynamic Skin Switching
|
||||
pref("extensions.dss.switchPending", false); // Non-dynamic switch pending after next
|
||||
// restart.
|
||||
|
||||
|
@ -255,7 +255,7 @@
|
||||
let learnMoreLink = document.getElementById("learnMoreLink");
|
||||
// nssFailure2 also gets us other non-overrideable errors. Choose
|
||||
// a "learn more" link based on description:
|
||||
if (getDescription().includes("mozilla_pkix_error_key_pinning_failure")) {
|
||||
if (getDescription().includes("MOZILLA_PKIX_ERROR_KEY_PINNING_FAILURE")) {
|
||||
learnMoreLink.href = "https://support.mozilla.org/kb/certificate-pinning-reports";
|
||||
}
|
||||
|
||||
|
@ -572,7 +572,7 @@ toolbar:not(#TabsToolbar) > #personal-bookmarks {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
#DateTimePickerPanel {
|
||||
#DateTimePickerPanel[active="true"] {
|
||||
-moz-binding: url("chrome://global/content/bindings/datetimepopup.xml#datetime-popup");
|
||||
}
|
||||
|
||||
|
8
browser/base/content/test/forms/browser.ini
Normal file
8
browser/base/content/test/forms/browser.ini
Normal file
@ -0,0 +1,8 @@
|
||||
[DEFAULT]
|
||||
support-files =
|
||||
head.js
|
||||
|
||||
[browser_selectpopup.js]
|
||||
skip-if = os == "linux" # Bug 1329991 - test fails intermittently on Linux builds
|
||||
[browser_selectpopup_colors.js]
|
||||
skip-if = os == "linux" # Bug 1329991 - test fails intermittently on Linux builds
|
@ -79,52 +79,6 @@ const PAGECONTENT_TRANSLATED =
|
||||
"</iframe>" +
|
||||
"</div></body></html>";
|
||||
|
||||
const PAGECONTENT_COLORS =
|
||||
"<html><head><style>" +
|
||||
" .blue { color: #fff; background-color: #00f; }" +
|
||||
" .green { color: #800080; background-color: green; }" +
|
||||
" .defaultColor { color: -moz-ComboboxText; }" +
|
||||
" .defaultBackground { background-color: -moz-Combobox; }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One" style="color: #fff; background-color: #f00;">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgb(255, 0, 0)"}</option>' +
|
||||
' <option value="Two" class="blue">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgb(0, 0, 255)"}</option>' +
|
||||
' <option value="Three" class="green">{"color": "rgb(128, 0, 128)", "backgroundColor": "rgb(0, 128, 0)"}</option>' +
|
||||
' <option value="Four" class="defaultColor defaultBackground">{"color": "-moz-ComboboxText", "backgroundColor": "rgba(0, 0, 0, 0)", "unstyled": "true"}</option>' +
|
||||
' <option value="Five" class="defaultColor">{"color": "-moz-ComboboxText", "backgroundColor": "rgba(0, 0, 0, 0)", "unstyled": "true"}</option>' +
|
||||
' <option value="Six" class="defaultBackground">{"color": "-moz-ComboboxText", "backgroundColor": "rgba(0, 0, 0, 0)", "unstyled": "true"}</option>' +
|
||||
' <option value="Seven" selected="true">{"unstyled": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const PAGECONTENT_COLORS_ON_SELECT =
|
||||
"<html><head><style>" +
|
||||
" #one { background-color: #7E3A3A; color: #fff }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option value="Two">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option value="Three">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option value="Four" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const TRANSPARENT_SELECT =
|
||||
"<html><head><style>" +
|
||||
" #one { background-color: transparent; }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One">{"unstyled": "true"}</option>' +
|
||||
' <option value="Two" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const OPTION_COLOR_EQUAL_TO_UABACKGROUND_COLOR_SELECT =
|
||||
"<html><head><style>" +
|
||||
" #one { background-color: black; color: white; }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One" style="background-color: white; color: black;">{"color": "rgb(0, 0, 0)", "backgroundColor": "rgb(255, 255, 255)"}</option>' +
|
||||
' <option value="Two" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
function openSelectPopup(selectPopup, mode = "key", selector = "select", win = window) {
|
||||
let popupShownPromise = BrowserTestUtils.waitForEvent(selectPopup, "popupshown");
|
||||
|
||||
@ -143,24 +97,6 @@ function openSelectPopup(selectPopup, mode = "key", selector = "select", win = w
|
||||
return popupShownPromise;
|
||||
}
|
||||
|
||||
function hideSelectPopup(selectPopup, mode = "enter", win = window) {
|
||||
let browser = win.gBrowser.selectedBrowser;
|
||||
let selectClosedPromise = ContentTask.spawn(browser, null, function*() {
|
||||
Cu.import("resource://gre/modules/SelectContentHelper.jsm");
|
||||
return ContentTaskUtils.waitForCondition(() => !SelectContentHelper.open);
|
||||
});
|
||||
|
||||
if (mode == "escape") {
|
||||
EventUtils.synthesizeKey("KEY_Escape", { code: "Escape" }, win);
|
||||
} else if (mode == "enter") {
|
||||
EventUtils.synthesizeKey("KEY_Enter", { code: "Enter" }, win);
|
||||
} else if (mode == "click") {
|
||||
EventUtils.synthesizeMouseAtCenter(selectPopup.lastChild, { }, win);
|
||||
}
|
||||
|
||||
return selectClosedPromise;
|
||||
}
|
||||
|
||||
function getInputEvents() {
|
||||
return ContentTask.spawn(gBrowser.selectedBrowser, {}, function() {
|
||||
return content.wrappedJSObject.gInputEvents;
|
||||
@ -179,44 +115,6 @@ function getClickEvents() {
|
||||
});
|
||||
}
|
||||
|
||||
function getSystemColor(color) {
|
||||
// Need to convert system color to RGB color.
|
||||
let textarea = document.createElementNS("http://www.w3.org/1999/xhtml", "textarea");
|
||||
textarea.style.color = color;
|
||||
return getComputedStyle(textarea).color;
|
||||
}
|
||||
|
||||
function testOptionColors(index, item, menulist) {
|
||||
// The label contains a JSON string of the expected colors for
|
||||
// `color` and `background-color`.
|
||||
let expected = JSON.parse(item.label);
|
||||
|
||||
for (let color of Object.keys(expected)) {
|
||||
if (color.toLowerCase().includes("color") &&
|
||||
!expected[color].startsWith("rgb")) {
|
||||
expected[color] = getSystemColor(expected[color]);
|
||||
}
|
||||
}
|
||||
|
||||
// Press Down to move the selected item to the next item in the
|
||||
// list and check the colors of this item when it's not selected.
|
||||
EventUtils.synthesizeKey("KEY_ArrowDown", { code: "ArrowDown" });
|
||||
|
||||
if (expected.end) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (expected.unstyled) {
|
||||
ok(!item.hasAttribute("customoptionstyling"),
|
||||
`Item ${index} should not have any custom option styling`);
|
||||
} else {
|
||||
is(getComputedStyle(item).color, expected.color,
|
||||
"Item " + (index) + " has correct foreground color");
|
||||
is(getComputedStyle(item).backgroundColor, expected.backgroundColor,
|
||||
"Item " + (index) + " has correct background color");
|
||||
}
|
||||
}
|
||||
|
||||
function* doSelectTests(contentType, dtd) {
|
||||
const pageUrl = "data:" + contentType + "," + escape(dtd + "\n" + PAGECONTENT);
|
||||
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl);
|
||||
@ -830,101 +728,6 @@ add_task(function* test_somehidden() {
|
||||
yield BrowserTestUtils.removeTab(tab);
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has styles applied to <option>s within it.
|
||||
add_task(function* test_colors_applied_to_popup_items() {
|
||||
const pageUrl = "data:text/html," + escape(PAGECONTENT_COLORS);
|
||||
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl);
|
||||
|
||||
let menulist = document.getElementById("ContentSelectDropdown");
|
||||
let selectPopup = menulist.menupopup;
|
||||
|
||||
let popupShownPromise = BrowserTestUtils.waitForEvent(selectPopup, "popupshown");
|
||||
yield BrowserTestUtils.synthesizeMouseAtCenter("#one", { type: "mousedown" }, gBrowser.selectedBrowser);
|
||||
yield popupShownPromise;
|
||||
|
||||
// The label contains a JSON string of the expected colors for
|
||||
// `color` and `background-color`.
|
||||
is(selectPopup.parentNode.itemCount, 7, "Correct number of items");
|
||||
let child = selectPopup.firstChild;
|
||||
let idx = 1;
|
||||
|
||||
ok(!child.selected, "The first child should not be selected");
|
||||
while (child) {
|
||||
testOptionColors(idx, child, menulist);
|
||||
idx++;
|
||||
child = child.nextSibling;
|
||||
}
|
||||
|
||||
yield hideSelectPopup(selectPopup, "escape");
|
||||
yield BrowserTestUtils.removeTab(tab);
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has styles applied to itself.
|
||||
add_task(function* test_colors_applied_to_popup() {
|
||||
const pageUrl = "data:text/html," + escape(PAGECONTENT_COLORS_ON_SELECT);
|
||||
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl);
|
||||
|
||||
let menulist = document.getElementById("ContentSelectDropdown");
|
||||
let selectPopup = menulist.menupopup;
|
||||
|
||||
let popupShownPromise = BrowserTestUtils.waitForEvent(selectPopup, "popupshown");
|
||||
yield BrowserTestUtils.synthesizeMouseAtCenter("#one", { type: "mousedown" }, gBrowser.selectedBrowser);
|
||||
yield popupShownPromise;
|
||||
|
||||
is(selectPopup.parentNode.itemCount, 4, "Correct number of items");
|
||||
let child = selectPopup.firstChild;
|
||||
let idx = 1;
|
||||
|
||||
is(getComputedStyle(selectPopup).color, "rgb(255, 255, 255)",
|
||||
"popup has expected foreground color");
|
||||
is(getComputedStyle(selectPopup).backgroundColor, "rgb(126, 58, 58)",
|
||||
"popup has expected background color");
|
||||
|
||||
ok(!child.selected, "The first child should not be selected");
|
||||
while (child) {
|
||||
testOptionColors(idx, child, menulist);
|
||||
idx++;
|
||||
child = child.nextSibling;
|
||||
}
|
||||
|
||||
yield hideSelectPopup(selectPopup, "escape");
|
||||
|
||||
yield BrowserTestUtils.removeTab(tab);
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has a transparent background applied to itself.
|
||||
add_task(function* test_transparent_applied_to_popup() {
|
||||
const pageUrl = "data:text/html," + escape(TRANSPARENT_SELECT);
|
||||
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl);
|
||||
|
||||
let menulist = document.getElementById("ContentSelectDropdown");
|
||||
let selectPopup = menulist.menupopup;
|
||||
|
||||
let popupShownPromise = BrowserTestUtils.waitForEvent(selectPopup, "popupshown");
|
||||
yield BrowserTestUtils.synthesizeMouseAtCenter("#one", { type: "mousedown" }, gBrowser.selectedBrowser);
|
||||
yield popupShownPromise;
|
||||
|
||||
is(selectPopup.parentNode.itemCount, 2, "Correct number of items");
|
||||
let child = selectPopup.firstChild;
|
||||
let idx = 1;
|
||||
|
||||
is(getComputedStyle(selectPopup).color, getSystemColor("-moz-ComboboxText"),
|
||||
"popup has expected foreground color");
|
||||
is(getComputedStyle(selectPopup).backgroundColor, getSystemColor("-moz-Combobox"),
|
||||
"popup has expected background color");
|
||||
|
||||
ok(!child.selected, "The first child should not be selected");
|
||||
while (child) {
|
||||
testOptionColors(idx, child, menulist);
|
||||
idx++;
|
||||
child = child.nextSibling;
|
||||
}
|
||||
|
||||
yield hideSelectPopup(selectPopup, "escape");
|
||||
|
||||
yield BrowserTestUtils.removeTab(tab);
|
||||
});
|
||||
|
||||
// This test checks that the popup is closed when the select element is blurred.
|
||||
add_task(function* test_blur_hides_popup() {
|
||||
const pageUrl = "data:text/html," + escape(PAGECONTENT_SMALL);
|
||||
@ -956,41 +759,3 @@ add_task(function* test_blur_hides_popup() {
|
||||
|
||||
yield BrowserTestUtils.removeTab(tab);
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has a background set, and the
|
||||
// options have their own background set which is equal to the default
|
||||
// user-agent background color, but should be used because the select
|
||||
// background color has been changed.
|
||||
add_task(function* test_options_inverted_from_select_background() {
|
||||
const pageUrl = "data:text/html," + escape(OPTION_COLOR_EQUAL_TO_UABACKGROUND_COLOR_SELECT);
|
||||
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl);
|
||||
|
||||
let menulist = document.getElementById("ContentSelectDropdown");
|
||||
let selectPopup = menulist.menupopup;
|
||||
|
||||
let popupShownPromise = BrowserTestUtils.waitForEvent(selectPopup, "popupshown");
|
||||
yield BrowserTestUtils.synthesizeMouseAtCenter("#one", { type: "mousedown" }, gBrowser.selectedBrowser);
|
||||
yield popupShownPromise;
|
||||
|
||||
is(selectPopup.parentNode.itemCount, 2, "Correct number of items");
|
||||
let child = selectPopup.firstChild;
|
||||
let idx = 1;
|
||||
|
||||
// The popup has a black background and white text, but the
|
||||
// options inside of it have flipped the colors.
|
||||
is(getComputedStyle(selectPopup).color, "rgb(255, 255, 255)",
|
||||
"popup has expected foreground color");
|
||||
is(getComputedStyle(selectPopup).backgroundColor, "rgb(0, 0, 0)",
|
||||
"popup has expected background color");
|
||||
|
||||
ok(!child.selected, "The first child should not be selected");
|
||||
while (child) {
|
||||
testOptionColors(idx, child, menulist);
|
||||
idx++;
|
||||
child = child.nextSibling;
|
||||
}
|
||||
|
||||
yield hideSelectPopup(selectPopup, "escape");
|
||||
|
||||
yield BrowserTestUtils.removeTab(tab);
|
||||
});
|
236
browser/base/content/test/forms/browser_selectpopup_colors.js
Normal file
236
browser/base/content/test/forms/browser_selectpopup_colors.js
Normal file
@ -0,0 +1,236 @@
|
||||
const PAGECONTENT_COLORS =
|
||||
"<html><head><style>" +
|
||||
" .blue { color: #fff; background-color: #00f; }" +
|
||||
" .green { color: #800080; background-color: green; }" +
|
||||
" .defaultColor { color: -moz-ComboboxText; }" +
|
||||
" .defaultBackground { background-color: -moz-Combobox; }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One" style="color: #fff; background-color: #f00;">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgb(255, 0, 0)"}</option>' +
|
||||
' <option value="Two" class="blue">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgb(0, 0, 255)"}</option>' +
|
||||
' <option value="Three" class="green">{"color": "rgb(128, 0, 128)", "backgroundColor": "rgb(0, 128, 0)"}</option>' +
|
||||
' <option value="Four" class="defaultColor defaultBackground">{"color": "-moz-ComboboxText", "backgroundColor": "rgba(0, 0, 0, 0)", "unstyled": "true"}</option>' +
|
||||
' <option value="Five" class="defaultColor">{"color": "-moz-ComboboxText", "backgroundColor": "rgba(0, 0, 0, 0)", "unstyled": "true"}</option>' +
|
||||
' <option value="Six" class="defaultBackground">{"color": "-moz-ComboboxText", "backgroundColor": "rgba(0, 0, 0, 0)", "unstyled": "true"}</option>' +
|
||||
' <option value="Seven" selected="true">{"unstyled": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const PAGECONTENT_COLORS_ON_SELECT =
|
||||
"<html><head><style>" +
|
||||
" #one { background-color: #7E3A3A; color: #fff }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option value="Two">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option value="Three">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option value="Four" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const TRANSPARENT_SELECT =
|
||||
"<html><head><style>" +
|
||||
" #one { background-color: transparent; }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One">{"unstyled": "true"}</option>' +
|
||||
' <option value="Two" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const OPTION_COLOR_EQUAL_TO_UABACKGROUND_COLOR_SELECT =
|
||||
"<html><head><style>" +
|
||||
" #one { background-color: black; color: white; }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One" style="background-color: white; color: black;">{"color": "rgb(0, 0, 0)", "backgroundColor": "rgb(255, 255, 255)"}</option>' +
|
||||
' <option value="Two" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const GENERIC_OPTION_STYLED_AS_IMPORTANT =
|
||||
"<html><head><style>" +
|
||||
" option { background-color: black !important; color: white !important; }" +
|
||||
"</style>" +
|
||||
"<body><select id='one'>" +
|
||||
' <option value="One">{"color": "rgb(255, 255, 255)", "backgroundColor": "rgb(0, 0, 0)"}</option>' +
|
||||
' <option value="Two" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const TRANSLUCENT_SELECT_BECOMES_OPAQUE =
|
||||
"<html><head>" +
|
||||
"<body><select id='one' style='background-color: rgba(255,255,255,.55);'>" +
|
||||
' <option value="One">{"color": "rgb(0, 0, 0)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option value="Two" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
const DISABLED_OPTGROUP_AND_OPTIONS =
|
||||
"<html><head>" +
|
||||
"<body><select id='one'>" +
|
||||
" <optgroup label='{\"color\": \"rgb(0, 0, 0)\", \"backgroundColor\": \"buttonface\"}'>" +
|
||||
' <option disabled="">{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "rgb(0, 0, 0)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option disabled="">{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "rgb(0, 0, 0)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "rgb(0, 0, 0)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "rgb(0, 0, 0)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "rgb(0, 0, 0)", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
" </optgroup>" +
|
||||
" <optgroup label='{\"color\": \"GrayText\", \"backgroundColor\": \"buttonface\"}' disabled=''>" +
|
||||
' <option>{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
' <option>{"color": "GrayText", "backgroundColor": "rgba(0, 0, 0, 0)"}</option>' +
|
||||
" </optgroup>" +
|
||||
' <option value="Two" selected="true">{"end": "true"}</option>' +
|
||||
"</select></body></html>";
|
||||
|
||||
function getSystemColor(color) {
|
||||
// Need to convert system color to RGB color.
|
||||
let textarea = document.createElementNS("http://www.w3.org/1999/xhtml", "textarea");
|
||||
textarea.style.color = color;
|
||||
return getComputedStyle(textarea).color;
|
||||
}
|
||||
|
||||
function testOptionColors(index, item, menulist) {
|
||||
// The label contains a JSON string of the expected colors for
|
||||
// `color` and `background-color`.
|
||||
let expected = JSON.parse(item.label);
|
||||
|
||||
for (let color of Object.keys(expected)) {
|
||||
if (color.toLowerCase().includes("color") &&
|
||||
!expected[color].startsWith("rgb")) {
|
||||
expected[color] = getSystemColor(expected[color]);
|
||||
}
|
||||
}
|
||||
|
||||
// Press Down to move the selected item to the next item in the
|
||||
// list and check the colors of this item when it's not selected.
|
||||
EventUtils.synthesizeKey("KEY_ArrowDown", { code: "ArrowDown" });
|
||||
|
||||
if (expected.end) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (expected.unstyled) {
|
||||
ok(!item.hasAttribute("customoptionstyling"),
|
||||
`Item ${index} should not have any custom option styling`);
|
||||
} else {
|
||||
is(getComputedStyle(item).color, expected.color,
|
||||
"Item " + (index) + " has correct foreground color");
|
||||
is(getComputedStyle(item).backgroundColor, expected.backgroundColor,
|
||||
"Item " + (index) + " has correct background color");
|
||||
}
|
||||
}
|
||||
|
||||
function* testSelectColors(select, itemCount, options) {
|
||||
const pageUrl = "data:text/html," + escape(select);
|
||||
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl);
|
||||
|
||||
let menulist = document.getElementById("ContentSelectDropdown");
|
||||
let selectPopup = menulist.menupopup;
|
||||
|
||||
let popupShownPromise = BrowserTestUtils.waitForEvent(selectPopup, "popupshown");
|
||||
yield BrowserTestUtils.synthesizeMouseAtCenter("#one", { type: "mousedown" }, gBrowser.selectedBrowser);
|
||||
yield popupShownPromise;
|
||||
|
||||
is(selectPopup.parentNode.itemCount, itemCount, "Correct number of items");
|
||||
let child = selectPopup.firstChild;
|
||||
let idx = 1;
|
||||
|
||||
if (!options.skipSelectColorTest) {
|
||||
is(getComputedStyle(selectPopup).color, options.selectColor,
|
||||
"popup has expected foreground color");
|
||||
is(getComputedStyle(selectPopup).backgroundColor, options.selectBgColor,
|
||||
"popup has expected background color");
|
||||
}
|
||||
|
||||
ok(!child.selected, "The first child should not be selected");
|
||||
while (child) {
|
||||
testOptionColors(idx, child, menulist);
|
||||
idx++;
|
||||
child = child.nextSibling;
|
||||
}
|
||||
|
||||
yield hideSelectPopup(selectPopup, "escape");
|
||||
|
||||
yield BrowserTestUtils.removeTab(tab);
|
||||
}
|
||||
|
||||
add_task(function* setup() {
|
||||
yield SpecialPowers.pushPrefEnv({
|
||||
"set": [
|
||||
["dom.select_popup_in_parent.enabled", true],
|
||||
["dom.forms.select.customstyling", true]
|
||||
]
|
||||
});
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has styles applied to <option>s within it.
|
||||
add_task(function* test_colors_applied_to_popup_items() {
|
||||
yield testSelectColors(PAGECONTENT_COLORS, 7,
|
||||
{skipSelectColorTest: true});
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has styles applied to itself.
|
||||
add_task(function* test_colors_applied_to_popup() {
|
||||
let options = {
|
||||
selectColor: "rgb(255, 255, 255)",
|
||||
selectBgColor: "rgb(126, 58, 58)"
|
||||
};
|
||||
yield testSelectColors(PAGECONTENT_COLORS_ON_SELECT, 4, options);
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has a transparent background applied to itself.
|
||||
add_task(function* test_transparent_applied_to_popup() {
|
||||
let options = {
|
||||
selectColor: getSystemColor("-moz-ComboboxText"),
|
||||
selectBgColor: getSystemColor("-moz-Combobox")
|
||||
};
|
||||
yield testSelectColors(TRANSPARENT_SELECT, 2, options);
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has a background set, and the
|
||||
// options have their own background set which is equal to the default
|
||||
// user-agent background color, but should be used because the select
|
||||
// background color has been changed.
|
||||
add_task(function* test_options_inverted_from_select_background() {
|
||||
// The popup has a black background and white text, but the
|
||||
// options inside of it have flipped the colors.
|
||||
let options = {
|
||||
selectColor: "rgb(255, 255, 255)",
|
||||
selectBgColor: "rgb(0, 0, 0)"
|
||||
};
|
||||
yield testSelectColors(OPTION_COLOR_EQUAL_TO_UABACKGROUND_COLOR_SELECT,
|
||||
2, options);
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has a background set using !important,
|
||||
// which was affecting how we calculated the user-agent styling.
|
||||
add_task(function* test_select_background_using_important() {
|
||||
yield testSelectColors(GENERIC_OPTION_STYLED_AS_IMPORTANT, 2,
|
||||
{skipSelectColorTest: true});
|
||||
});
|
||||
|
||||
// This test checks when a <select> element has a background set, and the
|
||||
// options have their own background set which is equal to the default
|
||||
// user-agent background color, but should be used because the select
|
||||
// background color has been changed.
|
||||
add_task(function* test_translucent_select_becomes_opaque() {
|
||||
// The popup is requested to show a translucent background
|
||||
// but we force the alpha channel to 1 on the popup.
|
||||
let options = {
|
||||
selectColor: "rgb(0, 0, 0)",
|
||||
selectBgColor: "rgb(255, 255, 255)"
|
||||
};
|
||||
yield testSelectColors(TRANSLUCENT_SELECT_BECOMES_OPAQUE, 2, options);
|
||||
});
|
||||
|
||||
add_task(function* test_disabled_optgroup_and_options() {
|
||||
// The colors used by this test are platform-specific.
|
||||
if (AppConstants.platform != "win") {
|
||||
return;
|
||||
}
|
||||
|
||||
yield testSelectColors(DISABLED_OPTGROUP_AND_OPTIONS, 17,
|
||||
{skipSelectColorTest: true});
|
||||
});
|
19
browser/base/content/test/forms/head.js
Normal file
19
browser/base/content/test/forms/head.js
Normal file
@ -0,0 +1,19 @@
|
||||
/* eslint-env mozilla/frame-script */
|
||||
|
||||
function hideSelectPopup(selectPopup, mode = "enter", win = window) {
|
||||
let browser = win.gBrowser.selectedBrowser;
|
||||
let selectClosedPromise = ContentTask.spawn(browser, null, function*() {
|
||||
Cu.import("resource://gre/modules/SelectContentHelper.jsm");
|
||||
return ContentTaskUtils.waitForCondition(() => !SelectContentHelper.open);
|
||||
});
|
||||
|
||||
if (mode == "escape") {
|
||||
EventUtils.synthesizeKey("KEY_Escape", { code: "Escape" }, win);
|
||||
} else if (mode == "enter") {
|
||||
EventUtils.synthesizeKey("KEY_Enter", { code: "Enter" }, win);
|
||||
} else if (mode == "click") {
|
||||
EventUtils.synthesizeMouseAtCenter(selectPopup.lastChild, { }, win);
|
||||
}
|
||||
|
||||
return selectClosedPromise;
|
||||
}
|
@ -324,8 +324,6 @@ skip-if = e10s && debug && os == "win" # Bug 1280505
|
||||
support-files =
|
||||
contentSearchUI.html
|
||||
contentSearchUI.js
|
||||
[browser_selectpopup.js]
|
||||
skip-if = os == "linux" # Bug 1329991 - test fails intermittently on Linux builds
|
||||
[browser_selectTabAtIndex.js]
|
||||
[browser_ssl_error_reports.js]
|
||||
[browser_star_hsts.js]
|
||||
|
@ -63,7 +63,7 @@ var successfulPinningPageListener = {
|
||||
handleEvent() {
|
||||
gBrowser.selectedBrowser.removeEventListener("load", this, true);
|
||||
BrowserTestUtils.loadURI(gBrowser.selectedBrowser, "https://" + kBadPinningDomain).then(function() {
|
||||
return promiseErrorPageLoaded(gBrowser.selectedBrowser);
|
||||
return BrowserTestUtils.waitForErrorPage(gBrowser.selectedBrowser);
|
||||
}).then(errorPageLoaded);
|
||||
}
|
||||
};
|
||||
|
@ -70,48 +70,6 @@ function test_install_lwtheme() {
|
||||
}
|
||||
);
|
||||
});
|
||||
},
|
||||
|
||||
function test_lwtheme_switch_theme() {
|
||||
is(LightweightThemeManager.currentTheme, null, "Should be no lightweight theme selected");
|
||||
|
||||
AddonManager.getAddonByID("theme-xpi@tests.mozilla.org", function(aAddon) {
|
||||
aAddon.userDisabled = false;
|
||||
ok(aAddon.isActive, "Theme should have immediately enabled");
|
||||
Services.prefs.setBoolPref("extensions.dss.enabled", false);
|
||||
|
||||
var pm = Services.perms;
|
||||
pm.add(makeURI("https://example.com/"), "install", pm.ALLOW_ACTION);
|
||||
|
||||
gBrowser.selectedTab = gBrowser.addTab("https://example.com/browser/browser/base/content/test/general/bug592338.html");
|
||||
gBrowser.selectedBrowser.addEventListener("pageshow", function() {
|
||||
if (gBrowser.contentDocument.location.href == "about:blank")
|
||||
return;
|
||||
|
||||
gBrowser.selectedBrowser.removeEventListener("pageshow", arguments.callee);
|
||||
|
||||
executeSoon(function() {
|
||||
wait_for_notification(function(aPanel) {
|
||||
is(LightweightThemeManager.currentTheme, null, "Should not have installed the test lwtheme");
|
||||
ok(aAddon.isActive, "Test theme should still be active");
|
||||
|
||||
let notification = aPanel.childNodes[0];
|
||||
is(notification.button.label, "Restart Now", "Should have seen the right button");
|
||||
|
||||
ok(aAddon.userDisabled, "Should be waiting to disable the test theme");
|
||||
aAddon.userDisabled = false;
|
||||
Services.prefs.setBoolPref("extensions.dss.enabled", true);
|
||||
|
||||
gBrowser.removeTab(gBrowser.selectedTab);
|
||||
|
||||
Services.perms.remove(makeURI("http://example.com"), "install");
|
||||
|
||||
runNextTest();
|
||||
});
|
||||
BrowserTestUtils.synthesizeMouse("#theme-install", 2, 2, {}, gBrowser.selectedBrowser);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
];
|
||||
|
||||
@ -124,7 +82,6 @@ function runNextTest() {
|
||||
aAddon.uninstall();
|
||||
|
||||
Services.prefs.setBoolPref("extensions.logging.enabled", false);
|
||||
Services.prefs.setBoolPref("extensions.dss.enabled", false);
|
||||
|
||||
finish();
|
||||
});
|
||||
@ -147,11 +104,6 @@ function test() {
|
||||
AddonManager.getAddonByID("theme-xpi@tests.mozilla.org", function(aAddon) {
|
||||
isnot(aAddon, null, "Should have installed the test theme.");
|
||||
|
||||
// In order to switch themes while the test is running we turn on dynamic
|
||||
// theme switching. This means the test isn't exactly correct but should
|
||||
// do some good
|
||||
Services.prefs.setBoolPref("extensions.dss.enabled", true);
|
||||
|
||||
runNextTest();
|
||||
});
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ MOCHITEST_CHROME_MANIFESTS += [
|
||||
BROWSER_CHROME_MANIFESTS += [
|
||||
'content/test/alerts/browser.ini',
|
||||
'content/test/captivePortal/browser.ini',
|
||||
'content/test/forms/browser.ini',
|
||||
'content/test/general/browser.ini',
|
||||
'content/test/newtab/browser.ini',
|
||||
'content/test/pageinfo/browser.ini',
|
||||
|
@ -726,9 +726,8 @@ const CustomizableWidgets = [
|
||||
}
|
||||
|
||||
// Register ourselves with the service so we know when the zoom prefs change.
|
||||
Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:zoomChange", false);
|
||||
Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:zoomReset", false);
|
||||
Services.obs.addObserver(updateZoomResetButton, "browser-fullZoom:location-change", false);
|
||||
window.addEventListener("FullZoomChange", updateZoomResetButton);
|
||||
|
||||
if (inPanel) {
|
||||
let panel = aDocument.getElementById(kPanelId);
|
||||
@ -805,9 +804,8 @@ const CustomizableWidgets = [
|
||||
return;
|
||||
|
||||
CustomizableUI.removeListener(listener);
|
||||
Services.obs.removeObserver(updateZoomResetButton, "browser-fullZoom:zoomChange");
|
||||
Services.obs.removeObserver(updateZoomResetButton, "browser-fullZoom:zoomReset");
|
||||
Services.obs.removeObserver(updateZoomResetButton, "browser-fullZoom:location-change");
|
||||
window.removeEventListener("FullZoomChange", updateZoomResetButton);
|
||||
let panel = aDoc.getElementById(kPanelId);
|
||||
panel.removeEventListener("popupshowing", updateZoomResetButton);
|
||||
let container = aDoc.defaultView.gBrowser.tabContainer;
|
||||
|
@ -1,35 +1,35 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 11189216,
|
||||
"digest": "18bc52b0599b1308b667e282abb45f47597bfc98a5140cfcab8da71dacf89dd76d0dee22a04ce26fe7ad1f04e2d6596991f9e5b01fd2aaaab5542965f596b0e6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 11189216,
|
||||
"digest": "18bc52b0599b1308b667e282abb45f47597bfc98a5140cfcab8da71dacf89dd76d0dee22a04ce26fe7ad1f04e2d6596991f9e5b01fd2aaaab5542965f596b0e6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
]
|
||||
|
@ -1,34 +1,34 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 3.9.0, libgcc 4.9.4",
|
||||
"size": 166261192,
|
||||
"digest": "52f3fc23f0f5c98050f8b0ac7c92a6752d067582a16f712a5a58074be98975d594f9e36249fc2be7f1cc2ca6d509c663faaf2bea66f949243cc1f41651638ba6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 3.9.0, libgcc 4.9.4",
|
||||
"size": 166261192,
|
||||
"digest": "52f3fc23f0f5c98050f8b0ac7c92a6752d067582a16f712a5a58074be98975d594f9e36249fc2be7f1cc2ca6d509c663faaf2bea66f949243cc1f41651638ba6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,35 +1,35 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.8.0, libgcc 4.8.5",
|
||||
"size": 140319580,
|
||||
"digest": "34e219d7e8eaffa81710631c34d21355563d06335b3c00851e94c1f42f9098788fded8463dd0f67dd699f77b47a0245dd7aff754943a7a03fb5fd145a808254f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
{
|
||||
"version": "clang 3.8.0, libgcc 4.8.5",
|
||||
"size": 140319580,
|
||||
"digest": "34e219d7e8eaffa81710631c34d21355563d06335b3c00851e94c1f42f9098788fded8463dd0f67dd699f77b47a0245dd7aff754943a7a03fb5fd145a808254f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
]
|
||||
|
@ -1,34 +1,34 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.8.0, libgcc 4.8.5",
|
||||
"size": 140319580,
|
||||
"digest": "34e219d7e8eaffa81710631c34d21355563d06335b3c00851e94c1f42f9098788fded8463dd0f67dd699f77b47a0245dd7aff754943a7a03fb5fd145a808254f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
{
|
||||
"version": "clang 3.8.0, libgcc 4.8.5",
|
||||
"size": 140319580,
|
||||
"digest": "34e219d7e8eaffa81710631c34d21355563d06335b3c00851e94c1f42f9098788fded8463dd0f67dd699f77b47a0245dd7aff754943a7a03fb5fd145a808254f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
]
|
||||
|
@ -1,43 +1,43 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"digest": "36dc644e24c0aa824975ad8f5c15714445d5cb064d823000c3cb637e885199414d7df551e6b99233f0656dcf5760918192ef04113c486af37f3c489bb93ad029",
|
||||
"unpack": true,
|
||||
"algorithm": "sha512",
|
||||
"filename": "sixgill.tar.xz",
|
||||
"size": 2631908,
|
||||
"hg_id": "8cb9c3fb039a+ tip"
|
||||
},
|
||||
{
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"unpack": true,
|
||||
"setup": "setup.sh",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"size": 12072532
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"digest": "36dc644e24c0aa824975ad8f5c15714445d5cb064d823000c3cb637e885199414d7df551e6b99233f0656dcf5760918192ef04113c486af37f3c489bb93ad029",
|
||||
"unpack": true,
|
||||
"algorithm": "sha512",
|
||||
"filename": "sixgill.tar.xz",
|
||||
"size": 2631908,
|
||||
"hg_id": "8cb9c3fb039a+ tip"
|
||||
},
|
||||
{
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"unpack": true,
|
||||
"setup": "setup.sh",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"size": 12072532
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
]
|
||||
|
@ -1,34 +1,34 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 3.9.0, libgcc 4.9.4",
|
||||
"size": 166261192,
|
||||
"digest": "52f3fc23f0f5c98050f8b0ac7c92a6752d067582a16f712a5a58074be98975d594f9e36249fc2be7f1cc2ca6d509c663faaf2bea66f949243cc1f41651638ba6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 3.9.0, libgcc 4.9.4",
|
||||
"size": 166261192,
|
||||
"digest": "52f3fc23f0f5c98050f8b0ac7c92a6752d067582a16f712a5a58074be98975d594f9e36249fc2be7f1cc2ca6d509c663faaf2bea66f949243cc1f41651638ba6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,43 +1,43 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
},
|
||||
{
|
||||
"version": "clang + llvm 3.9.0, built from SVN r290136",
|
||||
"size": 151724092,
|
||||
"digest": "4ab5ff2131e4ce4888d38c17feb192c19bc6ede83abef55af7d2f29e2446f6335dc860377fa25cbb0283b3958c0a3d377a3cfdc7705a85d4843e3ab357ddca7f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 110077036,
|
||||
"digest": "8b99d058cc081f6ca2a3cc88c3ca9c15232961d2539774dacee35e2258955ad8fc4cb0af3b903a3e3f8a264ddecb3baae9256502ffc178a2823779284ace2bd8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
},
|
||||
{
|
||||
"version": "clang + llvm 3.9.0, built from SVN r290136",
|
||||
"size": 151724092,
|
||||
"digest": "4ab5ff2131e4ce4888d38c17feb192c19bc6ede83abef55af7d2f29e2446f6335dc860377fa25cbb0283b3958c0a3d377a3cfdc7705a85d4843e3ab357ddca7f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,26 +1,26 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 3.9.0, libgcc 4.9.4",
|
||||
"size": 166261192,
|
||||
"digest": "52f3fc23f0f5c98050f8b0ac7c92a6752d067582a16f712a5a58074be98975d594f9e36249fc2be7f1cc2ca6d509c663faaf2bea66f949243cc1f41651638ba6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 3.9.0, libgcc 4.9.4",
|
||||
"size": 166261192,
|
||||
"digest": "52f3fc23f0f5c98050f8b0ac7c92a6752d067582a16f712a5a58074be98975d594f9e36249fc2be7f1cc2ca6d509c663faaf2bea66f949243cc1f41651638ba6",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,10 +1,10 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,35 +1,35 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.9.0",
|
||||
"size": 184678304,
|
||||
"digest": "cfde9a0f7f59823200f94422b4adb9a2fb5d4d07f240bbd1142c792434f6a1cbb4096d25c9853d77008fc40db0d827daa7003e78016f51241f621d6040ccc635",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 122706608,
|
||||
"digest": "b9ae830cfe24430907490cd58f8215447667fb8f1f052d6e78c8ecd7aadfbc92f75a404774d4cc7b30a46b756275209c2fe2723473704b3bce7ffee908e353a8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "a285c7c6468ad7438262dfec90f65981e84abf2adbb1aa075c0ec1759b4f98ce5d5f14a3d555274f970704210a00738ba7d95db2fc320f7780e6b99bcb0ffb6c",
|
||||
"size": 1143715
|
||||
},
|
||||
{
|
||||
"version": "cctools port from commit hash 84ce22dbb22a26ce7f392e9de0ee39c2efe6fd68",
|
||||
"size": 2174783,
|
||||
"digest": "8678348faff8f344b377075007975ae77a55a2a73488e36950a43c8ec27a79970cd8e34003e33e756a57d9cbf5c3e2e4461184102c6c03f793377a4d250a7f24",
|
||||
"algorithm": "sha512",
|
||||
"filename": "cctools.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "clang 3.9.0",
|
||||
"size": 184678304,
|
||||
"digest": "cfde9a0f7f59823200f94422b4adb9a2fb5d4d07f240bbd1142c792434f6a1cbb4096d25c9853d77008fc40db0d827daa7003e78016f51241f621d6040ccc635",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 122706608,
|
||||
"digest": "b9ae830cfe24430907490cd58f8215447667fb8f1f052d6e78c8ecd7aadfbc92f75a404774d4cc7b30a46b756275209c2fe2723473704b3bce7ffee908e353a8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "a285c7c6468ad7438262dfec90f65981e84abf2adbb1aa075c0ec1759b4f98ce5d5f14a3d555274f970704210a00738ba7d95db2fc320f7780e6b99bcb0ffb6c",
|
||||
"size": 1143715
|
||||
},
|
||||
{
|
||||
"version": "cctools port from commit hash 84ce22dbb22a26ce7f392e9de0ee39c2efe6fd68",
|
||||
"size": 2174783,
|
||||
"digest": "8678348faff8f344b377075007975ae77a55a2a73488e36950a43c8ec27a79970cd8e34003e33e756a57d9cbf5c3e2e4461184102c6c03f793377a4d250a7f24",
|
||||
"algorithm": "sha512",
|
||||
"filename": "cctools.tar.bz2",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,43 +1,43 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.8.0, libgcc 4.9.4 + PR64905",
|
||||
"size": 155933720,
|
||||
"digest": "7a3a9a5ff455554d120596fe4bc06c19e41ecbd1e67b1e95e778c0b8ce6d9472f30fd4a27c66d48d9c047aac7a077f23f87397711dd6f33175f95cf4a2ada862",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 1349196,
|
||||
"visibility": "public",
|
||||
"digest": "438a36523a74cbc4a58226647e0501fa64a1b63f32931dc364a75d699df8accb45afdf26f4cb61c6ac7f58be530205acb6da22008bec19603c6f6fda3a12a8cc",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "cctools.tar.xz"
|
||||
},
|
||||
{
|
||||
"size": 30823112,
|
||||
"visibility": "internal",
|
||||
"digest": "0c58e06a3ea8f4641c991a7406fc8733c574f0b4aa773bce0feaa5468d2b8440fa33cea056e16fad2b8a7ef4409ca7228113eb12adc87c3e115129d8a3b3b565",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "MacOSX10.10.sdk.tar.xz"
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
{
|
||||
"version": "clang 3.8.0, libgcc 4.9.4 + PR64905",
|
||||
"size": 155933720,
|
||||
"digest": "7a3a9a5ff455554d120596fe4bc06c19e41ecbd1e67b1e95e778c0b8ce6d9472f30fd4a27c66d48d9c047aac7a077f23f87397711dd6f33175f95cf4a2ada862",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 1349196,
|
||||
"visibility": "public",
|
||||
"digest": "438a36523a74cbc4a58226647e0501fa64a1b63f32931dc364a75d699df8accb45afdf26f4cb61c6ac7f58be530205acb6da22008bec19603c6f6fda3a12a8cc",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "cctools.tar.xz"
|
||||
},
|
||||
{
|
||||
"size": 30823112,
|
||||
"visibility": "internal",
|
||||
"digest": "0c58e06a3ea8f4641c991a7406fc8733c574f0b4aa773bce0feaa5468d2b8440fa33cea056e16fad2b8a7ef4409ca7228113eb12adc87c3e115129d8a3b3b565",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "MacOSX10.10.sdk.tar.xz"
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
}
|
||||
]
|
||||
|
@ -1,60 +1,60 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.9.0",
|
||||
"size": 168062128,
|
||||
"digest": "2a5458a25792fcade86a56ff0f4acdfa284d2b62966991a7c34a92c2e8c0b4a162ce00512d4467754e7f74598d64c56e91517e1606ed3fba011f7c10e8ad3288",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 6075028,
|
||||
"visibility": "public",
|
||||
"digest": "0b962ba55a5a2fbae44218683bdf6ea0dfe8165aba436173a065f7190976184586b9acf4c23478bc5b6d81a3e00f681bf16df0536c9c9718ad0570d064f69027",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "cctools.tar.xz"
|
||||
},
|
||||
{
|
||||
"size": 35215976,
|
||||
"visibility": "internal",
|
||||
"digest": "8be736545ddab25ebded188458ce974d5c9a7e29f3c50d2ebfbcb878f6aff853dd2ff5a3528bdefc64396a10101a1b50fd2fe52000140df33643cebe1ea759da",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "MacOSX10.7.sdk.tar.bz2"
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
},
|
||||
{
|
||||
"version": "https://github.com/andreas56/libdmg-hfsplus rev 81dd75fd1549b24bf8af9736ac25518b367e6b63",
|
||||
"size": 62032,
|
||||
"visibility": "public",
|
||||
"digest": "9073c41034784eb8823ec817aed42bbc65c8da63ad3fac572726fa48b36320ee302ca8f51b23576e7fdbeec6ab300610d0c58bbd9c52024577dfdb13d95aa2ec",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "dmg.tar.xz"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 140284816,
|
||||
"digest": "c97503ed2448af059a450792aac76f9b91ce8bc6daf683cdbc2d3fb49a6bd205a4ba854838281b1e3888ae15b5df585cc8fa56365fb1ec5acafc9e1b8871f3e3",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 281576,
|
||||
"visibility": "public",
|
||||
"digest": "71616564533d138fb12f08e761c2638d054814fdf9c9439638ec57b201e100445c364d73d8d7a4f0e3b784898d5fe6264e8242863fc5ac40163f1791468bbc46",
|
||||
"algorithm": "sha512",
|
||||
"filename": "hfsplus-tools.tar.xz",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "clang 3.9.0",
|
||||
"size": 168062128,
|
||||
"digest": "2a5458a25792fcade86a56ff0f4acdfa284d2b62966991a7c34a92c2e8c0b4a162ce00512d4467754e7f74598d64c56e91517e1606ed3fba011f7c10e8ad3288",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 6075028,
|
||||
"visibility": "public",
|
||||
"digest": "0b962ba55a5a2fbae44218683bdf6ea0dfe8165aba436173a065f7190976184586b9acf4c23478bc5b6d81a3e00f681bf16df0536c9c9718ad0570d064f69027",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "cctools.tar.xz"
|
||||
},
|
||||
{
|
||||
"size": 35215976,
|
||||
"visibility": "internal",
|
||||
"digest": "8be736545ddab25ebded188458ce974d5c9a7e29f3c50d2ebfbcb878f6aff853dd2ff5a3528bdefc64396a10101a1b50fd2fe52000140df33643cebe1ea759da",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "MacOSX10.7.sdk.tar.bz2"
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.xz",
|
||||
"unpack": true,
|
||||
"digest": "b89c40dbf28c2bd54fadf017c15a8789f6e7611252a623cc3a1507e3dd6fc9e5a50d746e81776ba856e33fdc99b4a6413ba7c3ac0aed5f4835705da2b758ef22",
|
||||
"size": 1020700
|
||||
},
|
||||
{
|
||||
"version": "https://github.com/andreas56/libdmg-hfsplus rev 81dd75fd1549b24bf8af9736ac25518b367e6b63",
|
||||
"size": 62032,
|
||||
"visibility": "public",
|
||||
"digest": "9073c41034784eb8823ec817aed42bbc65c8da63ad3fac572726fa48b36320ee302ca8f51b23576e7fdbeec6ab300610d0c58bbd9c52024577dfdb13d95aa2ec",
|
||||
"algorithm": "sha512",
|
||||
"unpack": true,
|
||||
"filename": "dmg.tar.xz"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 140284816,
|
||||
"digest": "c97503ed2448af059a450792aac76f9b91ce8bc6daf683cdbc2d3fb49a6bd205a4ba854838281b1e3888ae15b5df585cc8fa56365fb1ec5acafc9e1b8871f3e3",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 281576,
|
||||
"visibility": "public",
|
||||
"digest": "71616564533d138fb12f08e761c2638d054814fdf9c9439638ec57b201e100445c364d73d8d7a4f0e3b784898d5fe6264e8242863fc5ac40163f1791468bbc46",
|
||||
"algorithm": "sha512",
|
||||
"filename": "hfsplus-tools.tar.xz",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,35 +1,35 @@
|
||||
[
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 122706608,
|
||||
"digest": "b9ae830cfe24430907490cd58f8215447667fb8f1f052d6e78c8ecd7aadfbc92f75a404774d4cc7b30a46b756275209c2fe2723473704b3bce7ffee908e353a8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "cctools port from commit hash db1f8d906cb28, ld only",
|
||||
"size": 634496,
|
||||
"digest": "037f31fcf29e7bb7fada0d2bdd5e95c7d4cb2692f2a5c98ed6f6a7561b9d81622d015f0d12b291d3667719655f1369e8ce8a0a4a4773aa0ee4753e04a8821173",
|
||||
"algorithm": "sha512",
|
||||
"filename": "cctools.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "a285c7c6468ad7438262dfec90f65981e84abf2adbb1aa075c0ec1759b4f98ce5d5f14a3d555274f970704210a00738ba7d95db2fc320f7780e6b99bcb0ffb6c",
|
||||
"size": 1143715
|
||||
}
|
||||
{
|
||||
"version": "clang 3.8.0",
|
||||
"size": 133060926,
|
||||
"digest": "aff5ad3ac2d41db19d1ba0df5f97b189a7d7e1b6af8c56e22c2b0cced84d75fa98394ded6a4ba5713652e6684a0a46f47aeccf87991f9e849bf8d7d82e564f6f",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 122706608,
|
||||
"digest": "b9ae830cfe24430907490cd58f8215447667fb8f1f052d6e78c8ecd7aadfbc92f75a404774d4cc7b30a46b756275209c2fe2723473704b3bce7ffee908e353a8",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "cctools port from commit hash db1f8d906cb28, ld only",
|
||||
"size": 634496,
|
||||
"digest": "037f31fcf29e7bb7fada0d2bdd5e95c7d4cb2692f2a5c98ed6f6a7561b9d81622d015f0d12b291d3667719655f1369e8ce8a0a4a4773aa0ee4753e04a8821173",
|
||||
"algorithm": "sha512",
|
||||
"filename": "cctools.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "a285c7c6468ad7438262dfec90f65981e84abf2adbb1aa075c0ec1759b4f98ce5d5f14a3d555274f970704210a00738ba7d95db2fc320f7780e6b99bcb0ffb6c",
|
||||
"size": 1143715
|
||||
}
|
||||
]
|
||||
|
@ -1,57 +1,57 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 67227255,
|
||||
"digest": "95164dc1abb2ab90ea18cf4f322d5c8390e0212e79a52b12578720d568eb6df62e55a9938c8d2a364cd3a6bd0f99608c2139d141a88ec43484b8d0651398532a",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "SVN 1.9.4, repacked from SlikSvn (https://sliksvn.com/download/)",
|
||||
"size": 3934520,
|
||||
"digest": "d3b8f74936857ecbf542e403ed6835938a31d65302985729cbfa7191bf2cf94138565cefcc2f31517098013fbfc51868348863a55b588250902f9dec214dbc42",
|
||||
"algorithm": "sha512",
|
||||
"filename": "svn194.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "CMake 3.6.2 repack",
|
||||
"size": 19832889,
|
||||
"digest": "39b0508b60f655969d1b54c76753b14b5b2e92dab58613c835aed798a6aeb9077a7df78aebc011c2c753661fdc15007d3353c0c8773a53148380e2ec02afb629",
|
||||
"algorithm": "sha512",
|
||||
"filename": "cmake362.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "Ninja 1.7.1",
|
||||
"size": 184821,
|
||||
"digest": "e4f9a1ae624a2630e75264ba37d396d9c7407d6e6aea3763056210ba6e1387908bd31cf4037a6a3661a418e86c4d2761e0c333e6a3bd0d66549d2b0d72d3f43b",
|
||||
"algorithm": "sha512",
|
||||
"filename": "ninja171.zip",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 67227255,
|
||||
"digest": "95164dc1abb2ab90ea18cf4f322d5c8390e0212e79a52b12578720d568eb6df62e55a9938c8d2a364cd3a6bd0f99608c2139d141a88ec43484b8d0651398532a",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "SVN 1.9.4, repacked from SlikSvn (https://sliksvn.com/download/)",
|
||||
"size": 3934520,
|
||||
"digest": "d3b8f74936857ecbf542e403ed6835938a31d65302985729cbfa7191bf2cf94138565cefcc2f31517098013fbfc51868348863a55b588250902f9dec214dbc42",
|
||||
"algorithm": "sha512",
|
||||
"filename": "svn194.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "CMake 3.6.2 repack",
|
||||
"size": 19832889,
|
||||
"digest": "39b0508b60f655969d1b54c76753b14b5b2e92dab58613c835aed798a6aeb9077a7df78aebc011c2c753661fdc15007d3353c0c8773a53148380e2ec02afb629",
|
||||
"algorithm": "sha512",
|
||||
"filename": "cmake362.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "Ninja 1.7.1",
|
||||
"size": 184821,
|
||||
"digest": "e4f9a1ae624a2630e75264ba37d396d9c7407d6e6aea3763056210ba6e1387908bd31cf4037a6a3661a418e86c4d2761e0c333e6a3bd0d66549d2b0d72d3f43b",
|
||||
"algorithm": "sha512",
|
||||
"filename": "ninja171.zip",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,50 +1,50 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 67227255,
|
||||
"digest": "95164dc1abb2ab90ea18cf4f322d5c8390e0212e79a52b12578720d568eb6df62e55a9938c8d2a364cd3a6bd0f99608c2139d141a88ec43484b8d0651398532a",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 5.0pre/r293859",
|
||||
"size": 309009013,
|
||||
"digest": "cd3ed31acefd185f441632158dde73538c62bab7ebf2a8ec630985ab345938ec522983721ddb1bead1de22d5ac1571d50a958ae002364d739f2a78c6e7244222",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 67227255,
|
||||
"digest": "95164dc1abb2ab90ea18cf4f322d5c8390e0212e79a52b12578720d568eb6df62e55a9938c8d2a364cd3a6bd0f99608c2139d141a88ec43484b8d0651398532a",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 5.0pre/r293859",
|
||||
"size": 309009013,
|
||||
"digest": "cd3ed31acefd185f441632158dde73538c62bab7ebf2a8ec630985ab345938ec522983721ddb1bead1de22d5ac1571d50a958ae002364d739f2a78c6e7244222",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
]
|
||||
|
@ -1,8 +1,8 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
}
|
||||
]
|
||||
|
@ -1,42 +1,42 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 67227255,
|
||||
"digest": "95164dc1abb2ab90ea18cf4f322d5c8390e0212e79a52b12578720d568eb6df62e55a9938c8d2a364cd3a6bd0f99608c2139d141a88ec43484b8d0651398532a",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 67227255,
|
||||
"digest": "95164dc1abb2ab90ea18cf4f322d5c8390e0212e79a52b12578720d568eb6df62e55a9938c8d2a364cd3a6bd0f99608c2139d141a88ec43484b8d0651398532a",
|
||||
"algorithm": "sha512",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
]
|
||||
|
@ -1,51 +1,51 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 72782416,
|
||||
"digest": "bf9fb1a21de834d7b6992fe9d95dfe2ff19e3cbff5b00117889eef0e6c9d85442cd75640e3051f0c1788b1f629e79ffae5cc8a4106b0cad520c1f954ae2be6b0",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 5.0pre/r293859",
|
||||
"size": 313862839,
|
||||
"digest": "44dee70d525ea93952af27f943d1cc773311970c31d971d2bc2e3437cce0c899f3a03ddd8e42e86f1b4fd9ab1c4bc1767cdb0406eb4b3934ae4fc272dab830dc",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 72782416,
|
||||
"digest": "bf9fb1a21de834d7b6992fe9d95dfe2ff19e3cbff5b00117889eef0e6c9d85442cd75640e3051f0c1788b1f629e79ffae5cc8a4106b0cad520c1f954ae2be6b0",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "clang 5.0pre/r293859",
|
||||
"size": 313862839,
|
||||
"digest": "44dee70d525ea93952af27f943d1cc773311970c31d971d2bc2e3437cce0c899f3a03ddd8e42e86f1b4fd9ab1c4bc1767cdb0406eb4b3934ae4fc272dab830dc",
|
||||
"algorithm": "sha512",
|
||||
"filename": "clang.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
]
|
||||
|
@ -1,8 +1,8 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
}
|
||||
]
|
||||
|
@ -1,43 +1,43 @@
|
||||
[
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 72782416,
|
||||
"digest": "bf9fb1a21de834d7b6992fe9d95dfe2ff19e3cbff5b00117889eef0e6c9d85442cd75640e3051f0c1788b1f629e79ffae5cc8a4106b0cad520c1f954ae2be6b0",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
{
|
||||
"size": 266240,
|
||||
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
|
||||
"algorithm": "sha512",
|
||||
"filename": "mozmake.exe"
|
||||
},
|
||||
{
|
||||
"version": "rustc 1.15.1 (021bd294c 2017-02-08) repack",
|
||||
"size": 72782416,
|
||||
"digest": "bf9fb1a21de834d7b6992fe9d95dfe2ff19e3cbff5b00117889eef0e6c9d85442cd75640e3051f0c1788b1f629e79ffae5cc8a4106b0cad520c1f954ae2be6b0",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "rustc.tar.bz2",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "sccache rev b21198a7183a2fe226ff49348b1c0b51bae9f4f8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "sccache2.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "7dee5c5602b3830cb8ac45ebaa8542714bbac0e50eabbff58a06972a02ceeab75ed7c56ff22a23f760b8317ae8e9a01cdecfaf75a7acbd2a4cdd817967170d2e",
|
||||
"size": 1179901
|
||||
},
|
||||
{
|
||||
"version": "Visual Studio 2015 Update 3 14.0.25425.01 / SDK 10.0.14393.0",
|
||||
"size": 326656969,
|
||||
"digest": "babc414ffc0457d27f5a1ed24a8e4873afbe2f1c1a4075469a27c005e1babc3b2a788f643f825efedff95b79686664c67ec4340ed535487168a3482e68559bc7",
|
||||
"algorithm": "sha512",
|
||||
"filename": "vs2015u3.zip",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"version": "makecab rev d2bc6797648b7a834782714a55d339d2fd4e58c8",
|
||||
"algorithm": "sha512",
|
||||
"visibility": "public",
|
||||
"filename": "makecab.tar.bz2",
|
||||
"unpack": true,
|
||||
"digest": "196ac6a567c85559957dfe511c3d8654d23c94d5603259e19ccafe9d71e0e4ccee63ccc9a778f2699654b786cda54266108b7d4db543d01bb0b42545b4e6ec75",
|
||||
"size": 297118
|
||||
}
|
||||
]
|
||||
|
@ -93,7 +93,8 @@ AutofillProfileAutoCompleteSearch.prototype = {
|
||||
this.forceStop = false;
|
||||
let info = FormAutofillContent.getInputDetails(focusedInput);
|
||||
|
||||
if (!FormAutofillContent.savedFieldNames.has(info.fieldName)) {
|
||||
if (!FormAutofillContent.savedFieldNames.has(info.fieldName) ||
|
||||
FormAutofillContent.getFormHandler(focusedInput).filledProfileGUID) {
|
||||
let formHistory = Cc["@mozilla.org/autocomplete/search;1?name=form-history"]
|
||||
.createInstance(Ci.nsIAutoCompleteSearch);
|
||||
formHistory.startSearch(searchString, searchParam, previousResult, {
|
||||
|
@ -52,6 +52,11 @@ FormAutofillHandler.prototype = {
|
||||
*/
|
||||
fieldDetails: null,
|
||||
|
||||
/**
|
||||
* String of the filled profile's guid.
|
||||
*/
|
||||
filledProfileGUID: null,
|
||||
|
||||
/**
|
||||
* Set fieldDetails from the form about fields that can be autofilled.
|
||||
*/
|
||||
@ -100,6 +105,8 @@ FormAutofillHandler.prototype = {
|
||||
*/
|
||||
autofillFormFields(profile, focusedInput) {
|
||||
log.debug("profile in autofillFormFields:", profile);
|
||||
|
||||
this.filledProfileGUID = profile.guid;
|
||||
for (let fieldDetail of this.fieldDetails) {
|
||||
// Avoid filling field value in the following cases:
|
||||
// 1. the focused input which is filled in FormFillController.
|
||||
|
@ -41,6 +41,7 @@ const TESTCASES = [
|
||||
{"section": "", "addressType": "", "contactType": "", "fieldName": "tel", "element": {}},
|
||||
],
|
||||
profileData: {
|
||||
"guid": "123",
|
||||
"street-address": "2 Harrison St",
|
||||
"address-level2": "San Francisco",
|
||||
"country": "US",
|
||||
@ -74,6 +75,7 @@ const TESTCASES = [
|
||||
{"section": "", "addressType": "shipping", "contactType": "", "fieldName": "tel", "element": {}},
|
||||
],
|
||||
profileData: {
|
||||
"guid": "123",
|
||||
"street-address": "2 Harrison St",
|
||||
"address-level2": "San Francisco",
|
||||
"country": "US",
|
||||
@ -107,6 +109,7 @@ const TESTCASES = [
|
||||
{"section": "", "addressType": "shipping", "contactType": "", "fieldName": "tel", "element": {}},
|
||||
],
|
||||
profileData: {
|
||||
"guid": "123",
|
||||
"street-address": "2 Harrison St",
|
||||
"address-level2": "San Francisco",
|
||||
"country": "US",
|
||||
@ -140,6 +143,7 @@ const TESTCASES = [
|
||||
{"section": "", "addressType": "shipping", "contactType": "", "fieldName": "tel", "element": {}},
|
||||
],
|
||||
profileData: {
|
||||
"guid": "123",
|
||||
"street-address": "",
|
||||
"address-level2": "",
|
||||
"country": "",
|
||||
@ -188,6 +192,9 @@ for (let tc of TESTCASES) {
|
||||
});
|
||||
|
||||
handler.autofillFormFields(testcase.profileData);
|
||||
|
||||
Assert.equal(handler.filledProfileGUID, testcase.profileData.guid,
|
||||
"Check if filledProfileGUID is set correctly");
|
||||
yield Promise.all(onChangePromises);
|
||||
});
|
||||
})();
|
||||
|
@ -895,6 +895,9 @@ class Graphics extends PP_Resource {
|
||||
super.destroy();
|
||||
}
|
||||
changeSize(width, height) {
|
||||
let devicePixelRatio = this.instance.window.devicePixelRatio;
|
||||
this.canvas.style.width = (width / devicePixelRatio) + "px";
|
||||
this.canvas.style.height = (height / devicePixelRatio) + "px";
|
||||
this.canvas.width = width;
|
||||
this.canvas.height = height;
|
||||
}
|
||||
@ -5330,20 +5333,16 @@ dump(`callFromJSON: < ${JSON.stringify(call)}\n`);
|
||||
* float_t GetDeviceScale([in] PP_Resource resource);
|
||||
*/
|
||||
PPB_View_GetDeviceScale: function(json) {
|
||||
// FIXME Need to figure out how to get the ratio between device pixels
|
||||
// and DIPs.
|
||||
let view = PP_Resource.lookup(json.resource);
|
||||
return 1; //view.instance.window.devicePixelRatio;
|
||||
return view.instance.window.devicePixelRatio;
|
||||
},
|
||||
|
||||
/**
|
||||
* float_t GetCSSScale([in] PP_Resource resource);
|
||||
*/
|
||||
PPB_View_GetCSSScale: function(json) {
|
||||
// FIXME Need to figure out how to get the ratio between CSS pixels
|
||||
// and DIPs.
|
||||
let view = PP_Resource.lookup(json.resource);
|
||||
return view.instance.window.devicePixelRatio;
|
||||
return 1;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -640,11 +640,11 @@ getUserMedia.allow.accesskey = A
|
||||
getUserMedia.dontAllow.label = Don’t Allow
|
||||
getUserMedia.dontAllow.accesskey = D
|
||||
getUserMedia.remember=Remember this decision
|
||||
# LOCALIZATION NOTE (getUserMedia.reasonForNoPermanentAllow.screen2,
|
||||
# LOCALIZATION NOTE (getUserMedia.reasonForNoPermanentAllow.screen3,
|
||||
# getUserMedia.reasonForNoPermanentAllow.audio,
|
||||
# getUserMedia.reasonForNoPermanentAllow.insecure):
|
||||
# %S is brandShortName
|
||||
getUserMedia.reasonForNoPermanentAllow.screen2=%S can not allow permanent access to your screen without asking which one to share.
|
||||
getUserMedia.reasonForNoPermanentAllow.screen3=%S can not allow permanent access to your screen.
|
||||
getUserMedia.reasonForNoPermanentAllow.audio=%S can not allow permanent access to your tab’s audio without asking which tab to share.
|
||||
getUserMedia.reasonForNoPermanentAllow.insecure=Your connection to this site is not secure. To protect you, %S will only allow access for this session.
|
||||
|
||||
|
@ -12,13 +12,15 @@ Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
var URLBarZoom = {
|
||||
init(aWindow) {
|
||||
aWindow.addEventListener("EndSwapDocShells", onEndSwapDocShells, true);
|
||||
aWindow.addEventListener("FullZoomChange", onFullZoomChange);
|
||||
aWindow.addEventListener("unload", () => {
|
||||
aWindow.removeEventListener("EndSwapDocShells", onEndSwapDocShells, true);
|
||||
aWindow.removeEventListener("FullZoomChange", onFullZoomChange);
|
||||
}, {once: true});
|
||||
},
|
||||
}
|
||||
|
||||
function fullZoomObserver(aSubject, aTopic) {
|
||||
function fullZoomLocationChangeObserver(aSubject, aTopic) {
|
||||
// If the tab was the last one in its window and has been dragged to another
|
||||
// window, the original browser's window will be unavailable here. Since that
|
||||
// window is closing, we can just ignore this notification.
|
||||
@ -26,25 +28,35 @@ function fullZoomObserver(aSubject, aTopic) {
|
||||
return;
|
||||
}
|
||||
|
||||
let animate = (aTopic != "browser-fullZoom:location-change");
|
||||
updateZoomButton(aSubject, animate);
|
||||
updateZoomButton(aSubject, false);
|
||||
}
|
||||
|
||||
function onEndSwapDocShells(event) {
|
||||
updateZoomButton(event.originalTarget);
|
||||
}
|
||||
|
||||
function onFullZoomChange(event) {
|
||||
let browser;
|
||||
if (event.target.nodeType == event.target.DOCUMENT_NODE) {
|
||||
// In non-e10s, the event is dispatched on the contentDocument
|
||||
// so we need to jump through some hoops to get to the <xul:browser>.
|
||||
let gBrowser = event.currentTarget.gBrowser;
|
||||
let topDoc = event.target.defaultView.top.document;
|
||||
browser = gBrowser.getBrowserForDocument(topDoc);
|
||||
} else {
|
||||
browser = event.originalTarget;
|
||||
}
|
||||
updateZoomButton(browser, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the zoom button in the location bar.
|
||||
*
|
||||
* @param {object} aBrowser The browser that the zoomed content resides in.
|
||||
* @param {boolean} aAnimate Should be True for all cases unless the zoom
|
||||
* change is related to tab switching. Optional
|
||||
* @param {number} aValue The value that should be used for the zoom control.
|
||||
* If not provided then the value will be read from the window. Useful
|
||||
* if the data on the window may be stale.
|
||||
*/
|
||||
function updateZoomButton(aBrowser, aAnimate = false, aValue = undefined) {
|
||||
function updateZoomButton(aBrowser, aAnimate = false) {
|
||||
let win = aBrowser.ownerGlobal;
|
||||
if (aBrowser != win.gBrowser.selectedBrowser) {
|
||||
return;
|
||||
@ -60,12 +72,9 @@ function updateZoomButton(aBrowser, aAnimate = false, aValue = undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
let zoomFactor = Math.round((aValue || win.ZoomManager.zoom) * 100);
|
||||
let zoomFactor = Math.round(win.ZoomManager.zoom * 100);
|
||||
if (zoomFactor != 100) {
|
||||
// Check if zoom button is visible and update label if it is
|
||||
if (zoomResetButton.hidden) {
|
||||
zoomResetButton.hidden = false;
|
||||
}
|
||||
zoomResetButton.hidden = false;
|
||||
if (aAnimate) {
|
||||
zoomResetButton.setAttribute("animate", "true");
|
||||
} else {
|
||||
@ -79,9 +88,4 @@ function updateZoomButton(aBrowser, aAnimate = false, aValue = undefined) {
|
||||
}
|
||||
}
|
||||
|
||||
Services.obs.addObserver(fullZoomObserver, "browser-fullZoom:zoomChange", false);
|
||||
Services.obs.addObserver(fullZoomObserver, "browser-fullZoom:zoomReset", false);
|
||||
Services.obs.addObserver(fullZoomObserver, "browser-fullZoom:location-change", false);
|
||||
Services.mm.addMessageListener("SyntheticDocument:ZoomChange", function(aMessage) {
|
||||
updateZoomButton(aMessage.target, true, aMessage.data.value);
|
||||
});
|
||||
Services.obs.addObserver(fullZoomLocationChangeObserver, "browser-fullZoom:location-change", false);
|
||||
|
@ -24,14 +24,13 @@ add_task(function* () {
|
||||
let buttonZoomLevel = parseInt(zoomResetButton.getAttribute("label"), 10);
|
||||
is(buttonZoomLevel, expectedZoomLevel, ("Button label updated successfully to " + Math.floor(ZoomManager.zoom * 100) + "%"));
|
||||
|
||||
let zoomResetPromise = promiseObserverNotification("browser-fullZoom:zoomReset");
|
||||
let zoomResetPromise = BrowserTestUtils.waitForEvent(window, "FullZoomChange");
|
||||
zoomResetButton.click();
|
||||
yield zoomResetPromise;
|
||||
pageZoomLevel = Math.floor(ZoomManager.zoom * 100);
|
||||
expectedZoomLevel = 100;
|
||||
is(pageZoomLevel, expectedZoomLevel, "Clicking zoom button successfully resets browser zoom to 100%");
|
||||
is(zoomResetButton.hidden, true, "Zoom reset button returns to being hidden");
|
||||
|
||||
});
|
||||
|
||||
add_task(function* () {
|
||||
@ -39,7 +38,7 @@ add_task(function* () {
|
||||
CustomizableUI.addWidgetToArea("zoom-controls", CustomizableUI.AREA_NAVBAR);
|
||||
let zoomCustomizableWidget = document.getElementById("zoom-reset-button");
|
||||
let zoomResetButton = document.getElementById("urlbar-zoom-button");
|
||||
let zoomChangePromise = promiseObserverNotification("browser-fullZoom:zoomChange");
|
||||
let zoomChangePromise = BrowserTestUtils.waitForEvent(window, "FullZoomChange");
|
||||
FullZoom.enlarge();
|
||||
yield zoomChangePromise;
|
||||
is(zoomResetButton.hidden, true, "URL zoom button remains hidden despite zoom increase");
|
||||
@ -54,20 +53,4 @@ add_task(function* asyncCleanup() {
|
||||
CustomizableUI.removeWidgetFromArea("zoom-controls", CustomizableUI.AREA_NAVBAR);
|
||||
ok(!document.getElementById("zoom-controls"), "Customizable zoom widget removed from toolbar");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function promiseObserverNotification(aObserver) {
|
||||
let deferred = Promise.defer();
|
||||
function notificationCallback(e) {
|
||||
Services.obs.removeObserver(notificationCallback, aObserver);
|
||||
clearTimeout(timeoutId);
|
||||
deferred.resolve();
|
||||
}
|
||||
let timeoutId = setTimeout(() => {
|
||||
Services.obs.removeObserver(notificationCallback, aObserver);
|
||||
deferred.reject("Notification '" + aObserver + "' did not happen within 20 seconds.");
|
||||
}, kTimeoutInMS);
|
||||
Services.obs.addObserver(notificationCallback, aObserver, false);
|
||||
return deferred.promise;
|
||||
}
|
||||
|
@ -439,7 +439,7 @@ function prompt(aBrowser, aRequest) {
|
||||
// share without prompting).
|
||||
let reasonForNoPermanentAllow = "";
|
||||
if (sharingScreen) {
|
||||
reasonForNoPermanentAllow = "getUserMedia.reasonForNoPermanentAllow.screen2";
|
||||
reasonForNoPermanentAllow = "getUserMedia.reasonForNoPermanentAllow.screen3";
|
||||
} else if (sharingAudio) {
|
||||
reasonForNoPermanentAllow = "getUserMedia.reasonForNoPermanentAllow.audio";
|
||||
} else if (!aRequest.secure) {
|
||||
@ -727,8 +727,8 @@ function prompt(aBrowser, aRequest) {
|
||||
if (videoDevices.length) {
|
||||
let listId = "webRTC-select" + (sharingScreen ? "Window" : "Camera") + "-menulist";
|
||||
let videoDeviceIndex = doc.getElementById(listId).value;
|
||||
let allowCamera = videoDeviceIndex != "-1";
|
||||
if (allowCamera) {
|
||||
let allowVideoDevice = videoDeviceIndex != "-1";
|
||||
if (allowVideoDevice) {
|
||||
allowedDevices.push(videoDeviceIndex);
|
||||
// Session permission will be removed after use
|
||||
// (it's really one-shot, not for the entire session)
|
||||
@ -747,9 +747,6 @@ function prompt(aBrowser, aRequest) {
|
||||
}
|
||||
if (remember)
|
||||
SitePermissions.set(uri, "camera", SitePermissions.ALLOW);
|
||||
} else {
|
||||
let scope = remember ? SitePermissions.SCOPE_PERSISTENT : SitePermissions.SCOPE_TEMPORARY;
|
||||
SitePermissions.set(uri, "camera", SitePermissions.BLOCK, scope, aBrowser);
|
||||
}
|
||||
}
|
||||
if (audioDevices.length) {
|
||||
@ -771,9 +768,6 @@ function prompt(aBrowser, aRequest) {
|
||||
}
|
||||
if (remember)
|
||||
SitePermissions.set(uri, "microphone", SitePermissions.ALLOW);
|
||||
} else {
|
||||
let scope = remember ? SitePermissions.SCOPE_PERSISTENT : SitePermissions.SCOPE_TEMPORARY;
|
||||
SitePermissions.set(uri, "microphone", SitePermissions.BLOCK, scope, aBrowser);
|
||||
}
|
||||
} else {
|
||||
// Only one device possible for audio capture.
|
||||
|
@ -18,6 +18,7 @@ ALL_HARNESSES = [
|
||||
'mozbase',
|
||||
'web-platform',
|
||||
'talos',
|
||||
'awsy',
|
||||
'gtest',
|
||||
]
|
||||
|
||||
@ -28,6 +29,7 @@ PACKAGE_SPECIFIED_HARNESSES = [
|
||||
'xpcshell',
|
||||
'web-platform',
|
||||
'talos',
|
||||
'awsy',
|
||||
]
|
||||
|
||||
# These packages are not present for every build configuration.
|
||||
|
@ -15,7 +15,7 @@
|
||||
PR_SetEnv requires its argument to be leaked, but does not appear on stacks. (See bug 793549.)
|
||||
Memcheck:Leak
|
||||
...
|
||||
fun:_ZL13SaveWordToEnvPKcRK19nsACString_internal
|
||||
fun:_ZL13SaveWordToEnvPKcRK10nsACString
|
||||
...
|
||||
}
|
||||
{
|
||||
@ -30,8 +30,8 @@
|
||||
Memcheck:Leak
|
||||
fun:malloc
|
||||
...
|
||||
fun:_Z12ToNewCStringRK19nsACString_internal
|
||||
fun:_ZN13CrashReporter14SetupExtraDataEP7nsIFileRK19nsACString_internal
|
||||
fun:_Z12ToNewCStringRK10nsACString
|
||||
fun:_ZN13CrashReporter14SetupExtraDataEP7nsIFileRK10nsACString
|
||||
...
|
||||
}
|
||||
{
|
||||
|
@ -98,3 +98,13 @@ storage.idb.deleteBlocked=Database “%S” will be deleted after all connection
|
||||
# LOCALIZATION NOTE (storage.idb.deleteError):
|
||||
# Error notification when IndexedDB database could not be deleted.
|
||||
storage.idb.deleteError=Database “%S” could not be deleted.
|
||||
|
||||
# LOCALIZATION NOTE (storage.expandPane):
|
||||
# This is the tooltip for the button that collapses the right panel in the
|
||||
# storage UI when the panel is closed.
|
||||
storage.expandPane=Expand Pane
|
||||
|
||||
# LOCALIZATION NOTE (storage.collapsePane):
|
||||
# This is the tooltip for the button that collapses the right panel in the
|
||||
# storage UI when the panel is open.
|
||||
storage.collapsePane=Collapse Pane
|
||||
|
@ -143,6 +143,17 @@ TableWidget.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Is a row currently selected?
|
||||
*
|
||||
* @return {Boolean}
|
||||
* true or false.
|
||||
*/
|
||||
get hasSelectedRow() {
|
||||
return this.columns.get(this.uniqueId) &&
|
||||
this.columns.get(this.uniqueId).selectedRow;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the json object corresponding to the selected row.
|
||||
*/
|
||||
|
@ -6,6 +6,7 @@
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/storage.css" type="text/css"?>
|
||||
<?xml-stylesheet href="resource://devtools/client/shared/components/sidebar-toggle.css" type="text/css"?>
|
||||
|
||||
<!DOCTYPE window [
|
||||
<!ENTITY % storageDTD SYSTEM "chrome://devtools/locale/storage.dtd">
|
||||
@ -46,6 +47,8 @@
|
||||
type="search"
|
||||
timeout="200"
|
||||
placeholder="&searchBox.placeholder;"/>
|
||||
<spacer flex="1"/>
|
||||
<button class="devtools-button sidebar-toggle" hidden="true"></button>
|
||||
</hbox>
|
||||
<vbox id="storage-table" class="theme-sidebar" flex="1"/>
|
||||
</vbox>
|
||||
|
@ -54,5 +54,6 @@ tags = usercontextid
|
||||
[browser_storage_search_keyboard_trap.js]
|
||||
[browser_storage_sessionstorage_edit.js]
|
||||
[browser_storage_sidebar.js]
|
||||
[browser_storage_sidebar_toggle.js]
|
||||
[browser_storage_sidebar_update.js]
|
||||
[browser_storage_values.js]
|
||||
|
@ -28,15 +28,15 @@ const testCases = [
|
||||
},
|
||||
{
|
||||
location: getCookieId("cs2", ".example.org", "/"),
|
||||
sidebarHidden: false
|
||||
sidebarHidden: true
|
||||
},
|
||||
{
|
||||
location: getCookieId("uc1", ".example.org", "/"),
|
||||
sidebarHidden: false
|
||||
sidebarHidden: true
|
||||
},
|
||||
{
|
||||
location: getCookieId("uc1", ".example.org", "/"),
|
||||
sidebarHidden: false
|
||||
sidebarHidden: true
|
||||
},
|
||||
|
||||
{
|
||||
@ -93,7 +93,7 @@ const testCases = [
|
||||
sendEscape: true
|
||||
}, {
|
||||
location: "obj-s2",
|
||||
sidebarHidden: false
|
||||
sidebarHidden: true
|
||||
}
|
||||
];
|
||||
|
||||
|
@ -0,0 +1,57 @@
|
||||
/* 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/. */
|
||||
|
||||
// Test to verify that the sidebar toggles when the toggle button is clicked.
|
||||
|
||||
"use strict";
|
||||
|
||||
const testCases = [
|
||||
{
|
||||
location: ["cookies", "https://sectest1.example.org"],
|
||||
sidebarHidden: true,
|
||||
toggleButtonVisible: false
|
||||
},
|
||||
{
|
||||
location: getCookieId("cs2", ".example.org", "/"),
|
||||
sidebarHidden: false,
|
||||
toggleButtonVisible: true
|
||||
},
|
||||
{
|
||||
clickToggle: true
|
||||
},
|
||||
{
|
||||
location: getCookieId("cs2", ".example.org", "/"),
|
||||
sidebarHidden: true
|
||||
}
|
||||
];
|
||||
|
||||
add_task(function* () {
|
||||
yield openTabAndSetupStorage(MAIN_DOMAIN + "storage-listings.html");
|
||||
|
||||
for (let test of testCases) {
|
||||
let { location, sidebarHidden, clickToggle, toggleButtonVisible } = test;
|
||||
|
||||
info("running " + JSON.stringify(test));
|
||||
|
||||
if (Array.isArray(location)) {
|
||||
yield selectTreeItem(location);
|
||||
} else if (location) {
|
||||
yield selectTableItem(location);
|
||||
}
|
||||
|
||||
if (clickToggle) {
|
||||
toggleSidebar();
|
||||
} else if (typeof toggleButtonHidden !== "undefined") {
|
||||
is(sidebarToggleVisible(), toggleButtonVisible,
|
||||
"correct visibility state of toggle button");
|
||||
} else {
|
||||
is(gUI.sidebar.hidden, sidebarHidden,
|
||||
"correct visibility state of sidebar.");
|
||||
}
|
||||
|
||||
info("-".repeat(80));
|
||||
}
|
||||
|
||||
yield finishTests();
|
||||
});
|
@ -919,3 +919,11 @@ function setPermission(url, permission) {
|
||||
.addFromPrincipal(principal, permission,
|
||||
nsIPermissionManager.ALLOW_ACTION);
|
||||
}
|
||||
|
||||
function toggleSidebar() {
|
||||
gUI.sidebarToggleBtn.click();
|
||||
}
|
||||
|
||||
function sidebarToggleVisible() {
|
||||
return !gUI.sidebarToggleBtn.hidden;
|
||||
}
|
||||
|
@ -127,9 +127,9 @@ function StorageUI(front, target, panelWin, toolbox) {
|
||||
this.view = new VariablesView(this.sidebar.firstChild,
|
||||
GENERIC_VARIABLES_VIEW_SETTINGS);
|
||||
|
||||
this.searchBox = this._panelDoc.getElementById("storage-searchbox");
|
||||
this.filterItems = this.filterItems.bind(this);
|
||||
this.searchBox.addEventListener("command", this.filterItems);
|
||||
this.onPaneToggleButtonClicked = this.onPaneToggleButtonClicked.bind(this);
|
||||
this.setupToolbar();
|
||||
|
||||
let shortcuts = new KeyShortcuts({
|
||||
window: this._panelDoc.defaultView,
|
||||
@ -191,6 +191,7 @@ exports.StorageUI = StorageUI;
|
||||
StorageUI.prototype = {
|
||||
|
||||
storageTypes: null,
|
||||
sidebarToggledOpen: null,
|
||||
shouldLoadMoreItems: true,
|
||||
|
||||
set animationsEnabled(value) {
|
||||
@ -209,6 +210,9 @@ StorageUI.prototype = {
|
||||
this.searchBox.removeEventListener("input", this.filterItems);
|
||||
this.searchBox = null;
|
||||
|
||||
this.sidebarToggleBtn.removeEventListener("click", this.onPaneToggleButtonClicked);
|
||||
this.sidebarToggleBtn = null;
|
||||
|
||||
this._treePopup.removeEventListener("popupshowing", this.onTreePopupShowing);
|
||||
this._treePopupDeleteAll.removeEventListener("command", this.onRemoveAll);
|
||||
this._treePopupDelete.removeEventListener("command", this.onRemoveTreeItem);
|
||||
@ -219,13 +223,49 @@ StorageUI.prototype = {
|
||||
this._tablePopupDeleteAll.removeEventListener("command", this.onRemoveAll);
|
||||
},
|
||||
|
||||
setupToolbar: function () {
|
||||
this.searchBox = this._panelDoc.getElementById("storage-searchbox");
|
||||
this.searchBox.addEventListener("command", this.filterItems);
|
||||
|
||||
// Setup the sidebar toggle button.
|
||||
this.sidebarToggleBtn = this._panelDoc.querySelector(".sidebar-toggle");
|
||||
this.updateSidebarToggleButton();
|
||||
|
||||
this.sidebarToggleBtn.addEventListener("click", this.onPaneToggleButtonClicked);
|
||||
},
|
||||
|
||||
onPaneToggleButtonClicked: function () {
|
||||
if (this.sidebar.hidden && this.table.selectedRow) {
|
||||
this.sidebar.hidden = false;
|
||||
this.sidebarToggledOpen = true;
|
||||
this.updateSidebarToggleButton();
|
||||
} else {
|
||||
this.sidebarToggledOpen = false;
|
||||
this.hideSidebar();
|
||||
}
|
||||
},
|
||||
|
||||
updateSidebarToggleButton: function () {
|
||||
let title;
|
||||
this.sidebarToggleBtn.hidden = !this.table.hasSelectedRow;
|
||||
|
||||
if (this.sidebar.hidden) {
|
||||
this.sidebarToggleBtn.classList.add("pane-collapsed");
|
||||
title = L10N.getStr("storage.expandPane");
|
||||
} else {
|
||||
this.sidebarToggleBtn.classList.remove("pane-collapsed");
|
||||
title = L10N.getStr("storage.collapsePane");
|
||||
}
|
||||
|
||||
this.sidebarToggleBtn.setAttribute("tooltiptext", title);
|
||||
},
|
||||
|
||||
/**
|
||||
* Empties and hides the object viewer sidebar
|
||||
* Hide the object viewer sidebar
|
||||
*/
|
||||
hideSidebar: function () {
|
||||
this.view.empty();
|
||||
this.sidebar.hidden = true;
|
||||
this.table.clearSelection();
|
||||
this.updateSidebarToggleButton();
|
||||
},
|
||||
|
||||
getCurrentActor: function () {
|
||||
@ -490,6 +530,8 @@ StorageUI.prototype = {
|
||||
: {};
|
||||
let storageType = this.storageTypes[type];
|
||||
|
||||
this.sidebarToggledOpen = null;
|
||||
|
||||
if (reason !== REASON.NEXT_50_ITEMS &&
|
||||
reason !== REASON.UPDATE &&
|
||||
reason !== REASON.NEW_ROW &&
|
||||
@ -581,6 +623,7 @@ StorageUI.prototype = {
|
||||
if (!item) {
|
||||
// Make sure that sidebar is hidden and return
|
||||
this.sidebar.hidden = true;
|
||||
this.updateSidebarToggleButton();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -591,7 +634,11 @@ StorageUI.prototype = {
|
||||
}
|
||||
|
||||
// Start updating the UI. Everything is sync beyond this point.
|
||||
this.sidebar.hidden = false;
|
||||
if (this.sidebarToggledOpen === null || this.sidebarToggledOpen === true) {
|
||||
this.sidebar.hidden = false;
|
||||
}
|
||||
|
||||
this.updateSidebarToggleButton();
|
||||
this.view.empty();
|
||||
let mainScope = this.view.addScope(L10N.getStr("storage.data.label"));
|
||||
mainScope.expanded = true;
|
||||
@ -898,6 +945,7 @@ StorageUI.prototype = {
|
||||
if (event.keyCode == KeyCodes.DOM_VK_ESCAPE && !this.sidebar.hidden) {
|
||||
// Stop Propagation to prevent opening up of split console
|
||||
this.hideSidebar();
|
||||
this.sidebarToggledOpen = false;
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
}
|
||||
|
@ -32,6 +32,14 @@
|
||||
min-width: 250px;
|
||||
}
|
||||
|
||||
#storage-toolbar .devtools-button {
|
||||
min-width: unset;
|
||||
}
|
||||
|
||||
#storage-toolbar .sidebar-toggle[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Responsive sidebar */
|
||||
@media (max-width: 700px) {
|
||||
#storage-tree,
|
||||
|
@ -62,6 +62,7 @@ const ConsoleTable = createClass({
|
||||
GripMessageBody({
|
||||
grip: item[key],
|
||||
mode: MODE.SHORT,
|
||||
useQuotes: false,
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -37,6 +37,7 @@ GripMessageBody.propTypes = {
|
||||
createElement: PropTypes.func.isRequired,
|
||||
}),
|
||||
userProvidedStyle: PropTypes.string,
|
||||
useQuotes: PropTypes.bool,
|
||||
};
|
||||
|
||||
GripMessageBody.defaultProps = {
|
||||
@ -44,7 +45,7 @@ GripMessageBody.defaultProps = {
|
||||
};
|
||||
|
||||
function GripMessageBody(props) {
|
||||
const { grip, userProvidedStyle, serviceContainer } = props;
|
||||
const { grip, userProvidedStyle, serviceContainer, useQuotes } = props;
|
||||
|
||||
let styleObject;
|
||||
if (userProvidedStyle && userProvidedStyle !== "") {
|
||||
@ -63,7 +64,7 @@ function GripMessageBody(props) {
|
||||
typeof grip === "string"
|
||||
? StringRep({
|
||||
object: grip,
|
||||
useQuotes: false,
|
||||
useQuotes: useQuotes,
|
||||
mode: props.mode,
|
||||
style: styleObject
|
||||
})
|
||||
|
@ -119,7 +119,8 @@ function formatReps(parameters, userProvidedStyles, serviceContainer) {
|
||||
grip,
|
||||
key,
|
||||
userProvidedStyle: userProvidedStyles ? userProvidedStyles[key] : null,
|
||||
serviceContainer
|
||||
serviceContainer,
|
||||
useQuotes: false,
|
||||
}))
|
||||
// Interleave spaces.
|
||||
.reduce((arr, v, i) => {
|
||||
|
@ -43,7 +43,7 @@ function EvaluationResult(props) {
|
||||
if (message.messageText) {
|
||||
messageBody = message.messageText;
|
||||
} else {
|
||||
messageBody = GripMessageBody({grip: parameters, serviceContainer});
|
||||
messageBody = GripMessageBody({grip: parameters, serviceContainer, useQuotes: true});
|
||||
}
|
||||
|
||||
const topLevelClasses = ["cm-s-mozilla"];
|
||||
|
@ -41,5 +41,6 @@ skip-if = (os == 'linux' && bits == 32 && debug) # bug 1328915, disable linux32
|
||||
[browser_webconsole_observer_notifications.js]
|
||||
[browser_webconsole_stacktrace_location_debugger_link.js]
|
||||
[browser_webconsole_stacktrace_location_scratchpad_link.js]
|
||||
[browser_webconsole_string.js]
|
||||
[browser_webconsole_timestamps.js]
|
||||
[browser_webconsole_vview_close_on_esc_key.js]
|
||||
|
@ -0,0 +1,35 @@
|
||||
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
const TEST_URI = "http://example.com/browser/devtools/client/webconsole/new-console-output/test/mochitest/test-console.html";
|
||||
|
||||
add_task(function* () {
|
||||
let hud = yield openNewTabAndConsole(TEST_URI);
|
||||
|
||||
info("console.log with a string argument");
|
||||
let receievedMessages = waitForMessages({
|
||||
hud,
|
||||
messages: [{
|
||||
// Test that the output does not include quotes.
|
||||
text: "stringLog",
|
||||
}],
|
||||
});
|
||||
|
||||
yield ContentTask.spawn(gBrowser.selectedBrowser, {}, function () {
|
||||
content.wrappedJSObject.stringLog();
|
||||
});
|
||||
|
||||
yield receievedMessages;
|
||||
|
||||
info("evaluating a string constant");
|
||||
let jsterm = hud.jsterm;
|
||||
yield jsterm.execute("\"string constant\"");
|
||||
let msg = yield waitFor(() => findMessage(hud, "constant"));
|
||||
let body = msg.querySelector(".message-body");
|
||||
// On the other hand, a string constant result should be quoted.
|
||||
ok(body.textContent.includes("\"string constant\""), "found expected text");
|
||||
});
|
@ -7,7 +7,7 @@
|
||||
<body>
|
||||
<p>Simple webconsole test page</p>
|
||||
<script>
|
||||
/* exported doLogs */
|
||||
/* exported doLogs, stringLog */
|
||||
"use strict";
|
||||
|
||||
function doLogs(num) {
|
||||
@ -16,6 +16,10 @@
|
||||
console.log(i);
|
||||
}
|
||||
}
|
||||
|
||||
function stringLog() {
|
||||
console.log("stringLog");
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1318,22 +1318,7 @@ Animation::PostUpdate()
|
||||
if (!keyframeEffect) {
|
||||
return;
|
||||
}
|
||||
|
||||
Maybe<NonOwningAnimationTarget> target = keyframeEffect->GetTarget();
|
||||
if (!target) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsPresContext* presContext = keyframeEffect->GetPresContext();
|
||||
if (!presContext) {
|
||||
return;
|
||||
}
|
||||
|
||||
presContext->EffectCompositor()
|
||||
->RequestRestyle(target->mElement,
|
||||
target->mPseudoType,
|
||||
EffectCompositor::RestyleType::Layer,
|
||||
CascadeLevel());
|
||||
keyframeEffect->RequestRestyle(EffectCompositor::RestyleType::Layer);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -505,9 +505,10 @@ EffectCompositor::GetServoAnimationRule(const dom::Element* aElement,
|
||||
// If multiple animations affect the same property, animations with higher
|
||||
// composite order (priority) override or add or animations with lower
|
||||
// priority.
|
||||
// stylo: we don't support animations on compositor now, so propertiesToSkip
|
||||
// is an empty set.
|
||||
const nsCSSPropertyIDSet propertiesToSkip;
|
||||
const nsCSSPropertyIDSet propertiesToSkip =
|
||||
aCascadeLevel == CascadeLevel::Animations
|
||||
? effectSet->PropertiesForAnimationsLevel().Inverse()
|
||||
: effectSet->PropertiesForAnimationsLevel();
|
||||
for (KeyframeEffectReadOnly* effect : sortedEffectList) {
|
||||
effect->GetAnimation()->ComposeStyle(animRule, propertiesToSkip);
|
||||
}
|
||||
@ -685,6 +686,22 @@ EffectCompositor::MaybeUpdateCascadeResults(Element* aElement,
|
||||
MOZ_ASSERT(!effects->CascadeNeedsUpdate(), "Failed to update cascade state");
|
||||
}
|
||||
|
||||
/* static */ void
|
||||
EffectCompositor::MaybeUpdateCascadeResults(dom::Element* aElement,
|
||||
CSSPseudoElementType aPseudoType)
|
||||
{
|
||||
EffectSet* effects = EffectSet::GetEffectSet(aElement, aPseudoType);
|
||||
MOZ_ASSERT(effects);
|
||||
if (!effects->CascadeNeedsUpdate()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: Implement the rule node traversal for stylo in Bug 1334036.
|
||||
UpdateCascadeResults(*effects, aElement, aPseudoType, nullptr);
|
||||
|
||||
MOZ_ASSERT(!effects->CascadeNeedsUpdate(), "Failed to update cascade state");
|
||||
}
|
||||
|
||||
/* static */ void
|
||||
EffectCompositor::UpdateCascadeResults(Element* aElement,
|
||||
CSSPseudoElementType aPseudoType,
|
||||
@ -764,7 +781,7 @@ EffectCompositor::ComposeAnimationRule(dom::Element* aElement,
|
||||
// priority except properties in propertiesToSkip.
|
||||
const nsCSSPropertyIDSet& propertiesToSkip =
|
||||
aCascadeLevel == CascadeLevel::Animations
|
||||
? effects->PropertiesForAnimationsLevel().Invert()
|
||||
? effects->PropertiesForAnimationsLevel().Inverse()
|
||||
: effects->PropertiesForAnimationsLevel();
|
||||
for (KeyframeEffectReadOnly* effect : sortedEffectList) {
|
||||
effect->GetAnimation()->WillComposeStyle();
|
||||
@ -837,6 +854,10 @@ EffectCompositor::UpdateCascadeResults(EffectSet& aEffectSet,
|
||||
// cascade applies.
|
||||
nsCSSPropertyIDSet overriddenProperties;
|
||||
if (aStyleContext) {
|
||||
// FIXME: Bug 1334036 (OMTA) will implement a FFI to get the properties
|
||||
// overriding animation.
|
||||
MOZ_ASSERT(!aStyleContext->StyleSource().IsServoComputedValues(),
|
||||
"stylo: Not support get properties overriding animation yet.");
|
||||
GetOverriddenProperties(aStyleContext, aEffectSet, overriddenProperties);
|
||||
}
|
||||
|
||||
@ -976,6 +997,8 @@ EffectCompositor::PreTraverse()
|
||||
continue;
|
||||
}
|
||||
|
||||
MaybeUpdateCascadeResults(target.mElement, target.mPseudoType);
|
||||
|
||||
for (KeyframeEffectReadOnly* effect : *effects) {
|
||||
effect->GetAnimation()->WillComposeStyle();
|
||||
}
|
||||
@ -996,8 +1019,8 @@ EffectCompositor::PreTraverse(dom::Element* aElement, nsIAtom* aPseudoTagOrNull)
|
||||
|
||||
bool found = false;
|
||||
if (aPseudoTagOrNull &&
|
||||
aPseudoTagOrNull != nsGkAtoms::cssPseudoElementBeforeProperty &&
|
||||
aPseudoTagOrNull != nsGkAtoms::cssPseudoElementAfterProperty) {
|
||||
aPseudoTagOrNull != nsCSSPseudoElements::before &&
|
||||
aPseudoTagOrNull != nsCSSPseudoElements::after) {
|
||||
return found;
|
||||
}
|
||||
|
||||
@ -1018,6 +1041,8 @@ EffectCompositor::PreTraverse(dom::Element* aElement, nsIAtom* aPseudoTagOrNull)
|
||||
|
||||
EffectSet* effects = EffectSet::GetEffectSet(aElement, pseudoType);
|
||||
if (effects) {
|
||||
MaybeUpdateCascadeResults(aElement, pseudoType);
|
||||
|
||||
for (KeyframeEffectReadOnly* effect : *effects) {
|
||||
effect->GetAnimation()->WillComposeStyle();
|
||||
}
|
||||
|
@ -196,6 +196,14 @@ public:
|
||||
CSSPseudoElementType aPseudoType,
|
||||
nsStyleContext* aStyleContext);
|
||||
|
||||
// Variant of MaybeUpdateCascadeResults for the Servo backend.
|
||||
// The Servo backend doesn't use an nsStyleContext to get the rule node
|
||||
// to traverse the style tree to find !important rules and instead
|
||||
// gets the rule node from |aElement|.
|
||||
static void
|
||||
MaybeUpdateCascadeResults(dom::Element* aElement,
|
||||
CSSPseudoElementType aPseudoType);
|
||||
|
||||
// Update the mPropertiesWithImportantRules and
|
||||
// mPropertiesForAnimationsLevel members of the corresponding EffectSet.
|
||||
//
|
||||
|
@ -195,6 +195,10 @@ public:
|
||||
{
|
||||
return mPropertiesForAnimationsLevel;
|
||||
}
|
||||
nsCSSPropertyIDSet PropertiesForAnimationsLevel() const
|
||||
{
|
||||
return mPropertiesForAnimationsLevel;
|
||||
}
|
||||
|
||||
private:
|
||||
static nsIAtom* GetEffectSetPropertyAtom(CSSPseudoElementType aPseudoType);
|
||||
|
@ -1452,16 +1452,6 @@ KeyframeEffectReadOnly::GetPresShell() const
|
||||
return doc->GetShell();
|
||||
}
|
||||
|
||||
nsPresContext*
|
||||
KeyframeEffectReadOnly::GetPresContext() const
|
||||
{
|
||||
nsIPresShell* shell = GetPresShell();
|
||||
if (!shell) {
|
||||
return nullptr;
|
||||
}
|
||||
return shell->GetPresContext();
|
||||
}
|
||||
|
||||
/* static */ bool
|
||||
KeyframeEffectReadOnly::IsGeometricProperty(
|
||||
const nsCSSPropertyID aProperty)
|
||||
|
@ -34,7 +34,6 @@ class nsIContent;
|
||||
class nsIDocument;
|
||||
class nsIFrame;
|
||||
class nsIPresShell;
|
||||
class nsPresContext;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
@ -211,11 +210,9 @@ public:
|
||||
{
|
||||
mEffectOptions.GetSpacingAsString(aRetVal);
|
||||
}
|
||||
|
||||
void NotifyAnimationTimingUpdated();
|
||||
|
||||
void RequestRestyle(EffectCompositor::RestyleType aRestyleType);
|
||||
void SetAnimation(Animation* aAnimation) override;
|
||||
|
||||
void SetKeyframes(JSContext* aContext, JS::Handle<JSObject*> aKeyframes,
|
||||
ErrorResult& aRv);
|
||||
void SetKeyframes(nsTArray<Keyframe>&& aKeyframes,
|
||||
@ -297,7 +294,6 @@ public:
|
||||
}
|
||||
|
||||
nsIDocument* GetRenderedDocument() const;
|
||||
nsPresContext* GetPresContext() const;
|
||||
nsIPresShell* GetPresShell() const;
|
||||
|
||||
// Associates a warning with the animated property on the specified frame
|
||||
@ -379,8 +375,6 @@ protected:
|
||||
// Remove the current effect target from its EffectSet.
|
||||
void UnregisterTarget();
|
||||
|
||||
void RequestRestyle(EffectCompositor::RestyleType aRestyleType);
|
||||
|
||||
// Update the associated frame state bits so that, if necessary, a stacking
|
||||
// context will be created and the effect sent to the compositor. We
|
||||
// typically need to do this when the properties referenced by the keyframe
|
||||
|
@ -455,6 +455,7 @@ DOMIntersectionObserver::QueueIntersectionObserverEntry(Element* aTarget,
|
||||
rootBounds.forget(),
|
||||
boundingClientRect.forget(),
|
||||
intersectionRect.forget(),
|
||||
aIntersectionRect.isSome(),
|
||||
aTarget, aIntersectionRatio);
|
||||
mQueuedEntries.AppendElement(entry.forget());
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ public:
|
||||
RefPtr<DOMRect> aRootBounds,
|
||||
RefPtr<DOMRect> aBoundingClientRect,
|
||||
RefPtr<DOMRect> aIntersectionRect,
|
||||
bool aIsIntersecting,
|
||||
Element* aTarget,
|
||||
double aIntersectionRatio)
|
||||
: mOwner(aOwner),
|
||||
@ -37,6 +38,7 @@ public:
|
||||
mRootBounds(aRootBounds),
|
||||
mBoundingClientRect(aBoundingClientRect),
|
||||
mIntersectionRect(aIntersectionRect),
|
||||
mIsIntersecting(aIsIntersecting),
|
||||
mTarget(aTarget),
|
||||
mIntersectionRatio(aIntersectionRatio)
|
||||
{
|
||||
@ -74,6 +76,11 @@ public:
|
||||
return mIntersectionRect;
|
||||
}
|
||||
|
||||
bool IsIntersecting()
|
||||
{
|
||||
return mIsIntersecting;
|
||||
}
|
||||
|
||||
double IntersectionRatio()
|
||||
{
|
||||
return mIntersectionRatio;
|
||||
@ -90,6 +97,7 @@ protected:
|
||||
RefPtr<DOMRect> mRootBounds;
|
||||
RefPtr<DOMRect> mBoundingClientRect;
|
||||
RefPtr<DOMRect> mIntersectionRect;
|
||||
bool mIsIntersecting;
|
||||
RefPtr<Element> mTarget;
|
||||
double mIntersectionRatio;
|
||||
};
|
||||
|
@ -721,6 +721,7 @@ limitations under the License.
|
||||
var records = sortRecords(spy.lastCall.args[0]);
|
||||
expect(records.length).to.be(2);
|
||||
expect(records[0].intersectionRatio).to.be(0);
|
||||
expect(records[0].isIntersecting).to.be.ok();
|
||||
expect(records[0].target).to.be(targetEl1);
|
||||
expect(records[1].intersectionRatio).to.be(0);
|
||||
expect(records[1].target).to.be(targetEl2);
|
||||
@ -753,6 +754,7 @@ limitations under the License.
|
||||
var records = sortRecords(spy.lastCall.args[0]);
|
||||
expect(records.length).to.be(2);
|
||||
expect(records[0].intersectionRatio).to.be(0);
|
||||
expect(records[0].isIntersecting).to.be.ok();
|
||||
expect(records[0].target).to.be(targetEl3);
|
||||
expect(records[1].intersectionRatio).to.be(0);
|
||||
expect(records[1].target).to.be(targetEl4);
|
||||
@ -767,17 +769,35 @@ limitations under the License.
|
||||
it('handles zero-size targets within the root coordinate space',
|
||||
function(done) {
|
||||
|
||||
io = new IntersectionObserver(function(records) {
|
||||
expect(records.length).to.be(1);
|
||||
expect(records[0].intersectionRatio).to.be(0);
|
||||
done();
|
||||
}, {root: rootEl});
|
||||
var spy = sinon.spy();
|
||||
io = new IntersectionObserver(spy, {root: rootEl});
|
||||
|
||||
targetEl1.style.top = '0px';
|
||||
targetEl1.style.left = '0px';
|
||||
targetEl1.style.width = '0px';
|
||||
targetEl1.style.height = '0px';
|
||||
io.observe(targetEl1);
|
||||
runSequence([
|
||||
function(done) {
|
||||
targetEl1.style.top = '0px';
|
||||
targetEl1.style.left = '0px';
|
||||
targetEl1.style.width = '0px';
|
||||
targetEl1.style.height = '0px';
|
||||
io.observe(targetEl1);
|
||||
spy.waitForNotification(function() {
|
||||
var records = sortRecords(spy.lastCall.args[0]);
|
||||
expect(records.length).to.be(1);
|
||||
expect(records[0].intersectionRatio).to.be(0);
|
||||
expect(records[0].isIntersecting).to.be.ok();
|
||||
done();
|
||||
}, ASYNC_TIMEOUT);
|
||||
},
|
||||
function(done) {
|
||||
targetEl1.style.top = '-1px';
|
||||
spy.waitForNotification(function() {
|
||||
var records = sortRecords(spy.lastCall.args[0]);
|
||||
expect(records.length).to.be(1);
|
||||
expect(records[0].intersectionRatio).to.be(0);
|
||||
expect(records[0].isIntersecting).to.be(false);
|
||||
done();
|
||||
}, ASYNC_TIMEOUT);
|
||||
}
|
||||
], done);
|
||||
});
|
||||
|
||||
|
||||
|
@ -1961,8 +1961,11 @@ MediaFormatReader::HandleDemuxedSamples(
|
||||
RefPtr<TrackInfoSharedPtr> info = sample->mTrackInfo;
|
||||
|
||||
if (info && decoder.mLastStreamSourceID != info->GetID()) {
|
||||
if (decoder.mNextStreamSourceID.isNothing()
|
||||
|| decoder.mNextStreamSourceID.ref() != info->GetID()) {
|
||||
bool recyclable = MediaPrefs::MediaDecoderCheckRecycling()
|
||||
&& decoder.mDecoder->SupportDecoderRecycling();
|
||||
if (!recyclable
|
||||
&& (decoder.mNextStreamSourceID.isNothing()
|
||||
|| decoder.mNextStreamSourceID.ref() != info->GetID())) {
|
||||
LOG("%s stream id has changed from:%d to:%d, draining decoder.",
|
||||
TrackTypeToStr(aTrack), decoder.mLastStreamSourceID,
|
||||
info->GetID());
|
||||
@ -1978,8 +1981,7 @@ MediaFormatReader::HandleDemuxedSamples(
|
||||
decoder.mLastStreamSourceID = info->GetID();
|
||||
decoder.mNextStreamSourceID.reset();
|
||||
|
||||
if (!MediaPrefs::MediaDecoderCheckRecycling()
|
||||
|| !decoder.mDecoder->SupportDecoderRecycling()) {
|
||||
if (!recyclable) {
|
||||
LOG("Decoder does not support recycling, recreate decoder.");
|
||||
// If flushing is required, it will clear our array of queued samples.
|
||||
// So make a copy now.
|
||||
|
@ -5,7 +5,7 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "mozilla/CheckedInt.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/UniquePtrExtensions.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "nsRect.h"
|
||||
#include "nsSize.h"
|
||||
@ -37,7 +37,10 @@ public:
|
||||
// with a U and V plane that are half the size of the Y plane, i.e 8 bit,
|
||||
// 2x2 subsampled. Have the data pointer of each frame point to the
|
||||
// first plane, they'll always be zero'd memory anyway.
|
||||
auto frame = MakeUnique<uint8_t[]>(mFrameWidth * mFrameHeight);
|
||||
auto frame = MakeUniqueFallible<uint8_t[]>(mFrameWidth * mFrameHeight);
|
||||
if (!frame) {
|
||||
return nullptr;
|
||||
}
|
||||
memset(frame.get(), 0, mFrameWidth * mFrameHeight);
|
||||
VideoData::YCbCrBuffer buffer;
|
||||
|
||||
|
@ -332,32 +332,11 @@ H264Converter::CheckForSPSChange(MediaRawData* aSample)
|
||||
if (CanRecycleDecoder()) {
|
||||
// Do not recreate the decoder, reuse it.
|
||||
UpdateConfigFromExtraData(extra_data);
|
||||
// Ideally we would want to drain the decoder instead of flushing it.
|
||||
// However the draining operation requires calling Drain and looping several
|
||||
// times which isn't possible from within the H264Converter. So instead we
|
||||
// flush the decoder. In practice, this is a no-op as SPS change will only
|
||||
// be used with MSE. And with MSE, the MediaFormatReader would have drained
|
||||
// the decoder already.
|
||||
RefPtr<H264Converter> self = this;
|
||||
if (!sample->mTrackInfo) {
|
||||
sample->mTrackInfo = new TrackInfoSharedPtr(mCurrentConfig, 0);
|
||||
}
|
||||
mDecoder->Flush()
|
||||
->Then(AbstractThread::GetCurrent()->AsTaskQueue(),
|
||||
__func__,
|
||||
[self, sample, this]() {
|
||||
mFlushRequest.Complete();
|
||||
DecodeFirstSample(sample);
|
||||
},
|
||||
[self, this](const MediaResult& aError) {
|
||||
mFlushRequest.Complete();
|
||||
mDecodePromise.Reject(aError, __func__);
|
||||
})
|
||||
->Track(mFlushRequest);
|
||||
mNeedKeyframe = true;
|
||||
// This is not really initializing the decoder, but it will do as it
|
||||
// indicates an operation is pending.
|
||||
return NS_ERROR_DOM_MEDIA_INITIALIZING_DECODER;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// The SPS has changed, signal to flush the current decoder and create a
|
||||
|
@ -132,13 +132,13 @@ MediaEngineTabVideoSource::DestroyRunnable::Run()
|
||||
}
|
||||
|
||||
void
|
||||
MediaEngineTabVideoSource::GetName(nsAString_internal& aName) const
|
||||
MediaEngineTabVideoSource::GetName(nsAString& aName) const
|
||||
{
|
||||
aName.AssignLiteral(u"&getUserMedia.videoSource.tabShare;");
|
||||
}
|
||||
|
||||
void
|
||||
MediaEngineTabVideoSource::GetUUID(nsACString_internal& aUuid) const
|
||||
MediaEngineTabVideoSource::GetUUID(nsACString& aUuid) const
|
||||
{
|
||||
aUuid.AssignLiteral("tab");
|
||||
}
|
||||
|
@ -19,8 +19,8 @@ class MediaEngineTabVideoSource : public MediaEngineVideoSource, nsIDOMEventList
|
||||
NS_DECL_NSITIMERCALLBACK
|
||||
MediaEngineTabVideoSource();
|
||||
|
||||
void GetName(nsAString_internal&) const override;
|
||||
void GetUUID(nsACString_internal&) const override;
|
||||
void GetName(nsAString&) const override;
|
||||
void GetUUID(nsACString&) const override;
|
||||
|
||||
bool GetScary() const override {
|
||||
return true;
|
||||
|
@ -18,6 +18,8 @@ interface IntersectionObserverEntry {
|
||||
[Constant]
|
||||
readonly attribute DOMRectReadOnly intersectionRect;
|
||||
[Constant]
|
||||
readonly attribute boolean isIntersecting;
|
||||
[Constant]
|
||||
readonly attribute double intersectionRatio;
|
||||
[Constant]
|
||||
readonly attribute Element target;
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include "mozilla/dom/Element.h" // for Element
|
||||
#include "mozilla/dom/Selection.h"
|
||||
#include "mozilla/mozalloc.h" // for operator delete, etc
|
||||
#include "nsAString.h" // for nsAString_internal::IsEmpty, etc
|
||||
#include "nsAString.h" // for nsAString::IsEmpty, etc
|
||||
#include "nsComponentManagerUtils.h" // for do_CreateInstance
|
||||
#include "nsDebug.h" // for NS_ENSURE_TRUE, etc
|
||||
#include "nsDependentSubstring.h" // for Substring
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "mozilla/ChangeStyleTransaction.h"
|
||||
|
||||
#include "mozilla/dom/Element.h" // for Element
|
||||
#include "nsAString.h" // for nsAString_internal::Append, etc.
|
||||
#include "nsAString.h" // for nsAString::Append, etc.
|
||||
#include "nsCRT.h" // for nsCRT::IsAsciiSpace
|
||||
#include "nsDebug.h" // for NS_ENSURE_SUCCESS, etc.
|
||||
#include "nsError.h" // for NS_ERROR_NULL_POINTER, etc.
|
||||
|
@ -40,7 +40,7 @@
|
||||
#include "mozilla/dom/Text.h"
|
||||
#include "mozilla/dom/Event.h"
|
||||
#include "mozilla/mozalloc.h" // for operator new, etc.
|
||||
#include "nsAString.h" // for nsAString_internal::Length, etc.
|
||||
#include "nsAString.h" // for nsAString::Length, etc.
|
||||
#include "nsCCUncollectableMarker.h" // for nsCCUncollectableMarker
|
||||
#include "nsCaret.h" // for nsCaret
|
||||
#include "nsCaseTreatment.h"
|
||||
@ -1586,11 +1586,10 @@ EditorBase::DeleteNode(nsINode* aNode)
|
||||
}
|
||||
}
|
||||
|
||||
RefPtr<DeleteNodeTransaction> transaction;
|
||||
nsresult rv = CreateTxnForDeleteNode(aNode, getter_AddRefs(transaction));
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = DoTransaction(transaction);
|
||||
}
|
||||
RefPtr<DeleteNodeTransaction> deleteNodeTransaction =
|
||||
CreateTxnForDeleteNode(aNode);
|
||||
nsresult rv = deleteNodeTransaction ? DoTransaction(deleteNodeTransaction) :
|
||||
NS_ERROR_FAILURE;
|
||||
|
||||
{
|
||||
AutoActionListenerArray listeners(mActionListeners);
|
||||
@ -4062,54 +4061,58 @@ EditorBase::DeleteSelectionImpl(EDirection aAction,
|
||||
|
||||
RefPtr<Selection> selection = GetSelection();
|
||||
NS_ENSURE_STATE(selection);
|
||||
RefPtr<EditAggregateTransaction> transaction;
|
||||
|
||||
RefPtr<EditAggregateTransaction> deleteSelectionTransaction;
|
||||
nsCOMPtr<nsINode> deleteNode;
|
||||
int32_t deleteCharOffset = 0, deleteCharLength = 0;
|
||||
nsresult rv = CreateTxnForDeleteSelection(aAction,
|
||||
getter_AddRefs(transaction),
|
||||
getter_AddRefs(deleteNode),
|
||||
&deleteCharOffset,
|
||||
&deleteCharLength);
|
||||
nsCOMPtr<nsIDOMCharacterData> deleteCharData(do_QueryInterface(deleteNode));
|
||||
if (!selection->Collapsed() || aAction != eNone) {
|
||||
deleteSelectionTransaction =
|
||||
CreateTxnForDeleteSelection(aAction,
|
||||
getter_AddRefs(deleteNode),
|
||||
&deleteCharOffset,
|
||||
&deleteCharLength);
|
||||
if (NS_WARN_IF(!deleteSelectionTransaction)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
AutoRules beginRulesSniffing(this, EditAction::deleteSelection, aAction);
|
||||
// Notify nsIEditActionListener::WillDelete[Selection|Text|Node]
|
||||
{
|
||||
AutoActionListenerArray listeners(mActionListeners);
|
||||
if (!deleteNode) {
|
||||
for (auto& listener : listeners) {
|
||||
listener->WillDeleteSelection(selection);
|
||||
}
|
||||
} else if (deleteCharData) {
|
||||
for (auto& listener : listeners) {
|
||||
listener->WillDeleteText(deleteCharData, deleteCharOffset, 1);
|
||||
}
|
||||
} else {
|
||||
for (auto& listener : listeners) {
|
||||
listener->WillDeleteNode(deleteNode->AsDOMNode());
|
||||
}
|
||||
nsCOMPtr<nsIDOMCharacterData> deleteCharData(do_QueryInterface(deleteNode));
|
||||
AutoRules beginRulesSniffing(this, EditAction::deleteSelection, aAction);
|
||||
// Notify nsIEditActionListener::WillDelete[Selection|Text|Node]
|
||||
{
|
||||
AutoActionListenerArray listeners(mActionListeners);
|
||||
if (!deleteNode) {
|
||||
for (auto& listener : listeners) {
|
||||
listener->WillDeleteSelection(selection);
|
||||
}
|
||||
} else if (deleteCharData) {
|
||||
for (auto& listener : listeners) {
|
||||
listener->WillDeleteText(deleteCharData, deleteCharOffset, 1);
|
||||
}
|
||||
} else {
|
||||
for (auto& listener : listeners) {
|
||||
listener->WillDeleteNode(deleteNode->AsDOMNode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Delete the specified amount
|
||||
rv = DoTransaction(transaction);
|
||||
// Delete the specified amount
|
||||
nsresult rv = DoTransaction(deleteSelectionTransaction);
|
||||
|
||||
// Notify nsIEditActionListener::DidDelete[Selection|Text|Node]
|
||||
{
|
||||
AutoActionListenerArray listeners(mActionListeners);
|
||||
if (!deleteNode) {
|
||||
for (auto& listener : mActionListeners) {
|
||||
listener->DidDeleteSelection(selection);
|
||||
}
|
||||
} else if (deleteCharData) {
|
||||
for (auto& listener : mActionListeners) {
|
||||
listener->DidDeleteText(deleteCharData, deleteCharOffset, 1, rv);
|
||||
}
|
||||
} else {
|
||||
for (auto& listener : mActionListeners) {
|
||||
listener->DidDeleteNode(deleteNode->AsDOMNode(), rv);
|
||||
}
|
||||
// Notify nsIEditActionListener::DidDelete[Selection|Text|Node]
|
||||
{
|
||||
AutoActionListenerArray listeners(mActionListeners);
|
||||
if (!deleteNode) {
|
||||
for (auto& listener : mActionListeners) {
|
||||
listener->DidDeleteSelection(selection);
|
||||
}
|
||||
} else if (deleteCharData) {
|
||||
for (auto& listener : mActionListeners) {
|
||||
listener->DidDeleteText(deleteCharData, deleteCharOffset, 1, rv);
|
||||
}
|
||||
} else {
|
||||
for (auto& listener : mActionListeners) {
|
||||
listener->DidDeleteNode(deleteNode->AsDOMNode(), rv);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4291,12 +4294,11 @@ EditorBase::CreateTxnForInsertNode(nsIContent& aNode,
|
||||
return transaction.forget();
|
||||
}
|
||||
|
||||
nsresult
|
||||
EditorBase::CreateTxnForDeleteNode(nsINode* aNode,
|
||||
DeleteNodeTransaction** aTransaction)
|
||||
already_AddRefed<DeleteNodeTransaction>
|
||||
EditorBase::CreateTxnForDeleteNode(nsINode* aNode)
|
||||
{
|
||||
if (NS_WARN_IF(!aNode)) {
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
RefPtr<DeleteNodeTransaction> deleteNodeTransaction =
|
||||
@ -4304,11 +4306,9 @@ EditorBase::CreateTxnForDeleteNode(nsINode* aNode,
|
||||
// This should be OK because if currently it cannot delete the node,
|
||||
// it should never be able to undo/redo.
|
||||
if (!deleteNodeTransaction->CanDoIt()) {
|
||||
return NS_ERROR_FAILURE;
|
||||
return nullptr;
|
||||
}
|
||||
deleteNodeTransaction.forget(aTransaction);
|
||||
|
||||
return NS_OK;
|
||||
return deleteNodeTransaction.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<CompositionTransaction>
|
||||
@ -4343,22 +4343,20 @@ EditorBase::CreateTxnForRemoveStyleSheet(StyleSheet* aSheet)
|
||||
return transaction.forget();
|
||||
}
|
||||
|
||||
nsresult
|
||||
already_AddRefed<EditAggregateTransaction>
|
||||
EditorBase::CreateTxnForDeleteSelection(EDirection aAction,
|
||||
EditAggregateTransaction** aTransaction,
|
||||
nsINode** aNode,
|
||||
nsINode** aRemovingNode,
|
||||
int32_t* aOffset,
|
||||
int32_t* aLength)
|
||||
{
|
||||
MOZ_ASSERT(aTransaction);
|
||||
*aTransaction = nullptr;
|
||||
|
||||
RefPtr<Selection> selection = GetSelection();
|
||||
NS_ENSURE_STATE(selection);
|
||||
if (NS_WARN_IF(!selection)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Check whether the selection is collapsed and we should do nothing:
|
||||
if (selection->Collapsed() && aAction == eNone) {
|
||||
return NS_OK;
|
||||
if (NS_WARN_IF(selection->Collapsed() && aAction == eNone)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// allocate the out-param transaction
|
||||
@ -4367,7 +4365,9 @@ EditorBase::CreateTxnForDeleteSelection(EDirection aAction,
|
||||
|
||||
for (uint32_t rangeIdx = 0; rangeIdx < selection->RangeCount(); ++rangeIdx) {
|
||||
RefPtr<nsRange> range = selection->GetRangeAt(rangeIdx);
|
||||
NS_ENSURE_STATE(range);
|
||||
if (NS_WARN_IF(!range)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Same with range as with selection; if it is collapsed and action
|
||||
// is eNone, do nothing.
|
||||
@ -4379,16 +4379,22 @@ EditorBase::CreateTxnForDeleteSelection(EDirection aAction,
|
||||
} else if (aAction != eNone) {
|
||||
// we have an insertion point. delete the thing in front of it or
|
||||
// behind it, depending on aAction
|
||||
nsresult rv = CreateTxnForDeleteInsertionPoint(range, aAction,
|
||||
aggregateTransaction,
|
||||
aNode, aOffset, aLength);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
// XXX Odd, when there are two or more ranges, this returns the last
|
||||
// range information with aRemovingNode, aOffset and aLength.
|
||||
RefPtr<EditTransactionBase> deleteRangeTransaction =
|
||||
CreateTxnForDeleteRange(range, aAction,
|
||||
aRemovingNode, aOffset, aLength);
|
||||
// XXX When there are two or more ranges and at least one of them is
|
||||
// not editable, deleteRangeTransaction may be nullptr.
|
||||
// In such case, should we stop removing other ranges too?
|
||||
if (NS_WARN_IF(!deleteRangeTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
aggregateTransaction->AppendChild(deleteRangeTransaction);
|
||||
}
|
||||
}
|
||||
|
||||
aggregateTransaction.forget(aTransaction);
|
||||
|
||||
return NS_OK;
|
||||
return aggregateTransaction.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<DeleteTextTransaction>
|
||||
@ -4427,22 +4433,22 @@ EditorBase::CreateTxnForDeleteCharacter(nsGenericDOMDataNode& aData,
|
||||
|
||||
//XXX: currently, this doesn't handle edge conditions because GetNext/GetPrior
|
||||
//are not implemented
|
||||
nsresult
|
||||
EditorBase::CreateTxnForDeleteInsertionPoint(
|
||||
nsRange* aRange,
|
||||
EDirection aAction,
|
||||
EditAggregateTransaction* aTransaction,
|
||||
nsINode** aNode,
|
||||
int32_t* aOffset,
|
||||
int32_t* aLength)
|
||||
already_AddRefed<EditTransactionBase>
|
||||
EditorBase::CreateTxnForDeleteRange(nsRange* aRangeToDelete,
|
||||
EDirection aAction,
|
||||
nsINode** aRemovingNode,
|
||||
int32_t* aOffset,
|
||||
int32_t* aLength)
|
||||
{
|
||||
MOZ_ASSERT(aAction != eNone);
|
||||
|
||||
// get the node and offset of the insertion point
|
||||
nsCOMPtr<nsINode> node = aRange->GetStartParent();
|
||||
NS_ENSURE_STATE(node);
|
||||
nsCOMPtr<nsINode> node = aRangeToDelete->GetStartParent();
|
||||
if (NS_WARN_IF(!node)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int32_t offset = aRange->StartOffset();
|
||||
int32_t offset = aRangeToDelete->StartOffset();
|
||||
|
||||
// determine if the insertion point is at the beginning, middle, or end of
|
||||
// the node
|
||||
@ -4461,7 +4467,9 @@ EditorBase::CreateTxnForDeleteInsertionPoint(
|
||||
// we're backspacing from the beginning of the node. Delete the first
|
||||
// thing to our left
|
||||
nsCOMPtr<nsIContent> priorNode = GetPriorNode(node, true);
|
||||
NS_ENSURE_STATE(priorNode);
|
||||
if (NS_WARN_IF(!priorNode)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// there is a priorNode, so delete its last child (if chardata, delete the
|
||||
// last char). if it has no children, delete it
|
||||
@ -4470,34 +4478,37 @@ EditorBase::CreateTxnForDeleteInsertionPoint(
|
||||
static_cast<nsGenericDOMDataNode*>(priorNode.get());
|
||||
uint32_t length = priorNode->Length();
|
||||
// Bail out for empty chardata XXX: Do we want to do something else?
|
||||
NS_ENSURE_STATE(length);
|
||||
RefPtr<DeleteTextTransaction> transaction =
|
||||
if (NS_WARN_IF(!length)) {
|
||||
return nullptr;
|
||||
}
|
||||
RefPtr<DeleteTextTransaction> deleteTextTransaction =
|
||||
CreateTxnForDeleteCharacter(*priorNodeAsCharData, length, ePrevious);
|
||||
NS_ENSURE_STATE(transaction);
|
||||
|
||||
*aOffset = transaction->GetOffset();
|
||||
*aLength = transaction->GetNumCharsToDelete();
|
||||
aTransaction->AppendChild(transaction);
|
||||
} else {
|
||||
// priorNode is not chardata, so tell its parent to delete it
|
||||
RefPtr<DeleteNodeTransaction> transaction;
|
||||
nsresult rv =
|
||||
CreateTxnForDeleteNode(priorNode, getter_AddRefs(transaction));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
aTransaction->AppendChild(transaction);
|
||||
if (NS_WARN_IF(!deleteTextTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
*aOffset = deleteTextTransaction->GetOffset();
|
||||
*aLength = deleteTextTransaction->GetNumCharsToDelete();
|
||||
priorNode.forget(aRemovingNode);
|
||||
return deleteTextTransaction.forget();
|
||||
}
|
||||
|
||||
NS_ADDREF(*aNode = priorNode);
|
||||
|
||||
return NS_OK;
|
||||
// priorNode is not chardata, so tell its parent to delete it
|
||||
RefPtr<DeleteNodeTransaction> deleteNodeTransaction =
|
||||
CreateTxnForDeleteNode(priorNode);
|
||||
if (NS_WARN_IF(!deleteNodeTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
priorNode.forget(aRemovingNode);
|
||||
return deleteNodeTransaction.forget();
|
||||
}
|
||||
|
||||
if (aAction == eNext && isLast) {
|
||||
// we're deleting from the end of the node. Delete the first thing to our
|
||||
// right
|
||||
nsCOMPtr<nsIContent> nextNode = GetNextNode(node, true);
|
||||
NS_ENSURE_STATE(nextNode);
|
||||
if (NS_WARN_IF(!nextNode)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// there is a nextNode, so delete its first child (if chardata, delete the
|
||||
// first char). if it has no children, delete it
|
||||
@ -4506,93 +4517,96 @@ EditorBase::CreateTxnForDeleteInsertionPoint(
|
||||
static_cast<nsGenericDOMDataNode*>(nextNode.get());
|
||||
uint32_t length = nextNode->Length();
|
||||
// Bail out for empty chardata XXX: Do we want to do something else?
|
||||
NS_ENSURE_STATE(length);
|
||||
RefPtr<DeleteTextTransaction> transaction =
|
||||
if (NS_WARN_IF(!length)) {
|
||||
return nullptr;
|
||||
}
|
||||
RefPtr<DeleteTextTransaction> deleteTextTransaction =
|
||||
CreateTxnForDeleteCharacter(*nextNodeAsCharData, 0, eNext);
|
||||
NS_ENSURE_STATE(transaction);
|
||||
|
||||
*aOffset = transaction->GetOffset();
|
||||
*aLength = transaction->GetNumCharsToDelete();
|
||||
aTransaction->AppendChild(transaction);
|
||||
} else {
|
||||
// nextNode is not chardata, so tell its parent to delete it
|
||||
RefPtr<DeleteNodeTransaction> transaction;
|
||||
nsresult rv =
|
||||
CreateTxnForDeleteNode(nextNode, getter_AddRefs(transaction));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
aTransaction->AppendChild(transaction);
|
||||
if (NS_WARN_IF(!deleteTextTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
*aOffset = deleteTextTransaction->GetOffset();
|
||||
*aLength = deleteTextTransaction->GetNumCharsToDelete();
|
||||
nextNode.forget(aRemovingNode);
|
||||
return deleteTextTransaction.forget();
|
||||
}
|
||||
|
||||
NS_ADDREF(*aNode = nextNode);
|
||||
|
||||
return NS_OK;
|
||||
// nextNode is not chardata, so tell its parent to delete it
|
||||
RefPtr<DeleteNodeTransaction> deleteNodeTransaction =
|
||||
CreateTxnForDeleteNode(nextNode);
|
||||
if (NS_WARN_IF(!deleteNodeTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
nextNode.forget(aRemovingNode);
|
||||
return deleteNodeTransaction.forget();
|
||||
}
|
||||
|
||||
if (node->IsNodeOfType(nsINode::eDATA_NODE)) {
|
||||
RefPtr<nsGenericDOMDataNode> nodeAsCharData =
|
||||
static_cast<nsGenericDOMDataNode*>(node.get());
|
||||
// we have chardata, so delete a char at the proper offset
|
||||
RefPtr<DeleteTextTransaction> transaction =
|
||||
RefPtr<DeleteTextTransaction> deleteTextTransaction =
|
||||
CreateTxnForDeleteCharacter(*nodeAsCharData, offset, aAction);
|
||||
NS_ENSURE_STATE(transaction);
|
||||
|
||||
aTransaction->AppendChild(transaction);
|
||||
NS_ADDREF(*aNode = node);
|
||||
*aOffset = transaction->GetOffset();
|
||||
*aLength = transaction->GetNumCharsToDelete();
|
||||
} else {
|
||||
// we're either deleting a node or chardata, need to dig into the next/prev
|
||||
// node to find out
|
||||
nsCOMPtr<nsINode> selectedNode;
|
||||
if (aAction == ePrevious) {
|
||||
selectedNode = GetPriorNode(node, offset, true);
|
||||
} else if (aAction == eNext) {
|
||||
selectedNode = GetNextNode(node, offset, true);
|
||||
if (NS_WARN_IF(!deleteTextTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
while (selectedNode &&
|
||||
selectedNode->IsNodeOfType(nsINode::eDATA_NODE) &&
|
||||
!selectedNode->Length()) {
|
||||
// Can't delete an empty chardata node (bug 762183)
|
||||
if (aAction == ePrevious) {
|
||||
selectedNode = GetPriorNode(selectedNode, true);
|
||||
} else if (aAction == eNext) {
|
||||
selectedNode = GetNextNode(selectedNode, true);
|
||||
}
|
||||
}
|
||||
NS_ENSURE_STATE(selectedNode);
|
||||
|
||||
if (selectedNode->IsNodeOfType(nsINode::eDATA_NODE)) {
|
||||
RefPtr<nsGenericDOMDataNode> selectedNodeAsCharData =
|
||||
static_cast<nsGenericDOMDataNode*>(selectedNode.get());
|
||||
// we are deleting from a chardata node, so do a character deletion
|
||||
uint32_t position = 0;
|
||||
if (aAction == ePrevious) {
|
||||
position = selectedNode->Length();
|
||||
}
|
||||
RefPtr<DeleteTextTransaction> deleteTextTransaction =
|
||||
CreateTxnForDeleteCharacter(*selectedNodeAsCharData, position,
|
||||
aAction);
|
||||
NS_ENSURE_TRUE(deleteTextTransaction, NS_ERROR_NULL_POINTER);
|
||||
|
||||
aTransaction->AppendChild(deleteTextTransaction);
|
||||
*aOffset = deleteTextTransaction->GetOffset();
|
||||
*aLength = deleteTextTransaction->GetNumCharsToDelete();
|
||||
} else {
|
||||
RefPtr<DeleteNodeTransaction> deleteNodeTransaction;
|
||||
nsresult rv =
|
||||
CreateTxnForDeleteNode(selectedNode,
|
||||
getter_AddRefs(deleteNodeTransaction));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
NS_ENSURE_TRUE(deleteNodeTransaction, NS_ERROR_NULL_POINTER);
|
||||
|
||||
aTransaction->AppendChild(deleteNodeTransaction);
|
||||
}
|
||||
|
||||
NS_ADDREF(*aNode = selectedNode);
|
||||
*aOffset = deleteTextTransaction->GetOffset();
|
||||
*aLength = deleteTextTransaction->GetNumCharsToDelete();
|
||||
node.forget(aRemovingNode);
|
||||
return deleteTextTransaction.forget();
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
// we're either deleting a node or chardata, need to dig into the next/prev
|
||||
// node to find out
|
||||
nsCOMPtr<nsINode> selectedNode;
|
||||
if (aAction == ePrevious) {
|
||||
selectedNode = GetPriorNode(node, offset, true);
|
||||
} else if (aAction == eNext) {
|
||||
selectedNode = GetNextNode(node, offset, true);
|
||||
}
|
||||
|
||||
while (selectedNode &&
|
||||
selectedNode->IsNodeOfType(nsINode::eDATA_NODE) &&
|
||||
!selectedNode->Length()) {
|
||||
// Can't delete an empty chardata node (bug 762183)
|
||||
if (aAction == ePrevious) {
|
||||
selectedNode = GetPriorNode(selectedNode, true);
|
||||
} else if (aAction == eNext) {
|
||||
selectedNode = GetNextNode(selectedNode, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (NS_WARN_IF(!selectedNode)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (selectedNode->IsNodeOfType(nsINode::eDATA_NODE)) {
|
||||
RefPtr<nsGenericDOMDataNode> selectedNodeAsCharData =
|
||||
static_cast<nsGenericDOMDataNode*>(selectedNode.get());
|
||||
// we are deleting from a chardata node, so do a character deletion
|
||||
uint32_t position = 0;
|
||||
if (aAction == ePrevious) {
|
||||
position = selectedNode->Length();
|
||||
}
|
||||
RefPtr<DeleteTextTransaction> deleteTextTransaction =
|
||||
CreateTxnForDeleteCharacter(*selectedNodeAsCharData, position,
|
||||
aAction);
|
||||
if (NS_WARN_IF(!deleteTextTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
*aOffset = deleteTextTransaction->GetOffset();
|
||||
*aLength = deleteTextTransaction->GetNumCharsToDelete();
|
||||
selectedNode.forget(aRemovingNode);
|
||||
return deleteTextTransaction.forget();
|
||||
}
|
||||
|
||||
RefPtr<DeleteNodeTransaction> deleteNodeTransaction =
|
||||
CreateTxnForDeleteNode(selectedNode);
|
||||
if (NS_WARN_IF(!deleteNodeTransaction)) {
|
||||
return nullptr;
|
||||
}
|
||||
selectedNode.forget(aRemovingNode);
|
||||
return deleteNodeTransaction.forget();
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -112,6 +112,7 @@ class CreateElementTransaction;
|
||||
class DeleteNodeTransaction;
|
||||
class DeleteTextTransaction;
|
||||
class EditAggregateTransaction;
|
||||
class EditTransactionBase;
|
||||
class ErrorResult;
|
||||
class HTMLEditor;
|
||||
class InsertNodeTransaction;
|
||||
@ -313,24 +314,47 @@ protected:
|
||||
/**
|
||||
* Create a transaction for removing aNode from its parent.
|
||||
*/
|
||||
nsresult CreateTxnForDeleteNode(nsINode* aNode,
|
||||
DeleteNodeTransaction** aTransaction);
|
||||
already_AddRefed<DeleteNodeTransaction>
|
||||
CreateTxnForDeleteNode(nsINode* aNode);
|
||||
|
||||
nsresult CreateTxnForDeleteSelection(
|
||||
EDirection aAction,
|
||||
EditAggregateTransaction** aTransaction,
|
||||
nsINode** aNode,
|
||||
int32_t* aOffset,
|
||||
int32_t* aLength);
|
||||
|
||||
nsresult CreateTxnForDeleteInsertionPoint(
|
||||
nsRange* aRange,
|
||||
EDirection aAction,
|
||||
EditAggregateTransaction* aTransaction,
|
||||
nsINode** aNode,
|
||||
int32_t* aOffset,
|
||||
int32_t* aLength);
|
||||
/**
|
||||
* Create an aggregate transaction for delete selection. The result may
|
||||
* include DeleteNodeTransactions and/or DeleteTextTransactions as its
|
||||
* children.
|
||||
*
|
||||
* @param aAction The action caused removing the selection.
|
||||
* @param aRemovingNode The node to be removed.
|
||||
* @param aOffset The start offset of the range in aRemovingNode.
|
||||
* @param aLength The length of the range in aRemovingNode.
|
||||
* @return If it can remove the selection, returns an
|
||||
* aggregate transaction which has some
|
||||
* DeleteNodeTransactions and/or
|
||||
* DeleteTextTransactions as its children.
|
||||
*/
|
||||
already_AddRefed<EditAggregateTransaction>
|
||||
CreateTxnForDeleteSelection(EDirection aAction,
|
||||
nsINode** aNode,
|
||||
int32_t* aOffset,
|
||||
int32_t* aLength);
|
||||
|
||||
/**
|
||||
* Create a transaction for removing the nodes and/or text in aRange.
|
||||
*
|
||||
* @param aRangeToDelete The range to be removed.
|
||||
* @param aAction The action caused removing the range.
|
||||
* @param aRemovingNode The node to be removed.
|
||||
* @param aOffset The start offset of the range in aRemovingNode.
|
||||
* @param aLength The length of the range in aRemovingNode.
|
||||
* @return The transaction to remove the range. Its type
|
||||
* is DeleteNodeTransaction or
|
||||
* DeleteTextTransaction.
|
||||
*/
|
||||
already_AddRefed<EditTransactionBase>
|
||||
CreateTxnForDeleteRange(nsRange* aRangeToDelete,
|
||||
EDirection aAction,
|
||||
nsINode** aRemovingNode,
|
||||
int32_t* aOffset,
|
||||
int32_t* aLength);
|
||||
|
||||
/**
|
||||
* Create a transaction for inserting aStringToInsert into aTextNode. Never
|
||||
@ -938,11 +962,6 @@ public:
|
||||
|
||||
virtual nsresult InsertFromDrop(nsIDOMEvent* aDropEvent) = 0;
|
||||
|
||||
virtual already_AddRefed<nsIDOMNode> FindUserSelectAllNode(nsIDOMNode* aNode)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/**
|
||||
* GetIMESelectionStartOffsetIn() returns the start offset of IME selection in
|
||||
* the aTextNode. If there is no IME selection, returns -1.
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include "mozilla/Assertions.h" // for MOZ_ASSERT, etc.
|
||||
#include "mozilla/EditorBase.h" // for EditorBase
|
||||
#include "mozilla/dom/Element.h" // for Element, nsINode
|
||||
#include "nsAString.h" // for nsAString_internal::IsEmpty
|
||||
#include "nsAString.h" // for nsAString::IsEmpty
|
||||
#include "nsCOMPtr.h" // for nsCOMPtr, operator==, etc.
|
||||
#include "nsCaseTreatment.h"
|
||||
#include "nsDebug.h" // for NS_PRECONDITION, etc.
|
||||
|
@ -174,17 +174,6 @@ HTMLEditorEventListener::MouseDown(nsIDOMMouseEvent* aMouseEvent)
|
||||
// Select entire element clicked on if NOT within an existing selection
|
||||
// and not the entire body, or table-related elements
|
||||
if (element) {
|
||||
nsCOMPtr<nsIDOMNode> selectAllNode =
|
||||
htmlEditor->FindUserSelectAllNode(element);
|
||||
|
||||
if (selectAllNode) {
|
||||
nsCOMPtr<nsIDOMElement> newElement = do_QueryInterface(selectAllNode);
|
||||
if (newElement) {
|
||||
node = selectAllNode;
|
||||
element = newElement;
|
||||
}
|
||||
}
|
||||
|
||||
if (isContextClick && !HTMLEditUtils::IsImage(node)) {
|
||||
selection->Collapse(parent, offset);
|
||||
} else {
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "mozilla/Assertions.h" // for MOZ_ASSERT, etc.
|
||||
#include "mozilla/EditorUtils.h" // for EditorUtils
|
||||
#include "mozilla/dom/Selection.h" // for Selection
|
||||
#include "nsAString.h" // for nsAString_internal::Length
|
||||
#include "nsAString.h" // for nsAString::Length
|
||||
#include "nsCycleCollectionParticipant.h"
|
||||
#include "nsDebug.h" // for NS_ENSURE_TRUE, etc.
|
||||
#include "nsError.h" // for NS_OK, etc.
|
||||
|
@ -229,23 +229,6 @@ TextEditor::InsertFromDrop(nsIDOMEvent* aDropEvent)
|
||||
|
||||
bool isCollapsed = selection->Collapsed();
|
||||
|
||||
// Only the HTMLEditor::FindUserSelectAllNode returns a node.
|
||||
nsCOMPtr<nsIDOMNode> userSelectNode = FindUserSelectAllNode(newSelectionParent);
|
||||
if (userSelectNode) {
|
||||
// The drop is happening over a "-moz-user-select: all"
|
||||
// subtree so make sure the content we insert goes before
|
||||
// the root of the subtree.
|
||||
//
|
||||
// XXX: Note that inserting before the subtree matches the
|
||||
// current behavior when dropping on top of an image.
|
||||
// The decision for dropping before or after the
|
||||
// subtree should really be done based on coordinates.
|
||||
|
||||
newSelectionParent = GetNodeLocation(userSelectNode, &newSelectionOffset);
|
||||
|
||||
NS_ENSURE_TRUE(newSelectionParent, NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
// Check if mouse is in the selection
|
||||
// if so, jump through some hoops to determine if mouse is over selection (bail)
|
||||
// and whether user wants to copy selection or delete it
|
||||
|
@ -194,8 +194,7 @@ WSRunObject::InsertBreak(nsCOMPtr<nsINode>* aInOutParent,
|
||||
// have to (it would still not be significant after br), but it's
|
||||
// just more aesthetically pleasing to.
|
||||
nsresult rv = DeleteChars(*aInOutParent, *aInOutOffset,
|
||||
afterRun->mEndNode, afterRun->mEndOffset,
|
||||
eOutsideUserSelectAll);
|
||||
afterRun->mEndNode, afterRun->mEndOffset);
|
||||
NS_ENSURE_SUCCESS(rv, nullptr);
|
||||
} else if (afterRun->mType == WSType::normalWS) {
|
||||
// Need to determine if break at front of non-nbsp run. If so, convert
|
||||
@ -218,8 +217,7 @@ WSRunObject::InsertBreak(nsCOMPtr<nsINode>* aInOutParent,
|
||||
// Need to delete the trailing ws that is before insertion point, because it
|
||||
// would become significant after break inserted.
|
||||
nsresult rv = DeleteChars(beforeRun->mStartNode, beforeRun->mStartOffset,
|
||||
*aInOutParent, *aInOutOffset,
|
||||
eOutsideUserSelectAll);
|
||||
*aInOutParent, *aInOutOffset);
|
||||
NS_ENSURE_SUCCESS(rv, nullptr);
|
||||
} else if (beforeRun->mType == WSType::normalWS) {
|
||||
// Try to change an nbsp to a space, just to prevent nbsp proliferation
|
||||
@ -272,7 +270,7 @@ WSRunObject::InsertText(const nsAString& aStringToInsert,
|
||||
// would become significant after text inserted.
|
||||
nsresult rv =
|
||||
DeleteChars(*aInOutParent, *aInOutOffset, afterRun->mEndNode,
|
||||
afterRun->mEndOffset, eOutsideUserSelectAll);
|
||||
afterRun->mEndOffset);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else if (afterRun->mType == WSType::normalWS) {
|
||||
// Try to change an nbsp to a space, if possible, just to prevent nbsp
|
||||
@ -289,7 +287,7 @@ WSRunObject::InsertText(const nsAString& aStringToInsert,
|
||||
// it would become significant after text inserted.
|
||||
nsresult rv =
|
||||
DeleteChars(beforeRun->mStartNode, beforeRun->mStartOffset,
|
||||
*aInOutParent, *aInOutOffset, eOutsideUserSelectAll);
|
||||
*aInOutParent, *aInOutOffset);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else if (beforeRun->mType == WSType::normalWS) {
|
||||
// Try to change an nbsp to a space, if possible, just to prevent nbsp
|
||||
@ -1158,8 +1156,7 @@ WSRunObject::PrepareToDeleteRangePriv(WSRunObject* aEndObject)
|
||||
if (afterRun && (afterRun->mType & WSType::leadingWS)) {
|
||||
nsresult rv =
|
||||
aEndObject->DeleteChars(aEndObject->mNode, aEndObject->mOffset,
|
||||
afterRun->mEndNode, afterRun->mEndOffset,
|
||||
eOutsideUserSelectAll);
|
||||
afterRun->mEndNode, afterRun->mEndOffset);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
// adjust normal ws in afterRun if needed
|
||||
@ -1171,7 +1168,7 @@ WSRunObject::PrepareToDeleteRangePriv(WSRunObject* aEndObject)
|
||||
WSPoint point = aEndObject->GetCharAfter(aEndObject->mNode,
|
||||
aEndObject->mOffset);
|
||||
if (point.mTextNode && nsCRT::IsAsciiSpace(point.mChar)) {
|
||||
nsresult rv = aEndObject->ConvertToNBSP(point, eOutsideUserSelectAll);
|
||||
nsresult rv = aEndObject->ConvertToNBSP(point);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
}
|
||||
@ -1179,7 +1176,7 @@ WSRunObject::PrepareToDeleteRangePriv(WSRunObject* aEndObject)
|
||||
// trim before run of any trailing ws
|
||||
if (beforeRun && (beforeRun->mType & WSType::trailingWS)) {
|
||||
nsresult rv = DeleteChars(beforeRun->mStartNode, beforeRun->mStartOffset,
|
||||
mNode, mOffset, eOutsideUserSelectAll);
|
||||
mNode, mOffset);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else if (beforeRun && beforeRun->mType == WSType::normalWS && !mPRE) {
|
||||
if ((afterRun && (afterRun->mType & WSType::trailingWS)) ||
|
||||
@ -1195,7 +1192,7 @@ WSRunObject::PrepareToDeleteRangePriv(WSRunObject* aEndObject)
|
||||
getter_AddRefs(wsEndNode), &wsEndOffset);
|
||||
point.mTextNode = wsStartNode;
|
||||
point.mOffset = wsStartOffset;
|
||||
nsresult rv = ConvertToNBSP(point, eOutsideUserSelectAll);
|
||||
nsresult rv = ConvertToNBSP(point);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
}
|
||||
@ -1248,28 +1245,12 @@ nsresult
|
||||
WSRunObject::DeleteChars(nsINode* aStartNode,
|
||||
int32_t aStartOffset,
|
||||
nsINode* aEndNode,
|
||||
int32_t aEndOffset,
|
||||
AreaRestriction aAR)
|
||||
int32_t aEndOffset)
|
||||
{
|
||||
// MOOSE: this routine needs to be modified to preserve the integrity of the
|
||||
// wsFragment info.
|
||||
NS_ENSURE_TRUE(aStartNode && aEndNode, NS_ERROR_NULL_POINTER);
|
||||
|
||||
if (aAR == eOutsideUserSelectAll) {
|
||||
nsCOMPtr<nsIDOMNode> san =
|
||||
mHTMLEditor->FindUserSelectAllNode(GetAsDOMNode(aStartNode));
|
||||
if (san) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (aStartNode != aEndNode) {
|
||||
san = mHTMLEditor->FindUserSelectAllNode(GetAsDOMNode(aEndNode));
|
||||
if (san) {
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (aStartNode == aEndNode && aStartOffset == aEndOffset) {
|
||||
// Nothing to delete
|
||||
return NS_OK;
|
||||
@ -1436,20 +1417,12 @@ WSRunObject::GetCharBefore(const WSPoint &aPoint)
|
||||
}
|
||||
|
||||
nsresult
|
||||
WSRunObject::ConvertToNBSP(WSPoint aPoint, AreaRestriction aAR)
|
||||
WSRunObject::ConvertToNBSP(WSPoint aPoint)
|
||||
{
|
||||
// MOOSE: this routine needs to be modified to preserve the integrity of the
|
||||
// wsFragment info.
|
||||
NS_ENSURE_TRUE(aPoint.mTextNode, NS_ERROR_NULL_POINTER);
|
||||
|
||||
if (aAR == eOutsideUserSelectAll) {
|
||||
nsCOMPtr<nsIDOMNode> san =
|
||||
mHTMLEditor->FindUserSelectAllNode(GetAsDOMNode(aPoint.mTextNode));
|
||||
if (san) {
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
// First, insert an nbsp
|
||||
AutoTransactionsConserveSelection dontSpazMySelection(mHTMLEditor);
|
||||
nsAutoString nbspStr(nbsp);
|
||||
|
@ -308,11 +308,6 @@ protected:
|
||||
{}
|
||||
};
|
||||
|
||||
enum AreaRestriction
|
||||
{
|
||||
eAnywhere, eOutsideUserSelectAll
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the node which we will handle white-space under. This is the
|
||||
* closest block within the DOM subtree we're editing, or if none is
|
||||
@ -332,14 +327,12 @@ protected:
|
||||
nsresult PrepareToDeleteRangePriv(WSRunObject* aEndObject);
|
||||
nsresult PrepareToSplitAcrossBlocksPriv();
|
||||
nsresult DeleteChars(nsINode* aStartNode, int32_t aStartOffset,
|
||||
nsINode* aEndNode, int32_t aEndOffset,
|
||||
AreaRestriction aAR = eAnywhere);
|
||||
nsINode* aEndNode, int32_t aEndOffset);
|
||||
WSPoint GetCharAfter(nsINode* aNode, int32_t aOffset);
|
||||
WSPoint GetCharBefore(nsINode* aNode, int32_t aOffset);
|
||||
WSPoint GetCharAfter(const WSPoint& aPoint);
|
||||
WSPoint GetCharBefore(const WSPoint& aPoint);
|
||||
nsresult ConvertToNBSP(WSPoint aPoint,
|
||||
AreaRestriction aAR = eAnywhere);
|
||||
nsresult ConvertToNBSP(WSPoint aPoint);
|
||||
void GetAsciiWSBounds(int16_t aDir, nsINode* aNode, int32_t aOffset,
|
||||
dom::Text** outStartNode, int32_t* outStartOffset,
|
||||
dom::Text** outEndNode, int32_t* outEndOffset);
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "mozilla/Assertions.h" // for MOZ_ASSERT, etc
|
||||
#include "mozilla/dom/Selection.h"
|
||||
#include "mozilla/mozalloc.h" // for operator new, etc
|
||||
#include "nsAString.h" // for nsAString_internal::Length, etc
|
||||
#include "nsAString.h" // for nsAString::Length, etc
|
||||
#include "nsContentUtils.h" // for nsContentUtils
|
||||
#include "nsDebug.h" // for NS_ENSURE_TRUE, etc
|
||||
#include "nsDependentSubstring.h" // for Substring
|
||||
|
@ -156,14 +156,6 @@ AllowedImageSize(int32_t aWidth, int32_t aHeight)
|
||||
NS_WARNING("width or height too large");
|
||||
return false;
|
||||
}
|
||||
#if defined(XP_MACOSX)
|
||||
// CoreGraphics is limited to images < 32K in *height*, so clamp all surfaces
|
||||
// on the Mac to that height
|
||||
if (MOZ_UNLIKELY(aHeight > SHRT_MAX)) {
|
||||
NS_WARNING("image too big");
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -193,15 +193,15 @@ fuzzy(18,128) == downscale-32px.html?-bmp-in.ico downscale-32px-ref.html
|
||||
fuzzy(18,128) == downscale-32px.html?-png-in.ico downscale-32px-ref.html
|
||||
|
||||
# Test images taller or wider than 32767 pixels.
|
||||
fails-if(OSX) == huge-1.html?100x32768.png,100,100 huge-1.html?100x100.png,100,100
|
||||
fails-if(OSX) == huge-1.html?100x32768.png,100,32768 huge-1.html?100x100.png,100,32768
|
||||
== huge-1.html?100x32768.png,100,100 huge-1.html?100x100.png,100,100
|
||||
== huge-1.html?100x32768.png,100,32768 huge-1.html?100x100.png,100,32768
|
||||
== huge-1.html?32768x100.png,100,100 huge-1.html?100x100.png,100,100
|
||||
== huge-1.html?32768x100.png,32768,100 huge-1.html?100x100.png,32768,100
|
||||
fails-if(OSX) == huge-1.html?100x32768.gif,100,100 huge-1.html?100x100.gif,100,100
|
||||
fails-if(OSX) == huge-1.html?100x32768.gif,100,32768 huge-1.html?100x100.gif,100,32768
|
||||
== huge-1.html?100x32768.gif,100,100 huge-1.html?100x100.gif,100,100
|
||||
== huge-1.html?100x32768.gif,100,32768 huge-1.html?100x100.gif,100,32768
|
||||
== huge-1.html?32768x100.gif,100,100 huge-1.html?100x100.gif,100,100
|
||||
== huge-1.html?32768x100.gif,32768,100 huge-1.html?100x100.gif,32768,100
|
||||
fails-if(OSX) == huge-1.html?100x32768.jpg,100,100 huge-1.html?100x100.jpg,100,100
|
||||
fails-if(OSX) == huge-1.html?100x32768.jpg,100,32768 huge-1.html?100x100.jpg,100,32768
|
||||
== huge-1.html?100x32768.jpg,100,100 huge-1.html?100x100.jpg,100,100
|
||||
== huge-1.html?100x32768.jpg,100,32768 huge-1.html?100x100.jpg,100,32768
|
||||
== huge-1.html?32768x100.jpg,100,100 huge-1.html?100x100.jpg,100,100
|
||||
== huge-1.html?32768x100.jpg,32768,100 huge-1.html?100x100.jpg,32768,100
|
||||
|
@ -196,8 +196,7 @@ var ignoreFunctions = {
|
||||
// The nsScriptNameSpaceManager functions can't actually GC. They
|
||||
// just use a PLDHashTable which has function pointers, which makes the
|
||||
// analysis think maybe they can.
|
||||
"nsGlobalNameStruct* nsScriptNameSpaceManager::LookupNavigatorName(nsAString_internal*)": true,
|
||||
"nsGlobalNameStruct* nsScriptNameSpaceManager::LookupName(nsAString_internal*, uint16**)": true,
|
||||
"nsGlobalNameStruct* nsScriptNameSpaceManager::LookupName(nsAString*, uint16**)": true,
|
||||
|
||||
// Similar to heap snapshot mock classes, and GTests below. This posts a
|
||||
// synchronous runnable when a GTest fails, and we are pretty sure that the
|
||||
|
@ -1,11 +1,11 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.3",
|
||||
"size": 102421980,
|
||||
"visibility": "public",
|
||||
"digest": "f25292aa93dc449e0472eee511c0ac15b5f1a4272ab76cf53ce5d20dc57f29e83da49ae1a9d9e994192647f75e13ae60f75ba2ac3cb9d26d5f5d6cabf88de921",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.3",
|
||||
"size": 102421980,
|
||||
"visibility": "public",
|
||||
"digest": "f25292aa93dc449e0472eee511c0ac15b5f1a4272ab76cf53ce5d20dc57f29e83da49ae1a9d9e994192647f75e13ae60f75ba2ac3cb9d26d5f5d6cabf88de921",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -1,18 +1,18 @@
|
||||
[
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
{
|
||||
"version": "gcc 4.9.4 + PR64905",
|
||||
"size": 101297752,
|
||||
"digest": "42aa2e3fdd232b5e390472a788e7f7db71a1fee4221e260b6cb58c9a1d73e6cdd10afcbac137f7844290169cd6b561b424ecc92b159e9726b0ad5de3f478a8be",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gcc.tar.xz",
|
||||
"unpack": true
|
||||
},
|
||||
{
|
||||
"size": 12072532,
|
||||
"digest": "3915f8ec396c56a8a92e6f9695b70f09ce9d1582359d1258e37e3fd43a143bc974410e4cfc27f500e095f34a8956206e0ebf799b7287f0f38def0d5e34ed71c9",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gtk3.tar.xz",
|
||||
"setup": "setup.sh",
|
||||
"unpack": true
|
||||
}
|
||||
]
|
||||
|
@ -972,9 +972,12 @@ class Watchdog
|
||||
{
|
||||
AutoLockWatchdog lock(this);
|
||||
|
||||
// Gecko uses thread private for accounting and has to clean up at thread exit.
|
||||
// Therefore, even though we don't have a return value from the watchdog, we need to
|
||||
// join it on shutdown.
|
||||
mThread = PR_CreateThread(PR_USER_THREAD, WatchdogMain, this,
|
||||
PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD,
|
||||
PR_UNJOINABLE_THREAD, 0);
|
||||
PR_JOINABLE_THREAD, 0);
|
||||
if (!mThread)
|
||||
NS_RUNTIMEABORT("PR_CreateThread failed!");
|
||||
|
||||
@ -997,10 +1000,13 @@ class Watchdog
|
||||
|
||||
// Wake up the watchdog, and wait for it to call us back.
|
||||
PR_NotifyCondVar(mWakeup);
|
||||
PR_WaitCondVar(mWakeup, PR_INTERVAL_NO_TIMEOUT);
|
||||
MOZ_ASSERT(!mShuttingDown);
|
||||
}
|
||||
|
||||
PR_JoinThread(mThread);
|
||||
|
||||
// The thread sets mShuttingDown to false as it exits.
|
||||
MOZ_ASSERT(!mShuttingDown);
|
||||
|
||||
// Destroy state.
|
||||
mThread = nullptr;
|
||||
PR_DestroyCondVar(mWakeup);
|
||||
@ -1039,7 +1045,6 @@ class Watchdog
|
||||
{
|
||||
MOZ_ASSERT(!NS_IsMainThread());
|
||||
mShuttingDown = false;
|
||||
PR_NotifyCondVar(mWakeup);
|
||||
}
|
||||
|
||||
int32_t MinScriptRunTimeSeconds()
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user