Labs/Extensions2/Notes
< Labs | Extensions2
Jump to navigation
Jump to search
1-clickweather
== general ==
* toolbar extension
* uses a JS import function to namespace javascript included from files
* uses some complicated object heirarchies to manage prefs / config
== prefs ==
* uses it's own system to manage prefs
- uses observer pattern to get updates (as opposed to listenting to the prefs observers)
== overlays ==
* basic statusbar overlay
- popupset
* uses windows for config/about/etc.
== state ==
* capture in saved xml files
== ajax ==
* wrote their own AJAX library to handle simple async requests
adblock plus
== general ==
* content filter
* localized
== prefs ==
* uses the built in prefs tools and defaults
== overlays ==
* dialog for about
* window for subscribing
* sidebar
== state ==
* stores filters as a line deliminted file in the profile
== ajax ==
* handles it's own async calls with XMLHttpRequest() primitive
- used for synchronizing subscriptions for filters
autopager
== general ==
* content enhancement
* has an interesting auto-xpath generator for grabbing the links it needs
== installation ==
* handles install with file, lots of poking profile dir, registering content
* option to install to profile :)
== prefs ==
* uses firefox supplied prefs framework
* has a system to dynamically add the prefs file to prevent some of the weirdness in initializing new defaults
== overlays ==
* extensive use of sidebar, mostly as a container for what appears to be "page" elements
* statusbar
* does not use settings overlay, builds it's own UI for that
== state ==
* installation is handled seperately from everything else, involve file manipulation etc.
== ajax ==
boost
== general ==
* content enhancement
== prefs ==
* uses firefox supplied prefs framework
* does not use settings overlay, builds it's own UI for that
* builds a library for dealing with prefs
- wraps setting / getting
- easily add / remove listeners
== overlays ==
* basic status bar overlay
* prefs ui
== state ==
== ajax ==
* has it's own library, doing something weird involving chrome security contexts.
- /I/ think this is about adding in page elements that can be called into the chrome context, there's some work to sanitize content etc.
colorfultabs
== general ==
* ui enhancement
== installation ==
* handles install with file, lots of poking profile dir, registering content
== prefs ==
* uses firefox supplied prefs framework
* uses settings overlay
== overlays ==
* basic status bar overlay
* uses settings overlay
== state ==
== ajax ==
* has it's own library, doing something weird involving chrome security contexts.
- /I/ think this is about adding in page elements that can be called into the chrome context, there's some work to sanitize content etc.
ctrl-tab
== general ==
* ui enhancement
== prefs ==
* uses firefox supplied prefs framework
== overlays ==
* only the main overlay used to create a popupset that holds "tab images"
download statusbar
== general ==
* statusbar
* includes localization
== prefs ==
* uses firefox supplied prefs framework
== overlays ==
* status bar overlay
* builds it's own window for managing prefs
downthemall
== general ==
* functionality enhancement
* includes localization
== installation ==
* handles install with file, lots of poking profile dir, registering content
== prefs ==
* uses firefox supplied prefs framework
== overlays ==
* status bar overlay
* builds it's own window for managing prefs
== state == == ajax ==
fast_video_download
== general ==
* toolbar extension
* is localized
== installation ==
== prefs ==
* uses the firefox supplied prefs framework
* and makes use of the options ui
== overlays ==
* uses the options overlay
== state ==
== ajax ==
* uses raw XMLHTttpRequest object
febe
== general ==
* functionality enhancement (provides backups of firefox profile)
* is localized
== installation ==
* checks for first install and initializes
* double checks default prefs
* checks intialization of prefs to prevent exception calls
== prefs ==
* uses the firefox supplied prefs framework
== overlays ==
* lots of use of dialog boxes to present data to users
- including it's own error and alert and confirm boxes (odd)
== state ==
== ajax ==
fire_fm
== general ==
* toolbar extension
* uses flash for playing files
== installation ==
== prefs ==
* uses the firefox pref framework
* uses a comma delimited pref for complex data type
== overlays ==
* overlays many of the dialogs for it's own alerts/errors
* toolbar overlay for main app
* overlays options
== state ==
* extensive use of pref framework for storing state
== ajax ==
* uses straight XMLHTTPrequest
== logging ==
* uses log4moz
firebug
== general ==
* functionality enhancement (provides introspection)
* localized
== installation ==
== prefs ==
* uses firefox prefs
== overlays ==
== state ==
== ajax ==
== logging ==
flashgot
== general == == installation == == prefs == == overlays == == state == == ajax == == logging ==
greasemonkey
== general ==
* uses components
* preloads common scripts into namespace using component
* has a whole animation library that SHOULD just be jquery
* custom check for updates to greasemonkey
* uses rdf, loads all prefs up at start to get settings
* even uses rdf on it's side to check versions
* domcontent loaded observer used, seems common everywhere, maybe do this for each extension by default
* functions litter global namespace
* custom pref manager
* custom scripts for reading/writing local files
* from comments looks like code here is pre ff v 1.0.1
* custom remote data requested (ajax shitz, xml in their case)
* 3 custom .xpt typelib files files
* eventlistener abstraction layer
IE Tab
== general ==
* custom pref manager IN component
* other helper functions also in component
* registers itself to namespace
* uses "windows*registry*key" service, didn't know that existed
* has own plugin DLL to link in ie
* also uses domloaded
* calls pref service again in other areas (doesn't use abstraction)
* 2nd pref abstraction!! WTF
* so it looks like NEITHER is a full abstraction layer, though some functions appear in both, many don't. so one has a setboolpref while the other has a getboolpref
* eventlistener abstraction layer
ImageTweak
== general ==
* obvious custom logger
* domloaded
* custom get pref (not full manager)
Interclue
== general ==
* uses RDF format internally
* uses annoying register stylesheet methods (I had issues with this in Puff)
* domloaded
* custom logging
* custom pref manager
* writes to local file
* should you be allowing tracking of all mouse movement?
* custom ajax class
* has js linked to html files that are outside the namespace
* INTERESTING USE of window.opener (unfortunately utilizing iframes) to keep scope by copying interclue to window.interclue and using hte refence to hte window that opened current window
* lots of minified code (bastards), namely klib.js and loadclues.js
* seems they minified most of cluecore
NoScript
== general ==
* uses rdf for ui info
* various domloaded
== prefs ==
* crazy amount of preferences (~100 on install)
* abstracts prefs interfaces
== overlays ==
* giant overlay file that uses the component with small other files that use it
== components ==
* okay so tons of classes in here, essentially everything is in the component
* uses component (8200 line file!!)
== state ==
* uses file read/write
StumbleUpon
== general ==
* most in one long file of many functions, tons of namespace polution
* sets a TON of "global" variables using su_xxx
* listens to almost every event, including domloaded of course
== components ==
* uses component for helper functions, including logging and custom ajax
== prefs ==
* uses prefs and the sqlite db
== state ==
* has giant database abstraction layer
* csv file to populate db and sql file to build db
== overlays ==
* 20k stumbleuponoverlay file that is largely one dimensional with just functions
Tab Mix
== general ==
* sets about 200 preferences
* doesn't seem to have a pref abstraction layer
* whole design seems to be very modular, lots of instances of code appearing to be ripe for abstraction but isnt because of scoping issues
* has a "session manager" for storing current data that uses RDF, man is this painful
Video Download Helper
== general ==
* uses built in xml parser loaded
* really impressive layout
- seems the brunt is in several components which are called by individual pages, so no namespace issues
== Ajax ==
* custom ajax
== State ==
* uses rdf to store data
== Pref ==
* custom pref layer
Web Developer
== general ==
* has js and css files in content folder
* has an entire common folder with helpers to do almost everthing
- including pref and history managers, stylesheet managers, cookies, files, ajax
== prefs ==
* preference abstraction functions
WOT
== general ==
* interesting use of load/unload listeners in almost all js files. they call core to start, including all the code, so i assume they just set these listeners to run checks when a new page loads.
== Ajax ==
* custom ajax
* built in api to easily deal with requests (i assume to it's server about a pages reliability)
== Prefs ==
* uses a config.js to store a ton of constants used throughout the app
* uses a prefs abstraction
== Debuging ==
* inline error handling just catching and dump()
== State ==
* looks like they are using prefs beyond how they should
- ie storing delimited data (there stuff is a little confusing and im tired so im not 100% sure)