merge autoland to mozilla-central a=merge

This commit is contained in:
Carsten "Tomcat" Book 2017-03-16 15:34:56 +01:00
commit ac913a6db5
321 changed files with 5924 additions and 3685 deletions

View File

@ -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"
}
]

View File

@ -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"
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -1,6 +1,8 @@
[{
"size": 746441603,
"digest": "199236aefecc1657cdc1b791ec38c8184557ab9249aff9c63a74abf73edc1dc0ea36b19b558f34ca3b14f8a511b10bcf37408b19701929522b4dc22dbaddcbe9",
"algorithm": "sha512",
"filename": "emulator.zip"
}]
[
{
"size": 746441603,
"digest": "199236aefecc1657cdc1b791ec38c8184557ab9249aff9c63a74abf73edc1dc0ea36b19b558f34ca3b14f8a511b10bcf37408b19701929522b4dc22dbaddcbe9",
"algorithm": "sha512",
"filename": "emulator.zip"
}
]

View File

@ -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.

View File

@ -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";
}

View File

@ -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");
}

View 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

View File

@ -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);
});

View 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});
});

View 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;
}

View File

@ -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]

View File

@ -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);
}
};

View File

@ -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();
});
}

View File

@ -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',

View File

@ -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;

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -1,8 +1,8 @@
[
{
"size": 266240,
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
"algorithm": "sha512",
"filename": "mozmake.exe"
}
{
"size": 266240,
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
"algorithm": "sha512",
"filename": "mozmake.exe"
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -1,8 +1,8 @@
[
{
"size": 266240,
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
"algorithm": "sha512",
"filename": "mozmake.exe"
}
{
"size": 266240,
"digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
"algorithm": "sha512",
"filename": "mozmake.exe"
}
]

View File

@ -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
}
]

View File

@ -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, {

View File

@ -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.

View File

@ -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);
});
})();

View File

@ -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;
},
/**

View File

@ -640,11 +640,11 @@ getUserMedia.allow.accesskey = A
getUserMedia.dontAllow.label = Dont 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 tabs 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.

View File

@ -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);

View File

@ -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;
}

View File

@ -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.

View File

@ -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.

View File

@ -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
...
}
{

View File

@ -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

View File

@ -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.
*/

View File

@ -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>

View File

@ -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]

View File

@ -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
}
];

View File

@ -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();
});

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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,

View File

@ -62,6 +62,7 @@ const ConsoleTable = createClass({
GripMessageBody({
grip: item[key],
mode: MODE.SHORT,
useQuotes: false,
})
)
);

View File

@ -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
})

View File

@ -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) => {

View File

@ -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"];

View File

@ -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]

View File

@ -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");
});

View File

@ -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>

View File

@ -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

View File

@ -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();
}

View File

@ -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.
//

View File

@ -195,6 +195,10 @@ public:
{
return mPropertiesForAnimationsLevel;
}
nsCSSPropertyIDSet PropertiesForAnimationsLevel() const
{
return mPropertiesForAnimationsLevel;
}
private:
static nsIAtom* GetEffectSetPropertyAtom(CSSPseudoElementType aPseudoType);

View File

@ -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)

View File

@ -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

View File

@ -455,6 +455,7 @@ DOMIntersectionObserver::QueueIntersectionObserverEntry(Element* aTarget,
rootBounds.forget(),
boundingClientRect.forget(),
intersectionRect.forget(),
aIntersectionRect.isSome(),
aTarget, aIntersectionRatio);
mQueuedEntries.AppendElement(entry.forget());
}

View File

@ -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;
};

View File

@ -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);
});

View File

@ -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.

View File

@ -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;

View File

@ -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

View File

@ -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");
}

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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 {

View File

@ -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.

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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