1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/components/satchel/FormHistoryStartup.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,92 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +const Cc = Components.classes; 1.9 +const Ci = Components.interfaces; 1.10 + 1.11 +Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); 1.12 +Components.utils.import("resource://gre/modules/Services.jsm"); 1.13 + 1.14 +XPCOMUtils.defineLazyModuleGetter(this, "FormHistory", 1.15 + "resource://gre/modules/FormHistory.jsm"); 1.16 + 1.17 +XPCOMUtils.defineLazyModuleGetter(this, "AutoCompleteE10S", 1.18 + "resource://gre/modules/AutoCompleteE10S.jsm"); 1.19 + 1.20 +function FormHistoryStartup() { } 1.21 + 1.22 +FormHistoryStartup.prototype = { 1.23 + classID: Components.ID("{3A0012EB-007F-4BB8-AA81-A07385F77A25}"), 1.24 + 1.25 + QueryInterface: XPCOMUtils.generateQI([ 1.26 + Ci.nsIObserver, 1.27 + Ci.nsISupportsWeakReference, 1.28 + Ci.nsIFrameMessageListener 1.29 + ]), 1.30 + 1.31 + observe: function(subject, topic, data) { 1.32 + switch (topic) { 1.33 + case "nsPref:changed": 1.34 + FormHistory.updatePrefs(); 1.35 + break; 1.36 + case "idle-daily": 1.37 + case "formhistory-expire-now": 1.38 + FormHistory.expireOldEntries(); 1.39 + break; 1.40 + case "profile-before-change": 1.41 + FormHistory.shutdown(); 1.42 + break; 1.43 + case "profile-after-change": 1.44 + this.init(); 1.45 + default: 1.46 + break; 1.47 + } 1.48 + }, 1.49 + 1.50 + inited: false, 1.51 + 1.52 + init: function() 1.53 + { 1.54 + if (this.inited) 1.55 + return; 1.56 + this.inited = true; 1.57 + 1.58 + Services.prefs.addObserver("browser.formfill.", this, true); 1.59 + 1.60 + // triggers needed service cleanup and db shutdown 1.61 + Services.obs.addObserver(this, "profile-before-change", true); 1.62 + Services.obs.addObserver(this, "formhistory-expire-now", true); 1.63 + 1.64 + let messageManager = Cc["@mozilla.org/globalmessagemanager;1"]. 1.65 + getService(Ci.nsIMessageListenerManager); 1.66 + messageManager.loadFrameScript("chrome://satchel/content/formSubmitListener.js", true); 1.67 + messageManager.addMessageListener("FormHistory:FormSubmitEntries", this); 1.68 + messageManager.addMessageListener("FormHistory:AutoCompleteSearchAsync", this); 1.69 + }, 1.70 + 1.71 + receiveMessage: function(message) { 1.72 + switch (message.name) { 1.73 + case "FormHistory:FormSubmitEntries": { 1.74 + let entries = message.data; 1.75 + let changes = entries.map(function(entry) { 1.76 + return { 1.77 + op : "bump", 1.78 + fieldname : entry.name, 1.79 + value : entry.value, 1.80 + } 1.81 + }); 1.82 + 1.83 + FormHistory.update(changes); 1.84 + break; 1.85 + } 1.86 + 1.87 + case "FormHistory:AutoCompleteSearchAsync": { 1.88 + AutoCompleteE10S.search(message); 1.89 + break; 1.90 + } 1.91 + } 1.92 + } 1.93 +}; 1.94 + 1.95 +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([FormHistoryStartup]);