Allow observers to watch for resource 401s and to specify a new uri to request. Test to make sure "weave:resource:status:401" gets notified and resource handles uri changes.
Use an async sql query to get uris by frecency instead of query result nodes, and wrap it with sync/async to keep the sync interface without blocking UI. Rough timings of getAllIDs: old 1k = 1.6sec blocking; old 5k = 2.7sec blocking; new 1k = .2sec non-block; new 5k = .6sec non-block.
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
Make sure to clear local cache when deleting crypto records from the server. Handle missing crypto by deleting any existing data and reuploading. Fix broken records by uploading new ones.
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.
Delay the abort timer from the constructor in addition to onStartRequest and onDataAvailable in-case the callbacks never get called.
--HG--
extra : rebase_source : 1243f3baa468b13f8da28175b10aa99b2341e53a
Wrap the createStatement calls to guard against missing guid columns and lazily add it.
--HG--
extra : rebase_source : c59a692c6ad08321835c75023b54f02e8d1964da
Check for existance of both cid and iface in Cc/Ci to decide to use the platform's service or fake one. Remove unused lazyInstance to clean up API (iface == string not object).
* Added a "Set Up Weave..." status message which is determined by Status.login states
* The "Set Up Weave..." message opens the pref window directly instead of showing the menu
* Added an additional error state for NO_PASSPHRASE
* Added checks to onStartup to check some status (no username/password/passphrase) for when autoconnect=false
* When the prefpane is opened and there's an error, it will open to the correct page so that can be corrected
* If using a custom server, that will be reflected when shown that page in the prefpane
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.
Start an abortTimer onStartRequest and refresh the timer on each onDataAvailable only to cancel on an onStopRequest. If the timer triggers, the sync/async call will be aborted.
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).
Get rid of STATUS_DELAYED and initialize Weave listeners, etc immediately. At the end of onStartup, wait a little bit to let sessionstore restore tabs and then count how many busy tabs to delay autoconnecting to avoid doing network while tabs are doing network.
Allow descriptions to be set on folder records and set description on creation.
--HG--
extra : rebase_source : d380f5d28130bd53532e5b4d293468aa053c19b2
* Adds an option to the manage account to change sync option.
* Changes "start over" to "use a different account".
* Hides the "start over" button on the sync options page when not running through the whole process.
* Adds a prompt when starting over (which fixes bug 524186).
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
Store a HMAC with the encrypted symmetric key instead of just the wrapped key and verify that the HMAC matches before unwrapping. Test that normal getting works and a tampered payload/HMAC fails but succeeds on restoring the correct HMAC.
Generate a SHA256 HAMC hex string from the base64 ciphertext and base64 symmetric key. Generate a HMAC key from the symmetric key and cache them together when unwrapping. Refactor the Utils.sha1 to share the same digest code.
--HG--
extra : rebase_source : dae973c62317eb3b738306fc30ea19870555c7df
Add an engines object to meta/global to track version and syncID for each engine. If the server is outdated, wipe the data and set a new version and syncID. If the client is oudated, ask for an upgrade. Differing syncIDs cause a reupload. All engines are right now the default version 1.
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.
Move back to a model where multiple client versions can read the same data of the same storageVersion. The only time meta/global is written is on a freshStart/server wipe. Initialize the version to 1.2pre1.1 so that individual storage-incompatible changes can bump the value. Old versions are strings, so estimate with a parseFloat, but future versions will be integers.
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