diff options
Diffstat (limited to 'services/sync/modules/constants.js')
-rw-r--r-- | services/sync/modules/constants.js | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/services/sync/modules/constants.js b/services/sync/modules/constants.js new file mode 100644 index 0000000000..498c7bc9fa --- /dev/null +++ b/services/sync/modules/constants.js @@ -0,0 +1,136 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +// Process each item in the "constants hash" to add to "global" and give a name +var EXPORTED_SYMBOLS = []; +for (let [key, val] of Object.entries({ + // Don't manually modify this line, as it is automatically replaced on merge day + // by the gecko_migration.py script. + WEAVE_VERSION: "1.112.0", + + // Sync Server API version that the client supports. + SYNC_API_VERSION: "1.5", + + // Version of the data format this client supports. The data format describes + // how records are packaged; this is separate from the Server API version and + // the per-engine cleartext formats. + STORAGE_VERSION: 5, + PREFS_BRANCH: "services.sync.", + + // Put in [] because those aren't allowed in a collection name. + DEFAULT_KEYBUNDLE_NAME: "[default]", + + // Key dimensions. + SYNC_KEY_ENCODED_LENGTH: 26, + SYNC_KEY_DECODED_LENGTH: 16, + + NO_SYNC_NODE_INTERVAL: 10 * 60 * 1000, // 10 minutes + + MAX_ERROR_COUNT_BEFORE_BACKOFF: 3, + + // Backoff intervals + MINIMUM_BACKOFF_INTERVAL: 15 * 60 * 1000, // 15 minutes + MAXIMUM_BACKOFF_INTERVAL: 8 * 60 * 60 * 1000, // 8 hours + + // HMAC event handling timeout. + // 10 minutes: a compromise between the multi-desktop sync interval + // and the mobile sync interval. + HMAC_EVENT_INTERVAL: 600000, + + // How long to wait between sync attempts if the Master Password is locked. + MASTER_PASSWORD_LOCKED_RETRY_INTERVAL: 15 * 60 * 1000, // 15 minutes + + // 50 is hardcoded here because of URL length restrictions. + // (GUIDs can be up to 64 chars long.) + // Individual engines can set different values for their limit if their + // identifiers are shorter. + DEFAULT_GUID_FETCH_BATCH_SIZE: 50, + + // Default batch size for download batching + // (how many records are fetched at a time from the server when batching is used). + DEFAULT_DOWNLOAD_BATCH_SIZE: 1000, + + // score thresholds for early syncs + SINGLE_USER_THRESHOLD: 1000, + MULTI_DEVICE_THRESHOLD: 300, + + // Other score increment constants + SCORE_INCREMENT_SMALL: 1, + SCORE_INCREMENT_MEDIUM: 10, + + // Instant sync score increment + SCORE_INCREMENT_XLARGE: 300 + 1, //MULTI_DEVICE_THRESHOLD + 1 + + // Delay before incrementing global score + SCORE_UPDATE_DELAY: 100, + + // Delay for the back observer debouncer. This is chosen to be longer than any + // observed spurious idle/back events and short enough to pre-empt user activity. + IDLE_OBSERVER_BACK_DELAY: 100, + + // Duplicate URI_LENGTH_MAX from Places (from nsNavHistory.h), used to discard + // tabs with huge uris during tab sync. + URI_LENGTH_MAX: 65536, + + MAX_HISTORY_UPLOAD: 5000, + MAX_HISTORY_DOWNLOAD: 5000, + + // Top-level statuses: + STATUS_OK: "success.status_ok", + SYNC_FAILED: "error.sync.failed", + LOGIN_FAILED: "error.login.failed", + SYNC_FAILED_PARTIAL: "error.sync.failed_partial", + CLIENT_NOT_CONFIGURED: "service.client_not_configured", + STATUS_DISABLED: "service.disabled", + MASTER_PASSWORD_LOCKED: "service.master_password_locked", + + // success states + LOGIN_SUCCEEDED: "success.login", + SYNC_SUCCEEDED: "success.sync", + ENGINE_SUCCEEDED: "success.engine", + + // login failure status codes: + LOGIN_FAILED_NO_USERNAME: "error.login.reason.no_username", + LOGIN_FAILED_NO_PASSPHRASE: "error.login.reason.no_recoverykey", + LOGIN_FAILED_NETWORK_ERROR: "error.login.reason.network", + LOGIN_FAILED_SERVER_ERROR: "error.login.reason.server", + LOGIN_FAILED_INVALID_PASSPHRASE: "error.login.reason.recoverykey", + LOGIN_FAILED_LOGIN_REJECTED: "error.login.reason.account", + + // sync failure status codes + METARECORD_DOWNLOAD_FAIL: "error.sync.reason.metarecord_download_fail", + VERSION_OUT_OF_DATE: "error.sync.reason.version_out_of_date", + CREDENTIALS_CHANGED: "error.sync.reason.credentials_changed", + ABORT_SYNC_COMMAND: "aborting sync, process commands said so", + NO_SYNC_NODE_FOUND: "error.sync.reason.no_node_found", + OVER_QUOTA: "error.sync.reason.over_quota", + SERVER_MAINTENANCE: "error.sync.reason.serverMaintenance", + + RESPONSE_OVER_QUOTA: "14", + + // engine failure status codes + ENGINE_UPLOAD_FAIL: "error.engine.reason.record_upload_fail", + ENGINE_DOWNLOAD_FAIL: "error.engine.reason.record_download_fail", + ENGINE_UNKNOWN_FAIL: "error.engine.reason.unknown_fail", + ENGINE_APPLY_FAIL: "error.engine.reason.apply_fail", + // an upload failure where the batch was interrupted with a 412 + ENGINE_BATCH_INTERRUPTED: "error.engine.reason.batch_interrupted", + + // Ways that a sync can be disabled (messages only to be printed in debug log) + kSyncMasterPasswordLocked: "User elected to leave Primary Password locked", + kSyncWeaveDisabled: "Weave is disabled", + kSyncNetworkOffline: "Network is offline", + kSyncBackoffNotMet: "Trying to sync before the server said it's okay", + kFirstSyncChoiceNotMade: "User has not selected an action for first sync", + kSyncNotConfigured: "Sync is not configured", + kFirefoxShuttingDown: "Firefox is about to shut down", + + DEVICE_TYPE_DESKTOP: "desktop", + DEVICE_TYPE_MOBILE: "mobile", + + SQLITE_MAX_VARIABLE_NUMBER: 999, +})) { + this[key] = val; + this.EXPORTED_SYMBOLS.push(key); +} |