diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json index 95615a40c8bb..5e6e4850a584 100644 --- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,4 +1,4 @@ { - "revision": "c86fcf41322b8bfc7b139cc54a68b178ba071f26", + "revision": "393b5209f9bc300017f2e037b1d0beeda4da7519", "repo_path": "/integration/gaia-central" } diff --git a/b2g/config/inari/config.json b/b2g/config/inari/config.json new file mode 100644 index 000000000000..ebbb4a5e78a8 --- /dev/null +++ b/b2g/config/inari/config.json @@ -0,0 +1,36 @@ +{ + "config_version": 2, + "tooltool_manifest": "releng-inari.tt", + "mock_target": "mozilla-centos6-i386", + "mock_packages": ["ccache", "make", "bison", "flex", "gcc", "g++", "mpfr", "zlib-devel", "ncurses-devel", "zip", "autoconf213", "glibc-static", "perl-Digest-SHA", "wget", "alsa-lib", "atk", "cairo", "dbus-glib", "fontconfig", "freetype", "glib2", "gtk2", "libXRender", "libXt", "pango", "mozilla-python27-mercurial", "openssh-clients", "nss-devel", "java-1.6.0-openjdk-devel", "git"], + "mock_files": [["/home/cltbld/.ssh", "/home/mock_mozilla/.ssh"]], + "build_targets": [], + "upload_files": [ + "{objdir}/dist/b2g-*.crashreporter-symbols.zip", + "{objdir}/dist/b2g-*.tar.gz", + "{workdir}/sources.xml" + ], + "zip_files": [ + ["{workdir}/out/target/product/inari/*.img", "out/target/product/inari/"], + ["{workdir}/boot.img", "out/target/product/inari/"], + "{workdir}/flash.sh", + "{workdir}/load-config.sh", + "{workdir}/.config", + "{workdir}/sources.xml" + ], + "env": { + "VARIANT": "user", + "MOZILLA_OFFICIAL": "1", + "B2GUPDATER": "1" + }, + "b2g_manifest": "inari.xml", + "b2g_manifest_branch": "master", + "additional_source_tarballs": ["backup-inari.tar.xz"], + "gecko_l10n_root": "http://hg.mozilla.org/l10n-central", + "gaia": { + "l10n": { + "vcs": "hgtool", + "root": "http://hg.mozilla.org/gaia-l10n" + } + } +} diff --git a/b2g/config/inari/releng-inari.tt b/b2g/config/inari/releng-inari.tt new file mode 100644 index 000000000000..217dd998dacc --- /dev/null +++ b/b2g/config/inari/releng-inari.tt @@ -0,0 +1,20 @@ +[ +{ +"size": 4249600, +"digest": "9f2150350e6fb2e8fe8744f47c02799865de16f8539844374188c2b421d8a044c213af57c8fe9dc7ad2038150687b50eba251dc782fa606674a86d8acc9e3dad", +"algorithm": "sha512", +"filename": "boot.img" +}, +{ +"size": 33335060, +"digest": "aa60b13458fabcb60c671e80db4dfc0cda3090fc5df27215cec3fb01f9cf2ac4403c93be99d1816a1f2d903febd4b027f7193a5fcec1aacf18ebb419ee9f32d7", +"algorithm": "sha512", +"filename": "backup-inari.tar.xz" +}, +{ +"size": 1570553, +"digest": "ea03de74df73b05e939c314cd15c54aac7b5488a407b7cc4f5f263f3049a1f69642c567dd35c43d0bc3f0d599d0385a26ab2dd947a6b18f9044e4918b382eea7", +"algorithm": "sha512", +"filename": "Adreno200-AU_LINUX_ANDROID_ICS_CHOCO_CS.04.00.03.06.001.zip" +} +] diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml index 2722bd565e65..c4a3f964399b 100644 --- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -1410,13 +1410,6 @@ b._fastFind = this.fastFind; b.droppedLinkHandler = handleDroppedLink; - // Dispatch a new tab notification. We do this once we're - // entirely done, so that things are in a consistent state - // even if the event listener opens or closes tabs. - var evt = document.createEvent("Events"); - evt.initEvent("TabOpen", true, false); - t.dispatchEvent(evt); - // If we just created a new tab that loads the default // newtab url, swap in a preloaded page if possible. // Do nothing if we're a private window. @@ -1426,6 +1419,13 @@ docShellsSwapped = gBrowserNewTabPreloader.newTab(t); } + // Dispatch a new tab notification. We do this once we're + // entirely done, so that things are in a consistent state + // even if the event listener opens or closes tabs. + var evt = document.createEvent("Events"); + evt.initEvent("TabOpen", true, false); + t.dispatchEvent(evt); + // If we didn't swap docShells with a preloaded browser // then let's just continue loading the page normally. if (!docShellsSwapped && !uriIsAboutBlank) { diff --git a/browser/devtools/debugger/CmdDebugger.jsm b/browser/devtools/debugger/CmdDebugger.jsm index 2a1ee0cff808..dc61b62e52a8 100644 --- a/browser/devtools/debugger/CmdDebugger.jsm +++ b/browser/devtools/debugger/CmdDebugger.jsm @@ -274,6 +274,9 @@ gcli.addCommand({ description: gcli.lookup("dbgClose"), params: [], exec: function(args, context) { + if (!getPanel(context, "jsdebugger")) + return; + return gDevTools.closeToolbox(context.environment.target) .then(() => null); } diff --git a/browser/devtools/debugger/test/browser_dbg_cmd.js b/browser/devtools/debugger/test/browser_dbg_cmd.js index b002169dd61f..544eddbaa5f7 100644 --- a/browser/devtools/debugger/test/browser_dbg_cmd.js +++ b/browser/devtools/debugger/test/browser_dbg_cmd.js @@ -57,22 +57,32 @@ function test() { cmd("dbg continue", function() { is(output.value, "dbg continue", "debugger continued"); - helpers.audit(options, [{ - setup: "dbg close", - completed: false, - exec: { output: "" } - }]); + function closeDebugger(cb) { + helpers.audit(options, [{ + setup: "dbg close", + completed: false, + exec: { output: "" } + }]); - let toolbox = gDevTools.getToolbox(options.target); - if (!toolbox) { - ok(true, "Debugger was closed."); - deferred.resolve(); - } else { - toolbox.on("destroyed", function () { + let toolbox = gDevTools.getToolbox(options.target); + if (!toolbox) { ok(true, "Debugger was closed."); - deferred.resolve(); - }); + cb(); + } else { + toolbox.on("destroyed", function () { + ok(true, "Debugger was closed."); + cb(); + }); + } } + + // We're closing the debugger twice to make sure + // 'dbg close' doesn't error when toolbox is already + // closed. See bug 884638 for more info. + + closeDebugger(() => { + closeDebugger(() => deferred.resolve()); + }); }); }); }); @@ -95,4 +105,4 @@ function test() { return deferred.promise; }).then(finish); -} +} \ No newline at end of file diff --git a/browser/devtools/profiler/cmd-profiler.jsm b/browser/devtools/profiler/cmd-profiler.jsm index 7744b8f372b8..b8454febb4d6 100644 --- a/browser/devtools/profiler/cmd-profiler.jsm +++ b/browser/devtools/profiler/cmd-profiler.jsm @@ -49,6 +49,9 @@ gcli.addCommand({ params: [], exec: function (args, context) { + if (!getPanel(context, "jsprofiler")) + return; + return gDevTools.closeToolbox(context.environment.target) .then(function () null); } diff --git a/browser/devtools/profiler/test/browser_profiler_cmd.js b/browser/devtools/profiler/test/browser_profiler_cmd.js index eb546500d201..321b01b48284 100644 --- a/browser/devtools/profiler/test/browser_profiler_cmd.js +++ b/browser/devtools/profiler/test/browser_profiler_cmd.js @@ -26,6 +26,7 @@ function test() { .then(testProfilerList) .then(testProfilerStop) .then(testProfilerClose) + .then(testProfilerCloseWhenClosed) }).then(finishUp); } @@ -118,6 +119,33 @@ function testProfilerClose() { return deferred.promise; } +function testProfilerCloseWhenClosed() { + // We need to call this test to make sure there are no + // errors when executing 'profiler close' on a closed + // toolbox. See bug 863636 for more info. + + let deferred = Promise.defer(); + + helpers.audit(gOptions, [{ + setup: "profiler close", + completed: false, + exec: { output: "" } + }]); + + let toolbox = gDevTools.getToolbox(gOptions.target); + if (!toolbox) { + ok(true, "Profiler was closed."); + deferred.resolve(); + } else { + toolbox.on("destroyed", function () { + ok(true, "Profiler was closed."); + deferred.resolve(); + }); + } + + return deferred.promise; +} + function finishUp() { gTarget = null; gPanel = null; diff --git a/content/media/omx/mediaresourcemanager/MediaResourceManagerService.cpp b/content/media/omx/mediaresourcemanager/MediaResourceManagerService.cpp index 13e13cb85775..c75ff19488ed 100644 --- a/content/media/omx/mediaresourcemanager/MediaResourceManagerService.cpp +++ b/content/media/omx/mediaresourcemanager/MediaResourceManagerService.cpp @@ -160,7 +160,7 @@ void MediaResourceManagerService::cancelClientLocked(const sp& binder) Fifo::iterator it(mVideoCodecRequestQueue.begin()); while (it != mVideoCodecRequestQueue.end()) { if (*it == binder) { - *it = NULL; + it = mVideoCodecRequestQueue.erase(it); continue; } it++; diff --git a/dom/wifi/WifiWorker.js b/dom/wifi/WifiWorker.js index dc3ebacf40b2..c66657eb1bb1 100644 --- a/dom/wifi/WifiWorker.js +++ b/dom/wifi/WifiWorker.js @@ -1698,7 +1698,7 @@ function WifiWorker() { this._connectionInfoTimer = null; this._reconnectOnDisconnect = false; - // Users of instances of nsITimer should keep a reference to the timer until + // Users of instances of nsITimer should keep a reference to the timer until // it is no longer needed in order to assure the timer is fired. this._callbackTimer = null; @@ -2258,7 +2258,7 @@ WifiWorker.prototype = { tetheringSettings: {}, initTetheringSettings: function initTetheringSettings() { - this.tetheringSettings[SETTINGS_WIFI_ENABLED] = false; + this.tetheringSettings[SETTINGS_WIFI_TETHERING_ENABLED] = null; this.tetheringSettings[SETTINGS_WIFI_SSID] = DEFAULT_WIFI_SSID; this.tetheringSettings[SETTINGS_WIFI_SECURITY_TYPE] = DEFAULT_WIFI_SECURITY_TYPE; this.tetheringSettings[SETTINGS_WIFI_SECURITY_PASSWORD] = DEFAULT_WIFI_SECURITY_PASSWORD;