diff --git a/services/sync/modules/engines/tabs.js b/services/sync/modules/engines/tabs.js index 1e0d451b8aa2..bf2142d1aa86 100644 --- a/services/sync/modules/engines/tabs.js +++ b/services/sync/modules/engines/tabs.js @@ -7,7 +7,7 @@ this.EXPORTED_SYMBOLS = ["TabEngine", "TabSetRecord"]; var {classes: Cc, interfaces: Ci, utils: Cu} = Components; const TABS_TTL = 1814400; // 21 days. -const TAB_ENTRIES_LIMIT = 25; // How many URLs to include in tab history. +const TAB_ENTRIES_LIMIT = 5; // How many URLs to include in tab history. Cu.import("resource://gre/modules/Preferences.jsm"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); @@ -209,11 +209,14 @@ TabStore.prototype = { return b.lastUsed - a.lastUsed; }); - // Figure out how many tabs we can pack into a payload. Starting with a 28KB - // payload, we can estimate various overheads from encryption/JSON/WBO. + // Figure out how many tabs we can pack into a payload. + // See bug 535326 comment 8 for an explanation of the estimation + // If the server configuration is absent, we use the old max payload size of 28K let size = JSON.stringify(tabs).length; let origLength = tabs.length; - const MAX_TAB_SIZE = 20000; + const MAX_TAB_SIZE = (this.engine.service.serverConfiguration ? + this.engine.service.serverConfiguration.max_record_payload_bytes : + 28672) / 4 * 3 - 1500; if (size > MAX_TAB_SIZE) { // Estimate a little more than the direct fraction to maximize packing let cutoff = Math.ceil(tabs.length * MAX_TAB_SIZE / size); diff --git a/services/sync/tests/unit/test_tab_store.js b/services/sync/tests/unit/test_tab_store.js index 5ba1d281d5fc..20d148fc49f8 100644 --- a/services/sync/tests/unit/test_tab_store.js +++ b/services/sync/tests/unit/test_tab_store.js @@ -80,9 +80,9 @@ function test_getAllTabs() { _("Sliced: " + JSON.stringify(tabs)); equal(tabs.length, 1); - equal(tabs[0].urlHistory.length, 25); + equal(tabs[0].urlHistory.length, 5); equal(tabs[0].urlHistory[0], "http://foo40.bar"); - equal(tabs[0].urlHistory[24], "http://foo16.bar"); + equal(tabs[0].urlHistory[4], "http://foo36.bar"); } function test_createRecord() {