What's new on the trunk (for Gecko 1.9 / Firefox 3)
Approximately 17077 bugs have been fixed since Firefox 2.0.0.x. Here's a list of what I think are the most important and interesting improvements. Last updated May 14, 2008 (plus minor changes May 23).
New browser features
- Address bar auto-complete
- 389491 - When typing into the address bar, match against entire URL and page title, not just the beginning of the URL.
- 401869 - Allow multiple-word search in location bar auto-complete.
- 403159 - Show the URL and page title on separate lines in autocomplete.
- 399664 - Indicate which part of the result matches the typed text.
- 411293 - Sort pages in autocomplete using the number of visits, with more recent visits weighted more heavily.
- 395739 - Adaptive learning: remember which page you selected from autocomplete last time you typed the same text, and show it first(?).
- 373353 - Show favicons (site icons) in autocomplete results.
- Bookmarks and History
- 385266 - Add a "star" button in the location bar for single-click bookmarking.
- 387734, 421483 - Add several default "smart folders" by default: "Most Visited" on the bookmarks bar, and "Recently Bookmarked" and "Recent Tags" in the bookmarks menu.
- 317847 - Let users create "smart folders" by searching and clicking "save this search".
- You can now organize bookmarks using tags in addition to folders.
- 239429 - Display URL in status bar while using bookmark & history sidebars.
- 238215 - History window (in addition to History sidebar).
- Search
- 380785 - Add Wikipedia to the default search engine list.
- 346079 - Switch search engines with Cmd+scroll over the search bar.
- 400327 - Allow resizing the search bar (when it is adjacent to the location bar).
- 378553 - Search engine keywords. (If you set "g" as a keyword for Google, you can type "g foo" into the address bar to search Google for "foo". To set keywords, click the search bar dropdown and select "Manage Search Engines...". You can still create %s keywords for bookmarks, like in Firefox 2.)
- Downloads
- 377243, 230870 - Make it possible to resume downloads across sessions.
- 402278 - Download activity summary in the status bar.
- 253768 - Add a search box to the download manager.
- 388517 - Show file size and origin of completed downloads instead of just "Done".
- 403674 - Add "Go to Download Page" to download context menu.
- 227749 - Add "Copy Download Link" to download context menu.
- 228842 - Allow multiple selections in Download Manager.
- 282185 - [Mac] Show notification for completed downloads if Growl is installed.
- Tabs
- 298571 - Support tab duplication (using Ctrl) on tab drag and drop.
- 347363 - Implement smooth scroll for overflowed tab bar.
- 393006 - Holding down the tab overflow scroll buttons should scroll the tab bar at a constant rate.
- 357951 - Double-clicking the tab overflow scroll buttons should scroll by the width of the tab bar.
- 345950 - Add a hidden pref, browser.tabs.tabMaxWidth, for users who want tabs to be smaller. (This is useful if you want to close several tabs without moving the cursor, but it means less of each tab's title will be visible.)
- Zoom
- 4821, 389628 - Full page zooming. (By default, Firefox's zoom feature now enlarges images and layout in addition to text. You can toggle this behavior using the "Zoom Text Only" menu item.)
- 401221 - Provide finer control over zooming.
- 378549 - Remember zoom setting for each site.
- Plugins and helper applications
- 339056 - Add plugins to the Add-on Manager so that users can disable individual plugins.
- 377784 - New "Applications" preferences pane for configuring handlers for MIME types and protocol schemes.
- 372441 - Let web applications register to handle protocols using registerProtocolHandler from HTML5. (For example, Yahoo Mail might register to handle mailto: URLs that would traditionally be handled by a desktop application such as Thunderbird.)
- 385065 - New protocol handling dialog.
- Extensions
- 252830 - When an untrusted site tries to install an extension, show a button to allow the installation instead of a button to whitelist the site. (This makes it possible to install extensions with fewer clicks.)
- 404024 - Add a "Get Add-ons" pane to the Add-on Manager.
User interface improvements and changes
- 226735 - Replace modal "Save password?" dialog with a non-modal information bar. (This lets you see whether the password was correct before having to decide whether to save it.)
- 303645, 400061, 400064 - Add support for audio and video podcasts (specialized feed preview, new entries in the "Applications" preferences pane).
- 23485 - Strip line breaks when pasting into the address bar.
- 406062 - Pasting into most textboxes should turn line breaks into spaces instead of stopping at the line break.
- 386228 - Unify back and forward history dropdowns, showing the current position with a check mark.
- 218142 - Add "Show Image" to context menu of not-successfully-loaded images.
- 185239 - "Print frame" in context menu (in the "this frame" submenu).
- 383760 - Add quit confirmation dialog, letting you save your session easily.
- 178513, 374593 - Make text, images translucent while dragging instead of outline.
- 339102 - Enhanced Page Info window.
- 389478 - Add favicons on back/forward menus.
- 213163 - Status bar should show URLs of hovered bookmark toolbar items.
- 175124 - Less destructive behavior for bookmarks "open in tabs" command. (See comment 26 for details.)
- 195031, 394397 - Bookmarks menus should remain open after using context menu.
- 16203 - Double-click drag should do selection in "word-by-word" mode.
- 32807 - Triple-clicking should select paragraph, not line.
- 73373 - Multiple text selections with Ctrl/Cmd.
- 250910 - Find toolbar: initialize with the current selection.
- 213832 - Allow wildcards in about:config search, and search status/type/value in addition to name.
- 315871 - In Certificate Viewer, allow to export certificate or full chain.
- 261655 - Add a hidden pref to completely disable the "Install Missing Plugins" information bar.
- 177838 - Make all popup windows resizable, ignoring resizable=no.
- 323041 - Software update dialog steals focus / wait for idle before prompting.
- 294800 - Beautify FTP and local directory listings (CSS, icons, sortable columns).
- 240859 - Full Screen navigation bar should have auto-hide.
- 175279 - [Mac] Native theming for HTML form controls. (Josh's blog post.)
- 311466 - [Mac] Open app in safe mode if the Option key is pressed during startup.
- 21747 - [Linux] Make "Copy Image" work (e.g. for pasting into image editors).
- 66519 - [Linux] Support Internet keys ("Back", "Home", etc. on some keyboards).
- 358764 - [Linux] Backspace should do nothing.
New web developer features
- 237964 - Allow editable areas in browser (contentEditable).
- 375681 - Add drag and dragend events.
- 280959 - Add oncut, oncopy, and onpaste events.
- 387706 - Implement HTML5's cross-document messaging API (postMessage).
- 194404 - Add the showModalDialog() and showModelessDialog() methods.
- 9101 - Break lines at soft hyphens (­) and display hyphens if line is broken.
- 294615 - Make soft hyphens not break the Find feature.
- 311366 - Allow unknown HTML elements (e.g. <section>) to contain blocks.
- 382223 - Add support for Camellia to PSM.
- CSS
- 9458 - Implement display: inline-block.
- 18217 - Implement display: inline-table.
- 261081 - Add support for pre-wrap value of white-space.
- 346690 - Implement CSS3 CR cursor:none.
- 147017 - Support rgba and hsla colors in CSS.
- 387969 - Add support for CSS "text-rendering" property for HTML. (This allows sites to control whether text rendering uses the "quality path", which enables kerning and ligatures on most operating systems, or the "fast path", which forgoes these readability tweaks on most operating systems in favor of rendering speed. The new default for HTML is to use the quality path for large font sizes and the fast path for small font sizes. The cutoff is controlled by a hidden pref that defaults to 20px. Only Windows and Linux have fast paths; Mac trunk currently only has a quality path.)
- DOM
- 159167 - Implement DOM3 isEqualNode().
- 337631 - Support
document.activeElement and document.hasFocus (IE's focus model).
- 200930 - Implement the proposed Web Apps 1.0 API for changing the selected style sheet
set, querying the available sets, etc. (DOM methods for choosing alternate stylesheets.)
- 357450 - Implement getElementsByClassName. (jresig's blog entry)
- 174397 - Support for getClientRects and getBoundingClientRect.
- 111207 - Implement clientLeft and clientTop.
- 199692 - Support document.elementFromPoint(x,y).
- JavaScript 1.8
- Offline
- 336359 - Fire WHATWG DOM events when going online or offline.
- 367447 - Add an API for putting resources in an offline cache. (Mark Finkle's blog entry)
- 372969, 372970, 402272 - Implement window.applicationCache.
- 373231 - Implement navigator.isLocallyAvailable. [???]
- 371432 - Need an API to store <input type=file> data offline and access when online.
- XMLHttpRequest
- 371432 - Add a sendAsBinary() method to XMLHttpRequest (for sending data from an <input type=file> element, among other things).
- Images
- Canvas
- SVG
- 326966 - Re-enable foreignObject.
- 294517 - Implement <svg:pattern>.
- 316764 - Implement <svg:mask>.
- 311029 - Implement all SVG 1.1 filters.
- Web site debugging
- 404414 - Add keyboard shortcut to open Error Console (Cmd+Shift+J).
- 411365, 412874 - Add JS functions to start and stop Shark programatically.
- 339229 - Stop shipping DOM Inspector in Firefox builds. (This makes it easier to install DOM Inspector once Firefox is already installed, and allows it to improve separately from the Firefox release schedule.
New extension developer features
- 257155 - Extension description is not localizable.
- 372069 - Add FUEL 0.1.
- 380168 - Add FUEL 0.2.
- 238324 - Implement JavaScript code-sharing module system.
- 387522 - Native JSON support.
- 378547 - Implement site-specific preference service. (Used by Firefox for remembering text zoom settings, but also intended for use by extensions.)
- 245684 - Add JPEG image encoding support.
- 327242 - Make nsIPrincipal scriptable so things like CheckLoadURIWithPrincipal are usable from script.
- 324464 - Expose nsIURI getters for Node.baseURI and Document.documentURI.
- 342062 - Add ability to observe mutations in just a subtree.
- 355766 - Provide safe way to access XPCNativeWrapper.wrappedJSObject.
- 377478 - Implement a way to get the toggled keyboard states (e.g., Caps Lock, Num Lock and Scroll Lock).
- 335689 - Styles registered with stylesheet service (e.g. by Stylish) should apply to already-loaded documents.
- 343416 - Implement nsIIdleService, an API to get the last time user activity occurred on the system.
- 412770 - Add ability to monitor plug-ins at run-time.
- 333848 - Add full-featured user-defined functions and progress handlers to storage.
- 384186 - Microformats API.
- 379633 - Scriptable zipwriter component.
- 309296 - Directory listing for the jar: protocol.
- 393716 - Add single tab save/restore to session store API.
- 406095 - Add emptyText property to textbox.
- 414078 - Collect bottom bars into vbox for better extensibility.
- 362685 - [Mac] Growl support through nsIAlertsService.
- 307204 - [Mac] Support transparent windows (non-rectangular windows) on Mac.
- XUL
- 290255 - Add a "slider" tag, <scale>.
- Add a <panel> element to replace <popup> in situations other than menus.
- 296040 - Cell-based selection in trees.
- 212789 - Horizontal scrolling for trees.
- 92174 - Create new calendar and datepicker widgets.
- 285631 - Improve XUL templates.
- 321170 - Templates needs to be able to load datasources other than RDF.
- Make second parameter to initEvent, which controls whether the event bubbles, work for XUL (DevNews post).
- 298993 - Add keyboard support to <richlistbox>, so users can type the first few characters of an item (e.g. in the Addons window) to select it.
Architectural changes
- Replace GFX with Cairo+Thebes as Gecko's graphics library. (1, 2, 3, 4)
- 300030 - Refactor intrinsic width computation out of nsIFrame::Reflow (land dbaron's reflow branch).
- 333659 - Move nsTextFrame over to Thebes APIs: implement nsTextFrameThebes, aka "new text frame" (enabled in 367177).
- 18333 - XML Content Sink should be incremental. (try it out)
- 177805 - Fix the use of units in Gecko. (roc's blog entry.) (This made full-page zooming possible.)
- 317375 - Refactor frame painting and mouse event targeting to use frame display lists (1).
- 287813 - nsCaret overhaul: draw the caret in the normal path of frame painting instead of doing it directly to the current view.
- 326273 - Implement nsIThreadManager, kill nested event queues. This should improve Firefox's responsiveness and make DHTML animations much smoother. It also fixed a few hangs and crashes.
- 234455 - Centralize event dispatch.
- 345517 - Build Firefox --enable-libxul (not static) by default.
- Places, a new system for bookmarks [370099] and history.
- Unified storage: cookies, bookmarks, history, etc. are now stored in local SQLite databases rather than specialized file formats of varying sanity.
- 374723 - Re-design the Password Manager API and implement it in JS rather than C++.
- 255942 - Support other scripting languages than JavaScript, such as Python. (See Breaking the grip JS has on the DOM for more information.)
- 351633 - Make javascript: URI execution asynchronous.
- 356299 - Implement nsAutoTArray<T,N>.
- 355754 - Add nsTPtrArray, which has a SafeElementAt method.
- 279703 - Redesign how XUL popups work. (Rework XUL popups to use asynchronous opening, plus many other fixes.)
- 208172 - Implement optimizable XPath.
- 319778 - Replace MySpell with HunSpell.
- 16769 - Add cms (Color Management) support (off by default).
- 326469 - [Mac] Switch from Carbon to Cocoa.
- 395397 - [Mac] Process Gecko events on demand in Cocoa widgets.
- 344427 - [Mac] Implement CoreGraphics NPAPI Drawing Model. NPAPI plugins now have the option to render using CoreGraphics instead of Quickdraw.
- 137189 - [Linux] Windowless plugin support (WMODE).
Notable bug fixes
- General
- 385397 - History menu is slow to open with a large history.
- 262329 - Sorting bookmarks by name should sort between separators.
- 295498 - Middle-clicking autocomplete entries opens the URI in the same tab instead of a new one.
- 175787 - Resize large images to fit in treeview instead of cropping.
- 278739 - Reloading a page whose length changes causes scroll position to change.
- 216434 - Form autocomplete dropdown covers textbox when textbox is near bottom of screen.
- 357257 - Search autocomplete/suggestions use only half of the available width due to the word "suggestions".
- 147670 - Wrong (last or empty) tooltip text displayed for dropdown list menu items.
- 242621 - Move Autoscroll icon out of the page's DOM.
- 233853 - cnn.com, Ctrl+Enter goes to www.cnn.com.com.
- 255411 - "Use my colors" preference makes popup/hover frames have transparent background.
- 283697 - Firefox Preferences panels are cropped (cut off).
- 335755 - Extension XUL overlay errors should not create a gray bar.
- 232605 - Windows opened by bookmarklets open behind the window with focus.
- 226094 - [64bit] Support JavaScript Core for WinXP AMD64.
- 314279 - [Mac] Drop down/context menus show up on the primary screen not over the window in dual-display setup.
- 231754 - [Mac] Pressing up/down arrow key does not move caret to beginning/end of url bar or text box.
- 190615 - [Linux] Make stop_at_punctuation=true the default on unix (double-clicking shouldn't select punctuation).
- 29856 - [Linux] GTK2 Window Class the same for all mozilla windows.
- 93789 - [Linux] Mozilla should support X11 session management.
- Stability
- 261633 - Freeze/hang on sites that use setInterval incorrectly.
- 270392 - Firefox hangs on a page that contains thousands of float:left images.
- 213637 - Runs at ~100% CPU usage after connection is interrupted or after waking up from hibernate or standby.
- Replace Talkback crash reporter with the open-source Breakpad. (Talkback was closed-source and largely abandoned. Switching to Breakpad means Firefox 3 will ship without closed-source components and will have crash reporting on all major platforms, including Intel Mac.)
- 411490 - Create about:crashes, which lists crashes you have reported using Breakpad.
- 333907 - [Windows] XRE quits too abruptly when Windows is shut down. (Session Restore thinks Firefox crashed when Windows is shut down.)
- Many more: 1294 bugs fixed on trunk with the "crash" or "hang" keywords.
- Printing
- 154892 - Paginate absolutely-positioned elements. (Missing all but first page when printing some sites.)
- 141656 - Transparent image pixels print white instead of background color of parent element.
- 193001 - [Linux] Use GNOME's native print dialog. (Ventron's blog entry)
- Downloads
- 331991 - Save as "Web Page, Complete" for HTML should include meta charset.
- 315227 - Failed download when using "Save Link As..." on a link to an page / file that uses HTTP/FTP authentication.
- 299372 - Content-Disposition headers not looked at for "Save Link As" filename, so it uses e.g. "attachment.cgi" in bugzilla instead of the name of the attachment.
- Content
- 218223 - Long tooltips should allow wrap to multiple lines.
- 261929 - Send URLs (except the query part) in UTF-8 by default.
- 40838 - Disallowing "change status bar text" often leaves status bar empty for links (onmouseover="return true;" --> status bar doesn't show url for links).
- 204140 - Allow user style sheets to load XBL from file: URLs.
- 251137 - Modifier+click on JavaScript links open empty window.
- 244135 - Table borders disappear occasionally with border-collapse and rowspan.
- 24998 - Background images spill beyond rounded borders / -moz-border-radius.
- 218580 - Line break should be allowed after slash (unless followed by a number). (Along with breaking after "=", this should make it much less common for long URLs posted in forums to mess up a page's table layout.)
- 163110 - Lists and right-floated images don't get along.
- 143162 - List items near floats wrap block around float.
- 73586 - Matching of :first-child, :only-child, and :last-child not dynamically updated.
- 98997 - Matching of :empty not dynamically updated.
- 229915 - Matching of + combinator not dynamically updated.
- 381661 - [Windows] Fix and reenable bilinear filtering for upscaled images.
- 300982 - [Mac] Ugly (bold) text, looks like a sub-pixel rendering of the text was drawn over itself.
- Web development
- 1156 - OBJECTs without type attribute aren't rendered.
- 114641 - Alternate <applet> content not displayed. No fallback available.
- 211999 - Can't redirect to data: urls.
- 291060 - Table cells containing empty blocks have the wrong baseline.
- 304980 - nsIXMLHttpRequest throws exception on access of status member when the request failed due to a timeout.
- 287179 - Unshifted charCode is generated for keypress event when both Ctrl and Shift are held down.
- 78087 - Doesn't display position:(absolute, relative, fixed) with negative z-index.
- 262195 - List items extremely outdent when left floating object exists.
- 11011 - Need pseudo-classes for when alt text is shown.
Internationalization
- 105909 - Address bar should show path/query %-unescaped so non-ASCII URLs are readable.
- 255990 - Characters below U+0100 are not subject to line-breaking rules at all (important for Japanese).
- 336959 - Use Pango/Uniscribe to break lines inside Thai/Lao runs.
- 240914 - "text-align: justify" ruins Unicode combining characters.
- 113187 - Cannot use shortcut of single key (e.g., space key or slash) if IME is active.
- 218277 - No-break spaces (nbsp) in submitted text are replaced by breakable spaces (important for French).
- 192767 - Horizontal scrollbar missing on right-to-left (RTL/Hebrew/Arabic) page that doesn't fit in the screen.
- 60546 - Unicode Hebrew/Yiddish Diacritics do not correctly align in some fonts.
- 188294 - Extremely slow editing a large amount of mixed Hebrew/English text in a textarea.
- 74880 - Lose indentation of RTL blockquote (nested RTL lists are fixed). (Implement and use -moz-border-*-start and -moz-border-*-end.)
- 328168 - Horizontal paddings, borders and margins on multi-frame bidi inlines appear in the wrong places.
- 364536 - Mac theme does not support RTL.
- 69230 - [Linux] Keyboard shortcuts using latin letters should not be affected by keyboard group/level. (I think this lets keyboard shortcuts such as Ctrl+C work even if you have your keyboard layout set to Russian.)
Performance
- Speed
- Memory leaks
- Code size and memory use
- 296818 - Don't hold onto decoded image data for so long.
- 143046 - Reduce memory use for animated GIFs by storing frames other than the first at the original 8 bits.
- Take a string constructor out of line. (From 345517.) (1% code size win.)
- 332174 - Drop SOAP support. (2% code size win.)
- 313309 - Provide table-driven QI mechanism.
- 407459, 417066 - [Windows, Linux] Switch from the platform's default malloc to jemalloc for better memory allocation speed and lower fragmentation.
- Many more: 115 bugs fixed on trunk with the "footprint" keyword.
Security improvements
- 399233 - Block known phishing sites completely instead of using a warning bubble. (Test it.)
- 384941 - Block sites known to try to install malware through browser exploits or sketchy downloads. (Test it.)
- 271559 - Block known-vulnerable versions of plugins (e.g. old versions of Java or Flash).
- 378216 - Block extensions that use an insecure update mechanism.
- 327181 - Use error pages instead of dialogs for invalid-certificate errors.
- 337344 - Disable location bar hiding by default, to make chrome spoofing harder.
- 230606, 402983 - Tighten the same-origin policy for local files.
- 209234 - Local files can read directory listings.
- 258875 - Require use of file picker for file upload.
- 143220 - Scripts can see the paths of files selected in file upload controls.
- 110161 - Enable OCSP by default.
- 367911 - Implement cross-origin wrappers (to improve cross-site scripting defenses).
- 103487, 408153 - Inform anti-virus software when Firefox downloads an executable (using the Windows "IOfficeAntiVirus" and "IAttachmentExecute" APIs).
- 342314 - Add an "effective TLD service", which knows that things like "co.uk" are public suffixes.
- 385299 - Use eTLD in cookies (stop sites setting cookies for the entire ".co.uk" domain).
- 178993 - Add support for the HttpOnly cookie attribute for cross-site scripting vulnerability prevention/mitigation.
- 421494 - Add support for third-party cookie blocking. (Unlike the implementation in early versions of Firefox, this blocks cookies for iframes as well as images. Unlike the implementations in most other web browsers, it blocks the sending of cookies as well as the setting of cookies.)
- 376957 - Prevent data leaks from cross-site JSON loads (JavaScript literals).
- 408052 - Adopt "ancestor" frame navigation policy to prevent frame hijacking.
- 305873 - Unclosed <script> data should not be parsed as HTML.
- 292789 - Don't let <script> tags access chrome.
- 406612 - On sites that use EV certificates, show the site name next to the icon.
- 383183 - Clicking the site icon in the address bar now shows site encryption and authentication (identity) information.
- 405523, 368854 - [Windows] Make it harder for attackers to exploit memory safety bugs by adding VC8 compiler flags for DEP, ASLR, and SafeSEH.
Target platform changes
- 327675, 330276 - Drop support for pre-Win2k versions of Windows. (These have been unsupported by Microsoft and no longer receive security patches.)
- Drop support for Mac OS X 10.2 (Jaguar) and 10.3 (Panther).
- Modernize the Linux reference platform.
- Change compilers on Windows: Add support for VC8, drop support for VC6, and switch from VC6 to VC8 by default. (VC7 still works, I think.)
More information