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