Check for both old and new class IDs and use the one that exists when wrapping. Also add FormTracker as the observer object so that its notify function is correctly called by nsHTMLFormElement.
--HG--
extra : rebase_source : 470430eaa643415e635836db3c38fb639a4e44b6
Always sync client data by making sure it's always enabled and only update local cilent with remote commands. Make sure to sync clients to get a list of clients that need to receive commands. Also, make sure to upload data after wiping remote now that remoteSetup happens before wipeRemote.
Mark entries as dupe if they're known to be dupes locally so that receiving ends won't bother looking for dupes for these items.
--HG--
extra : rebase_source : 2623f7ed20160ba445b58f538c3397caa0ef78e3
Trace pageshow events to indicate that new tab data should be uploaded. Because scores must be integers, still increment the score by 1, but only do that 10% of the time for pageshows.
Wrap the createStatement calls to guard against missing guid columns and lazily add it.
--HG--
extra : rebase_source : c59a692c6ad08321835c75023b54f02e8d1964da
Save the time the tracker adds a new changed id and use that to compare the age of the record on the server vs the age of the local change to decide if it's server wins or client wins. Fix up various direct uses of changedIDs to use the API and make the save-to-disk lazy to avoid excessive writes. Add a test to make sure addChangedID only increases in time.
Write a FormWrapper that knows about GUIDs and get/sets them in moz_formhistory as needed. It lazily adds the columns on failure and lazily generates GUIDs for entries that are missing it. Don't eagerly create a sha1 formItem mapping -- don't create it at all, so empty syncs will be much faster too.
Add a component that notifies when satchel methods are getting called. The notifications come as "form-notifier" with JSON data of the function name, arguments, and type (before vs after).
Allow descriptions to be set on folder records and set description on creation.
--HG--
extra : rebase_source : d380f5d28130bd53532e5b4d293468aa053c19b2
Fit as many tabs as possible in 20000 characters by linearly estimating how many will fit then remove extras one by one.
--HG--
extra : rebase_source : 1ef3700a9cddd7e3cb0f96b9affada15e98ea672
Get rid of get/setInfo on ClientEngine and ClientStore and expose functions to read/modify client data: stats, clearCommands, sendCommand. Also expose the local client information as local[ID,Name,Type,Commands] and rework the storage to use these instead of trying to keep the JS object clients entry in sync with prefs, etc. Update users of the old interface (service/tabs/chrome) to use the new local*. Set the client type based on app id instead of from each app's overlay.
Store data in cleartext instead of directly in the payload to have it encrypted with the CryptoWrapper. This cleans up some hacks needed to get the plain WBO client record to behave nicely with other encrypted data.
Created a fake SessionStore service for Fennec that imitates the parts of Firefox's SessionStore API that we need. Then used the now "consistent" SessionStore service in the Tabs engine.
Inline various _init calls and do super's init with <Super>.call(this, args..). Add various get/set sugar to those missing e.g., meta.keyring. Also simplify crypto record creation by setting cleartext in the parent.
--HG--
extra : rebase_source : 6c9a9f210f8f46ac338adb84188538e7353c9673
Do dupe detection for bookmarks like how we do folders/separators but check against the url/title. Add parentName to bookmark records, so bump version.
Add a tri-state pref that is unset, 0, or a number (modified time in seconds) and don't show the notification if it's in the "0" state. Unset pref means no modified time has been saved, and a non-0 state is the modified time of the last synced tab. So when tabs arrive with a different modified time, switch to the 0 state. Additionally, still remember if the user ever dismissed the notification and never show it again.
Create a mobile root in Firefox and link it to the Library UI as a query that fixes its own title if changed. Mark the mobile root on Firefox/Fennec as special so Weave uses "mobile" for the guid in the record, and items will appear in the appropriate folder.
--HG--
extra : rebase_source : fbd3afa2647204a370f7dacdf9d824e462ebb9b9