mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	... and rename "web extensions" to "WebExtensions". Differential Revision: https://phabricator.services.mozilla.com/D184765
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
Firefox for Desktop
 | 
						|
===================
 | 
						|
 | 
						|
Desktop architecture
 | 
						|
--------------------
 | 
						|
 | 
						|
One of the keys to understanding how Firefox is architected is to know that Gecko is used to render
 | 
						|
both web content as well as the UI of the browser. This means that, to a large extent, the UI of
 | 
						|
Firefox is made using web technologies like HTML, CSS, and JavaScript. For example, the document
 | 
						|
``chrome://browser/content/browser.xhtml`` is the markup for a single Firefox browser window. You
 | 
						|
can think of it almost like index.html for a webpage.
 | 
						|
 | 
						|
The decision to use Gecko for rendering the UI was made during an era when HTML was not yet
 | 
						|
expressive enough or sufficient to build desktop UIs. A different markup language,
 | 
						|
`XUL <https://en.wikipedia.org/wiki/XUL>`_, was developed for that purpose instead, which Gecko also
 | 
						|
knows how to interpret. Since that time, HTML and CSS has evolved to the point where XUL is not
 | 
						|
strictly necessary for most use-cases. Where possible, we have been gradually migrating our UI to
 | 
						|
use less XUL and more standard HTML and CSS.
 | 
						|
 | 
						|
Reusable UI Widgets
 | 
						|
-------------------
 | 
						|
 | 
						|
Many of the UI widgets in use in the user interface are built as web components that can be reused.
 | 
						|
 | 
						|
:ref:`Read more <Reusable UI widgets>`
 | 
						|
 | 
						|
Tabbrowser
 | 
						|
----------
 | 
						|
 | 
						|
The tabbrowser component manages the tabs in a browser window.
 | 
						|
 | 
						|
:ref:`Read more <tabbrowser>`
 | 
						|
 | 
						|
Address Bar
 | 
						|
-----------
 | 
						|
 | 
						|
The address bar (varyingly also referred to as the Awesome Bar, or Quantum Bar) handles users
 | 
						|
entering web addresses including a popup with suggestions from various sources including history,
 | 
						|
bookmarks and search engines.
 | 
						|
 | 
						|
:ref:`Read more <Address Bar>`
 | 
						|
 | 
						|
Search
 | 
						|
------
 | 
						|
 | 
						|
The search service manages the list of search engines available in the address bar.
 | 
						|
 | 
						|
:ref:`Read more <Search>`
 | 
						|
 | 
						|
Places
 | 
						|
------
 | 
						|
 | 
						|
The places component includes the database that stores history and bookmarks as well as a set of UI
 | 
						|
components that present those to the user.
 | 
						|
 | 
						|
:ref:`Read more <Places>`
 | 
						|
 | 
						|
Firefox Sync and Application Services
 | 
						|
-------------------------------------
 | 
						|
 | 
						|
Application services includes the sync engines and Firefox Accounts integration.
 | 
						|
 | 
						|
:ref:`Read more <Services>`
 | 
						|
 | 
						|
Developer Tools
 | 
						|
---------------
 | 
						|
 | 
						|
The developer tools support web developers when building webpages but as the Firefox UI is itself
 | 
						|
built using web technologies it is also possible to use the developer tools to debug the Firefox UI.
 | 
						|
 | 
						|
:ref:`Read more <Firefox DevTools Contributor Docs>`
 | 
						|
 | 
						|
Browser Toolbox
 | 
						|
###############
 | 
						|
 | 
						|
The Browser Toolbox is a way to launch the developer tools in a separate process so that they can be
 | 
						|
used to debug the main browser UI.
 | 
						|
 | 
						|
:ref:`Read more <Browser Toolbox>`
 | 
						|
 | 
						|
Profiler
 | 
						|
########
 | 
						|
 | 
						|
The Firefox Profiler is the way to measure the performance of your code. Go to
 | 
						|
`profiler.firefox.com <https://profiler.firefox.com>`__ to enable the button in Firefox and record a
 | 
						|
performance profile. These profiles can be uploaded and shared. It can identify slow parts of the
 | 
						|
code, and reveal the underlying behavior of how code runs.
 | 
						|
 | 
						|
Installer
 | 
						|
---------
 | 
						|
 | 
						|
The Windows installer for Firefox is built with NSIS. There are currently no installers for other
 | 
						|
operating systems.
 | 
						|
 | 
						|
:ref:`Read more <Installer>`
 | 
						|
 | 
						|
Application Update
 | 
						|
------------------
 | 
						|
 | 
						|
Application Update is responsible for requesting available updates from the update servers,
 | 
						|
downloading them, verifying their integrity and then ultimately installing them. A binary patch tool
 | 
						|
(bsdiff) is used to reduce the size of update files and update files are delivered in the
 | 
						|
bespoke mar (Mozilla ARchive) format.
 | 
						|
 | 
						|
:ref:`Read more <Application Update>`
 |