Skip to content

{ Category Archives } Mozilla

Mozilla related things, most likely Thunderbird.

Thunderbird Message Filter Bar Prototype Extension, check it.

What was just the quick-search box in Thunderbird 2 is now also the home to global search in Thunderbird 3.  This hasn’t turned out splendidly, although we didn’t expect that it would.  Some people think quick-search is gone because they do not realize you can change the modes of the search box.  Other people are [...]

Tagged

Review Board and Bugzilla reviews, take 3

I’ve updated my review board setup once more (part 2, part 1).  The low barrier to entry is now even lower.  “How low?”, you might ask.  “On the ground!”, I might say.  “What other low low price features with big big value are on offer? With more facts and less spiel?”, you might then also [...]

Tagged , , ,

Using systemtap to figure what your mozilla app’s event loop is up to

==================== ms # —– Event Loop: nsTimerEvent 1233 31 nsProxyObjectCallInfo 19 44 nsStreamCopierOB 1 48 nsStreamCopierIB 0 18 nsProxyCallCompletedEvent 0 44 nsProxyReleaseEvent 0 27 nsTransportStatusEvent 0 19 nsSocketEvent 0 18 nsHttpConnectionMgr::nsConnEvent 0 1 —– Timers: OnBiffTimer(…) 1129 3 nsGlobalWindow::TimerCallback(…) 70 10 nsAutoSyncManager::TimerCallback(…) 29 6 nsExpirationTracker::TimerCallback(…) 1 1 nsIdleService::IdleTimerCallback(…) 0 5 nsExpirationTracker::TimerCallback(…) 0 1 nsHttpHandler 0 [...]

Tagged ,

Thunderbird Jetpack Teasers: Custom tab with wmsy contents

Example jetpack source here because it’s too much to inline.

Tagged ,

Thunderbird Jetpack Teasers: Words per Minute in Compose

jetpack.future.import("thunderbird.compose"); jetpack.thunderbird.compose.appendComposePanel({ onReady: function (panel, composeContext) { let doc = panel.contentDocument; let msgNode = $("<span />", doc.body).appendTo(doc.body);   let started = Date.now(); setInterval(function() { let words = composeContext.getPlaintextContents().split(/\s+/); let secs = Math.ceil((Date.now() – started) / 1000); let wordsPerMinute = Math.floor((words.length * 60) / secs); msgNode.text(wordsPerMinute + " words per minute."); }, 1000);   panel.show(); }, [...]

Tagged

prototype unified JavaScript/C++ back-traces for Mozilla in (archer) gdb

As far as I know (and ignoring my previous efforts on chroniquery along these lines), up until now you had your C/C++ Mozilla backtraces via gdb (chocolate) and your JS backtraces via “call DumpJSStack()” or the debugger keyword from within JS (peanut butter), but these two great flavors had never come together to make a [...]

Tagged , ,

So’s your facet: Faceted global search for Mozilla Thunderbird

Following in the footsteps of the MIT SIMILE project’s Exhibit tool (originally authored by David Huynh) and Thunderbird Seek extension (again by David Huynh), we are hoping to land faceted global search for Thunderbird 3.0 (a la gloda) in beta 4. I think it’s important to point out how ridiculously awesome the Seek extension is.  [...]

Tagged , , , ,

Using VMWare Record/Replay and VProbes for low time-distortion performance profiling

The greatest problem with performance profiling is getting as much information as possible while affecting the results as little as possible.  For my work on pecobro I used mozilla’s JavaScript DTrace probes.  Because the probes are limited to notifications of all function invocations/returns with no discretion and there is no support for JS backtraces, the [...]

Tagged , , , , , , , ,

Thunderbird Jetpack messageDisplay.overrideMessageDisplay fun.

As part of our goal to make it easy to write extensions for Thunderbird 3, we’ve been working on getting Jetpack running under Thunderbird and exposing Thunderbird-specific points. This is all experimental, but it’s having good results. The first example replaces the message you get from twitter when someone follows you and instead shows you [...]

Tagged ,

Review Board and Bugzilla reviews, take 2.

Last time I played with Review Board and bugzilla request queues things were great for me, but no one else.  I had to create an account for you on the instance, add you to my script that synchronizes request queues, run the script, and then keep running the script periodically.  Not to mention there wasn’t [...]

Tagged , ,