From 8eaceaa231b91e73b9a0b11a717587cb161b36fd Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 5 Dec 2014 18:47:21 -0800 Subject: [PATCH 01/30] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/2d59f5e5e981 Author: autolander Desc: Bug 1108030 - merge pull request #26648 from zbraniecki:1108030-fix-bluetooth-transfer to mozilla-b2g:master ======== https://hg.mozilla.org/integration/gaia-central/rev/32e2e0de7146 Author: Zbigniew Braniecki Desc: Bug 1108030 - Fix receiving files regression from bug 1095109 --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index f0dc7ef2950b..0fb88a8ef14f 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "5f064a62ce5ee63c6f75ff3422a7472bec71f7bf", + "revision": "2d59f5e5e98165b227be01c9c8a9fd965a5e6ca3", "repo_path": "integration/gaia-central" } From a4289bec3f165dede751e9ac116bf2a629a700b3 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Fri, 5 Dec 2014 18:52:00 -0800 Subject: [PATCH 02/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index c779cacfe433..90c46d216263 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index a2d380e72b63..0a0c28ca050a 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index a2c3aab5d75b..1c130be460ed 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index c0e05a6251ef..82fc468dae04 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index a2d380e72b63..0a0c28ca050a 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 0776ad17fc88..95be9e49ed38 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 585aafdbc4b2..fdb99a013d9b 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index f0e1fd40e8a9..76347d08c34d 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 9162c01d8ec3..e149761cd676 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 6c5dd67ee210..7cfce5b5a7f6 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index e67d3b5e3b31..779190d63742 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From df3943d8e1a067a35d6f859cef5713100c844e8c Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 01:02:18 -0800 Subject: [PATCH 03/30] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/d50fc20a887b Author: Carsten Book Desc: Merge pull request #25155 from kumarrishav/Bug-1062034 Bug 1062034 - [1.4] Upon receiving empty message, notification containining "(null)"is displayed. r=felash ======== https://hg.mozilla.org/integration/gaia-central/rev/bae7bee89835 Author: kumarrishav Desc: Bug 1062034 - [1.4] Upon receiving empty message, notification containing "(null)" is displayed --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 0fb88a8ef14f..15aa52700d4f 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "2d59f5e5e98165b227be01c9c8a9fd965a5e6ca3", + "revision": "d50fc20a887bb216c805365ff897b599d288e9ac", "repo_path": "integration/gaia-central" } From d2acf87aaa7d8a4993c91e4fe99fd8ea990f19c3 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 01:06:57 -0800 Subject: [PATCH 04/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 90c46d216263..52277840dc7d 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 0a0c28ca050a..d644508bb2c7 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 1c130be460ed..bafc6cad7c09 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 82fc468dae04..21df1902bd04 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 0a0c28ca050a..d644508bb2c7 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 95be9e49ed38..faa2742a980e 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index fdb99a013d9b..5be443f1624a 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 76347d08c34d..9c7c2a942348 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index e149761cd676..9be23f2e11fd 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 7cfce5b5a7f6..24129bbc500b 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 779190d63742..9445dd572a35 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From dba2b0240bd7139e566847ff74848073b212c69f Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 02:02:18 -0800 Subject: [PATCH 05/30] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/b2fcc504db1e Author: Florin Strugariu Desc: Merge pull request #26654 from viorelaioia/revert_patch Revert "Bug 1097040 - Write a test to verify that the SMS auto-save draf... ======== https://hg.mozilla.org/integration/gaia-central/rev/5d6d115cd0f1 Author: Viorela Ioia Desc: Revert "Bug 1097040 - Write a test to verify that the SMS auto-save draft when message app terminated" This reverts commit 1bbe021f97fc92fcbfc0b334c91425861b04fe95. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 15aa52700d4f..e3024cddeec3 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "d50fc20a887bb216c805365ff897b599d288e9ac", + "revision": "b2fcc504db1e88488a398a374400c2cd50d4b3e7", "repo_path": "integration/gaia-central" } From c841e198c10bc9354f059dff35a6f1b8701d6e63 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 02:11:59 -0800 Subject: [PATCH 06/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 52277840dc7d..e614c89c9bed 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index d644508bb2c7..f711e962dd7e 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index bafc6cad7c09..6630e09bc6a7 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 21df1902bd04..34da34bca5fc 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index d644508bb2c7..f711e962dd7e 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index faa2742a980e..42a7bf0538e4 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 5be443f1624a..3490dbd7c8e7 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 9c7c2a942348..9d572b764374 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 9be23f2e11fd..b71b318fe4f4 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 24129bbc500b..bdcf95e375be 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 9445dd572a35..4db759057c26 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From c9efe20f23c9c0f6968be326c3182730808eba69 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 02:32:23 -0800 Subject: [PATCH 07/30] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/4964a8ea3f5d Author: lissyx Desc: Merge pull request #26449 from lissyx/bug1104644 Bug 1104644 - Force disable updates and tiles when running integration tests r=kgrandon ======== https://hg.mozilla.org/integration/gaia-central/rev/e07efc30fb2a Author: Alexandre Lissy Desc: Bug 1104644 - Force disable updates and tiles when running integration tests r=kgrandon When we are running Gaia integration tests, non local network connections are forbidden (bug 1030045). This is making Gaia integration tests to fail when ran in Mulet, because of update checking and because of tiles ping/listing. Gaia does a force check when FTU is completed, so we need to disable update checking. We also disable tiles URLs to avoid pinging and listing. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index e3024cddeec3..5ec930c88e7b 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "b2fcc504db1e88488a398a374400c2cd50d4b3e7", + "revision": "4964a8ea3f5dcd9139d5bdc3ad9c24a1f4ed0fe4", "repo_path": "integration/gaia-central" } From 6e02843c095807ce3392cca18167b5776ff84ded Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 02:42:03 -0800 Subject: [PATCH 08/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index e614c89c9bed..33817a7618bb 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index f711e962dd7e..309129ab544e 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 6630e09bc6a7..de97a42f4b47 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 34da34bca5fc..b383e52e17fe 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index f711e962dd7e..309129ab544e 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 42a7bf0538e4..1816774d8fb5 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 3490dbd7c8e7..4422189dd211 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 9d572b764374..359e8431c181 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index b71b318fe4f4..f4f735c339b3 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index bdcf95e375be..ccf66e6d41a3 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 4db759057c26..2938e5bdaea0 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From c574341e78cd14570f8f7cd94e36385bf24b9c4e Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 04:07:20 -0800 Subject: [PATCH 09/30] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/8c2bde60533a Author: Guillaume C. Marty Desc: Merge pull request #26610 from gmarty/Bug-1101113-system-dialog-rtl Bug 1101113 - (system-dialog-rtl) [META] [RTL] System Dialogs ======== https://hg.mozilla.org/integration/gaia-central/rev/1c16bab9e5f8 Author: Guillaume Marty Desc: Bug 1101113 - (system-dialog-rtl) [META] [RTL] System Dialogs --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 5ec930c88e7b..4a36b75bd04e 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "4964a8ea3f5dcd9139d5bdc3ad9c24a1f4ed0fe4", + "revision": "8c2bde60533aa63c4bd82e4ee0991d896233881e", "repo_path": "integration/gaia-central" } From 8093868290d08fbe2706cd0e5d54e211b3adbed4 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 04:11:59 -0800 Subject: [PATCH 10/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 33817a7618bb..68b64fe5ed46 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 309129ab544e..cc8f7251d84e 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index de97a42f4b47..c483bff884db 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index b383e52e17fe..5ddc2b31c8ba 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 309129ab544e..cc8f7251d84e 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 1816774d8fb5..27b104bceca7 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 4422189dd211..3a66e5bb1c1d 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 359e8431c181..7a0cfe7f93ad 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index f4f735c339b3..bd26ffa55ec4 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index ccf66e6d41a3..93ce4102b275 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 2938e5bdaea0..2b32ce355673 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From c586c3a193127b5baad1e22e7a1ecb978ab30b56 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 06:07:12 -0800 Subject: [PATCH 11/30] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/ac366b1ee189 Author: viorelaioia Desc: Merge pull request #26655 from viorelaioia/1097040 Bug 1097040 - Write a test to verify that the SMS auto-save draft when message app terminated ======== https://hg.mozilla.org/integration/gaia-central/rev/4951a090fc70 Author: Viorela Ioia Desc: Bug 1097040 - Write a test to verify that the SMS auto-save draft when message app terminated --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 4a36b75bd04e..9295797afec0 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "8c2bde60533aa63c4bd82e4ee0991d896233881e", + "revision": "ac366b1ee18968a9f0b514dd03412942ce6d9493", "repo_path": "integration/gaia-central" } From d199c9d2564ae9102e8f7d0b1fa65aa0ab3a5273 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 06:08:50 -0800 Subject: [PATCH 12/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 68b64fe5ed46..13d455371df8 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index cc8f7251d84e..34505dcb2db0 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index c483bff884db..c3e3f291662c 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 5ddc2b31c8ba..b21379caefd9 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index cc8f7251d84e..34505dcb2db0 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 27b104bceca7..41a70babfdef 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 3a66e5bb1c1d..73a860b85904 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 7a0cfe7f93ad..628187cea2a0 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index bd26ffa55ec4..2640a261245d 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 93ce4102b275..2efcb1da41b6 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 2b32ce355673..a6e3eef95065 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 26ae93792a67fc0766c293e6db40f0c4c13ddc1f Mon Sep 17 00:00:00 2001 From: Zac Campbell Date: Tue, 25 Nov 2014 14:25:23 +0000 Subject: [PATCH 13/30] Bug 1092132 - Update mozharness config for Gip to include chunking and gecko-log. r=jgriffin --- testing/config/mozharness/marionette.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/testing/config/mozharness/marionette.py b/testing/config/mozharness/marionette.py index 8c64e4b8cc82..81418f270d78 100644 --- a/testing/config/mozharness/marionette.py +++ b/testing/config/mozharness/marionette.py @@ -50,10 +50,13 @@ config = { "--testvars=%(testvars)s", "--profile=%(profile)s", "--symbols-path=%(symbols_path)s", + "--gecko-log=%(gecko_log)s", "--xml-output=%(xml_output)s", "--html-output=%(html_output)s", "--log-raw=%(raw_log_file)s", "--binary=%(binary)s", "--address=%(address)s", + "--total-chunks=%(total_chunks)s", + "--this-chunk=%(this_chunk)s", ], } From f0124dd892cc4b6ee55ef5a96b9f83f759bf0654 Mon Sep 17 00:00:00 2001 From: Tim Nguyen Date: Mon, 1 Dec 2014 08:38:00 +0100 Subject: [PATCH 14/30] Bug 1106569 - Part 1 : Move oneoff search styling to shared. r=dolske --- browser/themes/linux/jar.mn | 2 +- browser/themes/linux/searchbar.css | 176 +----------------------- browser/themes/osx/jar.mn | 2 +- browser/themes/osx/searchbar.css | 158 +-------------------- browser/themes/shared/searchbar.inc.css | 170 +++++++++++++++++++++++ browser/themes/windows/jar.mn | 4 +- browser/themes/windows/searchbar.css | 173 +---------------------- 7 files changed, 178 insertions(+), 507 deletions(-) create mode 100644 browser/themes/shared/searchbar.inc.css diff --git a/browser/themes/linux/jar.mn b/browser/themes/linux/jar.mn index cd4c54fcc895..7eacedb50739 100644 --- a/browser/themes/linux/jar.mn +++ b/browser/themes/linux/jar.mn @@ -66,7 +66,7 @@ browser.jar: skin/classic/browser/Privacy-16.png skin/classic/browser/privatebrowsing-mask.png skin/classic/browser/reload-stop-go.png - skin/classic/browser/searchbar.css +* skin/classic/browser/searchbar.css skin/classic/browser/search-pref.png (../shared/search/search-pref.png) skin/classic/browser/search-indicator.png (../shared/search/search-indicator.png) skin/classic/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) diff --git a/browser/themes/linux/searchbar.css b/browser/themes/linux/searchbar.css index 7568b3879134..e65a0c068996 100644 --- a/browser/themes/linux/searchbar.css +++ b/browser/themes/linux/searchbar.css @@ -67,178 +67,4 @@ menuitem[cmd="cmd_clearhistory"][disabled] { list-style-image: url("moz-icon://stock/gtk-clear?size=menu&state=disabled"); } - - - -.searchbar-search-button-container { - -moz-box-align: center; - padding: 2px 3px; - -moz-padding-end: 2px; -} - -.searchbar-search-button { - list-style-image: url("chrome://browser/skin/search-indicator.png"); - -moz-image-region: rect(0, 20px, 20px, 0); - margin: -2px -2px; -} - -.searchbar-search-button:hover { - -moz-image-region: rect(0, 40px, 20px, 20px); -} - -.searchbar-search-button:hover:active { - -moz-image-region: rect(0, 60px, 20px, 40px); -} - -searchbar[oneoffui] .search-go-button { - list-style-image: url("chrome://browser/skin/reload-stop-go.png"); - -moz-image-region: rect(0, 42px, 14px, 28px); -} - -searchbar[oneoffui] .search-go-button:hover { - -moz-image-region: rect(14px, 42px, 28px, 28px); -} - -searchbar[oneoffui] .search-go-button:hover:active { - -moz-image-region: rect(28px, 42px, 42px, 28px); -} - -searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { - transform: scaleX(-1); -} - - -.search-panel-current-engine { - border-top: none !important; - border-bottom: 1px solid #ccc; - -moz-box-align: center; -} - -.search-panel-header { - font-weight: normal; - background-color: rgb(245, 245, 245); - border-top: 1px solid #ccc; - margin: 0 1px; - padding: 3px 5px; - color: #666; -} - -.search-panel-current-input > label { - margin: 0 0 !important; -} - -.search-panel-input-value { - color: black; -} - -.search-panel-one-offs { - margin: 0 0 !important; - border-top: 1px solid #ccc; -} - -.searchbar-engine-one-off-item { - -moz-appearance: none; - display: inline-block; - border: none; - min-width: 48px; - height: 32px; - margin: 0 0; - padding: 0 0; - background: none; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); - background-repeat: no-repeat; - background-position: right center; -} - -.searchbar-engine-one-off-item:not(.last-row) { - box-sizing: padding-box; - border-bottom: 1px solid #ccc; -} - -.searchbar-engine-one-off-item.last-of-row { - background-image: none; -} - -.searchbar-engine-one-off-item:hover:not(.dummy), -.searchbar-engine-one-off-item[selected] { - background-color: Highlight; - background-image: none; -} - -.searchbar-engine-one-off-item > .button-box { - border: none; - padding: 0 0; -} - -.searchbar-engine-one-off-item > .button-box > .button-text { - display: none; -} - -.searchbar-engine-one-off-item > .button-box > .button-icon { - display: -moz-box; - -moz-margin-end: 0; - width: 16px; - height: 16px; -} - -.addengine-item { - -moz-appearance: none; - border: none; - height: 32px; - margin: 0 0; - padding: 0 10px; -} - -.addengine-item > .button-box { - -moz-box-pack: start; -} - -.addengine-item:first-of-type { - border-top: 1px solid #ccc; -} - -.addengine-item:hover { - background-color: Highlight; - color: HighlightText; -} - -.addengine-item > .button-box > .button-icon { - width: 16px; -} - -.addengine-item > .button-box > .button-text { - -moz-box-flex: 1; - text-align: start; - -moz-padding-start: 10px; -} - -.addengine-item:not([image]) { - list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); -} - -searchbar[oneoffui] .searchbar-engine-button { - display: none; -} - -.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { - -moz-padding-start: 16px; - border-top: none !important; -} - -searchbar[oneoffui] .searchbar-engine-image { - -moz-margin-start: -1px; -} - -.search-setting-button { - -moz-appearance: none; - border-bottom: none; - border-left: none; - border-right: none; - -moz-border-top-colors: none; - min-height: 32px; -} - -.search-setting-button:hover { - background-color: #d3d3d3; - border-top-color: #bdbebe; -} +%include ../shared/searchbar.inc.css \ No newline at end of file diff --git a/browser/themes/osx/jar.mn b/browser/themes/osx/jar.mn index 7f9315babe68..df5f87da75bd 100644 --- a/browser/themes/osx/jar.mn +++ b/browser/themes/osx/jar.mn @@ -101,7 +101,7 @@ browser.jar: skin/classic/browser/reload-stop-go@2x.png skin/classic/browser/searchbar-dropmarker.png skin/classic/browser/searchbar-dropmarker@2x.png - skin/classic/browser/searchbar.css +* skin/classic/browser/searchbar.css skin/classic/browser/Search.png skin/classic/browser/Search@2x.png skin/classic/browser/search-pref.png (../shared/search/search-pref.png) diff --git a/browser/themes/osx/searchbar.css b/browser/themes/osx/searchbar.css index 12d299722d4e..11fba33735f9 100644 --- a/browser/themes/osx/searchbar.css +++ b/browser/themes/osx/searchbar.css @@ -47,42 +47,11 @@ -moz-padding-end: 6px; } -.searchbar-search-button-container { - -moz-box-align: center; - -moz-padding-start: 6px; - -moz-padding-end: 4px; -} - .search-go-button { list-style-image: url("chrome://browser/skin/Search.png"); } -.searchbar-search-button { - list-style-image: url("chrome://browser/skin/search-indicator.png"); - -moz-image-region: rect(0, 20px, 20px, 0); - margin: 0 -3px; -} - -.searchbar-search-button:hover { - -moz-image-region: rect(0, 40px, 20px, 20px); -} - -.searchbar-search-button:hover:active { - -moz-image-region: rect(0, 60px, 20px, 40px); -} - -searchbar[oneoffui] .search-go-button { - list-style-image: url("chrome://browser/skin/reload-stop-go.png"); - -moz-image-region: rect(0, 42px, 14px, 28px); -} - -searchbar[oneoffui] .search-go-button:hover:active { - -moz-image-region: rect(14px, 42px, 28px, 28px); -} - -searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { - transform: scaleX(-1); -} +%include ../shared/searchbar.inc.css @media (min-resolution: 2dppx) { .searchbar-engine-image { @@ -124,139 +93,16 @@ searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon -moz-image-region: rect(28px, 84px, 56px, 56px); width: 14px; } -} -.search-panel-current-engine { - border-top: none !important; - border-bottom: 1px solid #ccc; - border-radius: 4px 4px 0 0; -} - -.search-panel-header { - font-size: 10px; - font-weight: normal; - background-color: rgb(245, 245, 245); - border-top: 1px solid #ccc; - margin: 0; - padding: 3px 6px; - color: #666; -} - -.search-panel-current-input > label { - margin: 0 0 !important; -} - -.search-panel-input-value { - color: black; -} - -.search-panel-one-offs { - border-top: 1px solid #ccc; - margin-bottom: 0 !important; -} - -.searchbar-engine-one-off-item { - -moz-appearance: none; - display: inline-block; - min-width: 48px; - height: 32px; - margin: 0 0; - padding: 0 0; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); - background-repeat: no-repeat; - background-position: right center; -} - -.searchbar-engine-one-off-item:not(.last-row) { - box-sizing: padding-box; - border-bottom: 1px solid #ccc; -} - -.searchbar-engine-one-off-item.last-of-row { - background-image: none; -} - -.searchbar-engine-one-off-item:hover:not(.dummy), -.searchbar-engine-one-off-item[selected] { - background-color: Highlight; - background-image: none; -} - -.searchbar-engine-one-off-item > .button-box > .button-text { - display: none; -} - -.searchbar-engine-one-off-item > .button-box > .button-icon { - -moz-margin-start: 0; - width: 16px; - height: 16px; -} - -.addengine-item { - -moz-appearance: none; - font-size: 10px; - height: 32px; - margin: 0 0; - padding: 0 10px; -} - -.addengine-item > .button-box { - -moz-box-pack: start; -} - -.addengine-item:first-of-type { - border-top: 1px solid #ccc; -} - -.addengine-item:hover { - background-color: Highlight; - color: HighlightText; -} - -.addengine-item > .button-box > .button-icon { - width: 16px; -} - -.addengine-item > .button-box > .button-text { - -moz-box-flex: 1; - text-align: start; - -moz-padding-start: 10px; -} - -.addengine-item:not([image]) { - list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); -} - -@media (min-resolution: 2dppx) { .addengine-item:not([image]) { list-style-image: url("chrome://browser/skin/search-engine-placeholder@2x.png"); } } -searchbar[oneoffui] .searchbar-engine-button { - display: none; -} - -.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { - -moz-padding-start: 22px; - border-top: none !important; -} - #PopupSearchAutoComplete { border-radius: 4px; } -.search-setting-button { - -moz-appearance: none; - border-radius: 0 0 4px 4px; - min-height: 32px; -} - .search-setting-button[showonlysettings] { border-radius: 4px; -} - -.search-setting-button:hover { - background-color: #d3d3d3; - border-top-color: #bdbebe; -} +} \ No newline at end of file diff --git a/browser/themes/shared/searchbar.inc.css b/browser/themes/shared/searchbar.inc.css new file mode 100644 index 000000000000..6bc50b7d6bd0 --- /dev/null +++ b/browser/themes/shared/searchbar.inc.css @@ -0,0 +1,170 @@ +.searchbar-search-button-container { + -moz-box-align: center; + padding: 3px 4px; + -moz-padding-end: 2px; +} + +.searchbar-search-button { + list-style-image: url("chrome://browser/skin/search-indicator.png"); + -moz-image-region: rect(0, 20px, 20px, 0); + margin: -2px -2px; +} + +.searchbar-search-button:hover { + -moz-image-region: rect(0, 40px, 20px, 20px); +} + +.searchbar-search-button:hover:active { + -moz-image-region: rect(0, 60px, 20px, 40px); +} + +searchbar[oneoffui] .search-go-button { + list-style-image: url("chrome://browser/skin/reload-stop-go.png"); + -moz-image-region: rect(0, 42px, 14px, 28px); +} + +searchbar[oneoffui] .search-go-button:hover { + -moz-image-region: rect(14px, 42px, 28px, 28px); +} + +searchbar[oneoffui] .search-go-button:hover:active { + -moz-image-region: rect(28px, 42px, 42px, 28px); +} + +searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { + transform: scaleX(-1); +} + + +.search-panel-current-engine { + border-top: none !important; + border-bottom: 1px solid #ccc; + -moz-box-align: center; +} + +.search-panel-header { + font-weight: normal; + background-color: rgb(245, 245, 245); + border-top: 1px solid #ccc; + margin: 0; + padding: 3px 6px; + color: #666; +} + +.search-panel-current-input > label { + margin: 0 0 !important; +} + +.search-panel-input-value { + color: black; +} + +.search-panel-one-offs { + margin: 0 0 !important; + border-top: 1px solid #ccc; +} + +.searchbar-engine-one-off-item { + -moz-appearance: none; + display: inline-block; + border: none; + min-width: 48px; + height: 32px; + margin: 0 0; + padding: 0 0; + background: none; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); + background-repeat: no-repeat; + background-position: right center; +} + +.searchbar-engine-one-off-item:not(.last-row) { + box-sizing: padding-box; + border-bottom: 1px solid #ccc; +} + +.searchbar-engine-one-off-item.last-of-row { + background-image: none; +} + +.searchbar-engine-one-off-item:hover:not(.dummy), +.searchbar-engine-one-off-item[selected] { + background-color: Highlight; + background-image: none; +} + +.searchbar-engine-one-off-item > .button-box { + border: none; + padding: 0 0; +} + +.searchbar-engine-one-off-item > .button-box > .button-text { + display: none; +} + +.searchbar-engine-one-off-item > .button-box > .button-icon { + width: 16px; + height: 16px; +} + +.addengine-item { + -moz-appearance: none; + border: none; + height: 32px; + margin: 0 0; + padding: 0 10px; +} + +.addengine-item > .button-box { + -moz-box-pack: start; +} + +.addengine-item:first-of-type { + border-top: 1px solid #ccc; +} + +.addengine-item:hover { + background-color: Highlight; + color: HighlightText; +} + +.addengine-item > .button-box > .button-icon { + width: 16px; +} + +.addengine-item > .button-box > .button-text { + -moz-box-flex: 1; + text-align: start; + -moz-padding-start: 10px; +} + +.addengine-item:not([image]) { + list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); +} + +searchbar[oneoffui] .searchbar-engine-button { + display: none; +} + +.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { + -moz-padding-start: 15px; + border-top: none !important; +} + +searchbar[oneoffui] .searchbar-engine-image { + -moz-margin-start: -1px; +} + +.search-setting-button { + -moz-appearance: none; + border-bottom: none; + border-left: none; + border-right: none; + -moz-border-top-colors: none; + min-height: 32px; +} + +.search-setting-button:hover { + background-color: #d3d3d3; + border-top-color: #bdbebe; +} diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn index fc984c131b5d..f128254aeaf9 100644 --- a/browser/themes/windows/jar.mn +++ b/browser/themes/windows/jar.mn @@ -80,7 +80,7 @@ browser.jar: skin/classic/browser/privatebrowsing-mask-titlebar-XPVista7.png skin/classic/browser/privatebrowsing-mask-titlebar-XPVista7-tall.png skin/classic/browser/reload-stop-go.png - skin/classic/browser/searchbar.css +* skin/classic/browser/searchbar.css skin/classic/browser/searchbar-dropdown-arrow.png skin/classic/browser/search-pref.png (../shared/search/search-pref.png) skin/classic/browser/search-indicator.png (../shared/search/search-indicator.png) @@ -525,7 +525,7 @@ browser.jar: skin/classic/aero/browser/privatebrowsing-mask-titlebar-XPVista7.png skin/classic/aero/browser/privatebrowsing-mask-titlebar-XPVista7-tall.png skin/classic/aero/browser/reload-stop-go.png - skin/classic/aero/browser/searchbar.css +* skin/classic/aero/browser/searchbar.css skin/classic/aero/browser/searchbar-dropdown-arrow.png (searchbar-dropdown-arrow-aero.png) skin/classic/aero/browser/search-pref.png (../shared/search/search-pref.png) skin/classic/aero/browser/search-indicator.png (../shared/search/search-indicator.png) diff --git a/browser/themes/windows/searchbar.css b/browser/themes/windows/searchbar.css index 54fc39e441a9..506e2ed9a439 100644 --- a/browser/themes/windows/searchbar.css +++ b/browser/themes/windows/searchbar.css @@ -79,175 +79,4 @@ font-weight: bold; } - - -.searchbar-search-button-container { - -moz-box-align: center; - padding: 3px 4px; - -moz-padding-end: 2px; -} - -.searchbar-search-button { - list-style-image: url("chrome://browser/skin/search-indicator.png"); - -moz-image-region: rect(0, 20px, 20px, 0); - margin: -2px -2px; -} - -.searchbar-search-button:hover { - -moz-image-region: rect(0, 40px, 20px, 20px); -} - -.searchbar-search-button:hover:active { - -moz-image-region: rect(0, 60px, 20px, 40px); -} - -searchbar[oneoffui] .search-go-button { - list-style-image: url("chrome://browser/skin/reload-stop-go.png"); - -moz-image-region: rect(0, 42px, 14px, 28px); -} - -searchbar[oneoffui] .search-go-button:hover { - -moz-image-region: rect(14px, 42px, 28px, 28px); -} - -searchbar[oneoffui] .search-go-button:hover:active { - -moz-image-region: rect(28px, 42px, 42px, 28px); -} - -searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { - transform: scaleX(-1); -} - - -.search-panel-current-engine { - border-top: none !important; - border-bottom: 1px solid #ccc; - -moz-box-align: center; -} - -.search-panel-header { - font-weight: normal; - background-color: rgb(245, 245, 245); - border-top: 1px solid #ccc; - margin: 0; - padding: 3px 6px; - color: #666; -} - -.search-panel-current-input > label { - margin: 0 0 !important; -} - -.search-panel-input-value { - color: black; -} - -.search-panel-one-offs { - margin: 0 0 !important; - border-top: 1px solid #ccc; -} - -.searchbar-engine-one-off-item { - -moz-appearance: none; - display: inline-block; - border: none; - min-width: 48px; - height: 32px; - margin: 0 0; - padding: 0 0; - background: none; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); - background-repeat: no-repeat; - background-position: right center; -} - -.searchbar-engine-one-off-item:not(.last-row) { - box-sizing: padding-box; - border-bottom: 1px solid #ccc; -} - -.searchbar-engine-one-off-item.last-of-row { - background-image: none; -} - -.searchbar-engine-one-off-item:hover:not(.dummy), -.searchbar-engine-one-off-item[selected] { - background-color: Highlight; - background-image: none; -} - -.searchbar-engine-one-off-item > .button-box { - border: none; - padding: 0 0; -} - -.searchbar-engine-one-off-item > .button-box > .button-text { - display: none; -} - -.searchbar-engine-one-off-item > .button-box > .button-icon { - width: 16px; - height: 16px; -} - -.addengine-item { - -moz-appearance: none; - border: none; - height: 32px; - margin: 0 0; - padding: 0 10px; -} - -.addengine-item > .button-box { - -moz-box-pack: start; -} - -.addengine-item:first-of-type { - border-top: 1px solid #ccc; -} - -.addengine-item:hover { - background-color: Highlight; - color: HighlightText; -} - -.addengine-item > .button-box > .button-icon { - width: 16px; -} - -.addengine-item > .button-box > .button-text { - -moz-box-flex: 1; - text-align: start; - -moz-padding-start: 10px; -} - -.addengine-item:not([image]) { - list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); -} - -searchbar[oneoffui] .searchbar-engine-button { - display: none; -} - -.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { - -moz-padding-start: 15px; - border-top: none !important; -} - -searchbar[oneoffui] .searchbar-engine-image { - -moz-margin-start: -1px; -} - -.search-setting-button { - -moz-appearance: none; - border-bottom: none; - border-left: none; - border-right: none; - -moz-border-top-colors: none; - min-height: 32px; -} - -.search-setting-button:hover { - background-color: #d3d3d3; - border-top-color: #bdbebe; -} +%include ../shared/searchbar.inc.css \ No newline at end of file From 8671e6562bedaf002b1a2ea9846544f3ca8ac382 Mon Sep 17 00:00:00 2001 From: Brian Grinstead Date: Fri, 5 Dec 2014 11:05:00 +0100 Subject: [PATCH 15/30] Bug 1107972 - Convert custom colors in profiler to CSS variables fix visual regression caused by specificity change from bug 1102369. r=vporof --- .../themes/shared/devtools/profiler.inc.css | 61 +++++++++---------- 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/browser/themes/shared/devtools/profiler.inc.css b/browser/themes/shared/devtools/profiler.inc.css index 3393c3dfb19c..a8e0f77e7baa 100644 --- a/browser/themes/shared/devtools/profiler.inc.css +++ b/browser/themes/shared/devtools/profiler.inc.css @@ -3,6 +3,21 @@ * 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/. */ +/* CSS Variables specific to this panel that aren't defined by the themes */ +.theme-dark { + --cell-border-color: rgba(255,255,255,0.15); + --focus-cell-border-color: rgba(0,0,0,0.3); + --row-alt-background-color: rgba(29,79,115,0.15); + --row-hover-background-color: rgba(29,79,115,0.25); +} + +.theme-light { + --cell-border-color: rgba(0,0,0,0.15); + --focus-cell-border-color: rgba(255,255,255,0.5); + --row-alt-background-color: rgba(76,158,217,0.1); + --row-hover-background-color: rgba(76,158,217,0.2); +} + /* Reload and waiting notices */ .notice-container { @@ -245,17 +260,13 @@ .call-tree-header:not(:last-child), .call-tree-cell:not(:last-child) { - -moz-border-end: 1px solid; + -moz-border-end-width: 1px; + -moz-border-end-style: solid; } -.theme-dark .call-tree-header, -.theme-dark .call-tree-cell { - -moz-border-end-color: rgba(255,255,255,0.15); -} - -.theme-light .call-tree-header, -.theme-light .call-tree-cell { - -moz-border-end-color: rgba(0,0,0,0.15); +.call-tree-header, +.call-tree-cell { + -moz-border-end-color: var(--cell-border-color); } .call-tree-header:not(:last-child) { @@ -270,28 +281,16 @@ background-color: var(--theme-tab-toolbar-background); } -.theme-dark .call-tree-item:last-child:not(:focus) { - border-bottom: 1px solid rgba(255,255,255,0.15); +.call-tree-item:last-child:not(:focus) { + border-bottom: 1px solid var(--cell-border-color); } -.theme-light .call-tree-item:last-child:not(:focus) { - border-bottom: 1px solid rgba(0,0,0,0.15); +.call-tree-item:nth-child(2n) { + background-color: var(--row-alt-background-color); } -.theme-dark .call-tree-item:nth-child(2n) { - background-color: rgba(29,79,115,0.15); -} - -.theme-light .call-tree-item:nth-child(2n) { - background-color: rgba(76,158,217,0.1); -} - -.theme-dark .call-tree-item:hover { - background-color: rgba(29,79,115,0.25); -} - -.theme-light .call-tree-item:hover { - background-color: rgba(76,158,217,0.2); +.call-tree-item:hover { + background-color: var(--row-hover-background-color); } .call-tree-item:focus { @@ -302,12 +301,8 @@ color: var(--theme-selection-color) !important; } -.theme-dark .call-tree-item:focus .call-tree-cell { - -moz-border-end-color: rgba(0,0,0,0.3); -} - -.theme-light .call-tree-item:focus .call-tree-cell { - -moz-border-end-color: rgba(255,255,255,0.5); +.call-tree-item:focus .call-tree-cell { + -moz-border-end-color: var(--focus-cell-border-color); } .call-tree-item:not([origin="content"]) .call-tree-name, From 866bdbd9b4a241b72ee883ffefd218b6c6a1f524 Mon Sep 17 00:00:00 2001 From: Tim Nguyen Date: Sat, 6 Dec 2014 13:06:00 +0100 Subject: [PATCH 16/30] Bug 1108270 - Convert CSS values in performance.css to CSS variables. r=vporof --- .../shared/devtools/performance.inc.css | 154 +++++------------- 1 file changed, 45 insertions(+), 109 deletions(-) diff --git a/browser/themes/shared/devtools/performance.inc.css b/browser/themes/shared/devtools/performance.inc.css index 6a06023f9d23..5c55254c110a 100644 --- a/browser/themes/shared/devtools/performance.inc.css +++ b/browser/themes/shared/devtools/performance.inc.css @@ -3,20 +3,26 @@ * 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/. */ +/* CSS Variables specific to this panel that aren't defined by the themes */ +.theme-dark { + --cell-border-color: rgba(255,255,255,0.15); + --focus-cell-border-color: rgba(255,255,255,0.5); + --row-alt-background-color: rgba(29,79,115,0.15); + --row-hover-background-color: rgba(29,79,115,0.25); +} + +.theme-light { + --cell-border-color: rgba(0,0,0,0.15); + --focus-cell-border-color: rgba(0,0,0,0.3); + --row-alt-background-color: rgba(76,158,217,0.1); + --row-hover-background-color: rgba(76,158,217,0.2); +} + /* Toolbar */ +#performance-toolbar > tabs, #performance-toolbar { - -moz-border-end: 1px solid; -} - -.theme-dark #performance-toolbar > tabs, -.theme-dark #performance-toolbar { - -moz-border-end-color: #000; /* Splitters */ -} - -.theme-light #performance-toolbar > tabs, -.theme-light #performance-toolbar { - -moz-border-end-color: #aaa; /* Splitters */ + -moz-border-end-color: var(--theme-splitter-color); } /* Overview Panel */ @@ -85,23 +91,14 @@ -moz-box-align: center; overflow: hidden; padding: 1px 4px; + color: var(--theme-body-color); + -moz-border-end-color: var(--cell-border-color); } .call-tree-header:not(:last-child), .call-tree-cell:not(:last-child) { - -moz-border-end: 1px solid; -} - -.theme-dark .call-tree-header, -.theme-dark .call-tree-cell { - -moz-border-end-color: rgba(255,255,255,0.15); - color: #8fa1b2; /* Body Text */ -} - -.theme-light .call-tree-header, -.theme-light .call-tree-cell { - -moz-border-end-color: rgba(0,0,0,0.15); - color: #18191a; /* Body Text */ + -moz-border-end-width: 1px; + -moz-border-end-style: solid; } .call-tree-header:not(:last-child) { @@ -112,56 +109,32 @@ text-align: end; } -.theme-dark .call-tree-header { - background-color: #252c33; /* Tab Toolbar */ +.call-tree-header { + background-color: var(--theme-tab-toolbar-background); } -.theme-light .call-tree-header { - background-color: #ebeced; /* Tab Toolbar */ +.call-tree-item:last-child:not(:focus) { + border-bottom: 1px solid var(--cell-border-color); } -.theme-dark .call-tree-item:last-child:not(:focus) { - border-bottom: 1px solid rgba(255,255,255,0.15); +.call-tree-item:nth-child(2n) { + background-color: var(--row-alt-background-color); } -.theme-light .call-tree-item:last-child:not(:focus) { - border-bottom: 1px solid rgba(0,0,0,0.15); +.call-tree-item:hover { + background-color: var(--row-hover-background-color); } -.theme-dark .call-tree-item:nth-child(2n) { - background-color: rgba(29,79,115,0.15); -} - -.theme-light .call-tree-item:nth-child(2n) { - background-color: rgba(76,158,217,0.1); -} - -.theme-dark .call-tree-item:hover { - background-color: rgba(29,79,115,0.25); -} - -.theme-light .call-tree-item:hover { - background-color: rgba(76,158,217,0.2); -} - -.theme-dark .call-tree-item:focus { - background-color: #1d4f73; /* Select Highlight Blue */ -} - -.theme-light .call-tree-item:focus { - background-color: #4c9ed9; /* Select Highlight Blue */ +.call-tree-item:focus { + background-color: var(--theme-selection-background); } .call-tree-item:focus label { - color: #f5f7fa !important; /* Light foreground text */ + color: var(--theme-selection-color) !important; } -.theme-dark .call-tree-item:focus .call-tree-cell { - -moz-border-end-color: rgba(0,0,0,0.3); -} - -.theme-light .call-tree-item:focus .call-tree-cell { - -moz-border-end-color: rgba(255,255,255,0.5); +.call-tree-item:focus .call-tree-cell { + -moz-border-end-color: var(--focus-cell-border-color); } .call-tree-item:not([origin="content"]) .call-tree-name, @@ -180,33 +153,18 @@ text-decoration: underline; } -.theme-dark .call-tree-url { - color: #46afe3; +.call-tree-url { + color: var(--theme-highlight-blue); } -.theme-light .call-tree-url { - color: #0088cc; -} - -.theme-dark .call-tree-line { - color: #d96629; -} - -.theme-light .call-tree-line { - color: #f13c00; +.call-tree-line { + color: var(--theme-highlight-orange); } .call-tree-host { -moz-margin-start: 8px !important; font-size: 90%; -} - -.theme-dark .call-tree-host { - color: #8fa1b2; -} - -.theme-light .call-tree-host { - color: #8fa1b2; + color: var(--theme-content-color2); } .call-tree-url[value=""], @@ -307,15 +265,7 @@ } .waterfall-sidebar { - -moz-border-end: 1px solid; -} - -.theme-dark .waterfall-sidebar { - -moz-border-end-color: #000; -} - -.theme-light .waterfall-sidebar { - -moz-border-end-color: #aaa; + -moz-border-end: 1px solid var(--theme-splitter-color); } .waterfall-marker-container:hover > .waterfall-sidebar { @@ -330,14 +280,7 @@ width: 100px; font-size: 9px; transform-origin: left center; -} - -.theme-dark .waterfall-header-tick { - color: #a9bacb; -} - -.theme-light .waterfall-header-tick { - color: #292e33; + color: var(--theme-body-color); } .waterfall-header-tick:not(:first-child) { @@ -365,21 +308,14 @@ transform-origin: left center; } -.theme-light .waterfall-marker-container.selected > .waterfall-sidebar, -.theme-light .waterfall-marker-container.selected > .waterfall-marker-item { - background-color: #4c9ed9; /* Select Highlight Blue */ - color: #f5f7fa; /* Light foreground text */ -} - -.theme-dark .waterfall-marker-container.selected > .waterfall-sidebar, -.theme-dark .waterfall-marker-container.selected > .waterfall-marker-item { - background-color: #1d4f73; /* Select Highlight Blue */ - color: #f5f7fa; /* Light foreground text */ +.waterfall-marker-container.selected > .waterfall-marker-item { + background-color: var(--theme-selection-background); + color: var(--theme-selection-color); } .waterfall-marker-container.selected .waterfall-marker-bullet, .waterfall-marker-container.selected .waterfall-marker-bar { - border-color: initial!important; + border-color: initial !important; } #waterfall-details { From fdf0750b208501964382f6805b777fad745eb4a2 Mon Sep 17 00:00:00 2001 From: "Carsten \"Tomcat\" Book" Date: Mon, 8 Dec 2014 14:58:24 +0100 Subject: [PATCH 17/30] Backed out changeset bfee51abf471 (bug 1106569) on request --- browser/themes/linux/jar.mn | 2 +- browser/themes/linux/searchbar.css | 176 +++++++++++++++++++++++- browser/themes/osx/jar.mn | 2 +- browser/themes/osx/searchbar.css | 158 ++++++++++++++++++++- browser/themes/shared/searchbar.inc.css | 170 ----------------------- browser/themes/windows/jar.mn | 4 +- browser/themes/windows/searchbar.css | 173 ++++++++++++++++++++++- 7 files changed, 507 insertions(+), 178 deletions(-) delete mode 100644 browser/themes/shared/searchbar.inc.css diff --git a/browser/themes/linux/jar.mn b/browser/themes/linux/jar.mn index 7eacedb50739..cd4c54fcc895 100644 --- a/browser/themes/linux/jar.mn +++ b/browser/themes/linux/jar.mn @@ -66,7 +66,7 @@ browser.jar: skin/classic/browser/Privacy-16.png skin/classic/browser/privatebrowsing-mask.png skin/classic/browser/reload-stop-go.png -* skin/classic/browser/searchbar.css + skin/classic/browser/searchbar.css skin/classic/browser/search-pref.png (../shared/search/search-pref.png) skin/classic/browser/search-indicator.png (../shared/search/search-indicator.png) skin/classic/browser/search-indicator-add-engine.png (../shared/search/search-indicator-add-engine.png) diff --git a/browser/themes/linux/searchbar.css b/browser/themes/linux/searchbar.css index e65a0c068996..7568b3879134 100644 --- a/browser/themes/linux/searchbar.css +++ b/browser/themes/linux/searchbar.css @@ -67,4 +67,178 @@ menuitem[cmd="cmd_clearhistory"][disabled] { list-style-image: url("moz-icon://stock/gtk-clear?size=menu&state=disabled"); } -%include ../shared/searchbar.inc.css \ No newline at end of file + + + +.searchbar-search-button-container { + -moz-box-align: center; + padding: 2px 3px; + -moz-padding-end: 2px; +} + +.searchbar-search-button { + list-style-image: url("chrome://browser/skin/search-indicator.png"); + -moz-image-region: rect(0, 20px, 20px, 0); + margin: -2px -2px; +} + +.searchbar-search-button:hover { + -moz-image-region: rect(0, 40px, 20px, 20px); +} + +.searchbar-search-button:hover:active { + -moz-image-region: rect(0, 60px, 20px, 40px); +} + +searchbar[oneoffui] .search-go-button { + list-style-image: url("chrome://browser/skin/reload-stop-go.png"); + -moz-image-region: rect(0, 42px, 14px, 28px); +} + +searchbar[oneoffui] .search-go-button:hover { + -moz-image-region: rect(14px, 42px, 28px, 28px); +} + +searchbar[oneoffui] .search-go-button:hover:active { + -moz-image-region: rect(28px, 42px, 42px, 28px); +} + +searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { + transform: scaleX(-1); +} + + +.search-panel-current-engine { + border-top: none !important; + border-bottom: 1px solid #ccc; + -moz-box-align: center; +} + +.search-panel-header { + font-weight: normal; + background-color: rgb(245, 245, 245); + border-top: 1px solid #ccc; + margin: 0 1px; + padding: 3px 5px; + color: #666; +} + +.search-panel-current-input > label { + margin: 0 0 !important; +} + +.search-panel-input-value { + color: black; +} + +.search-panel-one-offs { + margin: 0 0 !important; + border-top: 1px solid #ccc; +} + +.searchbar-engine-one-off-item { + -moz-appearance: none; + display: inline-block; + border: none; + min-width: 48px; + height: 32px; + margin: 0 0; + padding: 0 0; + background: none; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); + background-repeat: no-repeat; + background-position: right center; +} + +.searchbar-engine-one-off-item:not(.last-row) { + box-sizing: padding-box; + border-bottom: 1px solid #ccc; +} + +.searchbar-engine-one-off-item.last-of-row { + background-image: none; +} + +.searchbar-engine-one-off-item:hover:not(.dummy), +.searchbar-engine-one-off-item[selected] { + background-color: Highlight; + background-image: none; +} + +.searchbar-engine-one-off-item > .button-box { + border: none; + padding: 0 0; +} + +.searchbar-engine-one-off-item > .button-box > .button-text { + display: none; +} + +.searchbar-engine-one-off-item > .button-box > .button-icon { + display: -moz-box; + -moz-margin-end: 0; + width: 16px; + height: 16px; +} + +.addengine-item { + -moz-appearance: none; + border: none; + height: 32px; + margin: 0 0; + padding: 0 10px; +} + +.addengine-item > .button-box { + -moz-box-pack: start; +} + +.addengine-item:first-of-type { + border-top: 1px solid #ccc; +} + +.addengine-item:hover { + background-color: Highlight; + color: HighlightText; +} + +.addengine-item > .button-box > .button-icon { + width: 16px; +} + +.addengine-item > .button-box > .button-text { + -moz-box-flex: 1; + text-align: start; + -moz-padding-start: 10px; +} + +.addengine-item:not([image]) { + list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); +} + +searchbar[oneoffui] .searchbar-engine-button { + display: none; +} + +.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { + -moz-padding-start: 16px; + border-top: none !important; +} + +searchbar[oneoffui] .searchbar-engine-image { + -moz-margin-start: -1px; +} + +.search-setting-button { + -moz-appearance: none; + border-bottom: none; + border-left: none; + border-right: none; + -moz-border-top-colors: none; + min-height: 32px; +} + +.search-setting-button:hover { + background-color: #d3d3d3; + border-top-color: #bdbebe; +} diff --git a/browser/themes/osx/jar.mn b/browser/themes/osx/jar.mn index df5f87da75bd..7f9315babe68 100644 --- a/browser/themes/osx/jar.mn +++ b/browser/themes/osx/jar.mn @@ -101,7 +101,7 @@ browser.jar: skin/classic/browser/reload-stop-go@2x.png skin/classic/browser/searchbar-dropmarker.png skin/classic/browser/searchbar-dropmarker@2x.png -* skin/classic/browser/searchbar.css + skin/classic/browser/searchbar.css skin/classic/browser/Search.png skin/classic/browser/Search@2x.png skin/classic/browser/search-pref.png (../shared/search/search-pref.png) diff --git a/browser/themes/osx/searchbar.css b/browser/themes/osx/searchbar.css index 11fba33735f9..12d299722d4e 100644 --- a/browser/themes/osx/searchbar.css +++ b/browser/themes/osx/searchbar.css @@ -47,11 +47,42 @@ -moz-padding-end: 6px; } +.searchbar-search-button-container { + -moz-box-align: center; + -moz-padding-start: 6px; + -moz-padding-end: 4px; +} + .search-go-button { list-style-image: url("chrome://browser/skin/Search.png"); } -%include ../shared/searchbar.inc.css +.searchbar-search-button { + list-style-image: url("chrome://browser/skin/search-indicator.png"); + -moz-image-region: rect(0, 20px, 20px, 0); + margin: 0 -3px; +} + +.searchbar-search-button:hover { + -moz-image-region: rect(0, 40px, 20px, 20px); +} + +.searchbar-search-button:hover:active { + -moz-image-region: rect(0, 60px, 20px, 40px); +} + +searchbar[oneoffui] .search-go-button { + list-style-image: url("chrome://browser/skin/reload-stop-go.png"); + -moz-image-region: rect(0, 42px, 14px, 28px); +} + +searchbar[oneoffui] .search-go-button:hover:active { + -moz-image-region: rect(14px, 42px, 28px, 28px); +} + +searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { + transform: scaleX(-1); +} @media (min-resolution: 2dppx) { .searchbar-engine-image { @@ -93,16 +124,139 @@ -moz-image-region: rect(28px, 84px, 56px, 56px); width: 14px; } +} +.search-panel-current-engine { + border-top: none !important; + border-bottom: 1px solid #ccc; + border-radius: 4px 4px 0 0; +} + +.search-panel-header { + font-size: 10px; + font-weight: normal; + background-color: rgb(245, 245, 245); + border-top: 1px solid #ccc; + margin: 0; + padding: 3px 6px; + color: #666; +} + +.search-panel-current-input > label { + margin: 0 0 !important; +} + +.search-panel-input-value { + color: black; +} + +.search-panel-one-offs { + border-top: 1px solid #ccc; + margin-bottom: 0 !important; +} + +.searchbar-engine-one-off-item { + -moz-appearance: none; + display: inline-block; + min-width: 48px; + height: 32px; + margin: 0 0; + padding: 0 0; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); + background-repeat: no-repeat; + background-position: right center; +} + +.searchbar-engine-one-off-item:not(.last-row) { + box-sizing: padding-box; + border-bottom: 1px solid #ccc; +} + +.searchbar-engine-one-off-item.last-of-row { + background-image: none; +} + +.searchbar-engine-one-off-item:hover:not(.dummy), +.searchbar-engine-one-off-item[selected] { + background-color: Highlight; + background-image: none; +} + +.searchbar-engine-one-off-item > .button-box > .button-text { + display: none; +} + +.searchbar-engine-one-off-item > .button-box > .button-icon { + -moz-margin-start: 0; + width: 16px; + height: 16px; +} + +.addengine-item { + -moz-appearance: none; + font-size: 10px; + height: 32px; + margin: 0 0; + padding: 0 10px; +} + +.addengine-item > .button-box { + -moz-box-pack: start; +} + +.addengine-item:first-of-type { + border-top: 1px solid #ccc; +} + +.addengine-item:hover { + background-color: Highlight; + color: HighlightText; +} + +.addengine-item > .button-box > .button-icon { + width: 16px; +} + +.addengine-item > .button-box > .button-text { + -moz-box-flex: 1; + text-align: start; + -moz-padding-start: 10px; +} + +.addengine-item:not([image]) { + list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); +} + +@media (min-resolution: 2dppx) { .addengine-item:not([image]) { list-style-image: url("chrome://browser/skin/search-engine-placeholder@2x.png"); } } +searchbar[oneoffui] .searchbar-engine-button { + display: none; +} + +.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { + -moz-padding-start: 22px; + border-top: none !important; +} + #PopupSearchAutoComplete { border-radius: 4px; } +.search-setting-button { + -moz-appearance: none; + border-radius: 0 0 4px 4px; + min-height: 32px; +} + .search-setting-button[showonlysettings] { border-radius: 4px; -} \ No newline at end of file +} + +.search-setting-button:hover { + background-color: #d3d3d3; + border-top-color: #bdbebe; +} diff --git a/browser/themes/shared/searchbar.inc.css b/browser/themes/shared/searchbar.inc.css deleted file mode 100644 index 6bc50b7d6bd0..000000000000 --- a/browser/themes/shared/searchbar.inc.css +++ /dev/null @@ -1,170 +0,0 @@ -.searchbar-search-button-container { - -moz-box-align: center; - padding: 3px 4px; - -moz-padding-end: 2px; -} - -.searchbar-search-button { - list-style-image: url("chrome://browser/skin/search-indicator.png"); - -moz-image-region: rect(0, 20px, 20px, 0); - margin: -2px -2px; -} - -.searchbar-search-button:hover { - -moz-image-region: rect(0, 40px, 20px, 20px); -} - -.searchbar-search-button:hover:active { - -moz-image-region: rect(0, 60px, 20px, 40px); -} - -searchbar[oneoffui] .search-go-button { - list-style-image: url("chrome://browser/skin/reload-stop-go.png"); - -moz-image-region: rect(0, 42px, 14px, 28px); -} - -searchbar[oneoffui] .search-go-button:hover { - -moz-image-region: rect(14px, 42px, 28px, 28px); -} - -searchbar[oneoffui] .search-go-button:hover:active { - -moz-image-region: rect(28px, 42px, 42px, 28px); -} - -searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { - transform: scaleX(-1); -} - - -.search-panel-current-engine { - border-top: none !important; - border-bottom: 1px solid #ccc; - -moz-box-align: center; -} - -.search-panel-header { - font-weight: normal; - background-color: rgb(245, 245, 245); - border-top: 1px solid #ccc; - margin: 0; - padding: 3px 6px; - color: #666; -} - -.search-panel-current-input > label { - margin: 0 0 !important; -} - -.search-panel-input-value { - color: black; -} - -.search-panel-one-offs { - margin: 0 0 !important; - border-top: 1px solid #ccc; -} - -.searchbar-engine-one-off-item { - -moz-appearance: none; - display: inline-block; - border: none; - min-width: 48px; - height: 32px; - margin: 0 0; - padding: 0 0; - background: none; - background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); - background-repeat: no-repeat; - background-position: right center; -} - -.searchbar-engine-one-off-item:not(.last-row) { - box-sizing: padding-box; - border-bottom: 1px solid #ccc; -} - -.searchbar-engine-one-off-item.last-of-row { - background-image: none; -} - -.searchbar-engine-one-off-item:hover:not(.dummy), -.searchbar-engine-one-off-item[selected] { - background-color: Highlight; - background-image: none; -} - -.searchbar-engine-one-off-item > .button-box { - border: none; - padding: 0 0; -} - -.searchbar-engine-one-off-item > .button-box > .button-text { - display: none; -} - -.searchbar-engine-one-off-item > .button-box > .button-icon { - width: 16px; - height: 16px; -} - -.addengine-item { - -moz-appearance: none; - border: none; - height: 32px; - margin: 0 0; - padding: 0 10px; -} - -.addengine-item > .button-box { - -moz-box-pack: start; -} - -.addengine-item:first-of-type { - border-top: 1px solid #ccc; -} - -.addengine-item:hover { - background-color: Highlight; - color: HighlightText; -} - -.addengine-item > .button-box > .button-icon { - width: 16px; -} - -.addengine-item > .button-box > .button-text { - -moz-box-flex: 1; - text-align: start; - -moz-padding-start: 10px; -} - -.addengine-item:not([image]) { - list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); -} - -searchbar[oneoffui] .searchbar-engine-button { - display: none; -} - -.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { - -moz-padding-start: 15px; - border-top: none !important; -} - -searchbar[oneoffui] .searchbar-engine-image { - -moz-margin-start: -1px; -} - -.search-setting-button { - -moz-appearance: none; - border-bottom: none; - border-left: none; - border-right: none; - -moz-border-top-colors: none; - min-height: 32px; -} - -.search-setting-button:hover { - background-color: #d3d3d3; - border-top-color: #bdbebe; -} diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn index f128254aeaf9..fc984c131b5d 100644 --- a/browser/themes/windows/jar.mn +++ b/browser/themes/windows/jar.mn @@ -80,7 +80,7 @@ browser.jar: skin/classic/browser/privatebrowsing-mask-titlebar-XPVista7.png skin/classic/browser/privatebrowsing-mask-titlebar-XPVista7-tall.png skin/classic/browser/reload-stop-go.png -* skin/classic/browser/searchbar.css + skin/classic/browser/searchbar.css skin/classic/browser/searchbar-dropdown-arrow.png skin/classic/browser/search-pref.png (../shared/search/search-pref.png) skin/classic/browser/search-indicator.png (../shared/search/search-indicator.png) @@ -525,7 +525,7 @@ browser.jar: skin/classic/aero/browser/privatebrowsing-mask-titlebar-XPVista7.png skin/classic/aero/browser/privatebrowsing-mask-titlebar-XPVista7-tall.png skin/classic/aero/browser/reload-stop-go.png -* skin/classic/aero/browser/searchbar.css + skin/classic/aero/browser/searchbar.css skin/classic/aero/browser/searchbar-dropdown-arrow.png (searchbar-dropdown-arrow-aero.png) skin/classic/aero/browser/search-pref.png (../shared/search/search-pref.png) skin/classic/aero/browser/search-indicator.png (../shared/search/search-indicator.png) diff --git a/browser/themes/windows/searchbar.css b/browser/themes/windows/searchbar.css index 506e2ed9a439..54fc39e441a9 100644 --- a/browser/themes/windows/searchbar.css +++ b/browser/themes/windows/searchbar.css @@ -79,4 +79,175 @@ font-weight: bold; } -%include ../shared/searchbar.inc.css \ No newline at end of file + + +.searchbar-search-button-container { + -moz-box-align: center; + padding: 3px 4px; + -moz-padding-end: 2px; +} + +.searchbar-search-button { + list-style-image: url("chrome://browser/skin/search-indicator.png"); + -moz-image-region: rect(0, 20px, 20px, 0); + margin: -2px -2px; +} + +.searchbar-search-button:hover { + -moz-image-region: rect(0, 40px, 20px, 20px); +} + +.searchbar-search-button:hover:active { + -moz-image-region: rect(0, 60px, 20px, 40px); +} + +searchbar[oneoffui] .search-go-button { + list-style-image: url("chrome://browser/skin/reload-stop-go.png"); + -moz-image-region: rect(0, 42px, 14px, 28px); +} + +searchbar[oneoffui] .search-go-button:hover { + -moz-image-region: rect(14px, 42px, 28px, 28px); +} + +searchbar[oneoffui] .search-go-button:hover:active { + -moz-image-region: rect(28px, 42px, 42px, 28px); +} + +searchbar[oneoffui] .search-go-button:-moz-locale-dir(rtl) > .toolbarbutton-icon { + transform: scaleX(-1); +} + + +.search-panel-current-engine { + border-top: none !important; + border-bottom: 1px solid #ccc; + -moz-box-align: center; +} + +.search-panel-header { + font-weight: normal; + background-color: rgb(245, 245, 245); + border-top: 1px solid #ccc; + margin: 0; + padding: 3px 6px; + color: #666; +} + +.search-panel-current-input > label { + margin: 0 0 !important; +} + +.search-panel-input-value { + color: black; +} + +.search-panel-one-offs { + margin: 0 0 !important; + border-top: 1px solid #ccc; +} + +.searchbar-engine-one-off-item { + -moz-appearance: none; + display: inline-block; + border: none; + min-width: 48px; + height: 32px; + margin: 0 0; + padding: 0 0; + background: none; + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAWCAYAAAABxvaqAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gofECQNNVW2/AAAABBJREFUGFdjOHPmzH8GehEA/KpKg9YTf4AAAAAASUVORK5CYII='); + background-repeat: no-repeat; + background-position: right center; +} + +.searchbar-engine-one-off-item:not(.last-row) { + box-sizing: padding-box; + border-bottom: 1px solid #ccc; +} + +.searchbar-engine-one-off-item.last-of-row { + background-image: none; +} + +.searchbar-engine-one-off-item:hover:not(.dummy), +.searchbar-engine-one-off-item[selected] { + background-color: Highlight; + background-image: none; +} + +.searchbar-engine-one-off-item > .button-box { + border: none; + padding: 0 0; +} + +.searchbar-engine-one-off-item > .button-box > .button-text { + display: none; +} + +.searchbar-engine-one-off-item > .button-box > .button-icon { + width: 16px; + height: 16px; +} + +.addengine-item { + -moz-appearance: none; + border: none; + height: 32px; + margin: 0 0; + padding: 0 10px; +} + +.addengine-item > .button-box { + -moz-box-pack: start; +} + +.addengine-item:first-of-type { + border-top: 1px solid #ccc; +} + +.addengine-item:hover { + background-color: Highlight; + color: HighlightText; +} + +.addengine-item > .button-box > .button-icon { + width: 16px; +} + +.addengine-item > .button-box > .button-text { + -moz-box-flex: 1; + text-align: start; + -moz-padding-start: 10px; +} + +.addengine-item:not([image]) { + list-style-image: url("chrome://browser/skin/search-engine-placeholder.png"); +} + +searchbar[oneoffui] .searchbar-engine-button { + display: none; +} + +.search-panel-tree > .autocomplete-treebody::-moz-tree-cell { + -moz-padding-start: 15px; + border-top: none !important; +} + +searchbar[oneoffui] .searchbar-engine-image { + -moz-margin-start: -1px; +} + +.search-setting-button { + -moz-appearance: none; + border-bottom: none; + border-left: none; + border-right: none; + -moz-border-top-colors: none; + min-height: 32px; +} + +.search-setting-button:hover { + background-color: #d3d3d3; + border-top-color: #bdbebe; +} From 0aed8dc0016217da1d51f81e31a1455298da71ea Mon Sep 17 00:00:00 2001 From: Manu Jain Date: Sat, 6 Dec 2014 04:57:00 -0500 Subject: [PATCH 18/30] Bug 1088186 - Index out of range in RecentTabsCursorLoader. r=rnewman --- mobile/android/base/SessionParser.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mobile/android/base/SessionParser.java b/mobile/android/base/SessionParser.java index e5dafa5da5d3..0b55fac224dd 100644 --- a/mobile/android/base/SessionParser.java +++ b/mobile/android/base/SessionParser.java @@ -65,7 +65,12 @@ public abstract class SessionParser { for (int i = 0; i < tabs.length(); i++) { final JSONObject tab = tabs.getJSONObject(i); final int index = tab.getInt("index"); - final JSONObject entry = tab.getJSONArray("entries").getJSONObject(index - 1); + final JSONArray entries = tab.getJSONArray("entries"); + if (index < 1 || entries.length() < index) { + Log.w(LOGTAG, "Session entries and index don't agree."); + continue; + } + final JSONObject entry = entries.getJSONObject(index - 1); final String url = entry.getString("url"); String title = entry.optString("title"); From cd42d11736912c1728468e3d4d75f46740bbe65c Mon Sep 17 00:00:00 2001 From: Alexandre Poirot Date: Wed, 26 Nov 2014 06:46:00 -0500 Subject: [PATCH 19/30] Bug 1100964 - Reset phone while enabling unrestricted devtools mode. r=fabrice, r=sicking --HG-- extra : amend_source : 905e0ea7680baad061c66a0b6dc77dbf23258218 --- b2g/components/ProcessGlobal.js | 17 +++++++++++++---- b2g/components/RecoveryService.js | 10 ++++++++-- dom/webidl/MozPowerManager.webidl | 5 ++++- hal/gonk/GonkHal.cpp | 2 ++ hal/sandbox/SandboxHal.cpp | 4 ++++ 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/b2g/components/ProcessGlobal.js b/b2g/components/ProcessGlobal.js index 26babe058d14..78c5558cce4e 100644 --- a/b2g/components/ProcessGlobal.js +++ b/b2g/components/ProcessGlobal.js @@ -22,6 +22,10 @@ const Cu = Components.utils; Cu.import('resource://gre/modules/Services.jsm'); Cu.import('resource://gre/modules/XPCOMUtils.jsm'); +XPCOMUtils.defineLazyServiceGetter(this, "settings", + "@mozilla.org/settingsService;1", + "nsISettingsService"); + function debug(msg) { log(msg); } @@ -89,14 +93,19 @@ ProcessGlobal.prototype = { } }, - processWipeFile: function(text) { - log("processWipeFile " + text); + processCommandsFile: function(text) { + log("processCommandsFile " + text); let lines = text.split("\n"); lines.forEach((line) => { log(line); let params = line.split(" "); if (params[0] == "wipe") { this.wipeDir(params[1]); + } else if (params[0] == "root") { + log("unrestrict devtools"); + Services.prefs.setBoolPref("devtools.debugger.forbid-certified-apps", false); + let lock = settings.createLock(); + lock.set("developer.menu.enabled", true, null); } }); }, @@ -113,7 +122,7 @@ ProcessGlobal.prototype = { let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); file.initWithPath(postResetFile); if (!file.exists()) { - debug("Nothing to wipe.") + debug("No additional command.") return; } @@ -122,7 +131,7 @@ ProcessGlobal.prototype = { (array) => { file.remove(false); let decoder = new TextDecoder(); - this.processWipeFile(decoder.decode(array)); + this.processCommandsFile(decoder.decode(array)); }, function onError(error) { debug("Error: " + error); diff --git a/b2g/components/RecoveryService.js b/b2g/components/RecoveryService.js index 313efed46444..43373b103d1b 100644 --- a/b2g/components/RecoveryService.js +++ b/b2g/components/RecoveryService.js @@ -81,19 +81,24 @@ RecoveryService.prototype = { } log("factoryReset " + reason); + let commands = []; if (reason == "wipe") { let volumeService = Cc["@mozilla.org/telephony/volume-service;1"] .getService(Ci.nsIVolumeService); let volNames = volumeService.getVolumeNames(); log("Found " + volNames.length + " volumes"); - let text = ""; + for (let i = 0; i < volNames.length; i++) { let name = volNames.queryElementAt(i, Ci.nsISupportsString); let volume = volumeService.getVolumeByName(name.data); log("Got volume: " + name.data + " at " + volume.mountPoint); - text += "wipe " + volume.mountPoint + "\n"; + commands.push("wipe " + volume.mountPoint); } + } else if (reason == "root") { + commands.push("root"); + } + if (commands.length > 0) { Cu.import("resource://gre/modules/osfile.jsm"); let dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile); dir.initWithPath("/persist"); @@ -101,6 +106,7 @@ RecoveryService.prototype = { OS.Path.join("/persist", gFactoryResetFile): OS.Path.join("/cache", gFactoryResetFile); let encoder = new TextEncoder(); + let text = commands.join("\n"); let array = encoder.encode(text); let promise = OS.File.writeAtomic(postResetFile, array, { tmpPath: postResetFile + ".tmp" }); diff --git a/dom/webidl/MozPowerManager.webidl b/dom/webidl/MozPowerManager.webidl index 45543bf1f0d4..8aac2f2d4732 100644 --- a/dom/webidl/MozPowerManager.webidl +++ b/dom/webidl/MozPowerManager.webidl @@ -9,10 +9,13 @@ interface MozWakeLockListener; * The reason for the factory reset. * "normal" : simple factory reset. * "wipe" : will also attempt to wipe all user storage areas. + * "root" : simple factory reset that also root the phone to get more + * privileges when using devtools. */ enum FactoryResetReason { "normal", - "wipe" + "wipe", + "root" }; /** diff --git a/hal/gonk/GonkHal.cpp b/hal/gonk/GonkHal.cpp index fa7c627b1073..cca9193ef4fc 100644 --- a/hal/gonk/GonkHal.cpp +++ b/hal/gonk/GonkHal.cpp @@ -1777,6 +1777,8 @@ FactoryReset(FactoryResetReason& aReason) if (aReason == FactoryResetReason::Wipe) { recoveryService->FactoryReset("wipe"); + } else if (aReason == FactoryResetReason::Root) { + recoveryService->FactoryReset("root"); } else { recoveryService->FactoryReset("normal"); } diff --git a/hal/sandbox/SandboxHal.cpp b/hal/sandbox/SandboxHal.cpp index 2803d37bb20c..3bb2360100aa 100644 --- a/hal/sandbox/SandboxHal.cpp +++ b/hal/sandbox/SandboxHal.cpp @@ -446,6 +446,8 @@ FactoryReset(FactoryResetReason& aReason) Hal()->SendFactoryReset(NS_LITERAL_STRING("normal")); } else if (aReason == FactoryResetReason::Wipe) { Hal()->SendFactoryReset(NS_LITERAL_STRING("wipe")); + } else if (aReason == FactoryResetReason::Root) { + Hal()->SendFactoryReset(NS_LITERAL_STRING("root")); } } @@ -870,6 +872,8 @@ public: reason = FactoryResetReason::Normal; } else if (aReason.EqualsLiteral("wipe")) { reason = FactoryResetReason::Wipe; + } else if (aReason.EqualsLiteral("root")) { + reason = FactoryResetReason::Root; } else { // Invalid factory reset reason. That should never happen. return false; From 56bf9455a12c9a7e315efe951828d985907712ae Mon Sep 17 00:00:00 2001 From: Jay Wang Date: Tue, 2 Dec 2014 17:10:00 -0500 Subject: [PATCH 20/30] Bug 1105452 - Need to use new Audio system APIs for audio offload playback. r=roc, r=jld, r=ggrisco Resolve the build failure caused by API changes There are some changes in Audio APIs in Android version 21. Modifying the code to use the new APIs. Change-Id: I24fdeb20f8f957d05fb6c0c317de0a6f0769c347 Resolve seccomp violation caused by syscall 256 Modify the filter to allow syscall 256 (set_tid_address). Change-Id: I49461770c4c5e70bf68462d34321381b0b7ead0a --- dom/media/omx/AudioOffloadPlayer.cpp | 9 +++++++++ security/sandbox/linux/SandboxFilter.cpp | 1 + 2 files changed, 10 insertions(+) diff --git a/dom/media/omx/AudioOffloadPlayer.cpp b/dom/media/omx/AudioOffloadPlayer.cpp index 41a4693b21a8..98ec5ace0fd0 100644 --- a/dom/media/omx/AudioOffloadPlayer.cpp +++ b/dom/media/omx/AudioOffloadPlayer.cpp @@ -77,8 +77,13 @@ AudioOffloadPlayer::AudioOffloadPlayer(MediaOmxCommonDecoder* aObserver) : #endif CHECK(aObserver); +#if ANDROID_VERSION >= 21 + mSessionId = AudioSystem::newAudioUniqueId(); + AudioSystem::acquireAudioSessionId(mSessionId, -1); +#else mSessionId = AudioSystem::newAudioSessionId(); AudioSystem::acquireAudioSessionId(mSessionId); +#endif mAudioSink = new AudioOutput(mSessionId, IPCThreadState::self()->getCallingUid()); } @@ -86,7 +91,11 @@ AudioOffloadPlayer::AudioOffloadPlayer(MediaOmxCommonDecoder* aObserver) : AudioOffloadPlayer::~AudioOffloadPlayer() { Reset(); +#if ANDROID_VERSION >= 21 + AudioSystem::releaseAudioSessionId(mSessionId, -1); +#else AudioSystem::releaseAudioSessionId(mSessionId); +#endif } void AudioOffloadPlayer::SetSource(const sp &aSource) diff --git a/security/sandbox/linux/SandboxFilter.cpp b/security/sandbox/linux/SandboxFilter.cpp index dc59d06d752a..f2b83ee9e2b2 100644 --- a/security/sandbox/linux/SandboxFilter.cpp +++ b/security/sandbox/linux/SandboxFilter.cpp @@ -244,6 +244,7 @@ SandboxFilterImplContent::Build() { Allow(SYSCALL(sched_setparam)); Allow(SYSCALL(sigaltstack)); Allow(SYSCALL(pipe)); + Allow(SYSCALL(set_tid_address)); /* Always last and always OK calls */ /* Architecture-specific very infrequently used syscalls */ From 1668b1f0fcd14756a3af1f85fb7956407621e944 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 07:42:15 -0800 Subject: [PATCH 21/30] Bumping gaia.json for 1 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/99f6502fa1fc Author: Ryan VanderMeulen Desc: Revert "Merge pull request #26445 from pacorampas/1099397" This reverts commit 7cc460af0f6f491d1afa6b6043cdea5025f0e15f, reversing changes made to 30ad86d78c396ed746879d732e0cc8aad61b936a. --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 9295797afec0..2981190ecfef 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "ac366b1ee18968a9f0b514dd03412942ce6d9493", + "revision": "99f6502fa1fcee06f431de9fc4cda5933b08a0e9", "repo_path": "integration/gaia-central" } From caeea799ce693417aec11ee264911cc52e633a58 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 07:48:33 -0800 Subject: [PATCH 22/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 13d455371df8..fd3e10f54846 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index 34505dcb2db0..a4ab1c2ba80b 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index c3e3f291662c..f4095f6c435e 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index b21379caefd9..9113f6c4c1a3 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index 34505dcb2db0..a4ab1c2ba80b 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 41a70babfdef..a4372e589731 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 73a860b85904..55a3df5b8483 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 628187cea2a0..5b4d2b9ac88e 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 2640a261245d..48731b8a48c4 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 2efcb1da41b6..1fdd12c768b0 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index a6e3eef95065..1157b5b5bfc7 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From b53b0691f13d6d5960e0d8ca75149af6be4d11e2 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 07:57:14 -0800 Subject: [PATCH 23/30] Bumping gaia.json for 2 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/304e319b8a7d Author: Douglas Sherk Desc: Merge pull request #26565 from DouglasSherk/1102496-dialer-keypad-delete-rtl Bug 1102496 - Force render the keypad delete button in LTR, even in RTL mode. r=gsvelto ======== https://hg.mozilla.org/integration/gaia-central/rev/3be4530c5276 Author: Doug Sherk Desc: Bug 1102496 - Force render the keypad delete button in LTR, even in RTL mode. r=gsvelto --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 2981190ecfef..5f0484bde9c7 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "99f6502fa1fcee06f431de9fc4cda5933b08a0e9", + "revision": "304e319b8a7d0da6bad47c9af59c20d4d0d22bff", "repo_path": "integration/gaia-central" } From f7c1699b2e563f22d983ec7f43308fbfe499e616 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 08:01:52 -0800 Subject: [PATCH 24/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index fd3e10f54846..8ffdcf035c08 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index a4ab1c2ba80b..dd06111c9ad8 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index f4095f6c435e..223c58154cc9 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 9113f6c4c1a3..328838889a56 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index a4ab1c2ba80b..dd06111c9ad8 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index a4372e589731..2816670baab8 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 55a3df5b8483..84f22b4c4cb9 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index 5b4d2b9ac88e..c7c7b740383e 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index 48731b8a48c4..b748bc513d32 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index 1fdd12c768b0..b8ad72baf0bc 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index 1157b5b5bfc7..c2b15a0cd8ec 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From 9420b09b3c6d3add9d41725aa6003e6918675fcc Mon Sep 17 00:00:00 2001 From: Ryan VanderMeulen Date: Mon, 8 Dec 2014 11:05:03 -0500 Subject: [PATCH 25/30] Backed out changeset f4e24f923395 (bug 1092132) for Gip bustage. --HG-- extra : rebase_source : 6a09b24d719c71df8556aa1ce692d9af7570a08a --- testing/config/mozharness/marionette.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/testing/config/mozharness/marionette.py b/testing/config/mozharness/marionette.py index 81418f270d78..8c64e4b8cc82 100644 --- a/testing/config/mozharness/marionette.py +++ b/testing/config/mozharness/marionette.py @@ -50,13 +50,10 @@ config = { "--testvars=%(testvars)s", "--profile=%(profile)s", "--symbols-path=%(symbols_path)s", - "--gecko-log=%(gecko_log)s", "--xml-output=%(xml_output)s", "--html-output=%(html_output)s", "--log-raw=%(raw_log_file)s", "--binary=%(binary)s", "--address=%(address)s", - "--total-chunks=%(total_chunks)s", - "--this-chunk=%(this_chunk)s", ], } From 7ca61b12b0be18c04e73904c02f47a1e2ad1a0df Mon Sep 17 00:00:00 2001 From: Mike de Boer Date: Mon, 8 Dec 2014 17:45:32 +0100 Subject: [PATCH 26/30] Bug 1092954: oust all users from a room when it's deleted. r=Standard8 --- browser/components/loop/LoopRooms.jsm | 1 + .../loop/content/shared/js/activeRoomStore.js | 20 ++++++- .../loop/content/shared/js/otSdkDriver.js | 53 +++++++++++++++++-- 3 files changed, 69 insertions(+), 5 deletions(-) diff --git a/browser/components/loop/LoopRooms.jsm b/browser/components/loop/LoopRooms.jsm index 33375ab55119..4430c0ec4215 100644 --- a/browser/components/loop/LoopRooms.jsm +++ b/browser/components/loop/LoopRooms.jsm @@ -346,6 +346,7 @@ let LoopRoomsInternal = { .then(response => { this.rooms.delete(roomToken); eventEmitter.emit("delete", room); + eventEmitter.emit("delete:" + room.roomToken, room); callback(null, room); }, error => callback(error)).catch(error => callback(error)); }, diff --git a/browser/components/loop/content/shared/js/activeRoomStore.js b/browser/components/loop/content/shared/js/activeRoomStore.js index abf819bcd66f..df909a164367 100644 --- a/browser/components/loop/content/shared/js/activeRoomStore.js +++ b/browser/components/loop/content/shared/js/activeRoomStore.js @@ -211,6 +211,8 @@ loop.store.ActiveRoomStore = (function() { this._mozLoop.rooms.on("update:" + actionData.roomToken, this._handleRoomUpdate.bind(this)); + this._mozLoop.rooms.on("delete:" + actionData.roomToken, + this._handleRoomDelete.bind(this)); }, /** @@ -230,6 +232,8 @@ loop.store.ActiveRoomStore = (function() { this._mozLoop.rooms.on("update:" + actionData.roomToken, this._handleRoomUpdate.bind(this)); + this._mozLoop.rooms.on("delete:" + actionData.roomToken, + this._handleRoomDelete.bind(this)); }, /** @@ -259,6 +263,18 @@ loop.store.ActiveRoomStore = (function() { })); }, + /** + * Handles the deletion of a room, notified by the mozLoop rooms API. + * + * @param {String} eventName The name of the event + * @param {Object} roomData The roomData of the deleted room + */ + _handleRoomDelete: function(eventName, roomData) { + this._sdkDriver.forceDisconnectAll(function() { + window.close(); + }); + }, + /** * Handles the action to join to a room. */ @@ -391,7 +407,9 @@ loop.store.ActiveRoomStore = (function() { this._leaveRoom(ROOM_STATES.CLOSING); // If we're closing the window, we can stop listening to updates. - this._mozLoop.rooms.off("update:" + this.getStoreState().roomToken); + var roomToken = this.getStoreState().roomToken; + this._mozLoop.rooms.off("update:" + roomToken); + this._mozLoop.rooms.off("delete:" + roomToken); }, /** diff --git a/browser/components/loop/content/shared/js/otSdkDriver.js b/browser/components/loop/content/shared/js/otSdkDriver.js index ece58a79b124..95d20b2b43b2 100644 --- a/browser/components/loop/content/shared/js/otSdkDriver.js +++ b/browser/components/loop/content/shared/js/otSdkDriver.js @@ -25,6 +25,8 @@ loop.OTSdkDriver = (function() { this.dispatcher = options.dispatcher; this.sdk = options.sdk; + this.connections = {}; + this.dispatcher.register(this, [ "setupStreamElements", "setMute" @@ -115,6 +117,38 @@ loop.OTSdkDriver = (function() { delete this._publisherReady; delete this._publishedLocalStream; delete this._subscribedRemoteStream; + this.connections = {}; + }, + + /** + * Oust all users from an ongoing session. This is typically done when a room + * owner deletes the room. + * + * @param {Function} callback Function to be invoked once all connections are + * ousted + */ + forceDisconnectAll: function(callback) { + if (!this._sessionConnected) { + callback(); + return; + } + + var connectionNames = Object.keys(this.connections); + if (connectionNames.length === 0) { + callback(); + return; + } + var disconnectCount = 0; + connectionNames.forEach(function(id) { + var connection = this.connections[id]; + this.session.forceDisconnect(connection, function() { + // When all connections have disconnected, call the callback, since + // we're done. + if (++disconnectCount === connectionNames.length) { + callback(); + } + }); + }, this); }, /** @@ -139,10 +173,14 @@ loop.OTSdkDriver = (function() { /** * Handles the connection event for a peer's connection being dropped. * - * @param {SessionDisconnectEvent} event The event details - * https://tokbox.com/opentok/libraries/client/js/reference/SessionDisconnectEvent.html + * @param {ConnectionEvent} event The event details + * https://tokbox.com/opentok/libraries/client/js/reference/ConnectionEvent.html */ _onConnectionDestroyed: function(event) { + var connection = event.connection; + if (connection && (connection.id in this.connections)) { + delete this.connections[connection.id]; + } this.dispatcher.dispatch(new sharedActions.RemotePeerDisconnected({ peerHungup: event.reason === "clientDisconnected" })); @@ -164,11 +202,18 @@ loop.OTSdkDriver = (function() { } }, + /** + * Handles the connection event for a newly connecting peer. + * + * @param {ConnectionEvent} event The event details + * https://tokbox.com/opentok/libraries/client/js/reference/ConnectionEvent.html + */ _onConnectionCreated: function(event) { - if (this.session.connection.id === event.connection.id) { + var connection = event.connection; + if (this.session.connection.id === connection.id) { return; } - + this.connections[connection.id] = connection; this.dispatcher.dispatch(new sharedActions.RemotePeerConnected()); }, From ca01528808dedd0093ce3c350403c3396934b44a Mon Sep 17 00:00:00 2001 From: Mike de Boer Date: Mon, 8 Dec 2014 17:45:36 +0100 Subject: [PATCH 27/30] Bug 1092954: add tests for forced disconnect handling on room deletion. r=Standard8 --- .../loop/test/shared/activeRoomStore_test.js | 30 +++++++++++- .../loop/test/shared/otSdkDriver_test.js | 46 ++++++++++++++++++- 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/browser/components/loop/test/shared/activeRoomStore_test.js b/browser/components/loop/test/shared/activeRoomStore_test.js index 7677252fcfc9..5d59a0abd02a 100644 --- a/browser/components/loop/test/shared/activeRoomStore_test.js +++ b/browser/components/loop/test/shared/activeRoomStore_test.js @@ -34,7 +34,8 @@ describe("loop.store.ActiveRoomStore", function () { fakeSdkDriver = { connectSession: sandbox.stub(), - disconnectSession: sandbox.stub() + disconnectSession: sandbox.stub(), + forceDisconnectAll: sandbox.stub().callsArg(0) }; fakeMultiplexGum = { @@ -740,7 +741,7 @@ describe("loop.store.ActiveRoomStore", function () { }); it("should dispatch an UpdateRoomInfo action", function() { - sinon.assert.calledOnce(fakeMozLoop.rooms.on); + sinon.assert.calledTwice(fakeMozLoop.rooms.on); var fakeRoomData = { roomName: "fakeName", @@ -755,5 +756,30 @@ describe("loop.store.ActiveRoomStore", function () { new sharedActions.UpdateRoomInfo(fakeRoomData)); }); }); + + describe("delete:{roomToken}", function() { + var fakeRoomData = { + roomName: "Its a room", + roomOwner: "Me", + roomToken: "fakeToken", + roomUrl: "http://invalid" + }; + + beforeEach(function() { + store.setupRoomInfo(new sharedActions.SetupRoomInfo(fakeRoomData)); + }); + + it("should disconnect all room connections", function() { + fakeMozLoop.rooms.on.callArgWith(1, "delete:" + fakeRoomData.roomToken, fakeRoomData); + + sinon.assert.calledOnce(fakeSdkDriver.forceDisconnectAll); + }); + + it("should not disconnect anything when another room is deleted", function() { + fakeMozLoop.rooms.on.callArgWith(1, "delete:invalidToken", fakeRoomData); + + sinon.assert.calledOnce(fakeSdkDriver.forceDisconnectAll); + }); + }); }); }); diff --git a/browser/components/loop/test/shared/otSdkDriver_test.js b/browser/components/loop/test/shared/otSdkDriver_test.js index 762258adc283..ea1116fab8a6 100644 --- a/browser/components/loop/test/shared/otSdkDriver_test.js +++ b/browser/components/loop/test/shared/otSdkDriver_test.js @@ -34,7 +34,8 @@ describe("loop.OTSdkDriver", function () { connect: sinon.stub(), disconnect: sinon.stub(), publish: sinon.stub(), - subscribe: sinon.stub() + subscribe: sinon.stub(), + forceDisconnect: sinon.stub() }, Backbone.Events); publisher = _.extend({ @@ -175,6 +176,43 @@ describe("loop.OTSdkDriver", function () { }); }); + describe("#forceDisconnectAll", function() { + it("should not disconnect anything when not connected", function() { + driver.session = session; + driver.forceDisconnectAll(function() {}); + + sinon.assert.notCalled(session.forceDisconnect); + }); + + it("should disconnect all remote connections when called", function() { + driver.connectSession(sessionData); + sinon.assert.calledOnce(session.connect); + driver._sessionConnected = true; + + // Setup the right state in the driver to make `forceDisconnectAll` do + // something. + session.connection = { + id: "localUser" + }; + session.trigger("connectionCreated", { + connection: {id: "remoteUser"} + }); + expect(driver.connections).to.include.keys("remoteUser"); + + driver.forceDisconnectAll(function() {}); + sinon.assert.calledOnce(session.forceDisconnect); + + // Add another remote connection. + session.trigger("connectionCreated", { + connection: {id: "remoteUser2"} + }); + expect(driver.connections).to.include.keys("remoteUser", "remoteUser2"); + + driver.forceDisconnectAll(function() {}); + sinon.assert.calledThrice(session.forceDisconnect); + }); + }); + describe("Events", function() { beforeEach(function() { driver.connectSession(sessionData); @@ -275,6 +313,9 @@ describe("loop.OTSdkDriver", function () { sinon.assert.calledOnce(dispatcher.dispatch); sinon.assert.calledWithExactly(dispatcher.dispatch, new sharedActions.RemotePeerConnected()); + it("should store the connection details for a remote user", function() { + expect(driver.connections).to.include.keys("remoteUser"); + }); }); it("should not dispatch an action if this is for a local user", @@ -284,6 +325,9 @@ describe("loop.OTSdkDriver", function () { }); sinon.assert.notCalled(dispatcher.dispatch); + it("should not store the connection details for a local user", function() { + expect(driver.connections).to.not.include.keys("localUser"); + }); }); }); From d16bcdc551d82c32abf2a7e99175a0d283a55a43 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 09:42:16 -0800 Subject: [PATCH 28/30] Bumping gaia.json for 1 gaia revision(s) a=gaia-bump ======== https://hg.mozilla.org/integration/gaia-central/rev/0d6dca3dab03 Author: Augustin Trancart Desc: Bug 918970 - display existing thread when sending a sms from contact app r=julien --- b2g/config/gaia.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 5f0484bde9c7..3f0d8d6132bd 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -4,6 +4,6 @@ "remote": "", "branch": "" }, - "revision": "304e319b8a7d0da6bad47c9af59c20d4d0d22bff", + "revision": "0d6dca3dab03252cef2eb22079d0cab6362eda1e", "repo_path": "integration/gaia-central" } From c77fe33ef74f8fb872429c95b038f9caac956712 Mon Sep 17 00:00:00 2001 From: B2G Bumper Bot Date: Mon, 8 Dec 2014 09:51:56 -0800 Subject: [PATCH 29/30] Bumping manifests a=b2g-bump --- b2g/config/dolphin/sources.xml | 2 +- b2g/config/emulator-ics/sources.xml | 2 +- b2g/config/emulator-jb/sources.xml | 2 +- b2g/config/emulator-kk/sources.xml | 2 +- b2g/config/emulator/sources.xml | 2 +- b2g/config/flame-kk/sources.xml | 2 +- b2g/config/flame/sources.xml | 2 +- b2g/config/hamachi/sources.xml | 2 +- b2g/config/helix/sources.xml | 2 +- b2g/config/nexus-4/sources.xml | 2 +- b2g/config/wasabi/sources.xml | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml index 8ffdcf035c08..c2135507eee2 100644 --- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml index dd06111c9ad8..1f4ed5805dcf 100644 --- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml index 223c58154cc9..a7150dd92628 100644 --- a/b2g/config/emulator-jb/sources.xml +++ b/b2g/config/emulator-jb/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml index 328838889a56..abcd2a1e01e8 100644 --- a/b2g/config/emulator-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml index dd06111c9ad8..1f4ed5805dcf 100644 --- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -19,7 +19,7 @@ - + diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml index 2816670baab8..95528307ff83 100644 --- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml index 84f22b4c4cb9..b51e31450a6a 100644 --- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml index c7c7b740383e..c16d2cb23a14 100644 --- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml index b748bc513d32..a29c8bd19afd 100644 --- a/b2g/config/helix/sources.xml +++ b/b2g/config/helix/sources.xml @@ -15,7 +15,7 @@ - + diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml index b8ad72baf0bc..0f54824bcc3b 100644 --- a/b2g/config/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -17,7 +17,7 @@ - + diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml index c2b15a0cd8ec..da73cc8260a3 100644 --- a/b2g/config/wasabi/sources.xml +++ b/b2g/config/wasabi/sources.xml @@ -17,7 +17,7 @@ - + From aa4d9dead99037b429fe3d84d50bd471286aedf4 Mon Sep 17 00:00:00 2001 From: Victor Porof Date: Mon, 8 Dec 2014 13:09:25 -0500 Subject: [PATCH 30/30] Bug 1101197 - Improve performance of framerate view in new performance tool, r=jsantell --- .../performance/performance-controller.js | 2 - .../devtools/performance/views/overview.js | 39 ++-- browser/devtools/profiler/ui-profile.js | 1 - browser/devtools/shared/moz.build | 1 + browser/devtools/shared/widgets/Graphs.jsm | 188 ++++++++++++++---- .../devtools/shared/widgets/GraphsWorker.js | 161 +++++++++++++++ toolkit/devtools/server/actors/timeline.js | 15 +- 7 files changed, 345 insertions(+), 62 deletions(-) create mode 100644 browser/devtools/shared/widgets/GraphsWorker.js diff --git a/browser/devtools/performance/performance-controller.js b/browser/devtools/performance/performance-controller.js index 2de517fc9672..245f60bef5c6 100644 --- a/browser/devtools/performance/performance-controller.js +++ b/browser/devtools/performance/performance-controller.js @@ -18,8 +18,6 @@ devtools.lazyRequireGetter(this, "DevToolsUtils", "devtools/toolkit/DevToolsUtils"); devtools.lazyRequireGetter(this, "L10N", "devtools/profiler/global", true); -devtools.lazyRequireGetter(this, "FramerateFront", - "devtools/server/actors/framerate", true); devtools.lazyRequireGetter(this, "Waterfall", "devtools/timeline/waterfall", true); devtools.lazyRequireGetter(this, "MarkerDetails", diff --git a/browser/devtools/performance/views/overview.js b/browser/devtools/performance/views/overview.js index 1f28aa9d38c9..b929bbccb5f4 100644 --- a/browser/devtools/performance/views/overview.js +++ b/browser/devtools/performance/views/overview.js @@ -3,8 +3,11 @@ * You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; -const OVERVIEW_UPDATE_INTERVAL = 100; -const FRAMERATE_CALC_INTERVAL = 16; // ms +// No sense updating the overview more often than receiving data from the +// backend. Make sure this isn't lower than DEFAULT_TIMELINE_DATA_PULL_TIMEOUT +// in toolkit/devtools/server/actors/timeline.js +const OVERVIEW_UPDATE_INTERVAL = 200; // ms + const FRAMERATE_GRAPH_HEIGHT = 60; // px const GRAPH_SCROLL_EVENTS_DRAIN = 50; // ms @@ -13,11 +16,10 @@ const GRAPH_SCROLL_EVENTS_DRAIN = 50; // ms * framerate over time. */ let OverviewView = { - /** * Sets up the view with event binding. */ - initialize: function () { + initialize: Task.async(function *() { this._framerateEl = $("#time-framerate"); this._ticksData = []; @@ -28,14 +30,14 @@ let OverviewView = { this._onGraphMouseUp = this._onGraphMouseUp.bind(this); this._onGraphScroll = this._onGraphScroll.bind(this); - this._initializeFramerateGraph(); + yield this._initializeFramerateGraph(); this.framerateGraph.on("mouseup", this._onGraphMouseUp); this.framerateGraph.on("scroll", this._onGraphScroll); PerformanceController.on(EVENTS.RECORDING_STARTED, this._start); PerformanceController.on(EVENTS.RECORDING_STOPPED, this._stop); PerformanceController.on(EVENTS.TIMELINE_DATA, this._onTimelineData); - }, + }), /** * Unbinds events. @@ -55,9 +57,13 @@ let OverviewView = { * data into all the corresponding overview graphs. */ _onRecordingTick: Task.async(function *() { - yield this.framerateGraph.setDataWhenReady(this._ticksData); + // The `ticks` event on the TimelineFront returns all ticks for the + // recording session, so just convert to plottable values and draw. + let [, timestamps] = this._ticksData; + yield this.framerateGraph.setDataFromTimestamps(timestamps); + this.emit(EVENTS.OVERVIEW_RENDERED); - this._draw(); + this._prepareNextTick(); }), /** @@ -94,20 +100,21 @@ let OverviewView = { /** * Sets up the framerate graph. */ - _initializeFramerateGraph: function () { + _initializeFramerateGraph: Task.async(function *() { let graph = new LineGraphWidget(this._framerateEl, L10N.getStr("graphs.fps")); - graph.minDistanceBetweenPoints = 1; graph.fixedHeight = FRAMERATE_GRAPH_HEIGHT; graph.selectionEnabled = false; this.framerateGraph = graph; - }, + + yield graph.ready(); + }), /** * Called to refresh the timer to keep firing _onRecordingTick. */ - _draw: function () { + _prepareNextTick: function () { // Check here to see if there's still a _timeoutId, incase - // `stop` was called before the _draw call was executed. + // `stop` was called before the _prepareNextTick call was executed. if (this._timeoutId) { this._timeoutId = setTimeout(this._onRecordingTick, OVERVIEW_UPDATE_INTERVAL); } @@ -134,11 +141,7 @@ let OverviewView = { */ _onTimelineData: function (_, eventName, ...data) { if (eventName === "ticks") { - let [delta, timestamps] = data; - // the `ticks` event on the TimelineFront returns all ticks for the - // recording session, so just convert to plottable values - // and store. - this._ticksData = FramerateFront.plotFPS(timestamps, FRAMERATE_CALC_INTERVAL); + this._ticksData = data; } } }; diff --git a/browser/devtools/profiler/ui-profile.js b/browser/devtools/profiler/ui-profile.js index 9f65ed277929..5ef44112107c 100644 --- a/browser/devtools/profiler/ui-profile.js +++ b/browser/devtools/profiler/ui-profile.js @@ -394,7 +394,6 @@ let ProfileView = { let graph = new LineGraphWidget($(".framerate", panel), L10N.getStr("graphs.fps")); graph.fixedHeight = FRAMERATE_GRAPH_HEIGHT; - graph.minDistanceBetweenPoints = 1; graph.dataOffsetX = beginAt; yield graph.setDataWhenReady(framerateData); diff --git a/browser/devtools/shared/moz.build b/browser/devtools/shared/moz.build index 8a8d92ae6679..f2f398311754 100644 --- a/browser/devtools/shared/moz.build +++ b/browser/devtools/shared/moz.build @@ -23,6 +23,7 @@ EXTRA_JS_MODULES.devtools += [ 'widgets/BreadcrumbsWidget.jsm', 'widgets/Chart.jsm', 'widgets/Graphs.jsm', + 'widgets/GraphsWorker.js', 'widgets/SideMenuWidget.jsm', 'widgets/SimpleListWidget.jsm', 'widgets/VariablesView.jsm', diff --git a/browser/devtools/shared/widgets/Graphs.jsm b/browser/devtools/shared/widgets/Graphs.jsm index fdc0133aa2a3..4b2a644e424e 100644 --- a/browser/devtools/shared/widgets/Graphs.jsm +++ b/browser/devtools/shared/widgets/Graphs.jsm @@ -19,6 +19,7 @@ this.EXPORTED_SYMBOLS = [ const HTML_NS = "http://www.w3.org/1999/xhtml"; const GRAPH_SRC = "chrome://browser/content/devtools/graphs-frame.xhtml"; +const WORKER_URL = "resource:///modules/devtools/GraphsWorker.js"; const L10N = new ViewHelpers.L10N(); // Generic constants. @@ -44,7 +45,7 @@ const GRAPH_STRIPE_PATTERN_LINE_SPACING = 4; // px // Line graph constants. const LINE_GRAPH_DAMPEN_VALUES = 0.85; -const LINE_GRAPH_MIN_SQUARED_DISTANCE_BETWEEN_POINTS = 400; // 20 px +const LINE_GRAPH_MIN_SQUARED_DISTANCE_BETWEEN_POINTS = 1; // px const LINE_GRAPH_TOOLTIP_SAFE_BOUNDS = 8; // px const LINE_GRAPH_MIN_MAX_TOOLTIP_DISTANCE = 14; // px @@ -92,10 +93,10 @@ const BAR_GRAPH_LEGEND_MOUSEOVER_DEBOUNCE = 50; // ms /** * Small data primitives for all graphs. */ -this.GraphCursor = function() {} -this.GraphSelection = function() {} -this.GraphSelectionDragger = function() {} -this.GraphSelectionResizer = function() {} +this.GraphCursor = function() {}; +this.GraphSelection = function() {}; +this.GraphSelectionDragger = function() {}; +this.GraphSelectionResizer = function() {}; GraphCursor.prototype = { x: null, @@ -206,7 +207,7 @@ this.AbstractCanvasGraph = function(parent, name, sharpness) { this._ready.resolve(this); this.emit("ready", this); }); -} +}; AbstractCanvasGraph.prototype = { /** @@ -895,7 +896,7 @@ AbstractCanvasGraph.prototype = { while (node = node.offsetParent) { x += node.offsetLeft; y += node.offsetTop; - }; + } return { left: x, top: y }; }, @@ -1178,7 +1179,7 @@ this.LineGraphWidget = function(parent, metric, ...args) { this._avgTooltip = this._createTooltip("average", "end", "avg", metric); this._minTooltip = this._createTooltip("minimum", "start", "min", metric); }); -} +}; LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { backgroundColor: LINE_GRAPH_BACKGROUND_COLOR, @@ -1211,7 +1212,7 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { * Points that are too close too each other in the graph will not be rendered. * This scalar specifies the required minimum squared distance between points. */ - minDistanceBetweenPoints: LINE_GRAPH_MIN_SQUARED_DISTANCE_BETWEEN_POINTS, + minSquaredDistanceBetweenPoints: LINE_GRAPH_MIN_SQUARED_DISTANCE_BETWEEN_POINTS, /** * Specifies if min/max/avg tooltips have arrow handlers on their sides. @@ -1224,6 +1225,36 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { */ withFixedTooltipPositions: false, + /** + * Takes a list of numbers and plots them on a line graph representing + * the rate of occurences in a specified interval. Useful for drawing + * framerate, for example, from a sequence of timestamps. + * + * @param array timestamps + * A list of numbers representing time, ordered ascending. For example, + * this can be the raw data received from the framerate actor, which + * represents the elapsed time on each refresh driver tick. + * @param number interval + * The maximum amount of time to wait between calculations. + */ + setDataFromTimestamps: Task.async(function*(timestamps, interval) { + let { + plottedData, + plottedMinMaxSum + } = yield CanvasGraphUtils._performTaskInWorker("plotTimestampsGraph", { + width: this._width, + height: this._height, + dataOffsetX: this.dataOffsetX, + dampenValuesFactor: this.dampenValuesFactor, + minSquaredDistanceBetweenPoints: this.minSquaredDistanceBetweenPoints, + timestamps: timestamps, + interval: interval + }); + + this._tempMinMaxSum = plottedMinMaxSum; + this.setData(plottedData); + }), + /** * Renders the graph's data source. * @see AbstractCanvasGraph.prototype.buildGraphImage @@ -1238,31 +1269,37 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { let lastTick = totalTicks ? this._data[totalTicks - 1].delta : 0; let maxValue = Number.MIN_SAFE_INTEGER; let minValue = Number.MAX_SAFE_INTEGER; - let sumValues = 0; + let avgValue = 0; + let forceDrawAllPoints = false; - for (let { delta, value } of this._data) { - maxValue = Math.max(value, maxValue); - minValue = Math.min(value, minValue); - sumValues += value; + if (this._tempMinMaxSum) { + maxValue = this._tempMinMaxSum.maxValue; + minValue = this._tempMinMaxSum.minValue; + avgValue = this._tempMinMaxSum.avgValue; + // If we use cached `minValue`, `maxValue`, `avgValue` then we can assume + // that we've already removed points that did not meet the + // `minSquaredDistanceBetweenPoints` requirement. + forceDrawAllPoints = true; + } else { + let sumValues = 0; + for (let { delta, value } of this._data) { + maxValue = Math.max(value, maxValue); + minValue = Math.min(value, minValue); + sumValues += value; + } + avgValue = sumValues / totalTicks; } let dataScaleX = this.dataScaleX = width / (lastTick - this.dataOffsetX); let dataScaleY = this.dataScaleY = height / maxValue * this.dampenValuesFactor; - /** - * Calculates the squared distance between two 2D points. - */ - function distSquared(x0, y0, x1, y1) { - let xs = x1 - x0; - let ys = y1 - y0; - return xs * xs + ys * ys; - } - - // Draw the graph. + // Draw the background. ctx.fillStyle = this.backgroundColor; ctx.fillRect(0, 0, width, height); + // Draw the graph. + let gradient = ctx.createLinearGradient(0, height / 2, 0, height); gradient.addColorStop(0, this.backgroundGradientStart); gradient.addColorStop(1, this.backgroundGradientEnd); @@ -1273,6 +1310,7 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { let prevX = 0; let prevY = 0; + let minSqDist = this.minSquaredDistanceBetweenPoints; for (let { delta, value } of this._data) { let currX = (delta - this.dataOffsetX) * dataScaleX; @@ -1283,8 +1321,7 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { ctx.lineTo(-LINE_GRAPH_STROKE_WIDTH, currY); } - let distance = distSquared(prevX, prevY, currX, currY); - if (distance >= this.minDistanceBetweenPoints) { + if (forceDrawAllPoints || distSquared(prevX, prevY, currX, currY) >= minSqDist) { ctx.lineTo(currX, currY); prevX = currX; prevY = currY; @@ -1299,6 +1336,26 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { ctx.fill(); ctx.stroke(); + this._drawOverlays(ctx, minValue, maxValue, avgValue, dataScaleY); + + return canvas; + }, + + /** + * Draws the min, max and average horizontal lines, along with their + * repsective tooltips. + * + * @param CanvasRenderingContext2D ctx + * @param number minValue + * @param number maxValue + * @param number avgValue + * @param number dataScaleY + */ + _drawOverlays: function(ctx, minValue, maxValue, avgValue, dataScaleY) { + let width = this._width; + let height = this._height; + let totalTicks = this._data.length; + // Draw the maximum value horizontal line. ctx.strokeStyle = this.maximumLineColor; @@ -1316,7 +1373,6 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { ctx.lineWidth = LINE_GRAPH_HELPER_LINES_WIDTH; ctx.setLineDash(LINE_GRAPH_HELPER_LINES_DASH); ctx.beginPath(); - let avgValue = totalTicks ? sumValues / totalTicks : 0; let averageY = height - avgValue * dataScaleY; ctx.moveTo(0, averageY); ctx.lineTo(width, averageY); @@ -1342,15 +1398,6 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { this._minTooltip.querySelector("[text=value]").textContent = L10N.numberWithDecimals(minValue, 2); - /** - * Constrains a value to a range. - */ - function clamp(value, min, max) { - if (value < min) return min; - if (value > max) return max; - return value; - } - let bottom = height / this._pixelRatio; let maxPosY = map(maxValue * this.dampenValuesFactor, 0, maxValue, bottom, 0); let avgPosY = map(avgValue * this.dampenValuesFactor, 0, maxValue, bottom, 0); @@ -1384,8 +1431,6 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { this._minTooltip.hidden = !totalTicks; this._gutter.hidden = !this.withTooltipArrows; - - return canvas; }, /** @@ -1445,7 +1490,6 @@ LineGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { } }); - /** * A bar graph, plotting tuples of values as rectangles. * @@ -1501,7 +1545,7 @@ this.BarGraphWidget = function(parent, ...args) { } this.outstandingEventListeners = null; }); -} +}; BarGraphWidget.prototype = Heritage.extend(AbstractCanvasGraph.prototype, { clipheadLineColor: BAR_GRAPH_CLIPHEAD_LINE_COLOR, @@ -1955,6 +1999,9 @@ const gCachedStripePattern = new Map(); * Utility functions for graph canvases. */ this.CanvasGraphUtils = { + _graphUtilsWorker: null, + _graphUtilsTaskId: 0, + /** * Merges the animation loop of two graphs. */ @@ -2004,6 +2051,47 @@ this.CanvasGraphUtils = { graph2.on("deselecting", () => { graph1.dropSelection(); }); + }, + + /** + * Performs the given task in a chrome worker, assuming it exists. + * + * @param string task + * The task name. Currently supported: "plotTimestampsGraph". + * @param any args + * Extra arguments to pass to the worker. + * @param array transferrable [optional] + * A list of transferrable objects, if any. + * @return object + * A promise that is resolved once the worker finishes the task. + */ + _performTaskInWorker: function(task, args, transferrable) { + let worker = this._graphUtilsWorker || new ChromeWorker(WORKER_URL); + let id = this._graphUtilsTaskId++; + worker.postMessage({ task, id, args }, transferrable); + return this._waitForWorkerResponse(worker, id); + }, + + /** + * Waits for the specified worker to finish a task. + * + * @param ChromeWorker worker + * The worker for which to add a message listener. + * @param number id + * The worker task id. + */ + _waitForWorkerResponse: function(worker, id) { + let deferred = promise.defer(); + + worker.addEventListener("message", function listener({ data }) { + if (data.id != id) { + return; + } + worker.removeEventListener("message", listener); + deferred.resolve(data); + }); + + return deferred.promise; } }; @@ -2016,6 +2104,26 @@ function map(value, istart, istop, ostart, ostop) { return ostart + (ostop - ostart) * ((value - istart) / (istop - istart)); } +/** + * Constrains a value to a range. + * @param number value, min, max + * @return number + */ +function clamp(value, min, max) { + if (value < min) return min; + if (value > max) return max; + return value; +} + +/** + * Calculates the squared distance between two 2D points. + */ +function distSquared(x0, y0, x1, y1) { + let xs = x1 - x0; + let ys = y1 - y0; + return xs * xs + ys * ys; +} + /** * Finds the first element in an array that validates a predicate. * @param array diff --git a/browser/devtools/shared/widgets/GraphsWorker.js b/browser/devtools/shared/widgets/GraphsWorker.js new file mode 100644 index 000000000000..b0b4ca2f5cf1 --- /dev/null +++ b/browser/devtools/shared/widgets/GraphsWorker.js @@ -0,0 +1,161 @@ +/* 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/. */ +"use strict"; + +self.onmessage = e => { + const { id, task, args } = e.data; + + switch (task) { + case "plotTimestampsGraph": + plotTimestampsGraph(id, args); + break; + default: + self.postMessage({ id, error: e.message + "\n" + e.stack }); + break; + } +}; + +/** + * @see LineGraphWidget.prototype.setDataFromTimestamps in Graphs.jsm + * @param number id + * @param number width + * @param number height + * @param array timestamps + * @param number interval + */ +function plotTimestampsGraph(id, args) { + let plottedData = plotTimestamps(args.timestamps, args.interval); + let plottedMinMaxSum = getMinMaxSum(plottedData); + let sparsifiedData = sparsifyLineData(plottedData, plottedMinMaxSum, args); + + let response = { id, plottedData: sparsifiedData, plottedMinMaxSum }; + self.postMessage(response); +} + +/** + * Gets the min, max and average of the values in an array. + * @param array source + * @return object + */ +function getMinMaxSum(source) { + let totalTicks = source.length; + let maxValue = Number.MIN_SAFE_INTEGER; + let minValue = Number.MAX_SAFE_INTEGER; + let avgValue = 0; + let sumValues = 0; + + for (let { value } of source) { + maxValue = Math.max(value, maxValue); + minValue = Math.min(value, minValue); + sumValues += value; + } + avgValue = sumValues / totalTicks; + + return { minValue, maxValue, avgValue }; +} + +/** + * Reduce a data source for a line graph, based off of a minimum distance + * between the points to render. + */ +function sparsifyLineData(plottedData, plottedMinMaxSum, options) { + let { width: graphWidth, height: graphHeight } = options; + let { dataOffsetX, dampenValuesFactor } = options; + let { minSquaredDistanceBetweenPoints } = options; + + let result = []; + + let totalTicks = plottedData.length; + let maxValue = plottedMinMaxSum.maxValue; + + let firstTick = totalTicks ? plottedData[0].delta : 0; + let lastTick = totalTicks ? plottedData[totalTicks - 1].delta : 0; + let dataScaleX = graphWidth / (lastTick - dataOffsetX); + let dataScaleY = graphHeight / maxValue * dampenValuesFactor; + + let prevX = 0; + let prevY = 0; + + for (let { delta, value } of plottedData) { + let currX = (delta - dataOffsetX) * dataScaleX; + let currY = graphHeight - value * dataScaleY; + + if (delta == firstTick || delta == lastTick) { + result.push({ delta, value }); + continue; + } + + let dist = distSquared(prevX, prevY, currX, currY); + if (dist >= minSquaredDistanceBetweenPoints) { + result.push({ delta, value }); + prevX = currX; + prevY = currY; + } + } + + return result; +} + +/** + * Takes a list of numbers and plots them on a line graph representing + * the rate of occurences in a specified interval. + * + * XXX: Copied almost verbatim from toolkit/devtools/server/actors/framerate.js + * Remove that dead code after the Performance panel lands, bug 1075567. + * + * @param array timestamps + * A list of numbers representing time, ordered ascending. For example, + * this can be the raw data received from the framerate actor, which + * represents the elapsed time on each refresh driver tick. + * @param number interval + * The maximum amount of time to wait between calculations. + * @param number clamp + * The maximum allowed value. + * @return array + * A collection of { delta, value } objects representing the + * plotted value at every delta time. + */ +function plotTimestamps(timestamps, interval = 100, clamp = 60) { + let timeline = []; + let totalTicks = timestamps.length; + + // If the refresh driver didn't get a chance to tick before the + // recording was stopped, assume rate was 0. + if (totalTicks == 0) { + timeline.push({ delta: 0, value: 0 }); + timeline.push({ delta: interval, value: 0 }); + return timeline; + } + + let frameCount = 0; + let prevTime = +timestamps[0]; + + for (let i = 1; i < totalTicks; i++) { + let currTime = +timestamps[i]; + frameCount++; + + let elapsedTime = currTime - prevTime; + if (elapsedTime < interval) { + continue; + } + + let rate = Math.min(1000 / (elapsedTime / frameCount), clamp); + timeline.push({ delta: prevTime, value: rate }); + timeline.push({ delta: currTime, value: rate }); + + frameCount = 0; + prevTime = currTime; + } + + return timeline; +} + +/** + * Calculates the squared distance between two 2D points. + */ +function distSquared(x0, y0, x1, y1) { + let xs = x1 - x0; + let ys = y1 - y0; + return xs * xs + ys * ys; +} diff --git a/toolkit/devtools/server/actors/timeline.js b/toolkit/devtools/server/actors/timeline.js index a7b596c3f928..fdc8e0ff9ad1 100644 --- a/toolkit/devtools/server/actors/timeline.js +++ b/toolkit/devtools/server/actors/timeline.js @@ -34,6 +34,19 @@ const {FramerateActor} = require("devtools/server/actors/framerate"); // docShell, no event is sent). const DEFAULT_TIMELINE_DATA_PULL_TIMEOUT = 200; // ms +/** + * Type representing an array of numbers as strings, serialized fast(er). + * http://jsperf.com/json-stringify-parse-vs-array-join-split/3 + * + * XXX: It would be nice if on local connections (only), we could just *give* + * the array directly to the front, instead of going through all this + * serialization redundancy. + */ +protocol.types.addType("array-of-numbers-as-strings", { + write: (v) => v.join(","), + read: (v) => v.split(",") +}); + /** * The timeline actor pops and forwards timeline markers registered in docshells. */ @@ -72,7 +85,7 @@ let TimelineActor = exports.TimelineActor = protocol.ActorClass({ "ticks" : { type: "ticks", delta: Arg(0, "number"), - timestamps: Arg(1, "array:number") + timestamps: Arg(1, "array-of-numbers-as-strings") } },