Compare commits
727 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e4a7658a33 | |||
| 8e68707706 | |||
| 83b7f5819b | |||
| e8ca2065b1 | |||
| 1fe887bab3 | |||
| 6ba77014bc | |||
| 6a1723b415 | |||
| cb31410dd9 | |||
| 53e9d24d40 | |||
| 3b00ade521 | |||
| 19600a6f2d | |||
| f4df97f9b0 | |||
| 4651126fc1 | |||
| f544f41145 | |||
| 478a6dbdc5 | |||
| e87be3df2a | |||
| cbcae353a3 | |||
| 29d586353c | |||
| c91409646a | |||
| 2361fc7899 | |||
| dc7b5ca396 | |||
| 1f5245b0bc | |||
| 8e51ea0134 | |||
| 567a284196 | |||
| 2fbb3e0087 | |||
| 396411f8b3 | |||
| 3c3b5ae705 | |||
| 07d7b0cad4 | |||
| ca861e2727 | |||
| c146a0bd11 | |||
| 1b165aebb5 | |||
| ed63f18cf1 | |||
| 5a2e631ed3 | |||
| ef662cdc72 | |||
| 66359941bf | |||
| 09d9b05a93 | |||
| e3772b28b9 | |||
| 9aeb80e6ab | |||
| aae1fc0016 | |||
| 64cf810c30 | |||
| 8bde28a4ac | |||
| ac98046a65 | |||
| cd8e1ea0f7 | |||
| 80393ceb04 | |||
| 31d48bf6dc | |||
| e6b93e216b | |||
| fbba53a8cb | |||
| 9c2e5f8c7d | |||
| 8933edb93a | |||
| ea569184e1 | |||
| a3766ffcc3 | |||
| 0343c8cc00 | |||
| b50f3d3d9e | |||
| cffad0c8ad | |||
| b8025f7666 | |||
| 78cbe72bbc | |||
| 06dbe62c82 | |||
| d51e4cf165 | |||
| cb30ac0bbc | |||
| 4c898f7d91 | |||
| b9f69e2b99 | |||
| bfde6d73e9 | |||
| 8c444713df | |||
| 7aeffa2ea9 | |||
| f723089308 | |||
| fca6e9d97e | |||
| 7be7bb2b22 | |||
| d1b24d25ce | |||
| b930b4cf46 | |||
| fb4f11d8b0 | |||
| e5cb1858a1 | |||
| d361ca9266 | |||
| f69b5597a8 | |||
| 6cc85beaa6 | |||
| d305add826 | |||
| d7250fcb1f | |||
| 0009a9e964 | |||
| 6bc671d645 | |||
| 65cbdfac1b | |||
| 83687f6324 | |||
| ccf0a0ba9f | |||
| 5c12e58cd7 | |||
| 8c97ea2fa2 | |||
| d697b42a28 | |||
| 82e8643a4f | |||
| b75c055e9e | |||
| b9d14baa16 | |||
| 9de8cbfbb9 | |||
| 1d608f599b | |||
| f7202d699f | |||
| 33d31ad8c3 | |||
| 06b6832cbb | |||
| 6d7b30d73d | |||
| e830a5bcd8 | |||
| 1b3f9f2e48 | |||
| d65ccc21f5 | |||
| 21622c9490 | |||
| 399bed93bd | |||
| a5d29b9992 | |||
| f9ddd0f0a4 | |||
| b552d41772 | |||
| 96bd0f4b4e | |||
| 3572bebbd9 | |||
| 37ed2455eb | |||
| ec933cf730 | |||
| 9cf2d765aa | |||
| 2f6e49bec0 | |||
| 0a772c8f04 | |||
| 91b0b4519e | |||
| 1c0f2d8c5c | |||
| de80fe9050 | |||
| 5e84b79a43 | |||
| a2b8edaba5 | |||
| 83b2606e58 | |||
| 1be28e4e0f | |||
| 98e3412d68 | |||
| 34be1a19be | |||
| 6168275e17 | |||
| 8a8f5572fc | |||
| 10b2662480 | |||
| eaa753c944 | |||
| 9c7f2cdfba | |||
| b0811049b1 | |||
| f87dc359f5 | |||
| 97d69e263d | |||
| 05dc48eac2 | |||
| 50f5ebfcff | |||
| 0b760ce465 | |||
| bedebb7c0e | |||
| 9447792e53 | |||
| 8512794b43 | |||
| 081ea0bedb | |||
| d2c00a10cf | |||
| 56b85a8cdd | |||
| 4e4ed390e0 | |||
| 86edd8c8a2 | |||
| 4b56a2f0bb | |||
| ff3c31637c | |||
| 9c80f19f2f | |||
| 66be5e288d | |||
| 7ebed4521d | |||
| 68b1b2fe37 | |||
| 89719f7243 | |||
| 4d76c937fe | |||
| 649110ed45 | |||
| f4bcd30434 | |||
| c2ff3f00f2 | |||
| 6494b98157 | |||
| c371cd11d0 | |||
| 1b22753811 | |||
| e7af96b625 | |||
| 0c04b83207 | |||
| 6b73cee79e | |||
| d7688cb1f5 | |||
| c03df9d246 | |||
| a1d01f8ff2 | |||
| a457c60f32 | |||
| 63996ce416 | |||
| 3247f3dc7d | |||
| f0afc0da36 | |||
| fc070b2d0d | |||
| 899476e81a | |||
| 518f1cca89 | |||
| 997fe4db12 | |||
| a5f6f8381a | |||
| 46d76dfaa3 | |||
| 00a1ce9dca | |||
| b6f3c15999 | |||
| 024fb03c33 | |||
| de8d0b28ea | |||
| 8cffccccce | |||
| 7f31a92ede | |||
| b47291ae87 | |||
| 8de231f5e9 | |||
| a10d222ce7 | |||
| 487befda65 | |||
| 28222e510f | |||
| a2a11d053b | |||
| 5e99af0993 | |||
| 94885de85b | |||
| bcd3aaeb92 | |||
| d0f7fc35a4 | |||
| 682d877960 | |||
| d901ba9067 | |||
| b47844b43a | |||
| 765a0eb727 | |||
| 3b97e2722f | |||
| f4a087d0ed | |||
| 52749ee1f0 | |||
| 642553a341 | |||
| 9c80781e3f | |||
| 8ef0a6f9f1 | |||
| 412aba0c8b | |||
| 532abbf032 | |||
| d8f99ada77 | |||
| 35cf2c95d4 | |||
| 19e694d8eb | |||
| 2ed9eaee8a | |||
| c03c3c118c | |||
| 8654aefd85 | |||
| 7f91096311 | |||
| ef66bee929 | |||
| 707cec56c5 | |||
| 8ef5cbd81b | |||
| 0290eb1d56 | |||
| 50f5d92d41 | |||
| 807435ca4b | |||
| 2679c4e15f | |||
| 6bb3acbe5a | |||
| 694b0f7b47 | |||
| db46e71516 | |||
| 486072bef8 | |||
| a33e358de8 | |||
| a7f62b13fa | |||
| 4f1e49bf69 | |||
| 55f940d372 | |||
| 8d8d7f2a8e | |||
| 9d151f0033 | |||
| fe62ee3abb | |||
| 18ed7237f0 | |||
| b9084a9990 | |||
| 6abeb976c6 | |||
| 33b40ce938 | |||
| d050701343 | |||
| 1870ce08bc | |||
| fbba6beee2 | |||
| 97d4c46a4e | |||
| 0cbc9879bb | |||
| ae1f80b8b5 | |||
| 358551feda | |||
| ca98b56ad7 | |||
| 5bbf902b47 | |||
| d654810d41 | |||
| 8172f291dd | |||
| 9e12014c07 | |||
| da79841201 | |||
| 00ace352e8 | |||
| 8cdfe0191f | |||
| f56f9b0ea8 | |||
| 4bc6fad83a | |||
| beb027f1a1 | |||
| 06b43c47c0 | |||
| 7ed5085f10 | |||
| c300751958 | |||
| e6f5bf76c2 | |||
| 88d8edce7e | |||
| 419be23c9c | |||
| 405e605ba3 | |||
| d7b1e7274f | |||
| 53baee1d5c | |||
| 0447e54b1c | |||
| 5b8cfa14ae | |||
| d35712e9f9 | |||
| f981200921 | |||
| 85c403bef5 | |||
| 4bd412aa9b | |||
| 268c638508 | |||
| 61b5c2e4b2 | |||
| 3aa2902cde | |||
| d7b66eca52 | |||
| 361e49d553 | |||
| 60bfdffdd6 | |||
| d7c0a3d9e1 | |||
| a7d3d6d848 | |||
| 26028cac20 | |||
| 33909d147a | |||
| 10d08f2ac9 | |||
| 5ae7a395a1 | |||
| 9de6df6157 | |||
| 6184dbb656 | |||
| 34180aa2d5 | |||
| 3a7744b41b | |||
| 53f7dc4915 | |||
| 53a901d023 | |||
| c522d36a66 | |||
| f7b20f97b8 | |||
| d033292784 | |||
| 26cd3c3cc8 | |||
| be3904cee8 | |||
| 0252f9d1c3 | |||
| 19dce3ba45 | |||
| 0bdf8558f6 | |||
| 0e45f06338 | |||
| 063b7509bd | |||
| 136aa3ce0e | |||
| a7f6659204 | |||
| f4024bba66 | |||
| e65c88cde2 | |||
| 27225df281 | |||
| 88e32fc72f | |||
| d61ea16db1 | |||
| adc1f5ffe6 | |||
| e8f8123c4c | |||
| 9788e159ae | |||
| d98d0f1697 | |||
| efb83255fd | |||
| f5993add6f | |||
| 24c960bed0 | |||
| dc9e8f6399 | |||
| e37440720f | |||
| 703a7cd3c2 | |||
| 5eb79949e9 | |||
| 77fd843b3d | |||
| 96ab4685e9 | |||
| 426e81b88b | |||
| 3c2dda5100 | |||
| fca5caaa00 | |||
| b0661f79aa | |||
| e44fcdf606 | |||
| 645fb6832c | |||
| f653b5420f | |||
| f159e42029 | |||
| a8aafc7064 | |||
| 3284bfd7f3 | |||
| da24febe6e | |||
| 3e5334e9b0 | |||
| 8dd9927539 | |||
| c3da573722 | |||
| f40fd82518 | |||
| ef894d847e | |||
| 7c08cf3190 | |||
| 6f94ae1500 | |||
| bd579fe907 | |||
| 87a2aa5f1e | |||
| 1133d48103 | |||
| dda5c9eeff | |||
| e7824f367b | |||
| 29a0277398 | |||
| 510a188dee | |||
| 7fa2d494c4 | |||
| 7e4950b184 | |||
| c832cf73aa | |||
| 9ff1a14e0e | |||
| 384ac486d9 | |||
| 2cddbefb63 | |||
| dae376500b | |||
| c4650d12bd | |||
| 18bc8eb5aa | |||
| 8eceb0d298 | |||
| 27d51f89c7 | |||
| d04252a5ad | |||
| 6b02258295 | |||
| 97169d6f17 | |||
| a874c9c628 | |||
| c28d77e7cd | |||
| 397a3e4970 | |||
| a4c578adde | |||
| db8b7ea05f | |||
| f33b3b39c0 | |||
| 1a825ac507 | |||
| 9e4d215191 | |||
| 1ae63bc489 | |||
| 15d8f31b26 | |||
| ca47c103f1 | |||
| 66cde07135 | |||
| f47b4c8f6c | |||
| 8ee45a38f0 | |||
| fc2c7ff4be | |||
| b6f4ac9b5f | |||
| f211872796 | |||
| 0e8653129a | |||
| 196079700a | |||
| ef036c107a | |||
| bcc8747305 | |||
| 3a0af38900 | |||
| 70511e2722 | |||
| 7f252c75b8 | |||
| 2a78aceac6 | |||
| 34bde83067 | |||
| 0a864f0cf3 | |||
| 768ae66a64 | |||
| e3531fb7b5 | |||
| 790a9273f9 | |||
| 78330a4d20 | |||
| 067843c4b9 | |||
| a688fde769 | |||
| 8ae039b77e | |||
| a328e5bf91 | |||
| 46a55da277 | |||
| 1746d8379b | |||
| f57cf92f41 | |||
| 54659f5c77 | |||
| 2badd22f41 | |||
| 21b7386a94 | |||
| 529b9bb482 | |||
| 3adb333022 | |||
| cc988a303e | |||
| 46349e1a70 | |||
| acff80a234 | |||
| bbe655d879 | |||
| 7cbace9cc9 | |||
| 9372899bfa | |||
| 4d42a74e66 | |||
| 76f7a64cb8 | |||
| 1af8cf8222 | |||
| 11a3b2facd | |||
| bd993d2f84 | |||
| cf9683174d | |||
| f617ca26bb | |||
| 41686fdf6c | |||
| c67a985847 | |||
| 639399925c | |||
| 2ded900188 | |||
| 3ae1803420 | |||
| 17b2d8c773 | |||
| 7025c98e7b | |||
| 6f4d3c4327 | |||
| 7833a6a79f | |||
| c2f2d69ba1 | |||
| 42b0312790 | |||
| cc42beeb5a | |||
| ea5669911b | |||
| b4c2da5474 | |||
| 6d7086d541 | |||
| db0dba66b2 | |||
| 5b58168999 | |||
| 4ed453d58e | |||
| 66a9116524 | |||
| cb7ac6ca5e | |||
| a2995b6c66 | |||
| ed383c8dfc | |||
| df9b900db6 | |||
| 8e611de605 | |||
| 8af4c36fd0 | |||
| abc4e0cdcf | |||
| b6dd32f683 | |||
| 0a437ff303 | |||
| f7f4c320a6 | |||
| 5813621fb9 | |||
| 56fc7407da | |||
| 220b902144 | |||
| c15eee22c6 | |||
| dcc3b76cda | |||
| 752d18ffca | |||
| 97559dd08a | |||
| 0e7363a87f | |||
| 6c62c2f599 | |||
| 884e419a7c | |||
| d7586dd4c2 | |||
| aada0419eb | |||
| 1ea04587d9 | |||
| 3d1dcd33d1 | |||
| bfdbd8199f | |||
| fe0810b048 | |||
| e1c1ac4bd9 | |||
| 7f7f221a79 | |||
| e57c556427 | |||
| dd57158ab5 | |||
| 99db192792 | |||
| fcbee854d0 | |||
| fae1336467 | |||
| 655d8f3791 | |||
| dcc852bf17 | |||
| dab3005c6f | |||
| ee6a54ffa2 | |||
| 601056406a | |||
| fd72ce12b4 | |||
| 6e45532f58 | |||
| 61da6b5e99 | |||
| e0156388e8 | |||
| 16f1d47bf2 | |||
| ee647344a1 | |||
| 40426ca936 | |||
| d1e9c2d1e3 | |||
| 3bd33cda99 | |||
| 609f62ac7a | |||
| ce84665e3a | |||
| 7dceaf6679 | |||
| b6bcd99dc8 | |||
| 9bc9509316 | |||
| 22ec01d565 | |||
| a16cae0342 | |||
| f17ff7168f | |||
| d3b22faf65 | |||
| 30e5a27eb4 | |||
| 0f720ec11d | |||
| 0ddee7f9d0 | |||
| 1e16e203dc | |||
| af986e8880 | |||
| 7e04c46070 | |||
| 166420dd86 | |||
| d7a2b43b07 | |||
| bea201a389 | |||
| d944116e3e | |||
| 4a1597c87f | |||
| f87bf2a861 | |||
| ef45cde290 | |||
| 752b1c3b27 | |||
| cf26d8547a | |||
| 1d78febafc | |||
| f483119a40 | |||
| abd2b73fca | |||
| 31ac365e6d | |||
| df8471a4dd | |||
| 18539f2540 | |||
| 7c1105a2b7 | |||
| 31298146f3 | |||
| 4e6eee220c | |||
| a7be3c9935 | |||
| f512473986 | |||
| 8166a37722 | |||
| adadb98482 | |||
| 25e760cd64 | |||
| 0ff8e17005 | |||
| c433c6b39e | |||
| 1c09c29104 | |||
| c1e9cc3c56 | |||
| 27296d24c5 | |||
| 030e635417 | |||
| 07711aaecc | |||
| 16ed8992e2 | |||
| 88e6dc7a05 | |||
| 28e8d46743 | |||
| 77ba1b723f | |||
| b0cc6e7c2f | |||
| e84e482130 | |||
| b5ae20b874 | |||
| 3ec81e3d1f | |||
| fb5436c287 | |||
| 01a628822b | |||
| 66e2c8e297 | |||
| 80661d68f2 | |||
| ef8aa3be75 | |||
| 6bc056e019 | |||
| 75deab139b | |||
| ae79f0a303 | |||
| 9b83068234 | |||
| fec2be9429 | |||
| 9f1b06ddd3 | |||
| ad2198e8b5 | |||
| 1791fdf0ef | |||
| 4ab705081e | |||
| 15b9dce1a9 | |||
| da3fc2ede2 | |||
| 385c585888 | |||
| 734b97beb0 | |||
| 3aa311a3c1 | |||
| df7d7f9c38 | |||
| 65be77665a | |||
| 44548659db | |||
| 10c4395efd | |||
| 27b2a4b5f2 | |||
| 6f54e7ff7f | |||
| cb6726b667 | |||
| 0964311fa1 | |||
| 2831d019f5 | |||
| 1cc58cad9b | |||
| bc9660f76e | |||
| f526caca50 | |||
| b6a98fb83e | |||
| af2b4b79a9 | |||
| a762b5eca2 | |||
| 3cc40344af | |||
| 278cdb7f69 | |||
| 0be03ebeb7 | |||
| c69f37a2de | |||
| b20ac8169a | |||
| 9e98d35b45 | |||
| 17f2781e07 | |||
| 0acf9cc0e6 | |||
| 70573d0559 | |||
| da239237f7 | |||
| 29f078d2c9 | |||
| 5704a21c97 | |||
| 57a31f7f97 | |||
| d685a58d74 | |||
| a44bf21582 | |||
| 8f8fc322eb | |||
| f03404ad9e | |||
| 78b5de3b44 | |||
| e78f49bec5 | |||
| ee8c69b73e | |||
| 4dfffb8c34 | |||
| fe77c891cd | |||
| e3ed4582d2 | |||
| 38c098edb6 | |||
| 12a6bb3b9b | |||
| 175cdc1a6b | |||
| 0ec7e4aee3 | |||
| ee63f72f3e | |||
| 4cbcfac0f4 | |||
| 641c95e64e | |||
| b646a9183c | |||
| 6e2ed6393e | |||
| af98174a19 | |||
| 1c8530ef02 | |||
| 366f9ec047 | |||
| 63343f18eb | |||
| 080e9dd22d | |||
| 268da1350a | |||
| e0abaa67e2 | |||
| 69f06f96cc | |||
| 62d479a3f3 | |||
| 315c75f2ac | |||
| 9fcf822140 | |||
| e7ac72a6a2 | |||
| da39d18ce0 | |||
| 63025ab3d6 | |||
| 1c38e09dcc | |||
| 2178e26220 | |||
| 310e2fa503 | |||
| 30c55e093c | |||
| d0037d1377 | |||
| 2a3aa296c0 | |||
| 10e83d3795 | |||
| 29b9590878 | |||
| a86bcf7983 | |||
| e28b25e04c | |||
| 1cc3ab83b9 | |||
| 0566c9f962 | |||
| 8c92d8ef5d | |||
| a8cac47125 | |||
| e191255c47 | |||
| 7eb752c2f7 | |||
| 40f2f1af5e | |||
| 214a83deda | |||
| 51b804f96d | |||
| 83e8340a70 | |||
| 6292d9b25d | |||
| 2f5e195c91 | |||
| af966d6d29 | |||
| 4ed136299b | |||
| 5237e67fa6 | |||
| 13cd601212 | |||
| bc847b53f5 | |||
| 4e0180d521 | |||
| 13e4b4e7f7 | |||
| 2278498b06 | |||
| 6533c74d0a | |||
| 9b0fe826de | |||
| 5d75d4525d | |||
| 59f2b8a764 | |||
| 68c21624e2 | |||
| bfc6f68978 | |||
| 78ef2e8304 | |||
| 5b85fc1690 | |||
| be8f6bbe7c | |||
| dfd420d1a5 | |||
| 4030b6eeec | |||
| d2b4d972e1 | |||
| 06d381b931 | |||
| c2ed5420a4 | |||
| fc789a49ac | |||
| bf75f52a52 | |||
| 090ae1f139 | |||
| cd2e110c17 | |||
| d63e887ef7 | |||
| ea0c9d4306 | |||
| e5a87ab535 | |||
| 3b9da05e67 | |||
| 5c5cf02249 | |||
| 8503e9c9c5 | |||
| 7f37ed906f | |||
| 15477dc384 | |||
| 06d35e65ce | |||
| 49e8afaf9a | |||
| 9903e811c2 | |||
| e467988a71 | |||
| 094a0e2391 | |||
| df8bf4e5e4 | |||
| 45f34a586a | |||
| ab2b9a48c7 | |||
| 82c9cac34c | |||
| 5cd2ac0187 | |||
| 0f9dd77687 | |||
| fb845cce12 | |||
| a29fae0893 | |||
| bd72b4e759 | |||
| 4f6e91336f | |||
| 69d497bacd | |||
| d3413c7afc | |||
| bb96ab9c37 | |||
| 6a10c1c970 | |||
| 1d385d2aaa | |||
| fd918408f4 | |||
| 08ba094748 | |||
| 5916bd2871 | |||
| 3700e6f461 | |||
| a99cd9c8ef | |||
| dad3214986 | |||
| 099d07bf1f | |||
| 93b6378b22 | |||
| 84dd73bff5 | |||
| b0c53063d2 | |||
| 1819e6cde9 | |||
| 54c598e22e | |||
| e499ff5711 | |||
| cd03ea7a59 | |||
| 46b155c90f | |||
| 31f3a76a1c | |||
| 4ffb587d9e | |||
| 4d61fa190c | |||
| 4a97e07d43 | |||
| 41df7a10dc | |||
| 5089091617 | |||
| 54ccf5b9ec | |||
| ee98034572 | |||
| d8fd47a353 | |||
| 02300630f6 | |||
| 3805f12e17 | |||
| 4a48a7debb | |||
| 26e6efd611 | |||
| 92ab56448c | |||
| ac02c45e81 | |||
| 1ec86c7fd2 | |||
| 8f80b527f5 | |||
| 337dee2061 | |||
| f2ddc7fd84 | |||
| f4597eae84 | |||
| 5887f991b3 | |||
| 1de3f42385 | |||
| 91ec0c4a6d | |||
| 0b1d6e9087 | |||
| 9e5e124083 | |||
| 970a7ea441 | |||
| f33038e5e9 | |||
| a0eff40975 | |||
| 9556de18bf | |||
| 2ee9682950 | |||
| 6282201b2c | |||
| e5c346b0c4 | |||
| 53c1b07d57 | |||
| f746dffa73 | |||
| 856cc452fb | |||
| f2a82cb6be | |||
| 2c4a325a51 | |||
| b92e44d8e5 |
@@ -1 +1,2 @@
|
|||||||
testpilot-metrics.js
|
lib/testpilot/*.js
|
||||||
|
coverage
|
||||||
@@ -1,22 +1,34 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
|
"parserOptions": {
|
||||||
|
"ecmaVersion": 2018
|
||||||
|
},
|
||||||
"env": {
|
"env": {
|
||||||
"browser": true,
|
"browser": true,
|
||||||
"es6": true,
|
"es6": true,
|
||||||
"node": true,
|
"node": true,
|
||||||
"webextensions": true
|
"webextensions": true
|
||||||
},
|
},
|
||||||
"extends": [
|
|
||||||
"eslint:recommended"
|
|
||||||
],
|
|
||||||
"globals": {
|
"globals": {
|
||||||
|
"Utils": true,
|
||||||
"CustomizableUI": true,
|
"CustomizableUI": true,
|
||||||
"CustomizableWidgets": true,
|
"CustomizableWidgets": true,
|
||||||
"SessionStore": true,
|
"SessionStore": true,
|
||||||
"Services": true
|
"Services": true,
|
||||||
|
"Components": true,
|
||||||
|
"XPCOMUtils": true,
|
||||||
|
"OS": true,
|
||||||
|
"ADDON_UNINSTALL": true,
|
||||||
|
"ADDON_DISABLE": true,
|
||||||
|
"proxifiedContainers": true,
|
||||||
|
"MozillaVPN": true,
|
||||||
|
"MozillaVPN_Background": true
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
"promise",
|
"promise",
|
||||||
"no-unescaped"
|
"no-unsanitized"
|
||||||
|
],
|
||||||
|
"extends": [
|
||||||
|
"eslint:recommended"
|
||||||
],
|
],
|
||||||
"root": true,
|
"root": true,
|
||||||
"rules": {
|
"rules": {
|
||||||
@@ -29,8 +41,18 @@ module.exports = {
|
|||||||
"promise/no-promise-in-callback": "warn",
|
"promise/no-promise-in-callback": "warn",
|
||||||
"promise/no-return-wrap": "error",
|
"promise/no-return-wrap": "error",
|
||||||
"promise/param-names": "error",
|
"promise/param-names": "error",
|
||||||
"no-unescaped/no-key-assignment": "error",
|
|
||||||
"no-unescaped/enforce": "error",
|
"no-unsanitized/method": [
|
||||||
|
"error"
|
||||||
|
],
|
||||||
|
"no-unsanitized/property": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"escape": {
|
||||||
|
"taggedTemplates": ["Utils.escaped"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
"eqeqeq": "error",
|
"eqeqeq": "error",
|
||||||
"indent": ["error", 2],
|
"indent": ["error", 2],
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<!--
|
||||||
|
Feel free to ignore this Issue template if you just want to ask or suggest something. If you experience an Issue then please provide all asked information.
|
||||||
|
|
||||||
|
Also please make sure that:
|
||||||
|
- "Firefox will: Never remember history" in the Firefox Preferences/Options under "Privacy & Security > History" is NOT selected
|
||||||
|
- You are NOT using Firefox in a Private Window
|
||||||
|
- You can see a grayed out but ticked Checkbox with the description "Enable Container Tabs" in the Firefox Preferences/Options under "Tabs"
|
||||||
|
-->
|
||||||
|
- Multi-Account Containers Version:
|
||||||
|
- Operating System + Version:
|
||||||
|
- Firefox Version:
|
||||||
|
- Other installed Add-ons + Version + Enabled/Disabled-Status:
|
||||||
|
<!-- To be able to copy & paste the full list of your Add-ons navigate to "about:support" and scroll down to "Extensions" -->
|
||||||
|
|
||||||
|
|
||||||
|
### Actual behavior
|
||||||
|
|
||||||
|
|
||||||
|
### Expected behavior
|
||||||
|
|
||||||
|
|
||||||
|
### Steps to reproduce
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
### Notes
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
name: Builds
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- production
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- production
|
||||||
|
schedule:
|
||||||
|
- cron: '0 2 * * *' # Daily at 2AM UTC
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
builds:
|
||||||
|
name: Builds
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Create the package
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
./bin/build-addon.sh nightly.xpi
|
||||||
|
|
||||||
|
- name: Uploading
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
name: ${{matrix.config.name}} Build
|
||||||
|
path: src/web-ext-artifacts
|
||||||
@@ -1,8 +1,18 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
|
package-lock.json
|
||||||
node_modules
|
node_modules
|
||||||
README.html
|
README.html
|
||||||
*.xpi
|
*.xpi
|
||||||
*.swp
|
*.sw*
|
||||||
.vimrc
|
.vimrc
|
||||||
.env
|
.env
|
||||||
addon.env
|
addon.env
|
||||||
|
|
||||||
|
src/web-ext-artifacts/*
|
||||||
|
|
||||||
|
# JetBrains IDE files
|
||||||
|
.idea
|
||||||
|
|
||||||
|
# IstanbulJS
|
||||||
|
.nyc_output
|
||||||
|
coverage
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[submodule "src/_locales"]
|
||||||
|
branch = main
|
||||||
|
path = src/_locales
|
||||||
|
url = https://github.com/mozilla-l10n/multi-account-containers-l10n.git
|
||||||
|
ignore=all
|
||||||
@@ -3,6 +3,7 @@ docs/
|
|||||||
test/
|
test/
|
||||||
.npm/
|
.npm/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
bin/
|
||||||
|
|
||||||
.env
|
.env
|
||||||
.eslintrc.js
|
.eslintrc.js
|
||||||
@@ -14,6 +15,8 @@ node_modules/
|
|||||||
.stylelintrc
|
.stylelintrc
|
||||||
.travis.yml
|
.travis.yml
|
||||||
*.xpi
|
*.xpi
|
||||||
|
*.md
|
||||||
.vimrc
|
.vimrc
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.gdb_history
|
.gdb_history
|
||||||
|
*.sw*
|
||||||
|
|||||||
@@ -5,13 +5,17 @@
|
|||||||
|
|
||||||
"extends": "stylelint-config-standard",
|
"extends": "stylelint-config-standard",
|
||||||
|
|
||||||
"ignoreFiles": ["webextension/css/*.min.css"],
|
"ignoreFiles": ["src/css/*.min.css"],
|
||||||
|
|
||||||
"rules": {
|
"rules": {
|
||||||
"declaration-block-no-duplicate-properties": true,
|
"declaration-block-no-duplicate-properties": true,
|
||||||
"order/declaration-block-properties-alphabetical-order": true,
|
"property-no-unknown": [
|
||||||
"property-blacklist": [
|
true, {
|
||||||
"/height/",
|
ignoreProperties:
|
||||||
|
["inset-block-end", "inset-block-start"]
|
||||||
|
}],
|
||||||
|
"property-disallowed-list": [
|
||||||
|
"/(min[-]|max[-])height/",
|
||||||
"/width/",
|
"/width/",
|
||||||
"/top/",
|
"/top/",
|
||||||
"/bottom/",
|
"/bottom/",
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
language: node_js
|
language: node_js
|
||||||
node_js:
|
node_js:
|
||||||
- "6.1"
|
- "lts/*"
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
irc:
|
irc:
|
||||||
- "ircs://irc.mozilla.org:6697/#testpilot-containers-bots"
|
- "ircs://irc.mozilla.org:6697/#testpilot-containers-bots"
|
||||||
|
|
||||||
|
install:
|
||||||
|
- npm install --legacy-peer-deps
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Community Participation Guidelines
|
||||||
|
|
||||||
|
This repository is governed by Mozilla's code of conduct and etiquette guidelines.
|
||||||
|
For more details, please read the
|
||||||
|
[Mozilla Community Participation Guidelines](https://www.mozilla.org/about/governance/policies/participation/).
|
||||||
|
|
||||||
|
## How to Report
|
||||||
|
For more information on how to report violations of the Community Participation Guidelines, please read our '[How to Report](https://www.mozilla.org/about/governance/policies/participation/reporting/)' page.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
## Project Specific Etiquette
|
||||||
|
|
||||||
|
In some cases, there will be additional project etiquette i.e.: (https://bugzilla.mozilla.org/page.cgi?id=etiquette.html).
|
||||||
|
Please update for your project.
|
||||||
|
-->
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
Everyone is welcome to contribute to containers. Reach out to team members if you have questions:
|
||||||
|
|
||||||
|
- Matrix chat: [#containers:mozilla.org](https://matrix.to/#/#containers:mozilla.org)
|
||||||
|
- Email: containers@mozilla.com
|
||||||
|
|
||||||
|
## Filing bugs
|
||||||
|
|
||||||
|
If you find a bug with containers, please file a issue.
|
||||||
|
|
||||||
|
Check first if the bug might already exist: https://github.com/mozilla/multi-account-containers/issues
|
||||||
|
|
||||||
|
[Open an issue](https://github.com/mozilla/multi-account-containers/issues/new)
|
||||||
|
|
||||||
|
1. Visit about:support
|
||||||
|
2. Click "Copy raw data to clipboard" and paste into the bug. Alternatively copy the following sections into the issue:
|
||||||
|
- Application Basics
|
||||||
|
- Nightly Features (if you are in nightly)
|
||||||
|
- Extensions
|
||||||
|
- Experimental Features
|
||||||
|
3. Include clear steps to reproduce the issue you have experienced.
|
||||||
|
4. Include screenshots if possible.
|
||||||
|
|
||||||
|
## Sending Pull Requests
|
||||||
|
|
||||||
|
Patches should be submitted as pull requests. When submitting patches as PRs:
|
||||||
|
|
||||||
|
- You agree to license your code under the project's open source license (MPL 2.0).
|
||||||
|
- Base your branch off the current master (see below for an example workflow).
|
||||||
|
- Add both your code and new tests if relevant.
|
||||||
|
- Run npm test to make sure all tests still pass.
|
||||||
|
- Please do not include merge commits in pull requests; include only commits with the new relevant code.
|
||||||
|
|
||||||
|
See the main [README](./README.md) for information on prerequisites, installing, running and testing.
|
||||||
@@ -1,80 +1,109 @@
|
|||||||
# Containers: Test Pilot Experiment
|
# Multi-Account Containers
|
||||||
|
|
||||||
[](https://testpilot.firefox.com/experiments/containers)
|
The Firefox Multi-Account Containers extension lets you carve out a separate box for each of your online lives – no more opening a different browser just to check your work email! [Learn More Here](https://blog.mozilla.org/firefox/introducing-firefox-multi-account-containers/)
|
||||||
|
|
||||||
[Embedded Web Extension](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Embedded_WebExtensions) to experiment with [Containers](https://blog.mozilla.org/tanvi/2016/06/16/contextual-identities-on-the-web/) in [Firefox Test Pilot](https://testpilot.firefox.com/) to learn:
|
[Available on addons.mozilla.org](https://addons.mozilla.org/firefox/addon/multi-account-containers/)
|
||||||
|
|
||||||
* Will a general Firefox audience understand the Containers feature?
|
For more info, see:
|
||||||
* Is the UI as currently implemented in Nightly clear or discoverable?
|
|
||||||
|
|
||||||
See [the Product Hypothesis Document for more
|
* [Test Pilot Product Hypothesis Document](https://docs.google.com/document/d/1WQdHTVXROk7dYkSFluc6_hS44tqZjIrG9I-uPyzevE8/edit#)
|
||||||
details](https://docs.google.com/document/d/1WQdHTVXROk7dYkSFluc6_hS44tqZjIrG9I-uPyzevE8/edit?ts=5824ba12#).
|
* [Shield Product Hypothesis Document](https://docs.google.com/document/d/1vMD-fH_5hGDDqNvpRZk12_RhCN2WAe4_yaBamaNdtik/edit#)
|
||||||
|
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
* node 7+ (for jpm)
|
* node 7+ (for jpm)
|
||||||
* Firefox 51+
|
* Firefox 57+
|
||||||
|
|
||||||
|
|
||||||
## Run it
|
|
||||||
|
|
||||||
See Development
|
|
||||||
|
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
### Development Environment
|
|
||||||
|
|
||||||
Add-on development is better with [a particular environment](https://developer.mozilla.org/en-US/Add-ons/Setting_up_extension_development_environment). One simple way to get that environment set up is to install the [DevPrefs add-on](https://addons.mozilla.org/en-US/firefox/addon/devprefs/). You can make a custom Firefox profile that includes the DevPrefs add-on, and use that profile when you run the code in this repository.
|
### Running Locally
|
||||||
|
|
||||||
|
#### Via WebExtensions API (web-ext)
|
||||||
|
|
||||||
1. Make a new profile by running `/path/to/firefox -P`, which launches the profile editor. "Create Profile" -- name it whatever you wish (e.g. 'addon_dev') and store it in the default location. It's probably best to deselect the option to "Use without asking," since you probably don't want to use this as your default profile.
|
1. Fetch the locales updating the git-submodules: `git submodule init && git submodule update --remote --depth 1 src/_locales`
|
||||||
|
2. Install the [web-ext](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext) tool.
|
||||||
|
3. Run `web-ext run -s src/`. This launches Firefox and installs the extension automatically.
|
||||||
|
|
||||||
2. Once you've created your profile, click "Start Firefox". A new instance of Firefox should launch. Go to Tools->Add-ons and search for "DevPrefs". Install it. Quit Firefox.
|
This tool provides some additional development features, such as [automatic reloading](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext#Automatic_extension_reloading).
|
||||||
|
|
||||||
3. Now you have a new, vanilla Firefox profile with the DevPrefs add-on installed. You can use your new profile with the code in _this_ repository like so:
|
#### Via about:debugging in Firefox
|
||||||
|
|
||||||
**Beta building**
|
1. Fetch the locales updating the git-submodules: `git submodule init && git submodule update --remote --depth 1 src/_locales`
|
||||||
|
2. Open the `about:debugging` page in Firefox.
|
||||||
|
3. Click on `This Firefox`.
|
||||||
|
4. Click on [Load Temporary Add-on](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox).
|
||||||
|
5. Select `src/manifest.json`.
|
||||||
|
|
||||||
To build this for 51 beta just using the downloaded version of beta will not work as XPI signature checking is disabled fully.
|
Here is a [video](https://www.youtube.com/watch?v=cer9EUKegG4) that demonstrates how to do this.
|
||||||
|
|
||||||
The only way to run the experiment is using an [unbranded version build](https://wiki.mozilla.org/Add-ons/Extension_Signing#Unbranded_Builds) or to build beta yourself:
|
|
||||||
|
|
||||||
1. [Download the mozilla-beta repo](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial#mozilla-beta_(prerelease_development_tree))
|
|
||||||
2. [Create a mozconfig file](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options) - probably optional
|
|
||||||
3. `cd <reponame>`
|
|
||||||
3. `./mach bootstrap`
|
|
||||||
4. `./mach build`
|
|
||||||
5. Follow the above instructions by creating the new profile via: `~/<reponame>/obj-x86_64-pc-linux-gnu/dist/bin/firefox -P` (Where "obj-x86_64-pc-linux-gnu" may be different depending on platform obj-...)
|
|
||||||
|
|
||||||
|
|
||||||
### Run with jpm
|
|
||||||
|
|
||||||
1. `git clone git@github.com:mozilla/testpilot-containers.git`
|
|
||||||
2. `cd testpilot-containers`
|
|
||||||
3. `npm install`
|
|
||||||
4. `./node_modules/.bin/jpm run -p /Path/To/Firefox/Profiles/{junk}.addon_dev -b FirefoxBeta` (where FirefoxBeta might be: ~/<reponame>/obj-x86_64-pc-linux-gnu/dist/bin/firefox or ~/<downloadedFirefoxBeta>/firefox)
|
|
||||||
|
|
||||||
Check out the [Browser Toolbox](https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox) for more information about debugging add-on code.
|
|
||||||
|
|
||||||
|
|
||||||
### Building .xpi
|
|
||||||
|
|
||||||
To build a local .xpi, use the plain [`jpm
|
|
||||||
xpi`](https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#jpm_xpi) command.
|
|
||||||
|
|
||||||
### Signing an .xpi
|
|
||||||
|
|
||||||
To sign an .xpi, use [`jpm
|
|
||||||
sign`](https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#jpm_sign)
|
|
||||||
command.
|
|
||||||
|
|
||||||
Note: You will need to be [an author on the AMO
|
|
||||||
add-on](https://addons.mozilla.org/en-US/developers/addon/containers-experiment/ownership).
|
|
||||||
|
|
||||||
### Testing
|
### Testing
|
||||||
TBD
|
|
||||||
|
|
||||||
|
* Install dependencies:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
* Run all tests:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm run test
|
||||||
|
```
|
||||||
|
|
||||||
|
* Only run the linter:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm run lint
|
||||||
|
```
|
||||||
|
|
||||||
|
There is a timeout test that sometimes fails on certain machines, so make sure to run the tests on your clone before you make any changes to see if you have this problem.
|
||||||
|
|
||||||
|
#### Add/update messages for translation
|
||||||
|
|
||||||
|
The `src/_locales` directory is a git repository like any other, so to make changes to the messages:
|
||||||
|
|
||||||
|
1. Make whatever changes you need in `src/_locales/en` as you work.
|
||||||
|
|
||||||
|
2. `cd src/_locales/en`
|
||||||
|
|
||||||
|
3. `git branch message-updates-yyyymmdd`
|
||||||
|
|
||||||
|
4. `git push -u origin message-updates-yyyymmdd`
|
||||||
|
|
||||||
|
You can then open a pull request from the `message-updates-yyyymmdd` branch to
|
||||||
|
|
||||||
|
[the l10n repo](https://github.com/mozilla-l10n/multi-account-containers-l10n/) `main` branch.
|
||||||
|
|
||||||
### Distributing
|
### Distributing
|
||||||
TBD
|
#### Make the new version
|
||||||
|
|
||||||
|
1. Bump the version number in `package.json` and `manifest.json`
|
||||||
|
2. Commit the version number bump
|
||||||
|
3. Create a git tag for the version: `git tag <version>`
|
||||||
|
4. Push the tag up to GitHub: `git push --tags`
|
||||||
|
|
||||||
|
#### Publish to AMO
|
||||||
|
|
||||||
|
1. `./bin/build-addon.sh`
|
||||||
|
2. [Upload the `.zip` to AMO](https://addons.mozilla.org/developers/addon/multi-account-containers/versions/submit/)
|
||||||
|
|
||||||
|
#### Publish to GitHub
|
||||||
|
|
||||||
|
Finally, we also publish the release to GitHub for those followers.
|
||||||
|
|
||||||
|
1. Download the signed `.xpi` from [the addon versions page](https://addons.mozilla.org/developers/addon/multi-account-containers/versions)
|
||||||
|
2. [Make the new release on
|
||||||
|
GitHub](https://github.com/mozilla/multi-account-containers/releases/new)
|
||||||
|
* Use the version number for "Tag version" and "Release title"
|
||||||
|
* Release notes: copy the output of `git log --no-merges --pretty=format:"%h %s" <previous-version>..<new-version>`
|
||||||
|
* Attach binaries: select the signed `.xpi` file
|
||||||
|
|
||||||
|
### Links
|
||||||
|
|
||||||
|
Facebook & Twitter icons CC-Attrib https://fairheadcreative.com.
|
||||||
|
|
||||||
|
- [License](./LICENSE.txt)
|
||||||
|
- [Contributing](./CONTRIBUTING.md)
|
||||||
|
- [Code Of Conduct](./CODE_OF_CONDUCT.md)
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
# addons-linter is not happy to see a `.github` folder in src/_locales.
|
||||||
|
# We need to do an horrible hack to run the test.
|
||||||
|
|
||||||
|
. $(dirname $0)/commons.sh
|
||||||
|
|
||||||
|
TMPDIR=/tmp/MAC_addonsLinter
|
||||||
|
|
||||||
|
print Y "Update the submodules..."
|
||||||
|
git submodule init || die
|
||||||
|
git submodule update --remote --depth 1 src/_locales || die
|
||||||
|
|
||||||
|
printn Y "Removing previous execution data... "
|
||||||
|
rm -rf $TMPDIR || die
|
||||||
|
print G "done."
|
||||||
|
|
||||||
|
printn Y "Creating a tmp folder ($TMPDIR)... "
|
||||||
|
mkdir $TMPDIR || die
|
||||||
|
print G "done."
|
||||||
|
|
||||||
|
printn Y "Copying data... "
|
||||||
|
cp -r src $TMPDIR || die
|
||||||
|
print G "done."
|
||||||
|
|
||||||
|
printn Y "Removing the github folder... "
|
||||||
|
rm -rf $TMPDIR/src/_locales/.github || die
|
||||||
|
print G "done."
|
||||||
|
|
||||||
|
print Y "Running the test..."
|
||||||
|
$(npm bin)/addons-linter $TMPDIR/src || die
|
||||||
@@ -1 +1,26 @@
|
|||||||
npm install && npm run deploy
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
. $(dirname $0)/commons.sh
|
||||||
|
|
||||||
|
print Y "Update the submodules..."
|
||||||
|
git submodule init || die
|
||||||
|
git submodule update --remote --depth 1 src/_locales || die
|
||||||
|
|
||||||
|
print Y "Installing dependencies..."
|
||||||
|
npm install --legacy-peer-deps || die
|
||||||
|
|
||||||
|
print Y "Running tests..."
|
||||||
|
npm test
|
||||||
|
|
||||||
|
print Y "Creating the final package..."
|
||||||
|
cd src || die
|
||||||
|
|
||||||
|
if [[ $# -gt 0 ]]; then
|
||||||
|
EXTRA_PARAMS="--filename $1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
$(npm bin)/web-ext build --overwrite-dest $EXTRA_PARAMS || die
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
printv() {
|
||||||
|
if [ -t 1 ]; then
|
||||||
|
NCOLORS=$(tput colors)
|
||||||
|
|
||||||
|
if test -n "$NCOLORS" && test "$NCOLORS" -ge 8; then
|
||||||
|
NORMAL="$(tput sgr0)"
|
||||||
|
RED="$(tput setaf 1)"
|
||||||
|
GREEN="$(tput setaf 2)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $2 = 'G' ]]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
echo $1 -e "${GREEN}$3${NORMAL}"
|
||||||
|
elif [[ $2 = 'Y' ]]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
echo $1 -e "${YELLOW}$3${NORMAL}"
|
||||||
|
elif [[ $2 = 'N' ]]; then
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
echo $1 -e "$3"
|
||||||
|
else
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
echo $1 -e "${RED}$3${NORMAL}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
print() {
|
||||||
|
printv '' "$1" "$2"
|
||||||
|
}
|
||||||
|
|
||||||
|
printn() {
|
||||||
|
printv "-n" "$1" "$2"
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
printv '' R "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
die() {
|
||||||
|
if [[ "$1" ]]; then
|
||||||
|
error "$1"
|
||||||
|
else
|
||||||
|
error Failed
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
@@ -1,261 +0,0 @@
|
|||||||
/* HACK: Custom Container vars do not propigate correctly
|
|
||||||
until the container tab is blurred and refocused,
|
|
||||||
adding the data-identity-color with the default hex
|
|
||||||
value, or chrome url path as an alternate selector mitiages this bug.*/
|
|
||||||
[data-identity-color="blue"],
|
|
||||||
[data-identity-color="#00a7e0"] {
|
|
||||||
--identity-tab-color: #37adff;
|
|
||||||
--identity-icon-color: #37adff;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-color="turquoise"],
|
|
||||||
[data-identity-color="#01bdad"] {
|
|
||||||
--identity-tab-color: #00c79a;
|
|
||||||
--identity-icon-color: #00c79a;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-color="green"],
|
|
||||||
[data-identity-color="#7dc14c"] {
|
|
||||||
--identity-tab-color: #51cd00;
|
|
||||||
--identity-icon-color: #51cd00;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-color="yellow"],
|
|
||||||
[data-identity-color="#ffcb00"] {
|
|
||||||
--identity-tab-color: #ffcb00;
|
|
||||||
--identity-icon-color: #ffcb00;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-color="orange"],
|
|
||||||
[data-identity-color="#f89c24"] {
|
|
||||||
--identity-tab-color: #ff9f00;
|
|
||||||
--identity-icon-color: #ff9f00;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-color="red"],
|
|
||||||
[data-identity-color="#d92215"] {
|
|
||||||
--identity-tab-color: #ff613d;
|
|
||||||
--identity-icon-color: #ff613d;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-color="pink"],
|
|
||||||
[data-identity-color="#ee5195"] {
|
|
||||||
--identity-tab-color: #ff4bda;
|
|
||||||
--identity-icon-color: #ff4bda;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-color="purple"],
|
|
||||||
[data-identity-color="#7a2f7a"] {
|
|
||||||
--identity-tab-color: #af51f5;
|
|
||||||
--identity-icon-color: #af51f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="fingerprint"],
|
|
||||||
[data-identity-icon="chrome://browser/skin/usercontext/personal.svg"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#fingerprint");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="briefcase"],
|
|
||||||
[data-identity-icon="chrome://browser/skin/usercontext/work.svg"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#briefcase");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="dollar"],
|
|
||||||
[data-identity-icon="chrome://browser/skin/usercontext/banking.svg"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#dollar");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="cart"],
|
|
||||||
[data-identity-icon="chrome://browser/skin/usercontext/cart.svg"],
|
|
||||||
[data-identity-icon="chrome://browser/skin/usercontext/shopping.svg"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#cart");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="circle"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#circle");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="gift"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#gift");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="vacation"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#vacation");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="food"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#food");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="fruit"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#fruit");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="pet"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#pet");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="tree"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#tree");
|
|
||||||
}
|
|
||||||
|
|
||||||
[data-identity-icon="chill"] {
|
|
||||||
--identity-icon: url("resource://testpilot-containers/data/usercontext.svg#chill");
|
|
||||||
}
|
|
||||||
|
|
||||||
#userContext-indicator {
|
|
||||||
height: 16px;
|
|
||||||
list-style-image: none !important;
|
|
||||||
vertical-align: middle;
|
|
||||||
width: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#userContext-label {
|
|
||||||
color: var(--identity-tab-color) !important;
|
|
||||||
margin-inline-end: 5px;
|
|
||||||
max-inline-size: 75px;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
#userContext-icons {
|
|
||||||
-moz-box-align: center;
|
|
||||||
align-items: center;
|
|
||||||
display: flex;
|
|
||||||
max-inline-size: 120px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#userContext-icons[data-identity-color=""] {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.userContext-icon,
|
|
||||||
.menuitem-iconic[data-usercontextid] > .menu-iconic-left > .menu-iconic-icon,
|
|
||||||
.subviewbutton[usercontextid] > .toolbarbutton-icon,
|
|
||||||
#userContext-indicator {
|
|
||||||
background-image: var(--identity-icon) !important;
|
|
||||||
background-position: center center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: contain;
|
|
||||||
fill: var(--identity-icon-color) !important;
|
|
||||||
filter: url(/img/filters.svg#fill);
|
|
||||||
filter: url(resource://testpilot-containers/data/filters.svg#fill);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* containers experiment */
|
|
||||||
|
|
||||||
/* reset nightly containers */
|
|
||||||
.tabbrowser-tab[usercontextid] {
|
|
||||||
background-image: none !important;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* special styles run through a psuedo-class off of
|
|
||||||
these elements so they need to be relatively positioned.
|
|
||||||
these styles address both regular and compact themes,
|
|
||||||
special cases are addressed below */
|
|
||||||
.tabbrowser-tab[usercontextid] .tab-background-middle,
|
|
||||||
#main-window[style*='compact'] .tabbrowser-tab[usercontextid] .tab-content,
|
|
||||||
#verticaltabs-box .tabbrowser-tab[usercontextid] .tab-content {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabbrowser-tab[usercontextid] .tab-background-middle::after,
|
|
||||||
#main-window[style*='compact'] .tabbrowser-tab[usercontextid] .tab-content::after {
|
|
||||||
background-color: var(--identity-tab-color);
|
|
||||||
bottom: 0;
|
|
||||||
content: '';
|
|
||||||
height: 2px;
|
|
||||||
left: 0;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabbrowser-tab[usercontextid] .tab-background-middle::after {
|
|
||||||
background-color: var(--identity-tab-color);
|
|
||||||
border-radius: 2px 2px 0 0;
|
|
||||||
bottom: 1px;
|
|
||||||
height: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabbrowser-tab[usercontextid]:not([visuallyselected="true"]) .tab-background-middle::after {
|
|
||||||
bottom: 2px;
|
|
||||||
height: 2px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabbrowser-tab[usercontextid][pinned="true"] .tab-background-middle::after {
|
|
||||||
left: -150%;
|
|
||||||
width: 400%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabs-newtab-button .toolbarbutton-icon[type="menu"] {
|
|
||||||
margin-inline-end: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabs-newtab-button .toolbarbutton-menu-dropmarker {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay {
|
|
||||||
--icon-size: 26px;
|
|
||||||
-moz-appearance: none;
|
|
||||||
background: transparent;
|
|
||||||
font-style: -moz-use-system-font;
|
|
||||||
inline-size: 180px;
|
|
||||||
margin-inline-start: -50px !important;
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay .panel-arrowcontent {
|
|
||||||
-moz-appearance: none !important;
|
|
||||||
background: none;
|
|
||||||
border: 0;
|
|
||||||
box-shadow: none;
|
|
||||||
display: block;
|
|
||||||
margin-block-end: 0;
|
|
||||||
margin-block-start: 2px;
|
|
||||||
padding-block-start: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay .panel-arrowcontent,
|
|
||||||
#new-tab-overlay menuitem {
|
|
||||||
inline-size: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay .panel-arrowbox {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay[hidden=true] {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay menuitem {
|
|
||||||
-moz-appearance: none;
|
|
||||||
background: white;
|
|
||||||
border-radius: 20px;
|
|
||||||
border: 0;
|
|
||||||
box-shadow: 0 0 7px #0004;
|
|
||||||
color: #4b4b4b;
|
|
||||||
margin-block-end: 5px;
|
|
||||||
padding-block-end: 10px;
|
|
||||||
padding-block-start: 10px;
|
|
||||||
padding-inline-end: 10px;
|
|
||||||
padding-inline-start: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay menuitem:hover {
|
|
||||||
background: #f2f2f2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#new-tab-overlay .menuitem-iconic[data-usercontextid] > .menu-iconic-left > .menu-iconic-icon {
|
|
||||||
block-height: var(--icon-size);
|
|
||||||
block-width: var(--icon-size);
|
|
||||||
}
|
|
||||||
|
|
||||||
.menuitem-iconic[data-usercontextid] > .menu-iconic-left {
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
@@ -1,255 +0,0 @@
|
|||||||
# METRICS
|
|
||||||
|
|
||||||
## Data Analysis
|
|
||||||
The collected data will primarily be used to answer the following questions.
|
|
||||||
Images are used for visualization and are not composed of actual data.
|
|
||||||
|
|
||||||
### Do users install and run this?
|
|
||||||
|
|
||||||
What is the overall engagement of the Containers experiment?
|
|
||||||
**This is the standard Daily Active User (DAU) and Monthly Active User (MAU) analysis.**
|
|
||||||
|
|
||||||
This captures data from the users who have the add-on installed, regardless of
|
|
||||||
whether they are actively interacting with it.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Immediate Questions
|
|
||||||
|
|
||||||
* Do people use the containers feature & how do people create new container tabs?
|
|
||||||
* Click to create new container tab
|
|
||||||
* \+ `entry-point` value: "tab-bar" or "pop-up"
|
|
||||||
* Do people who use the containers feature continue to use it?
|
|
||||||
* Retention: opening a second container tab (second tab in the same container, or a tab in a second container?)
|
|
||||||
* What containers do people use?
|
|
||||||
* userContextId
|
|
||||||
* \+ Number of tabs in the container (when should we measure this? on every tab open?)
|
|
||||||
* Do people edit their containers?
|
|
||||||
* Click on "Edit Containers"
|
|
||||||
* Click to edit a single container
|
|
||||||
* Click "OK"
|
|
||||||
* Click to delete a single container
|
|
||||||
* Click "OK"
|
|
||||||
* Click to add a container
|
|
||||||
* Click "OK"
|
|
||||||
* Do people sort the tabs?
|
|
||||||
* Click sort
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* Average number of container tabs when sort was clicked
|
|
||||||
* Do users show and hide container tabs?
|
|
||||||
* Click hide
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* \+ Number of hidden containers when clicked
|
|
||||||
* Click show
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* \+ Number of shown containers when clicked
|
|
||||||
* Do users move container tabs to new windows?
|
|
||||||
* Click move
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* Average number of container tabs when new window was clicked
|
|
||||||
* How many containers do users have hidden at the same time? (when should we measure this? each time a container is hidden?)
|
|
||||||
* Do users pin container tabs? (do we have existing Telemetry for pinning?)
|
|
||||||
* Do users visit more pages in container tabs than non-container tabs?
|
|
||||||
|
|
||||||
### Follow-up Questions
|
|
||||||
|
|
||||||
What are some follow-up questions we anticipate we will ask based on any of the
|
|
||||||
above answers/data?
|
|
||||||
|
|
||||||
* What is the average lifespan of a container tab? Is that longer or shorter than a regular tab? (if we don't have data on the latter, the former probably isn't worth gathering data on since we will have nothing to compare it to).
|
|
||||||
|
|
||||||
## Data Collection
|
|
||||||
|
|
||||||
### Server Side
|
|
||||||
There is currently no server side component to Containers.
|
|
||||||
|
|
||||||
### Client Side
|
|
||||||
Containers will use Test Pilot Telemetry with no batching of data. Details
|
|
||||||
of when pings are sent are below, along with examples of the `payload` portion
|
|
||||||
of a `testpilottest` telemetry ping for each scenario.
|
|
||||||
|
|
||||||
* The user clicks on a container name to open a tab in that container
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "open-tab",
|
|
||||||
"eventSource": ["tab-bar"|"pop-up"|"file-menu"]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Edit Containers" in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "edit-containers"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks OK after clicking on a container edit icon in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "edit-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks OK after clicking on a container delete icon in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "delete-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks OK after clicking to add a container in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "add-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks the sort button/icon in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "sort-tabs",
|
|
||||||
"shownContainersCount": <number-of-containers-with-tabs-shown>,
|
|
||||||
"totalContainerTabsCount": <number-of-all-container-tabs>,
|
|
||||||
"totalNonContainerTabsCount": <number-of-all-non-container-tabs>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Hide these container tabs" in the popup
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "hide-tabs",
|
|
||||||
"hiddenContainersCount": <number-of-containers-with-tabs-hidden>,
|
|
||||||
"shownContainersCount": <number-of-containers-with-tabs-shown>,
|
|
||||||
"totalContainersCount": <number-of-containers-with-tabs-hidden-or-shown>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Show these container tabs" in the popup
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "show-tabs",
|
|
||||||
"hiddenContainersCount": <number-of-containers-with-tabs-hidden>,
|
|
||||||
"shownContainersCount": <number-of-containers-with-tabs-shown>,
|
|
||||||
"totalContainersCount": <number-of-containers-with-tabs-hidden-or-shown>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Move tabs to a new window" in the popup
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "move-tabs-to-window"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* When a user encounters the disabled "move" feature because of incompatible add-ons
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "incompatible-addons-detected"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user closes a tab
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "page-requests-completed-per-tab",
|
|
||||||
"pageRequestCount": <pageRequestCount>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user chooses "Always Open in this Container" context menu option. (Note: We send two separate event names: one for assigning a site to a container, one for removing a site from a container.)
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "[added|removed]-container-assignment"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* Firefox prompts the user to reload a site into a container after the user picked "Always Open in this Container".
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "prompt-reload-page-in-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Take me there" to reload a site into a container after the user picked "Always Open in this Container".
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "click-to-reload-page-in-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* Firefox automatically reloads a site into a container after the user picked "Always Open in this Container".
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "auto-reload-page-in-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### A Redshift schema for the payload:
|
|
||||||
|
|
||||||
```lua
|
|
||||||
local schema = {
|
|
||||||
-- column name field type length attributes field name
|
|
||||||
{"uuid", "VARCHAR", 255, nil, "Fields[payload.uuid]"},
|
|
||||||
{"userContextId", "INTEGER", 255, nil, "Fields[payload.userContextId]"},
|
|
||||||
{"clickedContainerTabCount", "INTEGER", 255, nil, "Fields[payload.clickedContainerTabCount]"},
|
|
||||||
{"eventSource", "VARCHAR", 255, nil, "Fields[payload.eventSource]"},
|
|
||||||
{"event", "VARCHAR", 255, nil, "Fields[payload.event]"},
|
|
||||||
{"pageRequestCount", "INTEGER", 255, nil, "Fields[payload.pageRequestCount]"}
|
|
||||||
{"hiddenContainersCount", "INTEGER", 255, nil, "Fields[payload.hiddenContainersCount]"},
|
|
||||||
{"shownContainersCount", "INTEGER", 255, nil, "Fields[payload.shownContainersCount]"},
|
|
||||||
{"totalContainersCount", "INTEGER", 255, nil, "Fields[payload.totalContainersCount]"},
|
|
||||||
{"totalContainerTabsCount", "INTEGER", 255, nil, "Fields[payload.totalContainerTabsCount]"},
|
|
||||||
{"totalNonContainerTabsCount", "INTEGER", 255, nil, "Fields[payload.totalNonContainerTabsCount]"}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Valid data should be enforced on the server side:
|
|
||||||
|
|
||||||
* `eventSource` should be one of `tab-bar`, `pop-up`, or `file-menu`.
|
|
||||||
|
|
||||||
All Mozilla data is kept by default for 180 days and in accordance with our
|
|
||||||
privacy policies.
|
|
||||||
@@ -1,54 +1,51 @@
|
|||||||
{
|
{
|
||||||
"name": "testpilot-containers",
|
"name": "testpilot-containers",
|
||||||
"title": "Containers Experiment",
|
"title": "Multi-Account Containers",
|
||||||
"description": "Containers works by isolating cookie jars using separate origin-attributes defined visually by colored ‘Container Tabs’. This add-on is a modified version of the containers feature for Firefox Test Pilot.",
|
"description": "Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.",
|
||||||
"version": "2.1.1",
|
"version": "8.0.5",
|
||||||
"author": "Andrea Marchesini, Luke Crouch and Jonathan Kingston",
|
"author": "Andrea Marchesini, Luke Crouch, Lesley Norton, Kendall Werts, Maxx Crawford, Jonathan Kingston",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/mozilla/testpilot-containers/issues"
|
"url": "https://github.com/mozilla/multi-account-containers/issues"
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"addons-linter": "^0.15.14",
|
"addons-linter": "^3.23.0",
|
||||||
"deploy-txp": "^1.0.7",
|
"ajv": "^6.6.3",
|
||||||
"eslint": "^3.17.1",
|
"chai": "^4.2.0",
|
||||||
"eslint-plugin-no-unescaped": "^1.1.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-plugin-promise": "^3.4.0",
|
"eslint-plugin-no-unsanitized": "^4.0.0",
|
||||||
"htmllint-cli": "^0.0.5",
|
"eslint-plugin-promise": "^5.2.0",
|
||||||
"jpm": "^1.2.2",
|
"htmllint-cli": "0.0.7",
|
||||||
|
"json": ">=10.0.0",
|
||||||
|
"mocha": "^6.2.2",
|
||||||
"npm-run-all": "^4.0.0",
|
"npm-run-all": "^4.0.0",
|
||||||
"stylelint": "^7.9.0",
|
"nyc": "^15.0.0",
|
||||||
"stylelint-config-standard": "^16.0.0",
|
"sinon": "^7.5.0",
|
||||||
"stylelint-order": "^0.3.0",
|
"sinon-chai": "^3.3.0",
|
||||||
"testpilot-metrics": "^2.1.0"
|
"stylelint": "^13.5.0",
|
||||||
|
"stylelint-config-standard": "^20.0.0",
|
||||||
|
"stylelint-order": "^4.0.0",
|
||||||
|
"web-ext": "^5.4.1",
|
||||||
|
"webextensions-jsdom": "^1.2.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"homepage": "https://github.com/mozilla/multi-account-containers#readme",
|
||||||
"firefox": ">=51.0"
|
|
||||||
},
|
|
||||||
"permissions": {
|
|
||||||
"multiprocess": true
|
|
||||||
},
|
|
||||||
"hasEmbeddedWebExtension": true,
|
|
||||||
"homepage": "https://github.com/mozilla/testpilot-containers#readme",
|
|
||||||
"keywords": [
|
|
||||||
"jetpack"
|
|
||||||
],
|
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/mozilla/testpilot-containers.git"
|
"url": "git+https://github.com/mozilla/multi-account-containers.git"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "npm test && jpm xpi",
|
"webext": "web-ext run -s src/",
|
||||||
"deploy": "deploy-txp",
|
|
||||||
"lint": "npm-run-all lint:*",
|
"lint": "npm-run-all lint:*",
|
||||||
"lint:addon": "addons-linter webextension --self-hosted",
|
"lint:addon": "./bin/addons-linter.sh",
|
||||||
"lint:css": "stylelint webextension/css/*.css",
|
"lint:css": "stylelint src/css/*.css",
|
||||||
"lint:html": "htmllint webextension/*.html",
|
"lint:html": "htmllint *.html",
|
||||||
"lint:js": "eslint .",
|
"lint:js": "eslint .",
|
||||||
"package": "npm run build && mv testpilot-containers.xpi addon.xpi",
|
"package": "rm -rf src/web-ext-artifacts && npm run build && mv src/web-ext-artifacts/firefox_multi-account_containers-*.zip addon.xpi",
|
||||||
"test": "npm run lint"
|
"test": "npm run lint && npm run coverage",
|
||||||
},
|
"test:once": "mocha test/**/*.test.js",
|
||||||
"updateURL": "https://testpilot.firefox.com/files/@testpilot-containers/updates.json"
|
"test:watch": "npm run test:once -- --watch",
|
||||||
|
"coverage": "nyc --reporter=html --reporter=text mocha test/**/*.test.js --timeout 60000"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
|
<title data-i18n-message-id="confirmNavigationTitle"></title>
|
||||||
|
<link xmlns="http://www.w3.org/1999/xhtml" rel="stylesheet" href="chrome://browser/skin/aboutNetError.css" type="text/css" media="all" />
|
||||||
|
<script type="text/javascript" src="./js/i18n.js"></script>
|
||||||
|
<link rel="stylesheet" href="/css/confirm-page.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main>
|
||||||
|
<div class="title">
|
||||||
|
<h1 class="title-text" data-i18n-message-id="openThisSiteConfirmation"></h1>
|
||||||
|
</div>
|
||||||
|
<form id="redirect-form">
|
||||||
|
<p data-message-id="youAskedFireFox" data-message-arg="container-name"></p>
|
||||||
|
<div id="redirect-url"></div>
|
||||||
|
<p data-i18n-message-id="wouldYouStillLikeToOpenConfirmation"></p>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<label for="never-ask" class="check-label">
|
||||||
|
<input id="never-ask" type="checkbox" />
|
||||||
|
<span data-i18n-message-id="rememberMyDecision"></span>
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<div class="button-container">
|
||||||
|
<button id="deny" class="button" data-message-id="openInContainer" data-message-arg="current-container-name"></button>
|
||||||
|
<button id="confirm" class="button primary" autofocus data-message-id="openInContainer" data-message-arg="container-name"></button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<script src="js/utils.js"></script>
|
||||||
|
<script src="js/confirm-page.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
/* General Rules and Resets */
|
||||||
|
.title {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
main {
|
||||||
|
background: url(/img/onboarding-4.png) no-repeat;
|
||||||
|
background-position: 200px 0;
|
||||||
|
background-size: 120px;
|
||||||
|
margin-inline-start: -350px;
|
||||||
|
padding-inline-start: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
button .container-name,
|
||||||
|
#current-container-name {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 900px) {
|
||||||
|
main {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for a mid sized window we have enough for this but not our image */
|
||||||
|
.title {
|
||||||
|
background-image: url('chrome://global/skin/icons/info.svg');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
box-sizing: border-box;
|
||||||
|
font: message-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
#redirect-url,
|
||||||
|
#redirect-origin {
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
/* max-inline-size is needed to force this text smaller than the layout at a mid-sized window */
|
||||||
|
max-inline-size: 40rem;
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
|
#redirect-url {
|
||||||
|
background: #efedf0; /* Grey 20 */
|
||||||
|
border-radius: 2px;
|
||||||
|
line-height: 1.5;
|
||||||
|
padding-block-end: 0.5rem;
|
||||||
|
padding-block-start: 0.5rem;
|
||||||
|
padding-inline-end: 0.5rem;
|
||||||
|
padding-inline-start: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* stylelint-disable media-feature-name-no-unknown */
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
#redirect-url {
|
||||||
|
background: #38383d; /* Grey 70 */
|
||||||
|
color: #eee; /* White 20 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* stylelint-enable */
|
||||||
|
|
||||||
|
#redirect-url img {
|
||||||
|
block-size: 16px;
|
||||||
|
inline-size: 16px;
|
||||||
|
margin-inline-end: 6px;
|
||||||
|
offset-block-start: 3px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
dfn {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#deny,
|
||||||
|
#confirm {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-container > button {
|
||||||
|
min-inline-size: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.check-label {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
.container-notification {
|
||||||
|
align-items: center;
|
||||||
|
background: #efefef;
|
||||||
|
color: #003f07;
|
||||||
|
display: flex;
|
||||||
|
font: 12px sans-serif;
|
||||||
|
inline-size: 100vw;
|
||||||
|
justify-content: start;
|
||||||
|
offset-block-start: 0;
|
||||||
|
offset-inline-start: 0;
|
||||||
|
padding-block-end: 8px;
|
||||||
|
padding-block-start: 8px;
|
||||||
|
padding-inline-end: 8px;
|
||||||
|
padding-inline-start: 8px;
|
||||||
|
position: fixed;
|
||||||
|
text-align: start;
|
||||||
|
transform: translateY(-100%);
|
||||||
|
transition: transform 0.3s cubic-bezier(0.07, 0.95, 0, 1) 0.3s;
|
||||||
|
z-index: 999999999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-notification img {
|
||||||
|
block-size: 16px;
|
||||||
|
display: inline-block;
|
||||||
|
inline-size: 16px;
|
||||||
|
margin-inline-end: 3px;
|
||||||
|
}
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
body {
|
||||||
|
--grey10: #e7e7e7;
|
||||||
|
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
|
background: #fff;
|
||||||
|
color: rgb(74, 74, 79);
|
||||||
|
font-size: 13px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3:first-of-type {
|
||||||
|
margin-block-start: 2.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
label > span {
|
||||||
|
padding-inline-end: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-group {
|
||||||
|
margin-block-end: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding-block-end: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.settings-group p {
|
||||||
|
margin-inline-start: 24px;
|
||||||
|
margin-block: 4px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="checkbox"] {
|
||||||
|
margin-inline: 0 8px;
|
||||||
|
margin-block: 1px auto;
|
||||||
|
inline-size: 16px;
|
||||||
|
block-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin-inline: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.keyboard-shortcut {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
max-inline-size: 70%;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bold {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.moz-vpn-proxy-permissions {
|
||||||
|
margin-block: 0 2rem;
|
||||||
|
padding-block-end: 1rem;
|
||||||
|
border-block-end: 1px solid var(--grey10);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3.moz-vpn-proxy-permissions-title {
|
||||||
|
margin-block-start: 0;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-icon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning-icon.show-warning::before {
|
||||||
|
background-image: url("/img/warning.svg");
|
||||||
|
background-size: 24px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
block-size: 24px;
|
||||||
|
inline-size: 24px;
|
||||||
|
margin-inline-end: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.moz-vpn-proxy-permissions-title::before,
|
||||||
|
.moz-vpn-proxy-permissions-title::after {
|
||||||
|
background-color: var(--grey10);
|
||||||
|
content: "";
|
||||||
|
height: 1px;
|
||||||
|
flex: 1 1 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3.moz-vpn-proxy-permissions-title::before {
|
||||||
|
margin-inline-end: 2rem;
|
||||||
|
margin-inline-start: -50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3.moz-vpn-proxy-permissions-title::after {
|
||||||
|
margin-inline-start: 2rem;
|
||||||
|
margin-inline-end: -50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
body {
|
||||||
|
background: #23212a;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: rgb(177, 177, 179);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<!-- 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/. --><svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 160"><defs><style>.cls-1{fill:#6a57a5;}.cls-2{fill:#5a4a9e;}.cls-3{fill:#e7dfff;}</style></defs><title>account</title><path class="cls-1" d="M110,138.89A58.89,58.89,0,1,1,168.89,80,59,59,0,0,1,110,138.89Z"/><path class="cls-2" d="M110,130.27A50.27,50.27,0,1,1,160.27,80,50.33,50.33,0,0,1,110,130.27Z"/><circle class="cls-3" cx="110.39" cy="65.12" r="23.27" transform="translate(-12.01 27.1) rotate(-13.28)"/><path class="cls-3" d="M141.78,92.87c-8.2-9.46-19.58,3.28-31.39,3.28S87.2,83.41,79,92.87a7.83,7.83,0,0,0-.53,9.53,38.43,38.43,0,0,0,63.83,0A7.83,7.83,0,0,0,141.78,92.87Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 887 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<!-- 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/. --><svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 160"><defs><style>.cls-1{fill:#9f9fad;}.cls-2{fill:#5a4a9e;}.cls-3{fill:#6a57a5;}.cls-4{fill:#8f8f9d;}.cls-5{fill:none;stroke:#80808e;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.6px;}.cls-6{fill:#231f20;opacity:0.4;}.cls-7{fill:#ee3389;}.cls-8{fill:#7661aa;}</style></defs><title>Sync</title><path class="cls-1" d="M119.16,122.69v4.81H19.76v-4.81l12.83-3.21h72.15Z"/><rect class="cls-1" x="24.57" y="55.35" width="89.79" height="67.34" rx="3"/><path class="cls-2" d="M79.08,65l-49.7,49.7a1.61,1.61,0,0,0,1.6,1.61h77a1.62,1.62,0,0,0,1.61-1.61V65Z"/><polygon class="cls-3" points="29.38 64.97 29.38 114.67 79.08 64.97 29.38 64.97"/><path class="cls-2" d="M107.94,60.16H31a1.6,1.6,0,0,0-1.6,1.6V65h80.17V61.76A1.61,1.61,0,0,0,107.94,60.16Z"/><path class="cls-4" d="M108.74,121.09H30.18a.81.81,0,0,1,0-1.61h78.56a.81.81,0,1,1,0,1.61Z"/><line class="cls-5" x1="63.61" y1="124.18" x2="74.83" y2="124.18"/><path class="cls-6" d="M114.35,127.35H102.2V71.64a5.53,5.53,0,0,1,5.52-5.53h6.63Z"/><path class="cls-1" d="M200.24,134.72v4.81h-99.4v-4.81l12.82-3.21h72.15Z"/><rect class="cls-1" x="105.65" y="67.38" width="89.79" height="67.34" rx="3"/><path class="cls-2" d="M160.16,77l-49.71,49.7a1.61,1.61,0,0,0,1.61,1.6h77a1.6,1.6,0,0,0,1.6-1.6V77Z"/><polygon class="cls-3" points="110.45 77 110.45 126.7 160.16 77 110.45 77"/><path class="cls-2" d="M189,72.19h-77a1.61,1.61,0,0,0-1.61,1.6V77h80.17V73.79A1.6,1.6,0,0,0,189,72.19Z"/><path class="cls-4" d="M189.82,133.11H111.26a.8.8,0,1,1,0-1.6h78.56a.8.8,0,0,1,0,1.6Z"/><line class="cls-5" x1="144.69" y1="136.2" x2="155.91" y2="136.2"/><path class="cls-7" d="M136.85,50l-3-.55a3,3,0,0,0-3.51,2.37l-.27,1.45c-1.59,8.36-9.86,14.42-19.66,14.42a21,21,0,0,1-15.93-6.89H103a3,3,0,0,0,3-3v-3a3,3,0,0,0-3-3H84.86a3,3,0,0,0-3,3V73.64a3,3,0,0,0,3,3h3a3,3,0,0,0,3-3V69.72a30.8,30.8,0,0,0,19.57,6.87c14.15,0,26.15-9.11,28.54-21.66l.27-1.45A2.94,2.94,0,0,0,136.85,50Z"/><path class="cls-8" d="M84.06,47l3,.54a3.41,3.41,0,0,0,.55,0,3,3,0,0,0,3-2.41l.27-1.45h0c1.59-8.36,9.86-14.42,19.65-14.42a21,21,0,0,1,15.94,6.89H117.9a3,3,0,0,0-3,3v3a3,3,0,0,0,3,3h18.15a3,3,0,0,0,3-3V23.43a3,3,0,0,0-3-3h-3a3,3,0,0,0-3,3v3.92a30.82,30.82,0,0,0-19.58-6.88c-14.14,0-26.14,9.11-28.53,21.67l-.27,1.45A3,3,0,0,0,84.06,47Z"/></svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,3 @@
|
|||||||
|
<!-- 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/. --><svg width="32px" height="33px" viewBox="0 0 32 33" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch --> <desc>Created with Sketch.</desc> <defs> <linearGradient x1="74.0423237%" y1="18.5882821%" x2="0%" y2="100%" id="linearGradient-1"> <stop stop-color="#00FEFF" offset="0%"/> <stop stop-color="#3D85FF" offset="100%"/> </linearGradient> </defs> <g id="Specs" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="Header-Copy" transform="translate(-182.000000, -152.000000)" fill="url(#linearGradient-1)"> <path d="M205.58574,176.859518 L205.58574,169.287998 C205.58574,169.287998 205.800116,167.315137 207.086372,167.315137 C208.372629,167.315137 208.265441,169.394639 210.677171,169.394639 C211.909834,169.394639 214,168.754792 214,165.022352 C214,161.289912 211.909834,160.810027 210.677171,160.810027 C208.265441,160.810027 208.372629,162.782888 207.086372,162.782888 C205.800116,162.782888 205.58574,160.756707 205.58574,160.756707 L205.58574,157.664114 C205.58574,156.491061 204.621048,155.531291 203.44198,155.531291 L197.814608,155.531291 C197.814608,155.531291 195.992412,155.211368 195.992412,153.931674 C195.992412,152.65198 198.028985,152.545339 198.028985,150.145914 C198.028985,148.91954 197.332262,147 193.580682,147 C189.829101,147 189.293161,148.91954 189.293161,150.145914 C189.293161,152.545339 191.115357,152.65198 191.115357,153.931674 C191.115357,155.211368 189.293161,155.531291 189.293161,155.531291 L184.148135,155.531291 C182.969067,155.531291 182.004375,156.491061 182.004375,157.664114 L182.004375,161.823118 C182.004375,161.823118 181.789999,165.022352 184.362512,165.022352 C186.023926,165.022352 186.07752,162.836209 188.274874,162.836209 C189.346755,162.836209 190.418635,163.8493 190.418635,166.035443 C190.418635,168.274907 189.346755,169.394639 188.274874,169.394639 C186.131114,169.394639 186.023926,167.208496 184.362512,167.208496 C181.789999,167.208496 182.004375,170.301089 182.004375,170.301089 L182.004375,176.859518 C182.004375,178.032571 182.969067,178.992341 184.148135,178.992341 L191.115357,178.992341 C191.115357,178.992341 194.49178,179.205623 194.49178,176.646236 C194.49178,174.993299 192.348019,174.726696 192.348019,172.540552 C192.348019,171.474141 193.527088,170.141127 195.778036,170.141127 C198.028985,170.141127 199.315241,171.474141 199.315241,172.540552 C199.315241,174.673375 197.225074,174.993299 197.225074,176.646236 C197.225074,179.258944 200.601497,178.992341 200.601497,178.992341 L203.44198,178.992341 C204.621048,178.992341 205.58574,178.032571 205.58574,176.859518 Z" id="Shape-Copy-23" transform="translate(198.000000, 163.000000) rotate(-42.000000) translate(-198.000000, -163.000000) "/> </g> </g> </svg>
|
||||||
|
After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,3 @@
|
|||||||
|
<!-- 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/. --><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#ffffff" d="M6.414 8l4.293-4.293a1 1 0 0 0-1.414-1.414l-5 5a1 1 0 0 0 0 1.414l5 5a1 1 0 0 0 1.414-1.414z"></path></svg>
|
||||||
|
After Width: | Height: | Size: 426 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<!-- 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/. --><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="context-fill" d="M6.414 8l4.293-4.293a1 1 0 0 0-1.414-1.414l-5 5a1 1 0 0 0 0 1.414l5 5a1 1 0 0 0 1.414-1.414z"></path></svg>
|
||||||
|
After Width: | Height: | Size: 431 B |
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- 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/. -->
|
||||||
|
<svg width="5px" height="8px" viewBox="0 0 5 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
|
||||||
|
<title>Arrow</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs>
|
||||||
|
<path d="M5.00090934,9.5006316 C4.79840046,9.50099392 4.61567086,9.37916873 4.53812503,9.19209489 C4.4605792,9.00502105 4.5035325,8.78964579 4.64690934,8.6466316 L7.29490934,6.0006316 L4.64690934,3.3546316 C4.45140054,3.1591228 4.45140054,2.8421404 4.64690934,2.6466316 C4.84241814,2.4511228 5.15940054,2.4511228 5.35490934,2.6466316 L8.35490934,5.6466316 C8.44895104,5.74043586 8.50180313,5.86780434 8.50180313,6.0006316 C8.50180313,6.13345886 8.44895104,6.26082734 8.35490934,6.3546316 L5.35490934,9.3546316 C5.26095861,9.44834555 5.13360821,9.5008686 5.00090934,9.5006316 Z" id="path-1"></path>
|
||||||
|
</defs>
|
||||||
|
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.6">
|
||||||
|
<g id="Icons-/-12-/-Arrowhead-Right-12---Thin" transform="translate(-4.000000, -2.000000)">
|
||||||
|
<rect id="bouding-box" x="0" y="0" width="12" height="12"></rect>
|
||||||
|
<mask id="mask-2" fill="white">
|
||||||
|
<use xlink:href="#path-1"></use>
|
||||||
|
</mask>
|
||||||
|
<g id="Shape" fill-rule="nonzero"></g>
|
||||||
|
<g id="Color-/-Photon-/-Primary---Grey-90-80%" mask="url(#mask-2)" fill="#ffffff" fill-opacity="0.8" fill-rule="evenodd">
|
||||||
|
<rect id="Rectangle" x="0" y="0" width="12" height="12"></rect>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- 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/. -->
|
||||||
|
<svg width="5px" height="8px" viewBox="0 0 5 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
|
||||||
|
<title>Arrow</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs>
|
||||||
|
<path d="M5.00090934,9.5006316 C4.79840046,9.50099392 4.61567086,9.37916873 4.53812503,9.19209489 C4.4605792,9.00502105 4.5035325,8.78964579 4.64690934,8.6466316 L7.29490934,6.0006316 L4.64690934,3.3546316 C4.45140054,3.1591228 4.45140054,2.8421404 4.64690934,2.6466316 C4.84241814,2.4511228 5.15940054,2.4511228 5.35490934,2.6466316 L8.35490934,5.6466316 C8.44895104,5.74043586 8.50180313,5.86780434 8.50180313,6.0006316 C8.50180313,6.13345886 8.44895104,6.26082734 8.35490934,6.3546316 L5.35490934,9.3546316 C5.26095861,9.44834555 5.13360821,9.5008686 5.00090934,9.5006316 Z" id="path-1"></path>
|
||||||
|
</defs>
|
||||||
|
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.6">
|
||||||
|
<g id="Icons-/-12-/-Arrowhead-Right-12---Thin" transform="translate(-4.000000, -2.000000)">
|
||||||
|
<rect id="bouding-box" x="0" y="0" width="12" height="12"></rect>
|
||||||
|
<mask id="mask-2" fill="white">
|
||||||
|
<use xlink:href="#path-1"></use>
|
||||||
|
</mask>
|
||||||
|
<g id="Shape" fill-rule="nonzero"></g>
|
||||||
|
<g id="Color-/-Photon-/-Primary---Grey-90-80%" mask="url(#mask-2)" fill="#000000" fill-rule="evenodd">
|
||||||
|
<rect id="Rectangle" x="0" y="0" width="12" height="12"></rect>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M8.71054 11.1175L11.3005 13.7075C11.6905 14.0975 12.3205 14.0975 12.7105 13.7075L15.3005 11.1175C15.9305 10.4875 15.4805 9.4075 14.5905 9.4075H9.41054C8.52054 9.4075 8.08054 10.4875 8.71054 11.1175Z" fill="#6D6D6E"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 329 B |
|
After Width: | Height: | Size: 61 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
<!-- 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/. --><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
||||||
|
<path d="M17,12v2a1,1,0,0,1-1,1H2a1,1,0,0,1-1-1V12a1,1,0,0,1,1-1H1.142c2.3,0,2.536-1.773,2.874-4,0.351-2.316.083-4,3.13-4h3.707C13.917,3,13.647,4.684,14,7c0.34,2.228.582,4,2.89,4H16A1,1,0,0,1,17,12Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 518 B |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M13.2225 11.9895L17.7594 7.45261C17.9155 7.29095 18.0019 7.07443 18 6.84969C17.998 6.62495 17.9079 6.40997 17.7489 6.25105C17.59 6.09213 17.375 6.00199 17.1503 6.00003C16.9256 5.99808 16.709 6.08447 16.5474 6.24061L12.0105 10.7775L7.47368 6.24061C7.31202 6.08447 7.0955 5.99808 6.87076 6.00003C6.64602 6.00199 6.43104 6.09213 6.27212 6.25105C6.1132 6.40997 6.02305 6.62495 6.0211 6.84969C6.01914 7.07443 6.10554 7.29095 6.26168 7.45261L10.7985 11.9895L6.26168 16.5263C6.17981 16.6054 6.11451 16.7 6.06959 16.8045C6.02467 16.9091 6.00102 17.0216 6.00003 17.1354C5.99904 17.2492 6.02073 17.3621 6.06383 17.4674C6.10693 17.5728 6.17057 17.6685 6.25105 17.7489C6.33153 17.8294 6.42723 17.8931 6.53257 17.9362C6.63791 17.9793 6.75078 18.001 6.86459 18C6.9784 17.999 7.09088 17.9753 7.19545 17.9304C7.30003 17.8855 7.39461 17.8202 7.47368 17.7383L12.0105 13.2015L16.5474 17.7383C16.709 17.8945 16.9256 17.9809 17.1503 17.9789C17.375 17.9769 17.59 17.8868 17.7489 17.7279C17.9079 17.569 17.998 17.354 18 17.1292C18.0019 16.9045 17.9155 16.688 17.7594 16.5263L13.2225 11.9895Z" fill="#ffffff"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M13.2225 11.9895L17.7594 7.45261C17.9155 7.29095 18.0019 7.07443 18 6.84969C17.998 6.62495 17.9079 6.40997 17.7489 6.25105C17.59 6.09213 17.375 6.00199 17.1503 6.00003C16.9256 5.99808 16.709 6.08447 16.5474 6.24061L12.0105 10.7775L7.47368 6.24061C7.31202 6.08447 7.0955 5.99808 6.87076 6.00003C6.64602 6.00199 6.43104 6.09213 6.27212 6.25105C6.1132 6.40997 6.02305 6.62495 6.0211 6.84969C6.01914 7.07443 6.10554 7.29095 6.26168 7.45261L10.7985 11.9895L6.26168 16.5263C6.17981 16.6054 6.11451 16.7 6.06959 16.8045C6.02467 16.9091 6.00102 17.0216 6.00003 17.1354C5.99904 17.2492 6.02073 17.3621 6.06383 17.4674C6.10693 17.5728 6.17057 17.6685 6.25105 17.7489C6.33153 17.8294 6.42723 17.8931 6.53257 17.9362C6.63791 17.9793 6.75078 18.001 6.86459 18C6.9784 17.999 7.09088 17.9753 7.19545 17.9304C7.30003 17.8855 7.39461 17.8202 7.47368 17.7383L12.0105 13.2015L16.5474 17.7383C16.709 17.8945 16.9256 17.9809 17.1503 17.9789C17.375 17.9769 17.59 17.8868 17.7489 17.7279C17.9079 17.569 17.998 17.354 18 17.1292C18.0019 16.9045 17.9155 16.688 17.7594 16.5263L13.2225 11.9895Z" fill="black"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,5 @@
|
|||||||
|
<!-- 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/. --><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7 7">
|
||||||
|
<polygon fill="#FFFFFF" points="5.8,0 3.5,2.4 1.2,0 0,1.2 2.4,3.5 0.1,5.8 1.2,7 3.5,4.7 5.8,7 7,5.8 4.7,3.5 7,1.2"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 394 B |
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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/. -->
|
||||||
|
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 12 12" style="enable-background:new 0 0 12 12;" xml:space="preserve">
|
||||||
|
<path fill="#FFFFFF" d="M4.6,0.3h2.7c0.1,0,0.2,0.1,0.2,0.2v1H4.4v-1C4.4,0.4,4.5,0.3,4.6,0.3z M1.7,1.5h8.6c0.1,0,0.2,0.1,0.2,0.2
|
||||||
|
l0.2,1.4H1.3l0.2-1.4C1.5,1.6,1.6,1.5,1.7,1.5z M6,11.7H3.2L2.1,3.9H6h3.9l-1.1,7.8H6L6,11.7z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 779 B |
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg width="30px" height="30px" viewBox="0 0 30 30" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><script xmlns=""/>
|
||||||
|
<defs/>
|
||||||
|
<g id="All" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="hamburger-menu" fill="#858585">
|
||||||
|
<g id="Group" transform="translate(2.000000, 6.000000)">
|
||||||
|
<rect id="Rectangle-path" x="0" y="0" width="26" height="2"/>
|
||||||
|
<rect id="Rectangle-path" x="0" y="8" width="26" height="2"/>
|
||||||
|
<rect id="Rectangle-path" x="0" y="16" width="26" height="2"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 706 B |
@@ -1,4 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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/. -->
|
||||||
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
viewBox="0 0 20 20" style="enable-background:new 0 0 20 20;" xml:space="preserve">
|
||||||
|
Before Width: | Height: | Size: 883 B After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
<!-- 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/. -->
|
||||||
|
<svg data-name="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
||||||
|
<rect x="1" y="1" width="6" height="6" rx="1"/>
|
||||||
|
<rect x="1" y="9" width="6" height="6" rx="1"/>
|
||||||
|
<rect x="9" y="9" width="6" height="6" rx="1"/>
|
||||||
|
<path fill="context-fill" fill-opacity="context-fill-opacity" d="M14.92 1.62a1 1 0 0 0-0.54-0.54A1 1 0 0 0 14 1h-4a1 1 0 0 0 0 2h1.59l-2.3 2.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0L13 4.41V6a1 1 0 0 0 2 0V2a1 1 0 0 0-0.08-0.38z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 677 B |
|
Before Width: | Height: | Size: 342 B After Width: | Height: | Size: 342 B |
|
Before Width: | Height: | Size: 578 B After Width: | Height: | Size: 578 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 399 B After Width: | Height: | Size: 399 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 697 B |
|
After Width: | Height: | Size: 287 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 849 B |
|
After Width: | Height: | Size: 989 B |
|
After Width: | Height: | Size: 662 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 723 B |
|
After Width: | Height: | Size: 481 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 847 B |
|
After Width: | Height: | Size: 205 B |
|
After Width: | Height: | Size: 835 B |
|
After Width: | Height: | Size: 387 B |
|
After Width: | Height: | Size: 230 B |
|
After Width: | Height: | Size: 402 B |
|
After Width: | Height: | Size: 652 B |
|
After Width: | Height: | Size: 406 B |
|
After Width: | Height: | Size: 336 B |
|
After Width: | Height: | Size: 233 B |
|
After Width: | Height: | Size: 390 B |
|
After Width: | Height: | Size: 244 B |
|
After Width: | Height: | Size: 411 B |
|
After Width: | Height: | Size: 940 B |
|
After Width: | Height: | Size: 279 B |
|
After Width: | Height: | Size: 978 B |
|
After Width: | Height: | Size: 919 B |
|
After Width: | Height: | Size: 884 B |
|
After Width: | Height: | Size: 666 B |
|
After Width: | Height: | Size: 871 B |
|
After Width: | Height: | Size: 805 B |
|
After Width: | Height: | Size: 419 B |
|
After Width: | Height: | Size: 1000 B |
|
After Width: | Height: | Size: 270 B |
|
After Width: | Height: | Size: 214 B |
|
After Width: | Height: | Size: 669 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 445 B |
|
After Width: | Height: | Size: 706 B |
|
After Width: | Height: | Size: 602 B |
|
After Width: | Height: | Size: 389 B |
|
After Width: | Height: | Size: 356 B |
|
After Width: | Height: | Size: 220 B |
|
After Width: | Height: | Size: 233 B |
|
After Width: | Height: | Size: 961 B |
|
After Width: | Height: | Size: 394 B |
|
After Width: | Height: | Size: 341 B |
|
After Width: | Height: | Size: 410 B |
|
After Width: | Height: | Size: 245 B |