Index: third_party/mozprofile/README.md |
=================================================================== |
--- third_party/mozprofile/README.md (revision 0) |
+++ third_party/mozprofile/README.md (revision 0) |
@@ -0,0 +1,141 @@ |
+[Mozprofile](https://github.com/mozilla/mozbase/tree/master/mozprofile) |
+is a python tool for creating and managing profiles for Mozilla's |
+applications (Firefox, Thunderbird, etc.). In addition to creating profiles, |
+mozprofile can install [addons](https://developer.mozilla.org/en/addons) |
+and set |
+[preferences](https://developer.mozilla.org/En/A_Brief_Guide_to_Mozilla_Preferences). |
+Mozprofile can be utilized from the command line or as an API. |
+ |
+ |
+# Command Line Usage |
+ |
+mozprofile may be used to create profiles, set preferences in |
+profiles, or install addons into profiles. |
+ |
+The profile to be operated on may be specified with the `--profile` |
+switch. If a profile is not specified, one will be created in a |
+temporary directory which will be echoed to the terminal: |
+ |
+ (mozmill)> mozprofile |
+ /tmp/tmp4q1iEU.mozrunner |
+ (mozmill)> ls /tmp/tmp4q1iEU.mozrunner |
+ user.js |
+ |
+To run mozprofile from the command line enter: |
+`mozprofile --help` for a list of options. |
+ |
+ |
+# API Usage |
+ |
+To use mozprofile as an API you can import |
+[mozprofile.profile](https://github.com/mozilla/mozbase/tree/master/mozprofile/mozprofile/profile.py) |
+and/or the |
+[AddonManager](https://github.com/mozilla/mozbase/tree/master/mozprofile/mozprofile/addons.py). |
+ |
+`mozprofile.profile` features a generic `Profile` class. In addition, |
+subclasses `FirefoxProfile` and `ThundebirdProfile` are available |
+with preset preferences for those applications. |
+ |
+`mozprofile.profile:Profile`: |
+ |
+ def __init__(self, |
+ profile=None, # Path to the profile |
+ addons=None, # String of one or list of addons to install |
+ addon_manifests=None, # Manifest for addons, see http://ahal.ca/blog/2011/bulk-installing-fx-addons/ |
+ preferences=None, # Dictionary or class of preferences |
+ locations=None, # locations to proxy |
+ proxy=False, # setup a proxy |
+ restore=True # If true remove all installed addons preferences when cleaning up |
+ ): |
+ |
+ def reset(self): |
+ """reset the profile to the beginning state""" |
+ |
+ def set_preferences(self, preferences, filename='user.js'): |
+ """Adds preferences dict to profile preferences""" |
+ |
+ def clean_preferences(self): |
+ """Removed preferences added by mozrunner.""" |
+ |
+ def cleanup(self): |
+ """Cleanup operations for the profile.""" |
+ |
+ |
+`mozprofile.addons:AddonManager`: |
+ |
+ def __init__(self, profile): |
+ """profile - the path to the profile for which we install addons""" |
+ |
+ def install_addons(self, addons=None, manifests=None): |
+ """ |
+ Installs all types of addons |
+ addons - a list of addon paths to install |
+ manifest - a list of addon manifests to install |
+ """ |
+ |
+ @classmethod |
+ def get_amo_install_path(self, query): |
+ """ |
+ Return the addon xpi install path for the specified AMO query. |
+ See: https://developer.mozilla.org/en/addons.mozilla.org_%28AMO%29_API_Developers%27_Guide/The_generic_AMO_API |
+ for query documentation. |
+ """ |
+ |
+ @classmethod |
+ def addon_details(cls, addon_path): |
+ """ |
+ returns a dictionary of details about the addon |
+ - addon_path : path to the addon directory |
+ Returns: |
+ {'id': u'rainbow@colors.org', # id of the addon |
+ 'version': u'1.4', # version of the addon |
+ 'name': u'Rainbow', # name of the addon |
+ 'unpack': False } # whether to unpack the addon |
+ """ |
+ |
+ def clean_addons(self): |
+ """Cleans up addons in the profile.""" |
+ |
+ |
+# Installing Addons |
+ |
+Addons may be installed individually or from a manifest. |
+ |
+Example: |
+ |
+ from mozprofile import FirefoxProfile |
+ |
+ # create new profile to pass to mozmill/mozrunner |
+ profile = FirefoxProfile(addons=["adblock.xpi"]) |
+ |
+ |
+# Setting Preferences |
+ |
+Preferences can be set in several ways: |
+ |
+- using the API: You can pass preferences in to the Profile class's |
+ constructor: `obj = FirefoxProfile(preferences=[("accessibility.typeaheadfind.flashBar", 0)])` |
+- using a JSON blob file: `mozprofile --preferences myprefs.json` |
+- using a `.ini` file: `mozprofile --preferences myprefs.ini` |
+- via the command line: `mozprofile --pref key:value --pref key:value [...]` |
+ |
+When setting preferences from an `.ini` file or the `--pref` switch, |
+the value will be interpolated as an integer or a boolean |
+(`true`/`false`) if possible. |
+ |
+# Setting Permissions |
+ |
+mozprofile also takes care of adding permissions to the profile. |
+See https://github.com/mozilla/mozbase/blob/master/mozprofile/mozprofile/permissions.py |
+ |
+ |
+# Resources |
+ |
+Other Mozilla programs offer additional and overlapping functionality |
+for profiles. There is also substantive documentation on profiles and |
+their management. |
+ |
+- [ProfileManager](https://developer.mozilla.org/en/Profile_Manager) : |
+ XULRunner application for managing profiles. Has a GUI and CLI. |
+- [python-profilemanager](http://k0s.org/mozilla/hg/profilemanager/) : python CLI interface similar to ProfileManager |
+- profile documentation : http://support.mozilla.com/en-US/kb/Profiles |