forked from mirrors/gecko-dev
		
	 ae769e9e02
			
		
	
	
		ae769e9e02
		
	
	
	
	
		
			
			... 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>`
 |