From e2ccf77a140a13d667881ce97bf3181b8e4a57cd Mon Sep 17 00:00:00 2001 From: Noemi Erli Date: Tue, 20 Mar 2018 17:00:04 +0200 Subject: [PATCH] Backed out 10 changesets (bug 1446809) for failures in testing/mozbase/moztest/tests/test.py on a CLOSED TREE Backed out changeset 5748f214f813 (bug 1446809) Backed out changeset 1c7a6f2885fb (bug 1446809) Backed out changeset 2c31f0efbe64 (bug 1446809) Backed out changeset e102f93c590f (bug 1446809) Backed out changeset c722a1c3395f (bug 1446809) Backed out changeset 20b4c87f8abb (bug 1446809) Backed out changeset 31026393c5b6 (bug 1446809) Backed out changeset 9103be0ca176 (bug 1446809) Backed out changeset 11d671ad8ed4 (bug 1446809) Backed out changeset e412991e7f95 (bug 1446809) --- accessible/jsat/Presentation.jsm | 166 +++++++++++++++++- accessible/jsat/Utils.jsm | 17 +- accessible/tests/mochitest/hittest/a11y.ini | 2 +- accessible/tests/mochitest/jsat/jsatcommon.js | 9 +- .../jsat/test_content_integration.html | 4 +- browser/components/BrowserComponents.manifest | 5 +- .../components/feeds/BrowserFeeds.manifest | 5 +- .../sessionstore/nsSessionStore.manifest | 5 +- browser/experiments/docs/manifest.rst | 2 +- build/docs/mozinfo.rst | 4 +- build/unix/mozconfig.linux | 21 ++- devtools/docs/backend/actor-registration.md | 6 +- devtools/shared/system.js | 25 ++- .../test/mochitest/serviceworker_driver.js | 7 + .../test/webgl-conf/generated-mochitest.ini | 10 +- .../test/webgl-conf/mochitest-errata.ini | 23 ++- mobile/android/modules/FormAssistant.jsm | 1 + testing/mozbase/moztest/tests/test.py | 1 + testing/mozbase/mozversion/tests/manifest.ini | 1 + testing/mozbase/packages.txt | 1 + .../standalone_mozilla-central.py | 2 +- toolkit/nss.configure | 2 +- toolkit/toolkit.mozbuild | 3 +- widget/NativeKeyToDOMKeyName.h | 16 +- 24 files changed, 297 insertions(+), 41 deletions(-) diff --git a/accessible/jsat/Presentation.jsm b/accessible/jsat/Presentation.jsm index 03b2f9205cc6..3c76426f621c 100644 --- a/accessible/jsat/Presentation.jsm +++ b/accessible/jsat/Presentation.jsm @@ -471,6 +471,169 @@ AndroidPresenter.prototype.noMove = }; }; +/** + * A B2G presenter for Gaia. + */ +function B2GPresenter() {} + +B2GPresenter.prototype = Object.create(Presenter.prototype); + +B2GPresenter.prototype.type = "B2G"; + +B2GPresenter.prototype.keyboardEchoSetting = + new PrefCache("accessibility.accessfu.keyboard_echo"); +B2GPresenter.prototype.NO_ECHO = 0; +B2GPresenter.prototype.CHARACTER_ECHO = 1; +B2GPresenter.prototype.WORD_ECHO = 2; +B2GPresenter.prototype.CHARACTER_AND_WORD_ECHO = 3; + +/** + * A pattern used for haptic feedback. + * @type {Array} + */ +B2GPresenter.prototype.PIVOT_CHANGE_HAPTIC_PATTERN = [40]; + +/** + * Pivot move reasons. + * @type {Array} + */ +B2GPresenter.prototype.pivotChangedReasons = ["none", "next", "prev", "first", + "last", "text", "point"]; + +B2GPresenter.prototype.pivotChanged = + function B2GPresenter_pivotChanged(aContext, aReason, aIsUserInput) { + if (!aContext.accessible) { + return null; + } + + return { + type: this.type, + details: { + eventType: "vc-change", + data: UtteranceGenerator.genForContext(aContext), + options: { + pattern: this.PIVOT_CHANGE_HAPTIC_PATTERN, + isKey: Utils.isActivatableOnFingerUp(aContext.accessible), + reason: this.pivotChangedReasons[aReason], + isUserInput: aIsUserInput, + hints: aContext.interactionHints + } + } + }; + }; + +B2GPresenter.prototype.nameChanged = + function B2GPresenter_nameChanged(aAccessible, aIsPolite = true) { + return { + type: this.type, + details: { + eventType: "name-change", + data: aAccessible.name, + options: {enqueue: aIsPolite} + } + }; + }; + +B2GPresenter.prototype.valueChanged = + function B2GPresenter_valueChanged(aAccessible, aIsPolite = true) { + + // the editable value changes are handled in the text changed presenter + if (Utils.getState(aAccessible).contains(States.EDITABLE)) { + return null; + } + + return { + type: this.type, + details: { + eventType: "value-change", + data: aAccessible.value, + options: {enqueue: aIsPolite} + } + }; + }; + +B2GPresenter.prototype.textChanged = function B2GPresenter_textChanged( + aAccessible, aIsInserted, aStart, aLength, aText, aModifiedText) { + let echoSetting = this.keyboardEchoSetting.value; + let text = ""; + + if (echoSetting == this.CHARACTER_ECHO || + echoSetting == this.CHARACTER_AND_WORD_ECHO) { + text = aModifiedText; + } + + // add word if word boundary is added + if ((echoSetting == this.WORD_ECHO || + echoSetting == this.CHARACTER_AND_WORD_ECHO) && + aIsInserted && aLength === 1) { + let accText = aAccessible.QueryInterface(Ci.nsIAccessibleText); + let startBefore = {}, endBefore = {}; + let startAfter = {}, endAfter = {}; + accText.getTextBeforeOffset(aStart, + Ci.nsIAccessibleText.BOUNDARY_WORD_END, startBefore, endBefore); + let maybeWord = accText.getTextBeforeOffset(aStart + 1, + Ci.nsIAccessibleText.BOUNDARY_WORD_END, startAfter, endAfter); + if (endBefore.value !== endAfter.value) { + text += maybeWord; + } + } + + return { + type: this.type, + details: { + eventType: "text-change", + data: text + } + }; + + }; + +B2GPresenter.prototype.actionInvoked = + function B2GPresenter_actionInvoked(aObject, aActionName) { + return { + type: this.type, + details: { + eventType: "action", + data: UtteranceGenerator.genForAction(aObject, aActionName) + } + }; + }; + +B2GPresenter.prototype.liveRegion = function B2GPresenter_liveRegion(aContext, + aIsPolite, aIsHide, aModifiedText) { + return { + type: this.type, + details: { + eventType: "liveregion-change", + data: UtteranceGenerator.genForLiveRegion(aContext, aIsHide, + aModifiedText), + options: {enqueue: aIsPolite} + } + }; + }; + +B2GPresenter.prototype.announce = + function B2GPresenter_announce(aAnnouncement) { + return { + type: this.type, + details: { + eventType: "announcement", + data: aAnnouncement + } + }; + }; + +B2GPresenter.prototype.noMove = + function B2GPresenter_noMove(aMoveMethod) { + return { + type: this.type, + details: { + eventType: "no-move", + data: aMoveMethod + } + }; + }; + /** * A braille presenter */ @@ -513,7 +676,8 @@ var Presentation = { // jshint ignore:line delete this.presenters; let presenterMap = { "mobile/android": [VisualPresenter, AndroidPresenter], - "browser": [VisualPresenter, AndroidPresenter] + "b2g": [VisualPresenter, B2GPresenter], + "browser": [VisualPresenter, B2GPresenter, AndroidPresenter] }; this.presenters = presenterMap[Utils.MozBuildApp].map(P => new P()); return this.presenters; diff --git a/accessible/jsat/Utils.jsm b/accessible/jsat/Utils.jsm index dda853190aea..2fbcde34d3cc 100644 --- a/accessible/jsat/Utils.jsm +++ b/accessible/jsat/Utils.jsm @@ -26,8 +26,11 @@ var EXPORTED_SYMBOLS = ["Utils", "Logger", "PivotContext", "PrefCache"]; // jshi var Utils = { // jshint ignore:line _buildAppMap: { + "{3c2e2abc-06d4-11e1-ac3b-374f68613e61}": "b2g", + "{d1bfe7d9-c01e-4237-998b-7b5f960a4314}": "graphene", "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "browser", - "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "mobile/android" + "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "mobile/android", + "{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "mobile/xul" }, init: function Utils_init(aWindow) { @@ -130,6 +133,8 @@ var Utils = { // jshint ignore:line return this.win.BrowserApp; case "browser": return this.win.gBrowser; + case "b2g": + return this.win.shell; default: return null; } @@ -139,6 +144,9 @@ var Utils = { // jshint ignore:line if (!this.BrowserApp) { return null; } + if (this.MozBuildApp == "b2g") { + return this.BrowserApp.contentBrowser; + } return this.BrowserApp.selectedBrowser; }, @@ -167,6 +175,13 @@ var Utils = { // jshint ignore:line let document = this.CurrentContentDoc; if (document) { + if (document.location.host === "b2g") { + // The document is a b2g app chrome (ie. Mulet). + let contentBrowser = this.win.content.shell.contentBrowser; + messageManagers.add(this.getMessageManager(contentBrowser)); + document = contentBrowser.contentDocument; + } + let remoteframes = document.querySelectorAll("iframe"); for (let i = 0; i < remoteframes.length; ++i) { diff --git a/accessible/tests/mochitest/hittest/a11y.ini b/accessible/tests/mochitest/hittest/a11y.ini index 17af9d768c3a..ca79008639fc 100644 --- a/accessible/tests/mochitest/hittest/a11y.ini +++ b/accessible/tests/mochitest/hittest/a11y.ini @@ -5,7 +5,7 @@ support-files = zoom_tree.xul [test_browser.html] [test_canvas_hitregion.html] -skip-if = (os == "android") +skip-if = (os == "android" || appname == "b2g") [test_general.html] [test_menu.xul] [test_shadowroot.html] diff --git a/accessible/tests/mochitest/jsat/jsatcommon.js b/accessible/tests/mochitest/jsat/jsatcommon.js index 37c283cc8b5e..3f5cefdfd193 100644 --- a/accessible/tests/mochitest/jsat/jsatcommon.js +++ b/accessible/tests/mochitest/jsat/jsatcommon.js @@ -534,8 +534,11 @@ ExpectedMessage.prototype.ignore = function(aMessage) { return aMessage.name !== this.name; }; -function ExpectedPresent(aAndroid, aOptions) { +function ExpectedPresent(aB2g, aAndroid, aOptions) { ExpectedMessage.call(this, "AccessFu:Present", aOptions); + if (aB2g) { + this.json.b2g = aB2g; + } if (aAndroid) { this.json.android = aAndroid; @@ -547,7 +550,7 @@ ExpectedPresent.prototype = Object.create(ExpectedMessage.prototype); ExpectedPresent.prototype.is = function(aReceived, aInfo) { var received = this.extract_presenters(aReceived); - for (var presenter of ["android"]) { + for (var presenter of ["b2g", "android"]) { if (!this.options["no_" + presenter]) { var todo = this.options.todo || this.options[presenter + "_todo"]; SimpleTest[todo ? "todo" : "ok"].apply( @@ -602,6 +605,8 @@ function ExpectedCursorTextChange(aSpeech, aStartOffset, aEndOffset, aOptions) { toIndex: aEndOffset }], aOptions); + // bug 980509 + this.options.b2g_todo = true; } ExpectedCursorTextChange.prototype = diff --git a/accessible/tests/mochitest/jsat/test_content_integration.html b/accessible/tests/mochitest/jsat/test_content_integration.html index 9d3d484a08ad..9786571bf759 100644 --- a/accessible/tests/mochitest/jsat/test_content_integration.html +++ b/accessible/tests/mochitest/jsat/test_content_integration.html @@ -110,7 +110,7 @@ // Move from an inner frame to the last element in the parent doc [ContentMessages.simpleMoveLast, new ExpectedCursorChange( - ["slider", "0", {"string": "slider"}])], + ["slider", "0", {"string": "slider"}], { b2g_todo: true })], [ContentMessages.clearCursor, "AccessFu:CursorCleared"], @@ -153,7 +153,7 @@ {"string": "checkbutton"}, {"string": "listStart"}, {"string": "list"}, {"string": "listItemsCount", "count": 1}])], [ContentMessages.simpleMoveFirst, - new ExpectedCursorChange(["Phone status bar"])], + new ExpectedCursorChange(["Phone status bar"], { b2g_todo: true })], // Reset cursors [ContentMessages.clearCursor, "AccessFu:CursorCleared"], diff --git a/browser/components/BrowserComponents.manifest b/browser/components/BrowserComponents.manifest index c43fcf8af052..dbfc3d2ec491 100644 --- a/browser/components/BrowserComponents.manifest +++ b/browser/components/BrowserComponents.manifest @@ -29,12 +29,15 @@ category command-line-validator b-browser @mozilla.org/browser/clh;1 application # to the specific list of apps that use it so it doesn't get loaded in xpcshell. # Thus we restrict it to these apps: # +# b2g: {3c2e2abc-06d4-11e1-ac3b-374f68613e61} # browser: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} # mobile/android: {aa3c5121-dab2-40e2-81ca-7ea25febc110} +# mobile/xul: {a23983c0-fd0e-11dc-95ff-0800200c9a66} +# graphene: {d1bfe7d9-c01e-4237-998b-7b5f960a4314} component {eab9012e-5f74-4cbc-b2b5-a590235513cc} nsBrowserGlue.js contract @mozilla.org/browser/browserglue;1 {eab9012e-5f74-4cbc-b2b5-a590235513cc} -category app-startup nsBrowserGlue service,@mozilla.org/browser/browserglue;1 application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} +category app-startup nsBrowserGlue service,@mozilla.org/browser/browserglue;1 application={3c2e2abc-06d4-11e1-ac3b-374f68613e61} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} application={a23983c0-fd0e-11dc-95ff-0800200c9a66} application={d1bfe7d9-c01e-4237-998b-7b5f960a4314} component {d8903bf6-68d5-4e97-bcd1-e4d3012f721a} nsBrowserGlue.js #ifndef MOZ_MULET contract @mozilla.org/content-permission/prompt;1 {d8903bf6-68d5-4e97-bcd1-e4d3012f721a} diff --git a/browser/components/feeds/BrowserFeeds.manifest b/browser/components/feeds/BrowserFeeds.manifest index c0d63cba37c9..9088eb0373f2 100644 --- a/browser/components/feeds/BrowserFeeds.manifest +++ b/browser/components/feeds/BrowserFeeds.manifest @@ -2,8 +2,11 @@ # to the specific list of apps that use it so it doesn't get loaded in xpcshell. # Thus we restrict it to these apps: # +# b2g: {3c2e2abc-06d4-11e1-ac3b-374f68613e61} # browser: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} # mobile/android: {aa3c5121-dab2-40e2-81ca-7ea25febc110} +# mobile/xul: {a23983c0-fd0e-11dc-95ff-0800200c9a66} +# graphene: {d1bfe7d9-c01e-4237-998b-7b5f960a4314} component {229fa115-9412-4d32-baf3-2fc407f76fb1} FeedConverter.js contract @mozilla.org/streamconv;1?from=application/vnd.mozilla.maybe.feed&to=*/* {229fa115-9412-4d32-baf3-2fc407f76fb1} @@ -15,4 +18,4 @@ component {49bb6593-3aff-4eb3-a068-2712c28bd58e} FeedWriter.js contract @mozilla.org/browser/feeds/result-writer;1 {49bb6593-3aff-4eb3-a068-2712c28bd58e} component {792a7e82-06a0-437c-af63-b2d12e808acc} WebContentConverter.js contract @mozilla.org/embeddor.implemented/web-content-handler-registrar;1 {792a7e82-06a0-437c-af63-b2d12e808acc} -category app-startup WebContentConverter service,@mozilla.org/embeddor.implemented/web-content-handler-registrar;1 application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} +category app-startup WebContentConverter service,@mozilla.org/embeddor.implemented/web-content-handler-registrar;1 application={3c2e2abc-06d4-11e1-ac3b-374f68613e61} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} application={a23983c0-fd0e-11dc-95ff-0800200c9a66} application={d1bfe7d9-c01e-4237-998b-7b5f960a4314} diff --git a/browser/components/sessionstore/nsSessionStore.manifest b/browser/components/sessionstore/nsSessionStore.manifest index 1d98adc3b9f2..9b5819c6a37c 100644 --- a/browser/components/sessionstore/nsSessionStore.manifest +++ b/browser/components/sessionstore/nsSessionStore.manifest @@ -2,11 +2,14 @@ # to the specific list of apps that use it so it doesn't get loaded in xpcshell. # Thus we restrict it to these apps: # +# b2g: {3c2e2abc-06d4-11e1-ac3b-374f68613e61} # browser: {ec8030f7-c20a-464f-9b0e-13a3a9e97384} # mobile/android: {aa3c5121-dab2-40e2-81ca-7ea25febc110} +# mobile/xul: {a23983c0-fd0e-11dc-95ff-0800200c9a66} +# graphene: {d1bfe7d9-c01e-4237-998b-7b5f960a4314} component {5280606b-2510-4fe0-97ef-9b5a22eafe6b} nsSessionStore.js contract @mozilla.org/browser/sessionstore;1 {5280606b-2510-4fe0-97ef-9b5a22eafe6b} component {ec7a6c20-e081-11da-8ad9-0800200c9a66} nsSessionStartup.js contract @mozilla.org/browser/sessionstartup;1 {ec7a6c20-e081-11da-8ad9-0800200c9a66} -category app-startup nsSessionStartup service,@mozilla.org/browser/sessionstartup;1 application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} +category app-startup nsSessionStartup service,@mozilla.org/browser/sessionstartup;1 application={3c2e2abc-06d4-11e1-ac3b-374f68613e61} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} application={a23983c0-fd0e-11dc-95ff-0800200c9a66} application={d1bfe7d9-c01e-4237-998b-7b5f960a4314} diff --git a/browser/experiments/docs/manifest.rst b/browser/experiments/docs/manifest.rst index 213a7517ae61..ab8c13f82c22 100644 --- a/browser/experiments/docs/manifest.rst +++ b/browser/experiments/docs/manifest.rst @@ -101,7 +101,7 @@ appName Array of application names this experiment should run on. An application name comes from ``nsIXULAppInfo.name``. It is a value - like ``Firefox`` or ``Fennec``. + like ``Firefox``, ``Fennec``, or `B2G`. The client should compare its application name against the members of this array. If a match is found, the experiment is applicable. diff --git a/build/docs/mozinfo.rst b/build/docs/mozinfo.rst index 709ae87804d3..d44b814beee8 100644 --- a/build/docs/mozinfo.rst +++ b/build/docs/mozinfo.rst @@ -63,7 +63,7 @@ buildapp The path to the XUL application being built. For desktop Firefox, this is ``browser``. For Fennec, it's - ``mobile/android``. + ``mobile/android``. For B2G, it's ``b2g``. crashreporter Whether the crash reporter is enabled for this build. @@ -114,7 +114,7 @@ nightly_build os The operating system the build is produced for. Values for tier-1 - supported platforms are ``linux``, ``win``, ``mac``, and + supported platforms are ``linux``, ``win``, ``mac``, ``b2g``, and ``android``. For other platforms, the value is the lowercase version of the ``OS_TARGET`` variable from ``config.status``. diff --git a/build/unix/mozconfig.linux b/build/unix/mozconfig.linux index 0d52daee5b85..b5da799acd20 100644 --- a/build/unix/mozconfig.linux +++ b/build/unix/mozconfig.linux @@ -7,12 +7,21 @@ fi TOOLTOOL_DIR=${TOOLTOOL_DIR:-$topsrcdir} -# We deal with valgrind builds here -CC="$TOOLTOOL_DIR/gcc/bin/gcc" -CXX="$TOOLTOOL_DIR/gcc/bin/g++" +# some b2g desktop builds still happen on i686 machines, and the tooltool +# toolchain is x86_64 only. +# We also deal with valgrind builds here, they don't use tooltool manifests at +# all yet. +if [ -z "$no_tooltool" ] +then + CC="$TOOLTOOL_DIR/gcc/bin/gcc" + CXX="$TOOLTOOL_DIR/gcc/bin/g++" -# We want to make sure we use binutils and other binaries in the tooltool -# package. -mk_add_options "export PATH=$TOOLTOOL_DIR/gcc/bin:$PATH" + # We want to make sure we use binutils and other binaries in the tooltool + # package. + mk_add_options "export PATH=$TOOLTOOL_DIR/gcc/bin:$PATH" +else + CC="/tools/gcc-4.7.3-0moz1/bin/gcc" + CXX="/tools/gcc-4.7.3-0moz1/bin/g++" +fi . "$topsrcdir/build/unix/mozconfig.stdcxx" diff --git a/devtools/docs/backend/actor-registration.md b/devtools/docs/backend/actor-registration.md index 0e1090285e74..6355dfb288aa 100644 --- a/devtools/docs/backend/actor-registration.md +++ b/devtools/docs/backend/actor-registration.md @@ -4,9 +4,9 @@ Tab actors are the most common types of actors. That's the type of actors you will most probably be adding. -Tab actors target a document, this could be a tab in Firefox or a remote document in Firefox for Android/Safari/Chrome for Android (via Valence). +Tab actors target a document, this could be a tab in Firefox, an app on B2G or a remote document in Firefox for Android/Safari/Chrome for Android (via Valence). -Global actors however are for the rest, for things not related to any particular document but instead for things global to the whole Firefox/Chrome/Safari intance the toolbox is connected to (e.g. the preference actor). +Global actors however are for the rest, for things not related to any particular document but instead for things global to the whole Firefox/B2G/Chrome/Safari intance the toolbox is connected to (e.g. the preference actor). ## The DebuggerServer.registerModule function @@ -38,4 +38,4 @@ If you are adding a new actor from an add-on, you should call `DebuggerServer.re The `DebuggerServer` loads and creates all of the actors lazily to keep the initial memory usage down (which is extremely important on lower end devices). -It becomes especially important when debugging pages with e10s when there are more than one process, because that's when we need to spawn a `DebuggerServer` per process (it may not be immediately obvious that the server in the main process is mostly only here for piping messages to the actors in the child process). +It becomes especially important when debugging apps on b2g or pages with e10s when there are more than one process, because that's when we need to spawn a `DebuggerServer` per process (it may not be immediately obvious that the server in the main process is mostly only here for piping messages to the actors in the child process). diff --git a/devtools/shared/system.js b/devtools/shared/system.js index 4c289658945d..85bf2168d186 100644 --- a/devtools/shared/system.js +++ b/devtools/shared/system.js @@ -39,7 +39,9 @@ const APP_MAP = { "{3550f703-e582-4d05-9a08-453d09bdfdc6}": "thunderbird", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}": "seamonkey", "{718e30fb-e89b-41dd-9da7-e25a45638b28}": "sunbird", - "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "mobile/android" + "{3c2e2abc-06d4-11e1-ac3b-374f68613e61}": "b2g", + "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "mobile/android", + "{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "mobile/xul" }; var CACHED_INFO = null; @@ -66,8 +68,22 @@ async function getSystemInfo() { let hardware = "unknown"; let version = "unknown"; - os = appInfo.OS; - version = appInfo.version; + // B2G specific + if (apptype === "b2g") { + os = "B2G"; + // `getSetting` does not work in child processes on b2g. + // TODO bug 1205797, make this work in child processes. + try { + hardware = await exports.getSetting("deviceinfo.hardware"); + version = await exports.getSetting("deviceinfo.os"); + } catch (e) { + // Ignore. + } + } else { + // Not B2G + os = appInfo.OS; + version = appInfo.version; + } let bundle = Services.strings.createBundle("chrome://branding/locale/brand.properties"); if (bundle) { @@ -109,6 +125,7 @@ async function getSystemInfo() { // The application's version, for example "0.8.0+" or "3.7a1pre". // Typically, the version of Firefox, for example. // It is different than the version of Gecko or the XULRunner platform. + // On B2G, this is the Gaia version. version, // The application's build ID/date, for example "2004051604". @@ -139,6 +156,7 @@ async function getSystemInfo() { // Name of the OS type. Typically the same as `uname -s`. Possible values: // https://developer.mozilla.org/en/OS_TARGET + // Also may be "B2G". os, platform: os, @@ -253,6 +271,7 @@ function getSetting(name) { if ("@mozilla.org/settingsService;1" in Cc) { let settingsService; + // settingsService fails in b2g child processes // TODO bug 1205797, make this work in child processes. try { settingsService = Cc["@mozilla.org/settingsService;1"] diff --git a/dom/cache/test/mochitest/serviceworker_driver.js b/dom/cache/test/mochitest/serviceworker_driver.js index b35d82fbffec..7b4374c2bc72 100644 --- a/dom/cache/test/mochitest/serviceworker_driver.js +++ b/dom/cache/test/mochitest/serviceworker_driver.js @@ -2,6 +2,13 @@ // http://creativecommons.org/publicdomain/zero/1.0/ function serviceWorkerTestExec(testFile) { + var isB2G = !navigator.userAgent.includes("Android") && + /Mobile|Tablet/.test(navigator.userAgent); + if (isB2G) { + // TODO B2G doesn't support running service workers for now due to bug 1137683. + dump("Skipping running the test in SW until bug 1137683 gets fixed.\n"); + return Promise.resolve(); + } return new Promise(function(resolve, reject) { function setupSW(registration) { var worker = registration.waiting || diff --git a/dom/canvas/test/webgl-conf/generated-mochitest.ini b/dom/canvas/test/webgl-conf/generated-mochitest.ini index 9addd844dda7..ff34fcb4feed 100644 --- a/dom/canvas/test/webgl-conf/generated-mochitest.ini +++ b/dom/canvas/test/webgl-conf/generated-mochitest.ini @@ -4,7 +4,7 @@ [DEFAULT] subsuite = webgl -skip-if = (os == 'linux') && (buildapp == 'mulet') +skip-if = os == 'b2g' || ((os == 'linux') && (buildapp == 'mulet')) support-files = always-fail.html checkout/00_test_list.txt @@ -7537,7 +7537,7 @@ skip-if = (os == 'mac') [generated/test_conformance__context__constants-and-properties.html] [generated/test_conformance__context__context-attribute-preserve-drawing-buffer.html] [generated/test_conformance__context__context-attributes-alpha-depth-stencil-antialias.html] -skip-if = (os == 'linux') || (os == 'android') +skip-if = (os == 'b2g') || (os == 'linux') || (os == 'android') fail-if = (os == 'mac' && os_version == '10.6') [generated/test_conformance__context__context-creation-and-destruction.html] [generated/test_conformance__context__context-creation.html] @@ -7931,10 +7931,12 @@ fail-if = (os == 'android') [generated/test_conformance__glsl__misc__uniform-location-length-limits.html] [generated/test_conformance__glsl__reserved___webgl_field.vert.html] [generated/test_conformance__glsl__reserved___webgl_function.vert.html] +fail-if = (os == 'b2g') [generated/test_conformance__glsl__reserved___webgl_struct.vert.html] [generated/test_conformance__glsl__reserved___webgl_variable.vert.html] [generated/test_conformance__glsl__reserved__webgl_field.vert.html] [generated/test_conformance__glsl__reserved__webgl_function.vert.html] +fail-if = (os == 'b2g') [generated/test_conformance__glsl__reserved__webgl_struct.vert.html] [generated/test_conformance__glsl__reserved__webgl_variable.vert.html] [generated/test_conformance__glsl__samplers__glsl-function-texture2d-bias.html] @@ -7966,6 +7968,7 @@ skip-if = (os == 'android') [generated/test_conformance__misc__delayed-drawing.html] skip-if = (os == 'android' && android_version == '10') [generated/test_conformance__misc__error-reporting.html] +fail-if = (os == 'b2g') [generated/test_conformance__misc__expando-loss.html] [generated/test_conformance__misc__functions-returning-strings.html] [generated/test_conformance__misc__instanceof-test.html] @@ -7979,7 +7982,7 @@ fail-if = (os == 'android') [generated/test_conformance__misc__shader-precision-format.html] skip-if = (os == 'android') [generated/test_conformance__misc__type-conversion-test.html] -skip-if = (os == 'android') || (os == 'linux') +skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux') fail-if = (os == 'linux') [generated/test_conformance__misc__uninitialized-test.html] skip-if = (os == 'android') @@ -8205,6 +8208,7 @@ fail-if = (os == 'mac' && os_version == '10.6') [generated/test_conformance__ogles__GL__vec__vec_009_to_016.html] [generated/test_conformance__ogles__GL__vec__vec_017_to_018.html] [generated/test_conformance__programs__get-active-test.html] +fail-if = (os == 'b2g') [generated/test_conformance__programs__gl-bind-attrib-location-long-names-test.html] [generated/test_conformance__programs__gl-bind-attrib-location-test.html] [generated/test_conformance__programs__gl-get-active-attribute.html] diff --git a/dom/canvas/test/webgl-conf/mochitest-errata.ini b/dom/canvas/test/webgl-conf/mochitest-errata.ini index 5ee6b2f9f1f4..feb259cae536 100644 --- a/dom/canvas/test/webgl-conf/mochitest-errata.ini +++ b/dom/canvas/test/webgl-conf/mochitest-errata.ini @@ -23,8 +23,9 @@ [DEFAULT] subsuite = webgl +# Skip B2G for now, until we get a handle on the longer tail of emulator bugs. # Bug 1136181 disabled on Mulet for intermittent failures -skip-if = (os == 'linux') && (buildapp == 'mulet') +skip-if = os == 'b2g' || ((os == 'linux') && (buildapp == 'mulet')) [generated/test_..__always-fail.html] fail-if = 1 @@ -75,8 +76,8 @@ skip-if = (os == 'win') [generated/test_conformance__context__context-attributes-alpha-depth-stencil-antialias.html] fail-if = (os == 'mac' && os_version == '10.6') -# Asserts on linux debug. Crashes on Android. -skip-if = (os == 'linux') || (os == 'android') +# Asserts on 'B2G ICS Emulator Debug' and linux debug. Crashes on Android. +skip-if = (os == 'b2g') || (os == 'linux') || (os == 'android') [generated/test_conformance__extensions__webgl-draw-buffers.html] # Crashes @@ -111,8 +112,8 @@ fail-if = (os == 'linux') [generated/test_conformance__misc__type-conversion-test.html] fail-if = (os == 'linux') # Resets device on Android 2.3. -# Crashes on desktop Linux, and Mulet Linux x64. -skip-if = (os == 'android') || (os == 'linux') +# Crashes on B2G ICS Emulator, desktop Linux, and Mulet Linux x64. +skip-if = (os == 'android') || (os == 'b2g') || (os == 'linux') [generated/test_conformance__misc__object-deletion-behaviour.html] fail-if = (os == 'android') @@ -337,10 +338,11 @@ fail-if = (os == 'mac') || (os == 'win') fail-if = (os == 'mac') || (os == 'win') ######################################################################## # "tst-linux{32,64}-spot-NNN" Slaves: -# Android 2.3, Linux, and Mulet. +# Android 2.3, B2G Emu, Linux, and Mulet. # Android: os == 'android'. (Not enough info to separate out 2.3) +# B2G Emu: os == 'b2g'. # Linux: os == 'linux'. -# Mulet: buildapp == 'mulet'. +# Mulet: os == 'b2g' && buildapp == 'mulet'. [generated/test_conformance__glsl__bugs__temp-expressions-should-not-crash.html] # Coincidentally enough, crashes on Linux and Android 4.0. skip-if = (os == 'android') || (os == 'linux') @@ -355,6 +357,7 @@ fail-if = (os == 'android') [generated/test_conformance__reading__read-pixels-test.html] # Causes consistent *blues*: "DMError: Remote Device Error: unable to # connect to 127.0.0.1 after 5 attempts" on 'Android 2.3 Opt'. +# Crashes near on B2G ICS Emulator. skip-if = (os == 'android') || (os == 'linux') [generated/test_conformance__textures__misc__texture-upload-size.html] # application crashed [@ mozilla::WebGLTexture::TexSubImage] @@ -580,10 +583,16 @@ skip-if = (os == 'android') ######################################################################## ######################################################################## +# B2G [generated/test_conformance__glsl__reserved___webgl_function.vert.html] +fail-if = (os == 'b2g') [generated/test_conformance__glsl__reserved__webgl_function.vert.html] +fail-if = (os == 'b2g') [generated/test_conformance__misc__error-reporting.html] +fail-if = (os == 'b2g') [generated/test_conformance__programs__get-active-test.html] +fail-if = (os == 'b2g') + ######################################################################## ######################################################################## diff --git a/mobile/android/modules/FormAssistant.jsm b/mobile/android/modules/FormAssistant.jsm index 913b538c4845..c8d64b034c3b 100644 --- a/mobile/android/modules/FormAssistant.jsm +++ b/mobile/android/modules/FormAssistant.jsm @@ -235,6 +235,7 @@ var FormAssistant = { }, /** + * (Copied from mobile/xul/chrome/content/forms.js) * This function is similar to getListSuggestions from * components/satchel/src/nsInputListAutoComplete.js but sadly this one is * used by the autocomplete.xml binding which is not in used in fennec diff --git a/testing/mozbase/moztest/tests/test.py b/testing/mozbase/moztest/tests/test.py index d63a4c906af9..ed2dd2d469fc 100644 --- a/testing/mozbase/moztest/tests/test.py +++ b/testing/mozbase/moztest/tests/test.py @@ -41,6 +41,7 @@ class Collection(unittest.TestCase): c1 = TestContext('host1') c2 = TestContext('host2') c3 = TestContext('host2') + c3.os = 'B2G' c4 = TestContext('host1') t1 = TestResult('t1', context=c1) diff --git a/testing/mozbase/mozversion/tests/manifest.ini b/testing/mozbase/mozversion/tests/manifest.ini index f42f5d384125..096fef68a953 100644 --- a/testing/mozbase/mozversion/tests/manifest.ini +++ b/testing/mozbase/mozversion/tests/manifest.ini @@ -2,4 +2,5 @@ subsuite = mozbase, os == "linux" [test_binary.py] [test_sources.py] +[test_b2g.py] [test_apk.py] diff --git a/testing/mozbase/packages.txt b/testing/mozbase/packages.txt index 77a1b551ef99..ba1f292ef38f 100644 --- a/testing/mozbase/packages.txt +++ b/testing/mozbase/packages.txt @@ -1,4 +1,5 @@ manifestparser.pth:testing/mozbase/manifestparser +mozb2g.pth:testing/mozbase/mozb2g mozcrash.pth:testing/mozbase/mozcrash mozdebug.pth:testing/mozbase/mozdebug mozdevice.pth:testing/mozbase/mozdevice diff --git a/testing/mozharness/configs/multi_locale/standalone_mozilla-central.py b/testing/mozharness/configs/multi_locale/standalone_mozilla-central.py index 50393cce4d55..e6688ad0339a 100644 --- a/testing/mozharness/configs/multi_locale/standalone_mozilla-central.py +++ b/testing/mozharness/configs/multi_locale/standalone_mozilla-central.py @@ -1,4 +1,3 @@ - import os # The name of the directory we'll pull our source into. BUILD_DIR = "mozilla-central" @@ -11,6 +10,7 @@ REPO_PATH = "mozilla-central" L10N_REPO_PATH = "l10n-central" # Currently this is assumed to be a subdirectory of your build dir OBJDIR = "objdir-droid" +# Set this to mobile/xul for XUL Fennec ANDROID_DIR = "mobile/android" # Absolute path to your mozconfig. # By default it looks at "./mozconfig" diff --git a/toolkit/nss.configure b/toolkit/nss.configure index f910b7ba3d07..734f4f029855 100644 --- a/toolkit/nss.configure +++ b/toolkit/nss.configure @@ -9,7 +9,7 @@ # ============================================================== @depends(build_project, '--help') def dbm_default(build_project, _): - return build_project != 'mobile/android' + return build_project not in ('mobile/android', 'b2g', 'b2g/graphene') option('--enable-dbm', default=dbm_default, help='Enable building DBM') diff --git a/toolkit/toolkit.mozbuild b/toolkit/toolkit.mozbuild index 768bbcc5fbf4..afe7237d0b82 100644 --- a/toolkit/toolkit.mozbuild +++ b/toolkit/toolkit.mozbuild @@ -41,7 +41,8 @@ if CONFIG['MOZ_SANDBOX']: DIRS += ['/security/sandbox'] DIRS += [ - # Depends on NSS and NSPR + # Depends on NSS and NSPR, and must be built after sandbox or else B2G emulator + # builds fail. '/security/certverifier', # Depends on certverifier '/security/apps', diff --git a/widget/NativeKeyToDOMKeyName.h b/widget/NativeKeyToDOMKeyName.h index f35d25d17675..bfd5baa948b3 100644 --- a/widget/NativeKeyToDOMKeyName.h +++ b/widget/NativeKeyToDOMKeyName.h @@ -25,8 +25,12 @@ #define KEY_MAP_COCOA(aCPPKeyName, aNativeKey) // GTK #define KEY_MAP_GTK(aCPPKeyName, aNativeKey) -// Only for Android +// Android and B2G #define KEY_MAP_ANDROID(aCPPKeyName, aNativeKey) +// Only for Android +#define KEY_MAP_ANDROID_EXCEPT_B2G(aCPPKeyName, aNativeKey) +// Only for B2G +#define KEY_MAP_B2G(aCPPKeyName, aNativeKey) #if defined(XP_WIN) #if defined(NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX) @@ -76,6 +80,9 @@ #undef KEY_MAP_ANDROID #define KEY_MAP_ANDROID(aCPPKeyName, aNativeKey) \ NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX(aNativeKey, KEY_NAME_INDEX_##aCPPKeyName) +#undef KEY_MAP_ANDROID_EXCEPT_B2G +#define KEY_MAP_ANDROID_EXCEPT_B2G(aCPPKeyName, aNativeKey) \ + NS_NATIVE_KEY_TO_DOM_KEY_NAME_INDEX(aNativeKey, KEY_NAME_INDEX_##aCPPKeyName) #endif /****************************************************************************** @@ -1049,7 +1056,7 @@ KEY_MAP_ANDROID (Call, AKEYCODE_CALL) KEY_MAP_ANDROID (Camera, AKEYCODE_CAMERA) // CameraFocus -KEY_MAP_ANDROID(CameraFocus, AKEYCODE_FOCUS) +KEY_MAP_ANDROID_EXCEPT_B2G(CameraFocus, AKEYCODE_FOCUS) // EndCall KEY_MAP_ANDROID (EndCall, AKEYCODE_ENDCALL) @@ -1058,7 +1065,8 @@ KEY_MAP_ANDROID (EndCall, AKEYCODE_ENDCALL) KEY_MAP_ANDROID (GoBack, AKEYCODE_BACK) // GoHome -KEY_MAP_ANDROID(GoHome, AKEYCODE_HOME) +KEY_MAP_ANDROID_EXCEPT_B2G(GoHome, AKEYCODE_HOME) +KEY_MAP_B2G (HomeScreen, AKEYCODE_HOME) // HeadsetHook KEY_MAP_ANDROID (HeadsetHook, AKEYCODE_HEADSETHOOK) @@ -1280,3 +1288,5 @@ KEY_MAP_ANDROID (SoftRight, AKEYCODE_SOFT_RIGHT) #undef KEY_MAP_COCOA #undef KEY_MAP_GTK #undef KEY_MAP_ANDROID +#undef KEY_MAP_ANDROID_EXCEPT_B2G +#undef KEY_MAP_B2G