This is a proxy class that is instantiated and called from the JS thread.
 It provides async methods for querying and updating the database.  As the
 methods complete, they call the callback function.
[scriptable, uuid(211d5360-4af6-4a1d-99c1-926d35861eaf)]
interface nsIUrlClassifierDBService : nsISupports

Methods

 Cancel an incremental update.  This rolls back and pending changes.
 and resets the stream interface.
void cancelStream()
 Checks to see if the tables exist.  tableNames is a comma separated list
 of table names to check.  The callback is called with a comma separated
 list of tables that no longer exist (either the db is corrupted or the
 user deleted the file).
void checkTables(in ACString tableNames, in nsIUrlClassifierCallback c)
 Looks up a key in the database.  After it finds a value, it calls
 callback with the value as the first param.  If the key is not in
 the db or the table does not exist, the callback is called with
 an empty string parameter.
void exists(in ACString tableName, in ACString key, in nsIUrlClassifierCallback c)
 Finish an incremental update.  This commits any pending tables and
 calls the callback for each completed table.
void finish(in nsIUrlClassifierCallback c)
 Update the table incrementally.
void update(in ACString updateChunk)
 Updates the table in the background.  Calls callback after each table
 completes processing with the new table line as the parameter.  This
 allows us to keep track of the table version in our main thread.
void updateTables(in ACString updateString, in nsIUrlClassifierCallback c)